Commit Graph
4878 Commits
Author SHA1 Message Date
Mattias Walström 330601a57a yanger: Remove code duplication and fix upgrade
Remove a lot of duplication and move to seperate libs in internal/

Also, instead of polling upgrade status using src/rauc-installation-status,
hook into the dbus monitor.
2026-06-17 11:54:25 +02:00
Mattias Walström a4dca08840 yangerd: Add WiFi implementation 2026-06-17 11:54:25 +02:00
Mattias Walström 417cdf4648 yangerd: Add backoff if ip batch work have crashed 2026-06-17 11:54:25 +02:00
Mattias Walström a638601b2d yangerd: Do not start in runlevel S 2026-06-17 11:54:25 +02:00
Mattias Walström 2567014452 test: iface_enable_disable: Simplify test 2026-06-17 11:54:25 +02:00
Mattias Walström 1a88164834 test: wireguard_roadwarrior: Adapt to the new polled world in yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 3c87338a79 yangerd: Add wireguard support 2026-06-17 11:54:25 +02:00
Mattias Walström de8d074cb9 yangerd: fix stp status 2026-06-17 11:54:25 +02:00
Mattias Walström 4dad023eae yangerd: Send sighup to yangerd on config change
This is to force yangerd to repoll polled things
2026-06-17 11:54:25 +02:00
Mattias Walström 5884a7f6fb test: usb: adapt to new yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 6c12b30383 test: containers: host_commands/test.py: Adapt to new yangerd
Slightly slower to detect changes
2026-06-17 11:54:25 +02:00
Mattias Walström 52cea0a356 Fix containers, reactive now. 2026-06-17 11:54:25 +02:00
Mattias Walström 7a28d5b509 test: case: ntp: Adapt tests for polled yangerd 2026-06-17 11:54:25 +02:00
Mattias Walström 389695c826 test: dhcp: server_subnets: Add longer timeout for polling
This since NTP status is polled in yangerd.
2026-06-17 11:54:25 +02:00
Mattias Walström 3372966f89 Fix ntp and dns status 2026-06-17 11:54:24 +02:00
Mattias Walström ae3d50a41d FRR does not send delete on OSPF route change
Handle this.
2026-06-17 11:54:24 +02:00
Mattias Walström 02d52f5a12 Fix interface and bridge race conditions 2026-06-17 11:54:24 +02:00
Mattias Walström 0c7293f97a zapi: Fix deletion of routes 2026-06-17 11:54:24 +02:00
Mattias Walström 6e415bbcdb yangerd: Continues 2026-06-17 11:54:24 +02:00
Mattias Walström 299146dd4e Fix routing and ip addresses 2026-06-17 11:54:24 +02:00
Mattias Walström 7956ca05fa update doc 2026-06-17 11:54:24 +02:00
Mattias Walström 6d0d047c30 statd: Include new yangerd backend for operational 2026-06-17 11:54:24 +02:00
Mattias Walström 0d6384021f move yanger 2026-06-17 11:54:24 +02:00
Mattias Walström e0af89154f yangerd: Initial 2026-06-17 11:54:24 +02:00
Mattias Walström 262d2b1796 test: firewall: Make tests more robust 2026-06-17 11:54:24 +02:00
Mattias Walström 59402fa83f test: system: Make tests more robust 2026-06-17 11:54:24 +02:00
Mattias Walström fd4c82735a firewall: simplify 2026-06-17 11:54:24 +02:00
Mattias Walström ec87d50204 TEMP: Update yanger spec 2026-06-17 11:54:24 +02:00
Mattias Walström 4c13696091 TEMP: WiP document 2026-06-17 11:54:24 +02:00
Joachim WibergandGitHub a7d2e1b806 Merge pull request #1538 from kernelkit/move-mkdocs-action
.github: move setup-mkdocs to kernelkit/actions
2026-06-17 08:57:21 +02:00
Richard AlpeandJoachim Wiberg 390e60cfcb .github: move setup-mkdocs to kernelkit/actions
Finishes the migration started in 63f46d4d: setup-mkdocs was still
referenced via a relative ./.github/actions path, which GitHub resolves
against the calling repo, not infix, breaking spins (e.g. Styx) that
reuse build.yml/build-release.yml. Use kernelkit/actions/setup-mkdocs@v1.2.

