diff options
| author | 2025-10-20 10:20:42 +0200 | |
|---|---|---|
| committer | 2025-10-20 10:20:42 +0200 | |
| commit | 9d9355a379f8a9922645ecd87b66f68acbb6bc89 (patch) | |
| tree | 3491b69ae5d327556f0e5d4bd732ec6208746ece /src/run | |
| parent | baaa4d83c98b42a1df98e70b972774ad8f5b8ead (diff) | |
Moved files to src and renamed variables
Diffstat (limited to 'src/run')
| -rwxr-xr-x | src/run | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -0,0 +1,25 @@ +#!/usr/bin/env fish + +set REPO_PERMISSIONS_FILE /etc/repo-permissions +# unify repo regex somehow +set GIT_VALIDATION_REGEX "^(git-(?:upload-pack|receive-pack|upload-archive)) '((?:\/[a-zA-Z-]+)+.git)'\$" + +# check given git command +set -l matcher (string match -r -g $GIT_VALIDATION_REGEX "$argv") +if test (count $matcher) -ne 2 + # there should be two groups otherwise something is wrong + exit 1 +end + +# echo check for permissions +set -l checkUser (whoami) +set -l gitCommand $matcher[1] +set -l repo $matcher[2] +# adjust repo path to /srv/repos +set -l repoDir srv repos +set -l repoDir /(string join -n '/' $repoDir (string split '/' $repo)) +cat $REPO_PERMISSIONS_FILE | grep -q -E "^$repoDir:$checkUser\$" +or exit 1; + +# execute parsed git command +/usr/bin/sudo -u git /usr/bin/git-shell -c "$gitCommand '$repoDir'" |
