Subject: [bug#57575] [PATCH] gnu: fail2ban-service-type: Improve extra-content fields.

From: muradm <[email-masked]>
Date: Sun, 4 Sep 2022 14:24:42 +0300

* gnu/services/security.scm:
(fail2ban-jail-configuration)[extra-content]: Change to text-config.
(fail2ban-configuration)[extra-content]: Change to text-config.
* gnu/doc/guix.texi: Update type of extra-content fields.
---
 doc/guix.texi             |  4 ++--
 gnu/services/security.scm | 15 ++++-----------
 2 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 80ca017599..b0a309efc2 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36619,7 +36619,7 @@ extensions.
 @item @code{extra-jails} (default: @code{()}) (type: list-of-fail2ban-jail-configurations)
 Instances of @code{<fail2ban-jail-configuration>} explicitly provided.
 
-@item @code{extra-content} (type: maybe-string)
+@item @code{extra-content} (default: @code{()}) (type: text-config)
 Extra raw content to add to the end of the @file{jail.local} file.
 
 @end table
@@ -36747,7 +36747,7 @@ The file names of the log files to be monitored.
 @item @code{action} (default: @code{()}) (type: list-of-fail2ban-jail-actions)
 A list of @code{<fail2ban-jail-action-configuration>}.
 
-@item @code{extra-content} (type: maybe-string)
+@item @code{extra-content} (default: @code{()}) (type: text-config)
 Extra content for the jail configuration.
 
 @end table
diff --git a/gnu/services/security.scm b/gnu/services/security.scm
index fd5bf19730..e6b59442ca 100644
--- a/gnu/services/security.scm
+++ b/gnu/services/security.scm
@@ -179,11 +179,6 @@ (define (fail2ban-jail-configuration-serialize-list-of-fail2ban-jail-actions fie
 (define (fail2ban-jail-configuration-serialize-symbol field-name value)
   (fail2ban-jail-configuration-serialize-string field-name (symbol->string value)))
 
-(define (fail2ban-jail-configuration-serialize-extra-content field-name value)
-  (if (maybe-value-set? value)
-      (string-append "\n" value "\n")
-      ""))
-
 (define-maybe integer (prefix fail2ban-jail-configuration-))
 (define-maybe string (prefix fail2ban-jail-configuration-))
 (define-maybe boolean (prefix fail2ban-jail-configuration-))
@@ -281,9 +276,9 @@ (define-configuration fail2ban-jail-configuration
    (list-of-fail2ban-jail-actions '())
    "A list of @code{<fail2ban-jail-action-configuration>}.")
   (extra-content
-   maybe-string
+   (text-config '())
    "Extra content for the jail configuration."
-   fail2ban-jail-configuration-serialize-extra-content)
+   serialize-text-config)
   (prefix fail2ban-jail-configuration-))
 
 (define list-of-fail2ban-jail-configurations?
@@ -312,7 +307,7 @@ (define-configuration/no-serialization fail2ban-configuration
    (list-of-fail2ban-jail-configurations '())
    "Instances of @code{<fail2ban-jail-configuration>} explicitly provided.")
   (extra-content
-   maybe-string
+   (text-config '())
    "Extra raw content to add to the end of the @file{jail.local} file."))
 
 (define (serialize-fail2ban-configuration config)
@@ -322,9 +317,7 @@ (define (serialize-fail2ban-configuration config)
     (interpose
      (append (map serialize-fail2ban-jail-configuration
                   (append jails extra-jails))
-             (list (if (maybe-value-set? extra-content)
-                       extra-content
-                       ""))))))
+             (list (serialize-text-config 'extra-content extra-content))))))
 
 (define (config->fail2ban-etc-directory config)
   (let* ((fail2ban (fail2ban-configuration-fail2ban config))
-- 
2.37.2