From f2ac2fe76e6d8fcad24daa1f8c16e207e95465f1 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sat, 27 May 2023 15:55:07 -0400 Subject: begin to implement user service --- src/endofossil | 29 +++++++++++++++++++++++++++++ src/fossil-user.socket | 5 +++++ src/fossil-user@.service | 6 ++++++ 3 files changed, 40 insertions(+) create mode 100644 src/endofossil create mode 100644 src/fossil-user.socket create mode 100644 src/fossil-user@.service (limited to 'src') diff --git a/src/endofossil b/src/endofossil new file mode 100644 index 0000000..401806f --- /dev/null +++ b/src/endofossil @@ -0,0 +1,29 @@ +#!/bin/bash +set -e + + +IFS=/ read n pid uid <<< "$1" +[ "$pid" ] + +authtype= +while read -d '' +do + case "${REPLY%%=*}" in + 'SSH_USER_AUTH' ) read authtype keytype keyvalue < "${REPLY#*=}" ;; + esac +done < /proc/$pid/environ +[ "$authtype" = publickey ] + +keyhash= +while read +do + set -- $REPLY + if [ "$3 $5" = 'SSHFP 2' ] + then + keyhash=$6 + break + fi +done < <(ssh-keygen -f <(printf '%s\n' "$keytype $keyvalue") -r .) +[ "$keyhash" ] + +printf '%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 @@ +[Socket] +Accept = yes +ListenStream = /run/fossil-user.S +SocketUser = d +SocketMode = 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 @@ +[Unit] +Description = Fossil server process + +[Service] +StandardInput=socket +ExecStart = endofossil '%I' -- cgit v1.2.3