Signed-off-by: Richard Alpe <richard@bit42.se>
2026-06-17 06:56:09 +00:00
Joachim WibergandGitHub f62d049aa9 Merge pull request #1540 from kernelkit/bump-buildroot
Bump buildroot to 2025.02.15
2026-06-17 08:39:27 +02:00
Mattias Walström 4554b77105 Bump buildroot to 2025.02.15
See buildroot changelog for full list of fixes:
https://gitlab.com/buildroot.org/buildroot/-/blob/2025.02.x/CHANGES
2026-06-17 06:49:03 +02:00
Ejub ŠabićandGitHub 0c6d96f8a9 Merge pull request #1537 from saba8814/fix/flaky-dhcp-option-121-test
fix: flaky dhcp option 121 test
2026-06-16 11:50:03 +02:00
Ejub Sabic 473cda35bb fix: flaky dhcp option 121 test
This commit increases attempts on checks in this particular test from default 10 to 60.
This has been introduced to match worst case scenario where after 3 retries(5s) each dhcp waits 30 seconds before next 3 retries.
Commits yields to much more stable test behaviour.

Resolves: #1515

Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
2026-06-16 08:39:40 +02:00
Joachim WibergandGitHub 227f1290fd Merge pull request #1457 from kernelkit/web 2026-06-15 22:58:44 +02:00
Joachim Wiberg 12f1edb435 doc: update ChangeLog
Use absolute links so they survive being exported to Release Notes.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 21:02:17 +02:00
Joachim Wiberg f5c549f669 test: Add test for login flow in WebUI
Verify:

 - Unauthenticated GET /  -> 303 to /login
 - Bad-password rejection -> no session is created
 - Session cookie is flagged HttpOnly
 - Authenticated GET /interfaces -> 200
   - with htmx-config meta tag check
 - State-changing POST without CSRF token -> 403
 - POST with X-CSRF-Token header -> succeeds
 - After logout the session no longer grants access

The cookie-preserving WebUI helper class also folds in the IPv6
link-local zone-id workaround (re-encode %25 back to %) that
infamy.restconf already uses.

Signed-off-by: Mattias Walström <lazzer@gmail.com>
2026-06-15 21:02:16 +02:00
Joachim Wiberg 7e19ee8777 webui: add Connectivity and Addresses cards to Overview
Surface network diagnostics the Overview lacked: default gateway(s) with
a live reachability dot, an Internet reachability check, the effective DNS
resolvers (origin static vs DHCP, plus the interface), search domains, NTP
sync, and the IP addresses of every L3 interface.

All from the operational datastore. Reachability is an async per-address
ping (pulsing green dot on reply, red cross on none).

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 21:02:16 +02:00
Joachim Wiberg 7e0e6f244d webui: user-menu Auto-logout and theme fixes
Auto-logout was client-side only while the server kept a fixed 1h idle
timeout, so "Off" still logged you out. Sessions now carry a per-session
timeout the client syncs from the menu (0 = never), capped at 24h.

Theme: the login toggle icon was never initialised on load (stuck on the
'auto' glyph); add color-scheme so native controls follow the OS on
'auto', and re-apply on OS theme change.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 21:02:15 +02:00
Joachim Wiberg d326939e10 webui: final touches
- Add missing Configure -> shortcuts
 - For shortcuts into YANG tree, expand and mark the tree node
 - Revamp the /mdns status page to mimic /ntp => more vertical space

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 21:02:15 +02:00
Joachim Wiberg a975f55284 webui: show device hostname in topbar
Surface the configured hostname right of the logo, pinned to the
sidebar's right edge so it reads as the start of the content area. When
location and/or contact are set they appear in a hover/focus popover, so
the bar stays uncluttered; the name links to Configure > System.

