services: rsync: support binding rsync to a specific IP address

* gnu/services/rsync.scm (<rsync-configuration>)[address]: New field.
(rsync-config-file): Honor it.
* doc/guix.texi (Networking Services): Document new address rsync
configuration option.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Jacob Adams 2021-09-26 13:31:31 -04:00 committed by Ludovic Courtès
parent 69b249ecae
commit 1ea032fb5f
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 8 additions and 1 deletions

View File

@ -17158,6 +17158,10 @@ Data type representing the configuration for @code{rsync-service}.
@item @code{package} (default: @var{rsync})
@code{rsync} package to use.
@item @code{address} (default: @code{#f})
IP address on which @command{rsync} listens for incoming connections.
If unspecified, it defaults to listening on all available addresses.
@item @code{port-number} (default: @code{873})
TCP port on which @command{rsync} listens for incoming connections. If port
is less than @code{1024} @command{rsync} needs to be started as the

View File

@ -45,6 +45,8 @@
rsync-configuration?
(package rsync-configuration-package ; package
(default rsync))
(address rsync-configuration-address ; string | #f
(default #f))
(port-number rsync-configuration-port-number ; integer
(default 873))
(pid-file rsync-configuration-pid-file ; string
@ -110,7 +112,7 @@
(define rsync-config-file
;; Return the rsync configuration file corresponding to CONFIG.
(match-lambda
(($ <rsync-configuration> package port-number pid-file lock-file log-file
(($ <rsync-configuration> package address port-number pid-file lock-file log-file
use-chroot? share-path share-comment read-only?
timeout user group uid gid)
(if (not (string=? user "root"))
@ -132,6 +134,7 @@
"pid file = " pid-file "\n"
"lock file = " lock-file "\n"
"log file = " log-file "\n"
(if address (string-append "address = " address "\n") "")
"port = " (number->string port-number) "\n"
"use chroot = " (if use-chroot? "true" "false") "\n"
(if uid (string-append "uid = " uid "\n") "")