commit 49d94e89f15b5ff16323798a0806e2be8e208693
parent 9f3f15945e86a5e246d106c31cc51b613a3fc2d5
Author: Matthias Jaros <jaros@mailbox.org>
Date: Mon, 20 Oct 2025 13:49:26 +0200
Handle restart case
Diffstat:
| M | src/init | | | 39 | +++++++++++++++++++++++++++++---------- |
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/src/init b/src/init
@@ -9,10 +9,18 @@ source (dirname (status --current-filename))/env
#
#
+function checkUser
+ set -l user $argv[1]
+ cat /etc/passwd | grep -q -E "^$user:"
+ return $status
+end
+
function createUser
set -l userConfig (string split ':' $argv[1])
set -l user $userConfig[1]
set -l key $userConfig[2]
+ checkUser "$user"; and return 0
+
echo "Setting up user: $user"
if [ "$user" = git ]
echo "Error: User git is reserved"
@@ -31,6 +39,14 @@ function createUser
chmod -R 700 "$HOME"
end
+function setupGitUser
+ checkUser "git"; and return 0
+ echo "Setting up git user"
+ # git user has read/write access to all repos, set git-shell
+ # and no password login allowed -> no ssh login possible
+ adduser git -u $GIT_UID -D --shell "/usr/bin/git-shell"
+end
+
function setupRepo
set -l repoConfig $argv[1]
set -l parsedConfig (string split ':' $repoConfig)
@@ -62,6 +78,16 @@ function setupRepo
chmod -R 700 "$repoDir"
end
+function runSSHDaemon
+ echo "Setting up server"
+
+ # generate host keys in case
+ mkdir -p /var/ssh/etc/ssh/ && ssh-keygen -A -f /var/ssh
+
+ # run ssh daemon
+ /usr/sbin/sshd -D -e
+end
+
#
#
# main
@@ -83,7 +109,7 @@ if set -q _flag_h
return
end
-# read environment variables
+# read variables
set -l users $_flag_u
for user in (set -n | string match -r "^USER_\S+")
set users $users (eval echo \$$user)
@@ -99,10 +125,7 @@ if set -q $_flag_g
end
# Setup users
-# git user has read/write access to all repos, set git-shell
-# and no password login allowed -> no ssh login possible
-adduser git -u $GIT_UID -D --shell "/usr/bin/git-shell"
-passwd -l git
+setupGitUser
for userConfig in $users
createUser "$userConfig"
end
@@ -116,8 +139,4 @@ end
# create writable log file
touch $LOG && chmod 777 $LOG
-echo "Setting up server"
-# generate host keys in case
-mkdir -p /var/ssh/etc/ssh/ && ssh-keygen -A -f /var/ssh
-# run ssh daemon
-/usr/sbin/sshd -D -e
+runSSHDaemon