services/dkim-key: fix sed invocation and ignore missing file

This commit is contained in:
Timotej Lazar 2023-08-11 17:29:16 +02:00
parent f5b0046658
commit d156ec60de

View file

@ -1,4 +1,5 @@
(define-module (services dkim-key) (define-module (services dkim-key)
#:use-module (gnu packages base)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
@ -28,17 +29,18 @@
(public (string-append #$domain "-" #$selector ".pub"))) (public (string-append #$domain "-" #$selector ".pub")))
(with-directory-excursion #$directory (with-directory-excursion #$directory
(unless (file-exists? private) (unless (file-exists? private)
(let ((openssl #$(file-append openssl "/bin/openssl"))) (let ((openssl #$(file-append openssl "/bin/openssl"))
(sed #$(file-append sed "/bin/sed")))
(system* openssl "genrsa" "-out" private (number->string #$key-length)) (system* openssl "genrsa" "-out" private (number->string #$key-length))
(chown private (passwd:uid (getpwnam #$owner)) -1) (chown private (passwd:uid (getpwnam #$owner)) -1)
(system* openssl "rsa" "-in" private "-pubout" "-out" public) (system* openssl "rsa" "-in" private "-pubout" "-out" public)
(system* "sed" "-i" (system* sed "-i"
"1s/.*/v=DKIM1;p=/;:nl;${s/-----.*//;q;};N;s/\\n//g;b nl;" "1s/.*/v=DKIM1;p=/;:nl;${s/-----.*//;q;};N;s/\\n//g;b nl;"
public))) public)))
(display (format #f "Create a TXT record at ~a._domainkey.~a with the contents of ~a/~a~%" (display (format #f "Create a TXT record at ~a._domainkey.~a with the contents of ~a/~a~%"
#$selector #$domain #$directory public))) #$selector #$domain #$directory public)))
(unless (equal? (false-if-exception (readlink key-file)) private) (unless (equal? (false-if-exception (readlink key-file)) private)
(delete-file key-file) (false-if-exception (delete-file key-file))
(symlink private key-file)))))) (symlink private key-file))))))
(define dkim-key-service-type (define dkim-key-service-type