13 Commits
Author SHA1 Message Date
sir_melonchenandClaude Opus 5.5 2555028956 fix: agents enrolled by hand run as systemd services
ci / Protobuf (push) Successful in 12s
ci / Web (lint, test, audit, build) (push) Successful in 2m44s
ci / Shell and licence headers (push) Successful in 21s
ci / Go (lint, test, vuln) (push) Successful in 6m22s
ci / Release build (dry run) (push) Successful in 3m51s
ci / Integration (real BIND and Kea) (push) Successful in 2m33s
ci / Development environment (compose) (push) Successful in 17s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 4m14s
install / Installation (debian:12) (push) Successful in 4m54s
install / Installation (debian:13) (push) Successful in 5m6s
install / Installation (ubuntu:22.04) (push) Successful in 5m16s
install / Installation (rocky:9) (push) Successful in 7m28s
install / Installation (ubuntu:24.04) (push) Successful in 8m58s
release / release (push) Successful in 4m11s
An agent installed without token and enrolled with the command of the web
interface never ran as a service: the installer left the unit disabled and
the root-run enrollment left an identity the service user could not read.
The installer now always enables the agent unit (it waits for the
identity via ConditionPathExists), enroll as root hands the state over to
the service user and enables and starts the unit, and rerunning or
upgrading the installer repairs agents enrolled by hand. The web interface
shows the matching installer command next to the enroll command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 02:44:03 +02:00
sir_melonchenandClaude Opus 5.5 346d24cb34 fix: address check pings with a raw socket and asks the DNS agents
ci / Protobuf (push) Successful in 16s
ci / Web (lint, test, audit, build) (push) Successful in 2m53s
ci / Shell and licence headers (push) Successful in 23s
ci / Release build (dry run) (push) Successful in 3m46s
ci / Integration (real BIND and Kea) (push) Successful in 2m47s
ci / Development environment (compose) (push) Successful in 18s
install / Installation (debian:13) (push) Successful in 6m59s
ci / Go (lint, test, vuln) (push) Successful in 6m4s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 3m50s
install / Installation (debian:12) (push) Successful in 6m17s
install / Installation (ubuntu:22.04) (push) Successful in 6m31s
install / Installation (rocky:9) (push) Successful in 9m53s
install / Installation (ubuntu:24.04) (push) Successful in 6m38s
release / release (push) Successful in 4m15s
On the user's server the check reported "socket: permission denied" for
ping and asked only the server's own resolver. Ping now falls back to a
raw ICMP socket (the server unit gets CAP_NET_RAW, like /bin/ping); DNS
asks the DNS agents outside clusters when no name server addresses are
configured, gives every server its own timeout, and explains missing
records (dynamic zone, system resolver, not deployed yet).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 01:06:55 +02:00
sir_melonchenandClaude Opus 5.5 3872eb47c3 fix(systemd): allow netlink for the DHCP agent (kea-dhcp4 -t detects interfaces)
install / Installation (debian:12) (push) Failing after 7m35s
install / Installation (debian:13) (push) Successful in 4m8s
install / Installation (rocky:9) (push) Successful in 5m5s
install / Installation (ubuntu:24.04) (push) Successful in 4m2s
install / Installation (ubuntu:22.04) (push) Failing after 7m48s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 20:05:09 +02:00
sir_melonchenandClaude Opus 5.5 927e8f62b7 feat(release): build .deb and .rpm packages with nfpm
make packages (or make release PACKAGES=1) packages the binaries from the
release tarballs with the unit rendered for /usr/bin and the license
text, and rewrites SHA256SUMS over tarballs and packages. nfpm 2.48.0 is
installed pinned with checksum by scripts/ci/install-tools.sh, which can
now install single tools. Make targets lint-brand and sign-release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:41:12 +02:00
sir_melonchenandClaude Opus 5.5 7c223161a1 feat: render the systemd unit templates
ci / Web (lint, test, audit, build) (push) Successful in 1m22s
ci / Shell and licence headers (push) Successful in 8s
ci / Integration (real BIND and Kea) (push) Successful in 2m6s
ci / Protobuf (push) Successful in 6s
ci / Go (lint, test, vuln) (push) Successful in 3m43s
ci / Release build (dry run) (push) Successful in 2m27s
ci / Development environment (compose) (push) Successful in 13s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 3m8s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:01:42 +02:00
sir_melonchenandClaude Opus 5.5 422c0d6e50 feat: M6 contracts for the installer, systemd units and releases
ADR 0024 and hardened unit templates for the server and both agents.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 21:00:54 +02:00
sir_melonchenandClaude Opus 5.5 e32a30cfeb chore(deploy): include ddi-suite-keys.conf before ddi-suite.conf
The development and end-to-end named.conf include the TSIG keys file, which starts empty, so named starts before the first revision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 19:42:53 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 89d7949e18 feat(config): agent_api listener settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:54:14 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 79c1b0bba8 test(api): OIDC login flow against a fake identity provider; dev run targets
ci / Go (lint, test, vuln) (push) Successful in 3m30s
ci / Protobuf (push) Successful in 6s
ci / Web (lint, test, audit, build) (push) Successful in 54s
ci / Shell and licence headers (push) Successful in 6s
ci / Release build (dry run) (push) Successful in 1m48s
ci / Development environment (compose) (push) Successful in 15s
- end-to-end OIDC test: discovery, PKCE (S256) verified by the IdP, nonce,
  state cookie, ID token signature, user creation, role sync, refused
  login without role, forged state
- make run-server / dev-admin with deploy/config/server.dev.yaml

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:39:30 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 d763df7f24 fix(dev): commit dev.test zone file hidden by a *.test ignore rule
ci / Go (lint, test, vuln) (push) Successful in 1m59s
ci / Protobuf (push) Successful in 6s
ci / Web (lint, test, audit, build) (push) Successful in 32s
ci / Shell and licence headers (push) Successful in 6s
ci / Release build (dry run) (push) Successful in 1m12s
ci / Development environment (compose) (push) Successful in 13s
The pattern meant for Go test binaries also matched db.dev.test, so BIND in
CI started without the forward zone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:48:34 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 acd3d23f82 fix(dev): drop fixed compose subnet and host port assumptions
ci / Go (lint, test, vuln) (push) Successful in 2m0s
ci / Protobuf (push) Successful in 5s
ci / Web (lint, test, audit, build) (push) Successful in 32s
ci / Shell and licence headers (push) Successful in 6s
ci / Release build (dry run) (push) Successful in 1m12s
ci / Development environment (compose) (push) Failing after 1m48s
The fixed 172.30.53.0/24 subnet collided with an existing network on the
CI runner's Docker host. Seed data now uses 192.0.2.0/24 (RFC 5737), served
by Kea via relay; host ports are configurable and random in CI, and each
CI run uses its own compose project.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:41:56 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 b2b9d56f19 build(dev): bake seed configs into images instead of bind mounts
Bind mounts break when the Docker daemon does not share the job's
filesystem, as with containerised CI runners.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:18:36 +02:00
beug.k@beugsiud.deandClaude Opus 5.5 a163b1a503 build(dev): add compose environment with PostgreSQL, BIND 9.20 and Kea 3.2
BIND uses the production layout (single include under ddi-suite/).
Smoke test checks queries, zone validity, refused recursion and Kea config.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:15:39 +02:00