diff options
| author | Clombrong <cromblong@egregore.fun> | 2025-10-02 01:51:08 +0200 |
|---|---|---|
| committer | Giacomo Leidi <therewasa@fishinthecalculator.me> | 2026-01-27 11:46:03 +0100 |
| commit | 8dc57904e385b9219f548601afc6dc9b26dadd68 (patch) | |
| tree | 866724a0b98f37af9fc6959533777b444401158f /gnu/services | |
| parent | 3f5ebde420695b932c8c797cc238d5f1426f9dee (diff) | |
services: Add endlessh-service-type.
* docs/guix.texi: Document EndleSSH service and configuration.
* gnu/services/ssh.scm: New service.
* gnu/services/ssh.scm: Define shepherd service.
Merges: https://codeberg.org/guix/guix/pulls/5910
Co-Authored-By: Giacomo Leidi <therewasa@fishinthecalculator.me>
Change-Id: Ief4520b536276b88f2e5027ef0897bf84b2835df
Signed-off-by: Giacomo Leidi <therewasa@fishinthecalculator.me>
Diffstat (limited to 'gnu/services')
| -rw-r--r-- | gnu/services/ssh.scm | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index 77359501e4c..d5c1c778009 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -70,6 +70,17 @@ dropbear-service-type dropbear-service ; deprecated + endlessh-configuration + endlessh-configuration? + endlessh-configuration-endlessh + endlessh-configuration-port-number + endlessh-configuration-log-level + endlessh-configuration-syslog-output? + endlessh-configuration-message-delay + endlessh-configuration-max-banner-length + endlessh-configuration-max-clients + endlessh-service-type + autossh-configuration autossh-configuration? autossh-service-type @@ -525,6 +536,68 @@ object." ;;; +;;; Endlessh. +;;; + +(define-record-type* <endlessh-configuration> + endlessh-configuration make-endlessh-configuration + endlessh-configuration? + (endlessh endlessh-configuration-endlessh + (default endlessh)) + (port-number endlessh-configuration-port-number + (default 22)) + (log-level endlessh-configuration-log-level + (default 1)) + (syslog-output? endlessh-configuration-syslog-output? + (default #t)) + (message-delay endlessh-configuration-message-delay + (default 10000)) + (max-banner-length endlessh-configuration-max-banner-length + (default 32)) + (max-clients endlessh-configuration-max-clients + (default 4096))) + +(define (endlessh-shepherd-service config) + "Return a <shepherd-service> for endlessh with CONFIG." + (define endlessh + (endlessh-configuration-endlessh config)) + + (define endlessh-config + (format #f "Port ~a~%Delay ~a~%MaxLineLength ~a~%MaxClients ~a~%LogLevel ~a" + (endlessh-configuration-port-number config) + (endlessh-configuration-message-delay config) + (endlessh-configuration-max-banner-length config) + (endlessh-configuration-max-clients config) + (endlessh-configuration-log-level config))) + + (define endlessh-command + #~(list (string-append #$endlessh "/bin/endlessh") + "-f" #$(plain-file "endlessh_config" endlessh-config) + #$@(if (endlessh-configuration-syslog-output? config) '("-s") '()))) + + (define requires + (if (endlessh-configuration-syslog-output? config) + '(user-processes networking syslogd) + '(user-processes networking))) + + (list (shepherd-service + (documentation "EndleSSH server.") + (requirement requires) + (provision '(endlessh)) + (start #~(make-forkexec-constructor #$endlessh-command)) + (stop #~(make-kill-destructor))))) + +(define endlessh-service-type + (service-type (name 'endlessh) + (description + "Run the EndleSSH secure shell (SSH) tarpit.") + (extensions + (list (service-extension shepherd-root-service-type + endlessh-shepherd-service))) + (default-value (endlessh-configuration)))) + + +;;; ;;; AutoSSH. ;;; |
