[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
09/12: services: jami-dbus-session: Use ‘least-authority-wrapper’.
From: |
guix-commits |
Subject: |
09/12: services: jami-dbus-session: Use ‘least-authority-wrapper’. |
Date: |
Thu, 21 Dec 2023 18:36:54 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit 8bd1c14997fe2393e79c19ff5f3230a88cfb9abc
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sun Nov 12 22:49:12 2023 +0100
services: jami-dbus-session: Use ‘least-authority-wrapper’.
* gnu/services/telephony.scm (jami-shepherd-services): Use
‘least-authority-wrapper’ for ‘dbus-daemon’. Use ‘fork+exec-command’
instead of ‘make-forkexec-constructor/container’ in the ‘start’ method’.
Remove reference to (gnu build shepherd).
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I9d9f8de6ecea77950000ff64aa8c8d097dc028a0
---
gnu/services/telephony.scm | 66 ++++++++++++++++++++++++++++++----------------
1 file changed, 43 insertions(+), 23 deletions(-)
diff --git a/gnu/services/telephony.scm b/gnu/services/telephony.scm
index c9b5d6cd99..832470527d 100644
--- a/gnu/services/telephony.scm
+++ b/gnu/services/telephony.scm
@@ -34,6 +34,9 @@
#:use-module (guix modules)
#:use-module (guix packages)
#:use-module (guix gexp)
+ #:autoload (guix least-authority) (least-authority-wrapper)
+ #:autoload (gnu system file-systems) (file-system-mapping)
+ #:autoload (gnu build linux-container) (%namespaces)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-2)
#:use-module (srfi srfi-26)
@@ -298,7 +301,28 @@ CONFIG, a <jami-configuration> object."
(let* ((libjami (jami-configuration-libjami config))
(nss-certs (jami-configuration-nss-certs config))
(dbus (jami-configuration-dbus config))
- (dbus-daemon (file-append dbus "/bin/dbus-daemon"))
+ (dbus-daemon (least-authority-wrapper
+ (file-append dbus "/bin/dbus-daemon")
+ #:name "dbus-daemon"
+ #:user "jami"
+ #:group "jami"
+ #:preserved-environment-variables
+ '("XDG_DATA_DIRS")
+ #:mappings
+ (list (file-system-mapping
+ (source "/dev/log") ;for syslog
+ (target source))
+ (file-system-mapping
+ (source "/var/run/jami")
+ (target source)
+ (writable? #t))
+ (file-system-mapping
+ (source (gexp-input libjami "bin"))
+ (target source)))
+ ;; 'dbus-daemon' wants to look up users in /etc/passwd
+ ;; so run it in the global user namespace.
+ #:namespaces
+ (fold delq %namespaces '(net user))))
(accounts (jami-configuration-accounts config))
(declarative-mode? (maybe-value-set? accounts)))
@@ -490,8 +514,7 @@ argument, either a registered username or the fingerprint
of the account.")
(list (shepherd-service
(documentation "Run a D-Bus session for the Jami daemon.")
(provision '(jami-dbus-session))
- (modules `((gnu build shepherd)
- (gnu build dbus-service)
+ (modules `((gnu build dbus-service)
(gnu build jami-service)
(gnu system file-systems)
,@%default-modules))
@@ -499,26 +522,23 @@ argument, either a registered username or the fingerprint
of the account.")
;; activation for D-Bus, such as a /etc/machine-id file.
(requirement '(dbus-system syslogd))
(start
- #~(make-forkexec-constructor/container
- (list #$dbus-daemon "--session"
- "--address=unix:path=/var/run/jami/bus"
- "--syslog-only")
- #:pid-file "/var/run/jami/pid"
- #:mappings
- (list (file-system-mapping
- (source "/dev/log") ;for syslog
- (target source))
- (file-system-mapping
- (source "/var/run/jami")
- (target source)
- (writable? #t)))
- #:user "jami"
- #:group "jami"
- #:environment-variables
- ;; This is so that the cx.ring.Ring service D-Bus
- ;; definition is found by dbus-daemon.
- (list (string-append "XDG_DATA_DIRS="
- #$libjami:bin "/share"))))
+ #~(lambda ()
+ (define pid
+ (fork+exec-command
+ (list #$dbus-daemon "--session"
+ "--address=unix:path=/var/run/jami/bus"
+ "--syslog-only")
+ #:environment-variables
+ ;; This is so that the cx.ring.Ring service D-Bus
+ ;; definition is found by dbus-daemon.
+ (list (string-append "XDG_DATA_DIRS="
+ #$libjami:bin "/share"))))
+
+ ;; The PID file contains the "wrong" PID (the one in the
+ ;; separate PID namespace) so ignore it and return the
+ ;; value returned by 'fork+exec-command'.
+ (and (read-pid-file "/var/run/jami/pid")
+ pid)))
(stop #~(make-kill-destructor)))
(shepherd-service
- 11/12: services: Remove unnecessary references to (gnu build shepherd)., (continued)
- 11/12: services: Remove unnecessary references to (gnu build shepherd)., guix-commits, 2023/12/21
- 07/12: tests: jami: Check status of Jami D-Bus session., guix-commits, 2023/12/21
- 06/12: least-authority: Add support for changing UIDs/GIDs before exec., guix-commits, 2023/12/21
- 05/12: services: bitlbee: Remove use of ‘make-forkexec-constructor/container’., guix-commits, 2023/12/21
- 01/12: gexp: Add compiler for <gexp-input>., guix-commits, 2023/12/21
- 10/12: services: jami: Use ‘least-authority-wrapper’., guix-commits, 2023/12/21
- 12/12: shepherd: Remove ‘make-forkexec-constructor/container’., guix-commits, 2023/12/21
- 08/12: tests: jami: Double timeouts., guix-commits, 2023/12/21
- 03/12: services: pagekite: Use ‘least-authority-wrapper’., guix-commits, 2023/12/21
- 04/12: services: pagekite: Add ‘configuration’ action., guix-commits, 2023/12/21
- 09/12: services: jami-dbus-session: Use ‘least-authority-wrapper’.,
guix-commits <=