summaryrefslogtreecommitdiff
path: root/gnu/services
diff options
context:
space:
mode:
authorClombrong <cromblong@egregore.fun>2025-10-02 01:51:08 +0200
committerGiacomo Leidi <therewasa@fishinthecalculator.me>2026-01-27 11:46:03 +0100
commit8dc57904e385b9219f548601afc6dc9b26dadd68 (patch)
tree866724a0b98f37af9fc6959533777b444401158f /gnu/services
parent3f5ebde420695b932c8c797cc238d5f1426f9dee (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.scm73
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.
;;;