diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-10-04 09:44:18 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-10-04 18:15:35 +0200 |
commit | f83622f17d21d684e431fe14731349b952411368 (patch) | |
tree | 289bc9768296268208cbacfe52db22de6c7e2ecd | |
parent | 5bc4b8e8e3960d431d66e3e4ac97f196059a875b (diff) | |
download | guix-f83622f17d21d684e431fe14731349b952411368.tar.gz |
services: anonip: Bail out when the input is not a FIFO.
* gnu/services/web.scm (anonip-shepherd-service)[start]: Accept zero arguments. Define 'spawn'. Print a message and return #f when #$INPUT does not denote a FIFO.
-rw-r--r-- | gnu/services/web.scm | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/gnu/services/web.scm b/gnu/services/web.scm index e347f5dbcc..e5ab1a1180 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -1438,32 +1438,40 @@ files.") (documentation "Anonimyze the given log file location with anonip.") (start - #~(lambda _ - (unless (file-exists? #$input) - (mknod #$input 'fifo #o600 0)) - (let ((pid - (fork+exec-command - (append - (list #$(file-append (anonip-configuration-anonip config) - "/bin/anonip") - (string-append "--input=" #$input) - (string-append "--output=" #$output)) - (if #$(anonip-configuration-skip-private? config) - '("--skip-private") (list)) - '#$(optional anonip-configuration-column "--column") - '#$(optional anonip-configuration-ipv4mask "--ipv4mask") - '#$(optional anonip-configuration-ipv6mask "--ipv6mask") - '#$(optional anonip-configuration-increment "--increment") - '#$(optional anonip-configuration-replacement - "--replacement") - '#$(optional anonip-configuration-delimiter "--delimiter") - '#$(optional anonip-configuration-regex "--regex")) - ;; Run in a UTF-8 locale - #:environment-variables - (list (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales - "/lib/locale") - "LC_ALL=en_US.utf8")))) - pid))) + #~(lambda () + (define (spawn) + (fork+exec-command + (append + (list #$(file-append (anonip-configuration-anonip config) + "/bin/anonip") + (string-append "--input=" #$input) + (string-append "--output=" #$output)) + (if #$(anonip-configuration-skip-private? config) + '("--skip-private") (list)) + '#$(optional anonip-configuration-column "--column") + '#$(optional anonip-configuration-ipv4mask "--ipv4mask") + '#$(optional anonip-configuration-ipv6mask "--ipv6mask") + '#$(optional anonip-configuration-increment "--increment") + '#$(optional anonip-configuration-replacement + "--replacement") + '#$(optional anonip-configuration-delimiter "--delimiter") + '#$(optional anonip-configuration-regex "--regex")) + ;; Run in a UTF-8 locale + #:environment-variables + (list (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales + "/lib/locale") + "LC_ALL=en_US.utf8"))) + + (let ((stat (stat #$input #f))) + (cond ((not stat) + (mknod #$input 'fifo #o600 0) + (spawn)) + ((eq? 'fifo (stat:type stat)) + (spawn)) + (else + (format #t "'~a' is not a FIFO; bailing out~%" + #$input) + #f))))) (stop #~(make-kill-destructor)))))) (define anonip-service-type |