Loaded asynchronously (hx-trigger="load") to keep it out of every page's
data path — the topbar persists across htmx swaps, so it fetches once per
full page load and renders nothing on error or when no hostname is set.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:29 +02:00
Joachim Wiberg 89392c56be webui: add automatic .cfg migration when restoring a backup
Also adjust some card layout in both Backup and Restore cards.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:29 +02:00
Joachim Wiberg 67ec3faa54 webui: relocate and reorder some menu items
External services like the mdns-browser and the web console belong in
the User Menu next to the bundled user guide.  They all open another
browser tab and provide another service.

Place common tasks close to each other and high up: Interface overview,
routing table, and firewall.  Feels slightly better imo.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:29 +02:00
Joachim Wiberg 9272ae382d webui: type-aware Config column in interface overview
The collapsed Interfaces list left DHCP/SLAAC/zeroconf invisible until a
row was unfolded, so L3 interfaces showed only empty cells. Replace the
Addresses column with a Config column whose pills are chosen by role,
mirroring the Status > Interfaces data column but slanted to configured
intent: vid for VLANs, mode for WiFi, 802.1Q for filtering bridges, and
DHCPv4/DHCPv6/SLAAC/Zeroconf for IP interfaces, alongside any static
addresses.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:28 +02:00
Joachim Wiberg a78eeee651 webui: rebuild NTP & DNS client pages around per-item editing
Replace the single bulk-PUT form + client-side row cloning (which broke
when these pages were split out of System settings) with the
server-driven list pattern used by Keystore/Users: each server is a row
keyed by name that expands to edit, with per-row delete and a dedicated
add form.  DNS search domains become add/delete rows.  Server creates
its container on first use, and field-info ⓘ help is sourced from the
YANG descriptions.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:28 +02:00
Joachim Wiberg 1c3086be94 webui: re-render interface IP block in place after save
Surface confd-inferred values (DHCP option lists, etc.) on the curated
Interfaces page: SaveIPv4/IPv6Settings re-render just the interface's IP
block from the fresh candidate, swapped in place via outerHTML, so the
row stays expanded.  The DHCP foldout auto-expands after a save to reveal
the inferred options.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:27 +02:00
Joachim Wiberg cd19b626a7 webui: surface confd inference in the advanced tree editor
confd infers Infix-suggested values (DHCP option lists, related leaves,
normalised values) into the candidate when a change is written, but the
tree editor's write handlers only wrote — SaveLeaf echoed the typed value
back, SaveGroup returned 204 — so the inferred values never appeared
until a manual page reload.

After a save (cfgSaved) re-fetch the current tree page from the now
up-to-date candidate and re-render it, so inference surfaces wherever it
landed on the page.  SaveLeaf now emits cfgSaved + 204 like SaveGroup
(its form uses hx-swap="none") instead of echoing the raw input.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:26 +02:00
Joachim Wiberg b5b310f3c8 webui: fix enabling DHCP/L3 on an interface with no prior IPv4/IPv6
SaveIPv4Settings/SaveIPv6Settings PATCHed the ietf-ip:ipv4 container to
set forwarding, but a plain PATCH 400s ("Target resource does not exist")
when the interface has no L3 config yet — exactly the first-time
DHCP-enable case.  PATCH the interface instead, with the family container
nested in a single-element list entry (rousette rejects the bare-object
form with LY_EVALID once an augmented container is nested), so the
container is created on first use.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:26 +02:00
Joachim Wiberg f875056706 webui: reload page on reconnect -> /login
When we reconnect to a device we should reload the page instead of
silently resume.  Because the device may have been rebooted from the
CLI or experienced power loss.  Either way, our session in RAM only
is likely gone, and if so we'll be redirected to /login again.

Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
2026-06-15 19:45:25 +02:00