guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: services: dicod: Add 'interfaces' configuration field.


From: Ludovic Courtès
Subject: 01/01: services: dicod: Add 'interfaces' configuration field.
Date: Fri, 17 Jun 2016 09:14:24 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit a1b484654af07303813a215d4e04c0e4e7b199e5
Author: Ludovic Courtès <address@hidden>
Date:   Fri Jun 17 11:09:46 2016 +0200

    services: dicod: Add 'interfaces' configuration field.
    
    This makes 'dicod' listen on 'localhost' by default, whereas it was
    previously listening on all the interfaces, which is not a good default
    security-wise.
    
    * gnu/services/dict.scm (<dicod-configuration>)[interfaces]: New field.
    (dicod-configuration-file)[database->text]: New procedure, with code
    formerly in 'dicod-configuration->text'.
    [dicod-configuration->text]: Rename to...
    [configuration->text]: ... this.  Honor 'interfaces'.
    * doc/guix.texi (Various Services): Document 'interfaces'.
---
 doc/guix.texi         |    5 +++++
 gnu/services/dict.scm |   24 ++++++++++++++++--------
 2 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 4c8dbd1..a47d376 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -9465,6 +9465,11 @@ Data type representing the configuration of dicod.
 @item @code{dico} (default: @var{dico})
 Package object of the GNU Dico dictionary server.
 
address@hidden @code{interfaces} (default: @var{'("localhost")})
+This is the list of IP addresses and ports and possibly socket file
+names to listen to (@pxref{Server Settings, @code{listen} directive,,
+dico, GNU Dico Manual}).
+
 @item @code{databases} (default: @var{(list %dicod-database:gcide)})
 List of @code{<dicod-database>} objects denoting dictionaries to be served.
 @end table
diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm
index abab6a3..9c06d57 100644
--- a/gnu/services/dict.scm
+++ b/gnu/services/dict.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Sou Bunnbu <address@hidden>
+;;; Copyright © 2016 Ludovic Courtès <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,6 +43,8 @@
   dicod-configuration make-dicod-configuration
   dicod-configuration?
   (dico        dicod-configuration-dico       (default dico))
+  (interfaces  dicod-configuration-interfaces     ;list of strings
+               (default '("localhost")))
   (databases   dicod-configuration-databases
                ;; list of <dicod-database>
                (default (list %dicod-database:gcide))))
@@ -72,20 +75,25 @@
          (shell #~(string-append #$shadow "/sbin/nologin")))))
 
 (define (dicod-configuration-file config)
-  (define dicod-configuration->text
+  (define database->text
     (match-lambda
-      (($ <dicod-configuration> dico databases)
-       (append-map (match-lambda
-                     (($ <dicod-database> name module options)
-                      `("
+      (($ <dicod-database> name module options)
+       `("
 load-module " ,module ";
 database {
    name \"" ,name "\";
    handler \"" ,module
    (string-join (list ,@options) " " 'prefix) "\";
-}\n")))
-                   databases))))
-  (apply mixed-text-file "dicod.conf" (dicod-configuration->text config)))
+}\n"))))
+
+  (define configuration->text
+    (match-lambda
+      (($ <dicod-configuration> dico (interfaces ...) databases)
+       (append `("listen ("
+                 ,(string-join interfaces ", ") ");\n")
+               (append-map database->text databases)))))
+
+  (apply mixed-text-file "dicod.conf" (configuration->text config)))
 
 (define %dicod-activation
   #~(begin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]