summaryrefslogtreecommitdiff
path: root/git-shell-commands/create-mirror
diff options
context:
space:
mode:
authorheqnx <root@heqnx.com>2025-05-16 02:33:53 +0300
committerheqnx <root@heqnx.com>2025-05-16 02:33:53 +0300
commitcc34ae34b753ebaa13519500fc029e4c43fa025f (patch)
treec612d313c82e82895254acca15ca8f8218d06293 /git-shell-commands/create-mirror
parentc963ccecb4e0414bc1e384655fa3b1b813902975 (diff)
downloadcgit-main.tar.gz
cgit-main.zip
updated with validationsHEADmain
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