summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/endofossil29
-rw-r--r--src/fossil-user.socket5
-rw-r--r--src/fossil-user@.service6
3 files changed, 40 insertions, 0 deletions
diff --git a/src/endofossil b/src/endofossil
new file mode 100644
index 0000000..401806f
--- /dev/null
+++ b/src/endofossil
@@ -0,0 +1,29 @@
1#!/bin/bash
2set -e
3
4
5IFS=/ read n pid uid <<< "$1"
6[ "$pid" ]
7
8authtype=
9while read -d ''
10do
11 case "${REPLY%%=*}" in
12 'SSH_USER_AUTH' ) read authtype keytype keyvalue < "${REPLY#*=}" ;;
13 esac
14done < /proc/$pid/environ
15[ "$authtype" = publickey ]
16
17keyhash=
18while read
19do
20 set -- $REPLY
21 if [ "$3 $5" = 'SSHFP 2' ]
22 then
23 keyhash=$6
24 break
25 fi
26done < <(ssh-keygen -f <(printf '%s\n' "$keytype $keyvalue") -r .)
27[ "$keyhash" ]
28
29printf '%s\n' "$keyhash"
diff --git a/src/fossil-user.socket b/src/fossil-user.socket
new file mode 100644
index 0000000..eab5a51
--- /dev/null
+++ b/src/fossil-user.socket
@@ -0,0 +1,5 @@
1[Socket]
2Accept = yes
3ListenStream = /run/fossil-user.S
4SocketUser = d
5SocketMode = 0600
diff --git a/src/fossil-user@.service b/src/fossil-user@.service
new file mode 100644
index 0000000..1b70358
--- /dev/null
+++ b/src/fossil-user@.service
@@ -0,0 +1,6 @@
1[Unit]
2Description = Fossil server process
3
4[Service]
5StandardInput=socket
6ExecStart = endofossil '%I'