Package: guix-patches;
Reported by: Bruno Victal <mirai <at> makinata.eu>
Date: Mon, 6 Mar 2023 17:26:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 62005 in the body.
You can then email your comments to 62005 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
ludo <at> gnu.org, guix-patches <at> gnu.org
:bug#62005
; Package guix-patches
.
(Mon, 06 Mar 2023 17:26:02 GMT) Full text and rfc822 format available.Bruno Victal <mirai <at> makinata.eu>
:ludo <at> gnu.org, guix-patches <at> gnu.org
.
(Mon, 06 Mar 2023 17:26:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Bruno Victal <mirai <at> makinata.eu> To: guix-patches <at> gnu.org Cc: Bruno Victal <mirai <at> makinata.eu> Subject: [PATCH] services: tor: Deprecate 'tor-hidden-service' procedure. Date: Mon, 6 Mar 2023 17:24:54 +0000
Due to (now renamed) 'hidden-service' record type not being exported, the only way hidden services could have worked is through the now deprecated 'tor-hidden-service' procedure which also had the issue that it can only be used once since the returned service always had the same name. This commit fixes the Tor service documentation and deprecates 'tor-hidden-service' procedure, correcting some inconsistencies along the way. * doc/guix.texi (Networking Services): Add examples for Tor hidden services. Document <tor-hidden-service-configuration>. Remove mention of 'tor-hidden-service' procedure. * gnu/services/networking.scm: Export tor-configuration-tor, tor-configuration-config-file, tor-configuration-hidden-services, tor-configuration-socks-socket-type, tor-configuration-control-socket-path, tor-hidden-service-configuration, tor-hidden-service-configuration?, tor-hidden-service-configuration-name, tor-hidden-service-configuration-mapping. (<tor-configuration>)[control-socket?]: Rename accessor. (<hidden-service>): Rename to ... (<tor-hidden-service-configuration>): ... this. (tor-configuration->torrc): Update record-type name. (tor-activation): Ditto. (tor-service-type): Tweak comment. (tor-hidden-service-type): Remove variable. (tor-hidden-service): Deprecate procedure. --- Split from #61789. To be decided: whether hidden-services should be renamed to onion-services. doc/guix.texi | 55 +++++++++++++++++++++++-------------- gnu/services/networking.scm | 47 +++++++++++++++++-------------- 2 files changed, 61 insertions(+), 41 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 6671ba9305..51fe0a6119 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20494,11 +20494,21 @@ Networking Services @cindex Tor @defvar tor-service-type -This is the type for a service that runs the @uref{https://torproject.org, -Tor} anonymous networking daemon. The service is configured using a +Type for a service that runs the @uref{https://torproject.org, Tor} +anonymous networking daemon. The service is configured using a @code{<tor-configuration>} record. By default, the Tor daemon runs as the @code{tor} unprivileged user, which is a member of the @code{tor} group. +In addition to adding Tor @dfn{hidden service}s records to the service +configuration directly, this service can be extended by other services to add +hidden services, as in this example: + +@lisp +(simple-service 'my-extra-hidden-service tor-service-type + (list (tor-hidden-service-configuration + (name "extra-hidden-service") + (mapping '((80 "127.0.0.1:8080")))))) +@end lisp @end defvar @deftp {Data Type} tor-configuration @@ -20517,11 +20527,10 @@ Networking Services syntax. @item @code{hidden-services} (default: @code{'()}) -The list of @code{<hidden-service>} records to use. For any hidden service -you include in this list, appropriate configuration to enable the hidden -service will be automatically added to the default configuration file. You -may conveniently create @code{<hidden-service>} records using the -@code{tor-hidden-service} procedure described below. +The list of @code{<tor-hidden-service-configuration>} records to use. +For any hidden service you include in this list, appropriate +configuration to enable the hidden service will be automatically added to +the default configuration file. @item @code{socks-socket-type} (default: @code{'tcp}) The default socket type that Tor should use for its SOCKS socket. This must @@ -20546,26 +20555,32 @@ Networking Services @end table @end deftp -@cindex hidden service -@deffn {Scheme Procedure} tor-hidden-service @var{name} @var{mapping} -Define a new Tor @dfn{hidden service} called @var{name} and implementing -@var{mapping}. @var{mapping} is a list of port/host tuples, such as: +@cindex hidden service, tor +@deftp {Data Type} tor-hidden-service-configuration +Data Type representing a Tor @dfn{hidden service} configuration. +See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor +project's documentation} for more information. + +@table @asis +@item @code{name} (type: string) +Name for the Tor @dfn{hidden service}. +This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, +where the @file{hostname} file contains the @samp{.onion} host name for +the hidden service. + +@item @code{mapping} (type: list-of-list) +List of host---@dfn{hidden-service} port mappings, such as: @example - '((22 "127.0.0.1:22") - (80 "127.0.0.1:8080")) +'((22 "127.0.0.1:22") + (80 "127.0.0.1:8080")) @end example In this example, port 22 of the hidden service is mapped to local port 22, and port 80 is mapped to local port 8080. -This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where -the @file{hostname} file contains the @code{.onion} host name for the hidden -service. - -See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor -project's documentation} for more information. -@end deffn +@end table +@end deftp The @code{(gnu services rsync)} module provides the following services: diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index dacf64c2d1..d6e1877ef5 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -138,7 +138,16 @@ (define-module (gnu services networking) tor-configuration tor-configuration? - tor-hidden-service + tor-configuration-tor + tor-configuration-config-file + tor-configuration-hidden-services + tor-configuration-socks-socket-type + tor-configuration-control-socket-path + tor-hidden-service-configuration + tor-hidden-service-configuration? + tor-hidden-service-configuration-name + tor-hidden-service-configuration-mapping + tor-hidden-service ; deprecated tor-service-type network-manager-configuration @@ -919,7 +928,7 @@ (define-record-type* <tor-configuration> (default '())) (socks-socket-type tor-configuration-socks-socket-type ; 'tcp or 'unix (default 'tcp)) - (control-socket? tor-control-socket-path + (control-socket? tor-configuration-control-socket-path (default #f))) (define %tor-accounts @@ -933,11 +942,11 @@ (define %tor-accounts (home-directory "/var/empty") (shell (file-append shadow "/sbin/nologin"))))) -(define-record-type <hidden-service> - (hidden-service name mapping) - hidden-service? - (name hidden-service-name) ;string - (mapping hidden-service-mapping)) ;list of port/address tuples +(define-record-type <tor-hidden-service-configuration> + (tor-hidden-service-configuration name mapping) + tor-hidden-service-configuration? + (name tor-hidden-service-configuration-name) ;string + (mapping tor-hidden-service-configuration-mapping)) ;list of port/address tuples (define (tor-configuration->torrc config) "Return a 'torrc' file for CONFIG." @@ -977,7 +986,7 @@ (define (tor-configuration->torrc config) tcp-port host)) ports hosts))) '#$(map (match-lambda - (($ <hidden-service> name mapping) + (($ <tor-hidden-service-configuration> name mapping) (cons name mapping))) hidden-services)) @@ -1064,7 +1073,7 @@ (define (tor-activation config) (chmod "/var/lib" #o755) (for-each initialize - '#$(map hidden-service-name + '#$(map tor-hidden-service-configuration-name (tor-configuration-hidden-services config))))) (define tor-service-type @@ -1077,7 +1086,7 @@ (define tor-service-type (service-extension activation-service-type tor-activation))) - ;; This can be extended with hidden services. + ;; This can be extended with tor hidden services. (compose concatenate) (extend (lambda (config services) (tor-configuration @@ -1090,15 +1099,8 @@ (define tor-service-type "Run the @uref{https://torproject.org, Tor} anonymous networking daemon."))) -(define tor-hidden-service-type - ;; A type that extends Tor with hidden services. - (service-type (name 'tor-hidden-service) - (extensions - (list (service-extension tor-service-type list))) - (description - "Define a new Tor @dfn{hidden service}."))) - -(define (tor-hidden-service name mapping) +(define-deprecated (tor-hidden-service name mapping) + #f "Define a new Tor @dfn{hidden service} called @var{name} and implementing @var{mapping}. @var{mapping} is a list of port/host tuples, such as: @@ -1116,8 +1118,11 @@ (define (tor-hidden-service name mapping) See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} for more information." - (service tor-hidden-service-type - (hidden-service name mapping))) + (simple-service 'tor-hidden-service + tor-service-type + (list (tor-hidden-service-configuration + (name name) + (mapping mapping))))) ;;; -- 2.39.1
guix-patches <at> gnu.org
:bug#62005
; Package guix-patches
.
(Sun, 09 Apr 2023 14:48:02 GMT) Full text and rfc822 format available.Message #8 received at 62005 <at> debbugs.gnu.org (full text, mbox):
From: Bruno Victal <mirai <at> makinata.eu> To: 62005 <at> debbugs.gnu.org Cc: ludo <at> gnu.org, Bruno Victal <mirai <at> makinata.eu> Subject: [PATCH v2] services: tor: Deprecate 'tor-hidden-service' procedure. Date: Sun, 9 Apr 2023 15:47:19 +0100
Due to (now renamed) 'hidden-service' record type not being exported, the only way Onion services (formely hidden services) could have worked is through the now deprecated 'tor-hidden-service' procedure. This commit updates the Tor service documentation, corrects some inconsistently named accessors in <tor-configuration> record-type, renames and refactors tor-hidden-service-configuration to tor-onion-service-configuration using define-configuration and also exports it, allowing Onion services to be configured directly within a <tor-configuration> record. Lastly, it also deprecates the 'tor-hidden-service' procedure. * doc/guix.texi (Networking Services): Substitute mentions of “Hidden services” with “Onion Services”. Add a Tor Onion service configuration example. Document <tor-onion-service-configuration>. Remove mention of 'tor-hidden-service' procedure. * gnu/services/networking.scm: Export tor-configuration-tor, tor-configuration-config-file, tor-configuration-hidden-services, tor-configuration-socks-socket-type, tor-configuration-control-socket-path, tor-onion-service-configuration, tor-onion-service-configuration?, tor-onion-service-configuration-name, tor-onion-service-configuration-mapping. (<tor-configuration>)[control-socket?]: Rename accessor. (<hidden-service>): Replace with … (<tor-onion-service-configuration>): … this. (tor-configuration->torrc): Update record-type name. (tor-activation): Ditto. (tor-hidden-service-type): Remove variable. (tor-hidden-service): Deprecate procedure. --- Notable changes since v1: * Replaced mentions of hidden services with Onion Services. * Use define-configuration for tor-onion-service-configuration. Tested with: make check-system TESTS=tor and inspected output from 'tor-configuration->torrc'. doc/guix.texi | 61 ++++++++++++++++++++++-------------- gnu/services/networking.scm | 62 +++++++++++++++++++++++-------------- 2 files changed, 76 insertions(+), 47 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index ed42488882..6a89562cf1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20578,11 +20578,21 @@ Networking Services @cindex Tor @defvar tor-service-type -This is the type for a service that runs the @uref{https://torproject.org, -Tor} anonymous networking daemon. The service is configured using a +Type for a service that runs the @uref{https://torproject.org, Tor} +anonymous networking daemon. The service is configured using a @code{<tor-configuration>} record. By default, the Tor daemon runs as the @code{tor} unprivileged user, which is a member of the @code{tor} group. +In addition to adding Tor @dfn{Onion Service}s records to the service +configuration directly, this service can be extended by other services to add +Onion Services, as in this example: + +@lisp +(simple-service 'my-extra-onion-service tor-service-type + (list (tor-onion-service-configuration + (name "extra-onion-service") + (mapping '((80 . "127.0.0.1:8080")))))) +@end lisp @end defvar @deftp {Data Type} tor-configuration @@ -20601,11 +20611,10 @@ Networking Services syntax. @item @code{hidden-services} (default: @code{'()}) -The list of @code{<hidden-service>} records to use. For any hidden service -you include in this list, appropriate configuration to enable the hidden -service will be automatically added to the default configuration file. You -may conveniently create @code{<hidden-service>} records using the -@code{tor-hidden-service} procedure described below. +The list of @code{<tor-onion-service-configuration>} records to use. +For any Onion Service you include in this list, appropriate +configuration to enable the Onion Service will be automatically added to +the default configuration file. @item @code{socks-socket-type} (default: @code{'tcp}) The default socket type that Tor should use for its SOCKS socket. This must @@ -20630,26 +20639,30 @@ Networking Services @end table @end deftp -@cindex hidden service -@deffn {Scheme Procedure} tor-hidden-service @var{name} @var{mapping} -Define a new Tor @dfn{hidden service} called @var{name} and implementing -@var{mapping}. @var{mapping} is a list of port/host tuples, such as: - -@example - '((22 "127.0.0.1:22") - (80 "127.0.0.1:8080")) -@end example +@cindex onion service, tor +@deftp {Data Type} tor-onion-service-configuration +Data Type representing a Tor @dfn{Onion Service} configuration. +See @url{https://community.torproject.org/onion-services/, the Tor +project's documentation} for more information. +Available @code{tor-onion-service-configuration} fields are: -In this example, port 22 of the hidden service is mapped to local port 22, and -port 80 is mapped to local port 8080. +@table @asis +@item @code{name} (type: string) +Name for this Onion Service. This creates a +@file{/var/lib/tor/hidden-services/@var{name}} directory, where the +@file{hostname} file contains the @indicateurl{.onion} host name for this Onion +Service. -This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where -the @file{hostname} file contains the @code{.onion} host name for the hidden -service. +@item @code{mapping} (type: alist) +Association list of port to address mappings. The following example: +@lisp +'((22 . "127.0.0.1:22") + (80 . "127.0.0.1:8080")) +@end lisp +maps ports 22 and 80 of the Onion Service to the local ports 22 and 8080. -See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor -project's documentation} for more information. -@end deffn +@end table +@end deftp The @code{(gnu services rsync)} module provides the following services: diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 19c109d238..866368aa90 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -138,7 +138,16 @@ (define-module (gnu services networking) tor-configuration tor-configuration? - tor-hidden-service + tor-configuration-tor + tor-configuration-config-file + tor-configuration-hidden-services + tor-configuration-socks-socket-type + tor-configuration-control-socket-path + tor-onion-service-configuration + tor-onion-service-configuration? + tor-onion-service-configuration-name + tor-onion-service-configuration-mapping + tor-hidden-service ; deprecated tor-service-type network-manager-configuration @@ -908,7 +917,7 @@ (define-record-type* <tor-configuration> (default '())) (socks-socket-type tor-configuration-socks-socket-type ; 'tcp or 'unix (default 'tcp)) - (control-socket? tor-control-socket-path + (control-socket? tor-configuration-control-socket-path (default #f))) (define %tor-accounts @@ -922,11 +931,22 @@ (define %tor-accounts (home-directory "/var/empty") (shell (file-append shadow "/sbin/nologin"))))) -(define-record-type <hidden-service> - (hidden-service name mapping) - hidden-service? - (name hidden-service-name) ;string - (mapping hidden-service-mapping)) ;list of port/address tuples +(define-configuration/no-serialization tor-onion-service-configuration + (name + string + "Name for this Onion Service. This creates a +@file{/var/lib/tor/hidden-services/@var{name}} directory, where the +@file{hostname} file contains the @indicateurl{.onion} host name for this +Onion Service.") + + (mapping + alist + "Association list of port to address mappings. The following example: +@lisp +'((22 . \"127.0.0.1:22\") + (80 . \"127.0.0.1:8080\")) +@end lisp +maps ports 22 and 80 of the Onion Service to the local ports 22 and 8080.")) (define (tor-configuration->torrc config) "Return a 'torrc' file for CONFIG." @@ -966,7 +986,7 @@ (define (tor-configuration->torrc config) tcp-port host)) ports hosts))) '#$(map (match-lambda - (($ <hidden-service> name mapping) + (($ <tor-onion-service-configuration> name mapping) (cons name mapping))) hidden-services)) @@ -1053,7 +1073,7 @@ (define (tor-activation config) (chmod "/var/lib" #o755) (for-each initialize - '#$(map hidden-service-name + '#$(map tor-onion-service-configuration-name (tor-configuration-hidden-services config))))) (define tor-service-type @@ -1066,7 +1086,7 @@ (define tor-service-type (service-extension activation-service-type tor-activation))) - ;; This can be extended with hidden services. + ;; This can be extended with Tor Onion Services. (compose concatenate) (extend (lambda (config services) (tor-configuration @@ -1079,21 +1099,14 @@ (define tor-service-type "Run the @uref{https://torproject.org, Tor} anonymous networking daemon."))) -(define tor-hidden-service-type - ;; A type that extends Tor with hidden services. - (service-type (name 'tor-hidden-service) - (extensions - (list (service-extension tor-service-type list))) - (description - "Define a new Tor @dfn{hidden service}."))) - -(define (tor-hidden-service name mapping) +(define-deprecated (tor-hidden-service name mapping) + #f "Define a new Tor @dfn{hidden service} called @var{name} and implementing @var{mapping}. @var{mapping} is a list of port/host tuples, such as: @example - '((22 \"127.0.0.1:22\") - (80 \"127.0.0.1:8080\")) + '((22 . \"127.0.0.1:22\") + (80 . \"127.0.0.1:8080\")) @end example In this example, port 22 of the hidden service is mapped to local port 22, and @@ -1105,8 +1118,11 @@ (define (tor-hidden-service name mapping) See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} for more information." - (service tor-hidden-service-type - (hidden-service name mapping))) + (simple-service 'tor-hidden-service + tor-service-type + (list (tor-onion-service-configuration + (name name) + (mapping mapping))))) ;;; base-commit: 02033bfc05a1e82b12e80c6d000e1724e910e899 -- 2.39.2
Ludovic Courtès <ludo <at> gnu.org>
:Bruno Victal <mirai <at> makinata.eu>
:Message #13 received at 62005-done <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: Bruno Victal <mirai <at> makinata.eu> Cc: 62005-done <at> debbugs.gnu.org Subject: Re: [PATCH v2] services: tor: Deprecate 'tor-hidden-service' procedure. Date: Mon, 24 Apr 2023 22:11:09 +0200
[Message part 1 (text/plain, inline)]
Hi Bruno, Bruno Victal <mirai <at> makinata.eu> skribis: > Due to (now renamed) 'hidden-service' record type not being exported, the only > way Onion services (formely hidden services) could have worked is through the > now deprecated 'tor-hidden-service' procedure. > > This commit updates the Tor service documentation, corrects some inconsistently > named accessors in <tor-configuration> record-type, renames and refactors > tor-hidden-service-configuration to tor-onion-service-configuration using > define-configuration and also exports it, allowing Onion services to be > configured directly within a <tor-configuration> record. > Lastly, it also deprecates the 'tor-hidden-service' procedure. > > * doc/guix.texi (Networking Services): Substitute mentions of “Hidden services” > with “Onion Services”. Add a Tor Onion service configuration example. > Document <tor-onion-service-configuration>. Remove mention of > 'tor-hidden-service' procedure. > * gnu/services/networking.scm: Export tor-configuration-tor, > tor-configuration-config-file, tor-configuration-hidden-services, > tor-configuration-socks-socket-type, tor-configuration-control-socket-path, > tor-onion-service-configuration, tor-onion-service-configuration?, > tor-onion-service-configuration-name, tor-onion-service-configuration-mapping. > (<tor-configuration>)[control-socket?]: Rename accessor. > (<hidden-service>): Replace with … > (<tor-onion-service-configuration>): … this. > (tor-configuration->torrc): Update record-type name. > (tor-activation): Ditto. > (tor-hidden-service-type): Remove variable. > (tor-hidden-service): Deprecate procedure. Finally applied; I tweaked wording in the manual as shown below. Thank you! Ludo’.
[Message part 2 (text/x-patch, inline)]
diff --git a/doc/guix.texi b/doc/guix.texi index 6ebb245dd7..8afacfb54c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20600,9 +20600,10 @@ anonymous networking daemon. The service is configured using a @code{<tor-configuration>} record. By default, the Tor daemon runs as the @code{tor} unprivileged user, which is a member of the @code{tor} group. -In addition to adding Tor @dfn{Onion Service}s records to the service -configuration directly, this service can be extended by other services to add -Onion Services, as in this example: +@cindex onion services, for Tor +Services of this type can be extended by other services to specify +@dfn{onion services} (in addition to those already specified in +@code{tor-configuration}) as in this example: @lisp (simple-service 'my-extra-onion-service tor-service-type @@ -20629,8 +20630,8 @@ syntax. @item @code{hidden-services} (default: @code{'()}) The list of @code{<tor-onion-service-configuration>} records to use. -For any Onion Service you include in this list, appropriate -configuration to enable the Onion Service will be automatically added to +For any onion service you include in this list, appropriate +configuration to enable the onion service will be automatically added to the default configuration file. @item @code{socks-socket-type} (default: @code{'tcp})
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Tue, 23 May 2023 11:24:04 GMT) Full text and rfc822 format available.raid5atemyhomework <raid5atemyhomework <at> protonmail.com>
to control <at> debbugs.gnu.org
.
(Thu, 09 Jan 2025 18:20:01 GMT) Full text and rfc822 format available.Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Fri, 07 Feb 2025 12:24:06 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.