summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2023-05-27 15:55:07 -0400
committerAndrew Cady <d@jerkface.net>2023-05-27 15:55:07 -0400
commitf2ac2fe76e6d8fcad24daa1f8c16e207e95465f1 (patch)
treecb512e4ccc8c66f24ed2619b40f6a9e355e2f92e /src
parentc9316cfc8e206a54973976eae71649007eef2720 (diff)
begin to implement user service
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'