1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

17 Commits

Author SHA1 Message Date
Ludovic Courtès
4ed3c827c6 services: secret-service: Add #:timeout to ‘secret-service-receive-secrets’.
* gnu/build/secret-service.scm (secret-service-receive-secrets):
Add #:timeout parameter and honor it.

Change-Id: I4b6720444a28e1424ede07b6c329cd355b27b5e3
2025-09-21 17:57:16 +02:00
Ludovic Courtès
3799b786f2 services: secret-service: Fiberize ‘secret-service-receive-secrets’.
* gnu/build/secret-service.scm (secret-service-receive-secrets)
[wait-for-client]: Pass ‘SOCK_NONBLOCK’ to ‘socket’.  Use
‘wait-for-readable-fd’ instead of ‘select’.  Pass flags to ‘accept’.

Change-Id: I1d5ff8e286942838af5b77fbb4068689a0529ed1
2025-09-21 17:57:16 +02:00
Ludovic Courtès
1567529b91 services: secret-service: Remove redundant ‘dump’ procedure.
* gnu/build/secret-service.scm (secret-service-receive-secrets)[dump]: Remove.
Use ‘dump-port’ from (guix build utils) instead.

Change-Id: I5a098a6f4f6629cf275862e9f10c9a2718bb27a1
2025-09-21 17:57:16 +02:00
Ludovic Courtès
9de6ed0a7e services: secret-service: Fiberize ‘secret-service-send-secrets’.
The previous code was tentatively written to run either in a Fibers context or
in a non-Fibers context.  Drop the non-Fibers code since this always runs
within ‘shepherd’, which is fiberized.

* gnu/build/secret-service.scm (with-modules): Remove.
(wait-for-readable-fd): Rewrite using regular Fibers operations.
(secret-service-send-secrets): Use ‘SOCK_NONBLOCK’.  Simplify ‘sleep’ binding.

Change-Id: Ic05d0bc54e6d2df89b6602bc716402067c845792
2025-09-21 17:57:15 +02:00
Ludovic Courtès
f331a667d3 services: secret-service: Make the endpoint configurable.
Until now, the secret service had a hard-coded TCP endpoint on port
1004.  This change lets users specify arbitrary socket addresses.

* gnu/build/secret-service.scm (socket-address->string): New procedure,
taken from Shepherd.
(secret-service-send-secrets): Replace ‘port’ by ‘address’ and adjust
accordingly.
(secret-service-receive-secrets): Likewise.
* gnu/services/virtualization.scm (secret-service-shepherd-services):
Likewise.
(secret-service-operating-system): Add optional ‘address’ parameter and
honor it.  Adjust ‘start’ method accordingly.

Change-Id: I87a9514f1c170dca756ce76083d7182c6ebf6578
2024-02-10 22:59:43 +01:00
Ludovic Courtès
e90a972ce2 secret-service: Increase default handshake timeout.
* gnu/build/secret-service.scm (secret-service-send-secrets):
Increase #:handshake-timeout.
2023-10-01 22:58:19 +02:00
Ludovic Courtès
e88bf64e6f services: dbus-service, secret-service: Do not cause (fibers) to be loaded.
* gnu/build/dbus-service.scm (sleep*): Pass #:ensure #f to 'resolve-module'.
* gnu/build/secret-service.scm (wait-for-readable-fd): Likewise.
2023-05-06 17:12:45 +02:00
Ludovic Courtès
491dd62b38 secret-service: Mark sockets as SOCK_CLOEXEC.
* gnu/build/secret-service.scm (secret-service-send-secrets)
(secret-service-receive-secrets): Pass SOCK_CLOEXEC to 'socket'.
2022-09-13 00:31:04 +02:00
Ludovic Courtès
28b3763e33 secret-service: Allow cooperative scheduling when Fibers is used.
This lets the 'childhurd' service start in the background, letting
shepherd perform other tasks in the meantime, including serving
clients (such as the 'herd' command).

* gnu/build/secret-service.scm (with-modules): New macro.
(wait-for-readable-fd): Add cooperative implementation when Fibers is in
use.
(secret-service-send-secrets): Define 'sleep' so that it cooperates when
Fibers is in use.
2022-04-07 00:08:56 +02:00
Ludovic Courtès
83121aa85a secret-service: Abstract 'wait-for-readable-fd'.
* gnu/build/secret-service.scm (wait-for-readable-fd): New procedure.
(secret-service-send-secrets): Use it instead of 'select'.
2022-04-07 00:08:56 +02:00
Ludovic Courtès
39e3b4b7ce services: secret-service: Turn into a Shepherd service.
* gnu/services/virtualization.scm (secret-service-activation): Remove.
(secret-service-shepherd-services): New procedure.
(secret-service-type)[extensions]: Remove ACTIVATION-SERVICE-TYPE
extension.  Add SHEPHERD-ROOT-SERVICE-TYPE and
USER-PROCESSES-SERVICE-TYPE extensions.
* gnu/build/secret-service.scm (delete-file*): New procedure.
(secret-service-receive-secrets): Use it.
2021-12-12 23:20:49 +01:00
Ludovic Courtès
d5366500ec secret-service: Add proper logging procedure and log to syslog.
* gnu/build/secret-service.scm (log): New macro.
(secret-service-send-secrets, secret-service-receive-secrets): Use it
instead of raw 'format' calls.
2020-09-29 21:56:27 +02:00
Ludovic Courtès
59261a22f9 services: secret-service: Add initial client/server handshake.
This allows the client running on the host to know when it's actually
connect to the server running in the guest.  Failing that, the client
would connect right away to QEMU and send secrets even though the server
is not running yet in the guest, which is unreliable.

* gnu/build/secret-service.scm (secret-service-send-secrets): Add
 #:handshake-timeout.  Read from SOCK an initial message from the
server.  Return #f on error.
(secret-service-receive-secrets): Send 'secret-service-server' message
to the client.  Close SOCK upon timeout.
* gnu/services/virtualization.scm (hurd-vm-shepherd-service): 'start'
method returns #f when 'secret-service-send-secrets' returns #f.
2020-09-29 21:56:27 +02:00
Ludovic Courtès
f9090015c5 secret-service: Fix file port leak in 'secret-service-send-secrets'.
* gnu/build/secret-service.scm (secret-service-send-secrets): Use
'call-with-input-file' instead of 'open-input-file'.
2020-09-29 21:56:27 +02:00
Ludovic Courtès
4d047853da secret-service: Add a timeout when waiting for a client.
* gnu/build/secret-service.scm (secret-service-receive-secrets)
[wait-for-client]: Call 'select' with a 60s timeout before 'accept'.
Return #f upon timeout.
[read-secrets]: Return FILES on success.
Adjust caller of 'wait-for-client' to handle #f.
2020-09-29 21:56:27 +02:00
Ludovic Courtès
118b6dbb46 secret-service: Clarify the origin of messages.
* gnu/build/secret-service.scm (secret-service-send-secrets)
(secret-service-receive-secrets): Prefix messages by "secret service".
2020-09-29 21:56:26 +02:00
Jan (janneke) Nieuwenhuizen
ec32d4f291 services: Add secret-service-type.
This adds a "secret-service" that can be added to a Childhurd VM to receive
out-of-band secrets (keys) sent from the host.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>

* gnu/services/virtualization.scm (secret-service-activation): New procedure.
(secret-service-type): New variable.
* gnu/build/secret-service.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
2020-09-01 16:06:38 +02:00