blob: be5fed976495fb75d50cfff4ae8218cf7f52141a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#!/usr/bin/env fish
set REPO_PERMISSIONS /etc/repo-permissions
set GIT_COMMAND_REGEX "^(git-(?:upload-pack|receive-pack|upload-archive)) '((?:\/[a-zA-Z-]+)+.git)'\$"
# check given git command
set -l matcher (string match -r -g $GIT_COMMAND_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]
set -l repoDir srv repos
set -l repoDir /(string join -n '/' $repoDir (string split '/' $repo))
cat $REPO_PERMISSIONS | grep -q -E "^$repoDir:$checkUser"
or exit 1;
# run command
/usr/bin/sudo -u git /usr/bin/git-shell -c "$gitCommand '$repoDir'"
|