2tefan
a0d0788b59
Handle packetSize more carefully ( #132 )
...
Also move MTU + max packet size to `internal/protocol/network.go`.
And add tests.
2026-08-27 00:47:40 +02:00
Max
561d01fc22
Use ndg from nixpkgs ( #130 )
...
* remove ndg flake input
* flake.lock: Update
Flake lock file updates:
• Removed input 'ndg'
• Removed input 'ndg/nixpkgs'
2026-07-14 22:53:49 +02:00
Max
cb25745b35
0.14.1 -> 0.15.0 ( #129 )
2026-06-23 14:49:46 +00:00
Max
6da87d7ff6
Bump dependencies ( #127 )
...
* flake.lock: Update
Flake lock file updates:
• Updated input 'flake-parts':
'github:hercules-ci/flake-parts/3107b77cd68437b9a76194f0f7f9c55f2329ca5b?narHash=sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA%3D' (2026-04-01)
→ 'github:hercules-ci/flake-parts/f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb?narHash=sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4%3D' (2026-05-13)
• Updated input 'hercules-ci-effects':
'github:hercules-ci/hercules-ci-effects/af4331c44f13977b6964745454eadcfee2d244d1?narHash=sha256-OOEWyt8ma7QAysDbiP65J7li7KIdtZfnbA11gFnwyEI%3D' (2026-05-16)
→ 'github:hercules-ci/hercules-ci-effects/86c7c78a840b44b1a0a5cbc7e9baa0154c0d0f3f?narHash=sha256-vy0EiuiLRKWbXYOqdEKoy5ImlbHcdMC52x9BcC/MwQ8%3D' (2026-06-15)
• Updated input 'ndg':
'github:feel-co/ndg/d678855cdd0385b1bd78adf3456d072642317d6a?narHash=sha256-gJcybEQZa5Jdh3MSgvGLqiqQFRTZ3IxQFvVIsJecbno%3D' (2026-04-14)
→ 'github:feel-co/ndg/38edc9a7889854aed58b674158e02f0f7731328a?narHash=sha256-be9NxraQyoB4wLjiPHxpmklfJYuB%2BQs/x69P395I1Fk%3D' (2026-06-21)
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9?narHash=sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM%3D' (2026-04-14)
→ 'github:NixOS/nixpkgs/567a49d1913ce81ac6e9582e3553dd90a955875f?narHash=sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H%2BCNW1Ck8B%2B8%3D' (2026-06-16)
* bump go deps
* netstack: update vendored tun.go
* update vendorHash
* system -> stdenv.hostPlatform.system
2026-06-23 14:14:39 +00:00
wanderer
f1538eef4d
feat: make DNS TLD configurable ( #124 )
...
Add a 'domain' option to the NixOS module and JSON config that
controls the domain suffix used for internal DNS names. Defaults to
'hyprspace' for backward compatibility. Supports multi-label domains
(e.g. 'vpn.internal').
Co-authored-by: Max <max@privatevoid.net>
2026-06-22 17:48:14 +00:00
DavHau
6f3c85a1ef
feat: add mDNS peer discovery for LAN environments ( #102 )
...
Co-authored-by: Max <max@privatevoid.net>
2026-06-22 14:01:34 +00:00
Max
7e03fcc1d5
make bootstrap peers configurable ( #111 )
2026-06-18 22:13:10 +00:00
Max
38d5be9aaf
Make packet streams bidirectional ( #121 )
2026-06-18 22:11:32 +00:00
Roland Urbano
993f7661d6
Tests Phase 1 - Pure Function & In-Memory Mocked Tests ( #110 )
...
Signed-off-by: Roland Urbano <roland.urbano@nts.eu>
Co-authored-by: Max <max@privatevoid.net>
2026-06-19 00:03:09 +02:00
Roland Urbano
f2e4cc0b9c
bug: added empty check for FindPeerByCLIRef ( #126 )
2026-06-18 21:49:51 +00:00
Max
6a5d417119
Fix some documentation issues ( #123 )
...
* docs: fix links
* docs: use new schema in examples
2026-06-18 01:17:29 +02:00
Max
9b2d97f96b
cli: add keygen command ( #118 )
...
* cli: factor out key generation
* cli: add keygen command
2026-06-12 23:25:17 +02:00
Max
105806fa99
0.14.0 -> 0.14.1 ( #120 )
2026-06-08 20:47:21 +00:00
Max
90861d16a8
p2p: actually apply filters in FilterGater ( #119 )
2026-06-08 22:45:07 +02:00
Max
d8fd0bec31
0.13.1 -> 0.14.0 ( #117 )
2026-05-31 15:32:57 +00:00
Roland Urbano
3f573ef293
fix(config): error on ambiguous peer ID prefix ( #113 )
...
FindPeerByIDPrefix previously returned the first peer whose ID started
with the given prefix, silently ignoring further matches. With Ed25519
peer IDs all sharing the leading "12D3KooW" (8 chars), short prefixes
can match multiple peers; the chosen peer then depends on slice order,
which is effectively undefined from the user's perspective.
Change FindPeerByIDPrefix and its wrapper FindPeerByCLIRef to return
(*Peer, error):
- 0 matches -> (nil, nil)
- 1 match -> (&peer, nil)
- 2+ match -> (nil, error) describing the ambiguity
Call sites in config.Read and rpc/server.go updated accordingly:
ambiguity surfaces as a config-load / CLI error instead of a silent
wrong-peer resolution.
Not a wire-protocol or config-format change. Only behavior visible at
CLI invocation and config load. Users relying on short prefixes that
happened to match multiple peers will now see a clear error and must
lengthen the prefix.
2026-05-23 22:26:05 +02:00
Max
71eeca5801
Fix Nix eval warnings ( #112 )
...
* runCommandNoCC -> runCommand
* drop x86_64-darwin
* use upstream hercules-ci-effects
* flake.lock: Update
Flake lock file updates:
• Updated input 'hercules-ci-effects':
'github:max-privatevoid/hercules-ci-effects/f3a32947c119cfe0f0130ad91b37028a3dae22d1?narHash=sha256-3A2B8k6YCuzt5pT/CQEltUghtE6heSlk2tMYkg/fUWI%3D' (2026-04-15)
→ 'github:hercules-ci/hercules-ci-effects/af4331c44f13977b6964745454eadcfee2d244d1?narHash=sha256-OOEWyt8ma7QAysDbiP65J7li7KIdtZfnbA11gFnwyEI%3D' (2026-05-16)
2026-05-22 22:54:48 +02:00
Max
769c101a1f
github-releases: skip creating release if it already exists ( #109 )
2026-05-18 22:48:47 +02:00
Roland Urbano
f0c30f0769
Add filterPrivateAddresses option to block RFC1918/link-local dials ( #101 )
...
* Add filterPrivateAddresses option to block RFC1918/link-local dials (#22 )
* Apply suggestion from @max-privatevoid
Co-authored-by: Max <max@privatevoid.net>
* Simplified config parsing
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* NewRecursionGater: return connmgr.ConnectionGater
* implement MultiGater
* implement FilterGater
* use MultiGater for private address filtering
---------
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
Co-authored-by: Max <max@privatevoid.net>
2026-05-18 22:20:44 +02:00
Asif Khan
708121bde0
Add init name flag ( #107 )
2026-04-21 19:55:14 +02:00
Max
91a2cd0bc4
Bump dependencies ( #104 )
...
* meta: apply follows to ndg
* flake.lock: Update
Flake lock file updates:
• Updated input 'flake-parts':
'github:hercules-ci/flake-parts/9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569?narHash=sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98%3D' (2025-06-08)
→ 'github:hercules-ci/flake-parts/3107b77cd68437b9a76194f0f7f9c55f2329ca5b?narHash=sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA%3D' (2026-04-01)
• Updated input 'hercules-ci-effects':
'github:max-privatevoid/hercules-ci-effects/b8127446a483cfd91495037e343b592662033188?narHash=sha256-xlxgYZ0eCnr9ikQuM5VuD8rUjLdbGzSKgF2EoRKDn/8%3D' (2025-07-01)
→ 'github:max-privatevoid/hercules-ci-effects/f3a32947c119cfe0f0130ad91b37028a3dae22d1?narHash=sha256-3A2B8k6YCuzt5pT/CQEltUghtE6heSlk2tMYkg/fUWI%3D' (2026-04-15)
• Updated input 'ndg/nixpkgs':
'https://releases.nixos.org/nixos/unstable/nixos-26.05pre972949.6201e203d095/nixexprs.tar.xz?lastModified=1775036866&narHash=sha256-ByAX1LkhCwZ94%2BKnFAmnJSMAvui7kgCxjHgUHsWAbfI%3D&rev=6201e203d09599479a3b3450ed24fa81537ebc4e ' (2026-04-01)
→ follows 'nixpkgs'
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/30e2e2857ba47844aa71991daa6ed1fc678bcbb7?narHash=sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM%3D' (2025-06-27)
→ 'github:NixOS/nixpkgs/4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9?narHash=sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM%3D' (2026-04-14)
* go mod tidy
* go-libp2p: 0.42.0 -> 0.48.0
* go-libp2p-kad-dht: 0.33.1 -> 0.39.0
* dev: use nixfmt
* dev: reformat
* update vendorHash
2026-04-16 22:17:31 +01:00
Max
ade67e761d
Documentation refactor ( #103 )
...
* docs: switch to ndg
* flake.lock: Update
Flake lock file updates:
• Added input 'ndg':
'github:feel-co/ndg/d678855cdd0385b1bd78adf3456d072642317d6a?narHash=sha256-gJcybEQZa5Jdh3MSgvGLqiqQFRTZ3IxQFvVIsJecbno%3D' (2026-04-14)
• Added input 'ndg/nixpkgs':
'https://releases.nixos.org/nixos/unstable/nixos-26.05pre972949.6201e203d095/nixexprs.tar.xz?lastModified=1775036866&narHash=sha256-ByAX1LkhCwZ94%2BKnFAmnJSMAvui7kgCxjHgUHsWAbfI%3D&rev=6201e203d09599479a3b3450ed24fa81537ebc4e ' (2026-04-01)
2026-04-16 21:33:58 +01:00
Max
28d48c325e
0.13.0 -> 0.13.1 ( #98 )
2026-03-26 00:36:58 +00:00
Max
cf2494bf31
nixos: fix default values for acl-related options ( #97 )
2026-03-26 01:33:25 +01:00
Max
716bd00f09
0.12.0 -> 0.13.0 ( #96 )
2026-03-25 18:45:00 +00:00
Roland Urbano
ed30c60c95
Implementation for basic service access control ( #95 )
...
* Added ServicesACL config
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* Adding filter to service receiver
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* Implemented ACL handling in ServiceNetwork
Signed-off-by: Roland Urbano <roland.urbano@nts.eu>
* Updated Schema and added parsing for acl config
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* Updated service package and fixed ACL handling
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* go-jsonschema: 0.16.0 -> 0.22.0
* nixos: set acls on services directly
* config: move ServicesACL to Services
* svc: simplify acl logic
* remove whitespace
* apply nixfmt
---------
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
Signed-off-by: Roland Urbano <roland.urbano@nts.eu>
Co-authored-by: Max <max@privatevoid.net>
2026-03-25 19:16:52 +01:00
Max
ff94c7869e
Better systemd-resolved integration ( #93 )
...
* dns: configure systemd-resolved to not use all the protocols we don't
support
* dns: print startup info at info log level
* dns: factor out systemd-resolved setup, downgrade errors to warning
2026-01-13 23:59:38 +01:00
Max
3a710c4bae
0.11.0 -> 0.12.0 ( #91 )
2025-12-12 18:01:18 +00:00
Roland Urbano
2e36bcdce6
Enhanced Logging with ipfs/go-log ( #90 )
...
* Added ipfs/go-log and updated up.go
Use ipfs/go-log over fmt.Println
Fixed more log usages with go-log
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
log: refactor log usage to provide module global logger with configurable log level
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
Refactored logger initialization for modules
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
Removed object member loggers
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* Implemented logging with ipfs/go-log
logging: fix logger level config
Co-authored-by: Max <max@privatevoid.net>
Update svc/network.go
Co-authored-by: Max <max@privatevoid.net>
removed static info log level constant
Co-authored-by: Max <max@privatevoid.net>
Update dns/server.go
Co-authored-by: Max <max@privatevoid.net>
Update dns/server.go
Co-authored-by: Max <max@privatevoid.net>
Update rpc/server.go
Co-authored-by: Max <max@privatevoid.net>
Applied MR suggestions
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
Enhanced logging
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
* update vendorHash
* go fmt
---------
Signed-off-by: Roland Urbano <urbano.roland@gmail.com>
Co-authored-by: Max <max@privatevoid.net>
2025-12-07 19:31:49 +00:00
Max
df929520a9
rpc: try to remove socket if already exists ( #89 )
2025-12-05 15:14:40 +00:00
Max
e994260bdb
Node refactor ( #88 )
...
* node: extract most of the logic from cli/up.go
* node: close interface after bringing it down
* synchronize shutdowns with a WaitGroup
* p2p: use Connect instead of DialPeer
* rpc: defer Close
2025-11-30 14:28:51 +01:00
Max
8f5778dffe
0.10.2 -> 0.11.0 ( #81 )
2025-07-01 22:06:50 +00:00
Max
71dcc1886e
Release automation ( #80 )
...
* add hercules-ci-effects
* flake.lock: Update
Flake lock file updates:
• Added input 'hercules-ci-effects':
'github:max-privatevoid/hercules-ci-effects/b8127446a483cfd91495037e343b592662033188?narHash=sha256-xlxgYZ0eCnr9ikQuM5VuD8rUjLdbGzSKgF2EoRKDn/8%3D' (2025-07-01)
• Added input 'hercules-ci-effects/flake-parts':
follows 'flake-parts'
• Added input 'hercules-ci-effects/nixpkgs':
follows 'nixpkgs'
* provide binary artifacts via github releases
* auto-tag releases from current package version
2025-07-01 23:45:12 +02:00
Max
359adb47fa
Update dependencies ( #79 )
...
* dev: fuck you, google
* flake.lock: Update
Flake lock file updates:
• Updated input 'flake-parts':
'github:hercules-ci/flake-parts/506278e768c2a08bec68eb62932193e341f55c90?narHash=sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS%2Bb4tfNFCwE%3D' (2024-11-01)
→ 'github:hercules-ci/flake-parts/9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569?narHash=sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98%3D' (2025-06-08)
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
→ 'github:NixOS/nixpkgs/30e2e2857ba47844aa71991daa6ed1fc678bcbb7?narHash=sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM%3D' (2025-06-27)
* go-libp2p: 0.38.1 -> 0.42.0
* go-libp2p-kad-dht: 0.28.0 -> 0.33.1
* update vendorHash
2025-07-01 10:31:05 +02:00
Jörg Thalheim
a5957e485f
go-libp2p: 0.37.0 -> 0.38.1 ( #75 )
2025-01-12 14:51:42 +00:00
Jörg Thalheim
38b30cee47
update jsonschema lib ( #74 )
2025-01-12 14:50:40 +00:00
Jörg Thalheim
14f36cbe29
buildGoModule: switch to structuredAttrs ( #73 )
...
* buildGoModule: switch to structuredAttrs
* update nixpkgs
2025-01-12 14:47:27 +00:00
Jörg Thalheim
fc42d2eec0
Fix various linting issues. ( #68 )
...
* remove unused vars/functions
* all constants need explicit types
See https://staticcheck.dev/docs/checks/#SA9004
* cli/up: add missing error checks
* server: fix potential race condition of chown when binding listening socket
a process waiting for the socket appear may bind before we can apply
filesystem permissions.
2024-11-17 17:20:01 +00:00
Max
83e755f445
libp2p 0.37.0 and other updates ( #66 )
...
* update go deps
go-libp2p: 0.33.2 -> 0.37.0
go-libp2p-kad-dht: 0.25.2 -> 0.28.0
go-multiaddr: 0.12.3 -> 0.14.0
* update vendorHash
2024-11-14 10:19:28 +00:00
Max
e8e8b474d9
flake.lock: Update ( #65 )
...
Flake lock file updates:
• Updated input 'flake-parts':
'github:hercules-ci/flake-parts/9126214d0a59633752a136528f5f3b9aa8565b7d?narHash=sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm%2BGpZNw%3D' (2024-04-01)
→ 'github:hercules-ci/flake-parts/506278e768c2a08bec68eb62932193e341f55c90?narHash=sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS%2Bb4tfNFCwE%3D' (2024-11-01)
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856?narHash=sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY%3D' (2024-04-25)
→ 'github:NixOS/nixpkgs/76612b17c0ce71689921ca12d9ffdc9c23ce40b2?narHash=sha256-IigrKK3vYRpUu%2BHEjPL/phrfh7Ox881er1UEsZvw9Q4%3D' (2024-11-09)
2024-11-12 08:45:32 +00:00
Max
4d8e966abc
cli: color p2p-circuit addresses gray in status output ( #64 )
2024-11-12 09:28:50 +01:00
Max
b54fd70812
0.10.1 -> 0.10.2 ( #55 )
2024-07-15 23:07:21 +00:00
Max
7975eea2f6
add vendor package with code generation output ( #54 )
2024-07-16 01:02:58 +02:00
Max
76a3f73a42
Build and installation docs ( #47 )
...
* README: document basic build/setup steps
* document dev setup and how the config schema works
* set up for use with direnv
* mention direnv in the dev setup docs
* README: mention developer docs
* provide some contributor infos
2024-07-15 17:51:14 +00:00
Max
565f297061
fix docs output directory ( #52 )
2024-07-04 16:59:59 +00:00
Max
e2e2cd7723
set meta.mainProgram ( #48 )
2024-06-29 12:54:10 +00:00
Max
5f1093ac88
reserve 2 relay address slots for unlimited relays ( #43 )
2024-06-28 14:01:38 +00:00
Gerg-L
165bac6c90
remove with lib, use lib.getExe, use runCommand ( #42 )
2024-06-09 19:53:04 +00:00
Max
df73583638
0.10.0 -> 0.10.1 ( #40 )
2024-06-05 19:35:11 +00:00
Max
64c86d5555
fix: use opt.metricsPort.value ( #39 )
2024-06-05 18:45:19 +00:00