blob: 38026334353592058618979ede934040b6de5804 (
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#!/usr/bin/env fish
argparse 'u/users=+' 'r/repos=+' -- $argv
or exit 1;
# setup git user
adduser git -D --shell "/usr/bin/git-shell"
# create users and copy keys in correct location, set permissions
for user in (string split ',' $_flag_u)
echo "Setting up user: $user"
if [ "$user" = git ]
echo "Denied because user git is reserved"
continue
end
set -l HOME "/home/$user"
# user is not restricted, this is done in ssh config with forceCommand
# we need to be able to run a fish script to check for permissions
adduser --home $HOME -D "$user"
passwd -u "$user"
mkdir "$HOME/.ssh"
cp "/var/keys/$user/authorized_keys" "$HOME/.ssh/"
chown -R $user "$HOME"
chmod -R 700 "$HOME"
end
for repoConfig in (string split ',' $_flag_r)
set -l parsedConfig (string split ':' $repoConfig)
set -l repo $parsedConfig[1]
# we assume all repos to be in /srv/repos
set -l repoDir "/srv/repos/$repo.git"
echo "Setting up repo: $repo"
# write user as allowed into permission file
for user in $parsedConfig[2..]
echo "$repoDir:$user" >> /srv/repos/permissions
end
# setup repo dir
if not test -d $repoDir
mkdir -p $repoDir
git init --bare $repoDir -b trunk
end
chown -R git:git "$repoDir"
chmod -R 700 "$repoDir"
end
echo "Setting up server"
# generate host keys in case
mkdir -p /var/keys/etc/ssh/ && ssh-keygen -A -f /var/keys
# run ssh daemon
/usr/sbin/sshd -D -e
|