summaryrefslogtreecommitdiff
path: root/git-shell-commands/create-mirror
diff options
context:
space:
mode:
Diffstat (limited to 'git-shell-commands/create-mirror')
-rwxr-xr-xgit-shell-commands/create-mirror12
1 files changed, 11 insertions, 1 deletions
diff --git a/git-shell-commands/create-mirror b/git-shell-commands/create-mirror
index 8d2129c..2b1b1dc 100755
--- a/git-shell-commands/create-mirror
+++ b/git-shell-commands/create-mirror
@@ -8,14 +8,24 @@ if test "${#}" -ne 1; then
fi
REPO="${1}"
+if ! [[ "${REPO}" =~ ^https://[a-zA-Z0-9.-]+/[a-zA-Z0-9_/.-]+$ ]]; then
+ printf "%s\n" "[err] invalid repository URL"
+ exit 1
+fi
+
REPO_NAME=$(basename "${REPO}")
-REPO_DIR="/srv/git/repos/${REPO_NAME}.git"
+if ! [[ "${REPO_NAME}" =~ ^[a-zA-Z0-9_-]+$ ]]; then
+ printf "%s\n" "[err] repository name can only contain letters, numbers, underscores, and hyphens"
+ exit 1
+fi
+REPO_DIR="/srv/git/repos/${REPO_NAME}.git"
if test -d "${REPO_DIR}"; then
printf "%s\n" "[err] repository ${REPO_NAME}.git already exists at ${REPO_DIR}"
exit 1
fi
+
TMP_DIR=$(mktemp -d -p /tmp)
trap 'rm -rf "$TMP_DIR"' EXIT