guix/gnu/packages/patches/yggdrasil-extra-config.patch
Artyom V. Poptsov 98da3707b6
gnu: yggdrasil: Update to 0.5.2.
* gnu/packages/networking.scm (yggdrasil): Update to 0.5.2.
  [propagated-inputs]: Rewrite inputs to replace "go-golang-org-x-sys" with
  "go-golang-org-x-sys-0.8".  Use "go-golang-org-x-sys-0.8".  Add
  "go-github-com-bits-and-blooms-bitset",
  "go-github-com-bits-and-blooms-bloom", "go-github-com-quic-go-quic-go", and
  "go-github-com-hjson-hjson-go".
* gnu/packages/patches/yggdrasil-extra-config.patch: Update.

Change-Id: I3c411524e589f0af52eaa90230810148f6ad4e31
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-11-25 23:35:03 +01:00

63 lines
2.5 KiB
Diff

From 5aeabc1a8a8c5ecea3f5d0b7bcfa0aa0767ac92d Mon Sep 17 00:00:00 2001
Message-ID: <5aeabc1a8a8c5ecea3f5d0b7bcfa0aa0767ac92d.1699726745.git.avityazev@posteo.org>
From: Aleksandr Vityazev <avityazev@posteo.org>
Date: Sat, 11 Nov 2023 19:50:46 +0300
Subject: [PATCH] add extra config file option to yggdrasil command
This is useful in Guix and Nix, because one config file can come
from the world-readable store and another can be placed directly
into /etc with much stricter permissions.
---
cmd/yggdrasil/main.go | 12 ++++++++++++
src/config/config.go | 2 +-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/cmd/yggdrasil/main.go b/cmd/yggdrasil/main.go
index a225755..3f53dda 100644
--- a/cmd/yggdrasil/main.go
+++ b/cmd/yggdrasil/main.go
@@ -42,6 +42,7 @@ func main() {
genconf := flag.Bool("genconf", false, "print a new config to stdout")
useconf := flag.Bool("useconf", false, "read HJSON/JSON config from stdin")
useconffile := flag.String("useconffile", "", "read HJSON/JSON config from specified file path")
+ extraconffile := flag.String("extraconffile", "", "extra (usually private) HJSON/JSON config from specified file path")
normaliseconf := flag.Bool("normaliseconf", false, "use in combination with either -useconf or -useconffile, outputs your configuration normalised")
exportkey := flag.Bool("exportkey", false, "use in combination with either -useconf or -useconffile, outputs your private key in PEM format")
confjson := flag.Bool("json", false, "print configuration from -genconf or -normaliseconf as JSON instead of HJSON")
@@ -137,6 +138,17 @@ func main() {
return
}
+ if *extraconffile !="" {
+ f, err := os.Open(*extraconffile)
+ if err != nil {
+ panic(err)
+ }
+ if _, err := cfg.ReadFrom(f); err != nil {
+ panic(err)
+ }
+ _ = f.Close()
+ }
+
privateKey := ed25519.PrivateKey(cfg.PrivateKey)
publicKey := privateKey.Public().(ed25519.PublicKey)
diff --git a/src/config/config.go b/src/config/config.go
index e899a35..76b9ec8 100644
--- a/src/config/config.go
+++ b/src/config/config.go
@@ -112,7 +112,7 @@ func (cfg *NodeConfig) ReadFrom(r io.Reader) (int64, error) {
// then parse the configuration we loaded above on top of it. The effect
// of this is that any configuration item that is missing from the provided
// configuration will use a sane default.
- *cfg = *GenerateConfig()
+ // *cfg = *GenerateConfig()
if err := cfg.UnmarshalHJSON(conf); err != nil {
return n, err
}
base-commit: b759683b76985665b5218346abab35f08d9f4d38
--
2.41.0