summaryrefslogtreecommitdiff
path: root/run
diff options
context:
space:
mode:
authorGravatar Matthias Lucas Jaros <jarlucmat@mailbox.org>2025-10-18 22:19:47 +0200
committerGravatar Matthias Lucas Jaros <jarlucmat@mailbox.org>2025-10-18 22:21:22 +0200
commitdcb683495e27dd297c10c2ce4f1877a87813fbe5 (patch)
tree9b29ca7ed6d817b4d75252c59bb5e73403697aaa /run
parent17939d44d6aa45a0dd50c98031c12798baf7cd85 (diff)
Renamed script from init to run
Diffstat (limited to 'run')
-rwxr-xr-xrun44
1 files changed, 44 insertions, 0 deletions
diff --git a/run b/run
new file mode 100755
index 0000000..d167007
--- /dev/null
+++ b/run
@@ -0,0 +1,44 @@
+#!/usr/bin/env fish
+
+argparse 'u/users=+' 'r/repos=+' -- $argv
+or exit 1;
+
+# create users and copy keys in correct location, set permissions
+for user in (string split ',' $_flag_u)
+ echo "Setting up user: $user"
+ set -l HOME "/home/$user"
+ adduser --home $HOME -D "$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"
+ echo "Setting up repo: $repo"
+ addgroup "$repo"
+
+ # assign groups to user
+ for user in $parsedConfig[2..]
+ adduser "$user" "$repo"
+ id "$user"
+ end
+
+ # setup repo dir
+ if not test -d $repoDir
+ mkdir -p $repoDir
+ git init --bare $repoDir -b trunk
+ end
+ chgrp -R "$repo" "$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