Commit graph

23 commits

Author SHA1 Message Date
07f8673f2f Harden API surface and station/wifi backends
Bind to localhost by default and stop echoing backend errors (which can
embed credentials or low-level details) back over the API and log
broadcast. Validate hotspot SSID/passphrase/channel before writing
hostapd.conf and tighten its mode to 0600 since it stores the WPA PSK.
Restrict WebSocket upgrades to same-origin so a LAN browser can't be
turned into a proxy for the API.

Guard shared state: status reads/writes go through StatusMutex (the
periodic updater races with the toggle and status handlers otherwise),
broadcastToWebSockets no longer mutates the client map under RLock, and
station-event callbacks now run under SafeGo so a panic in app code can't
take down the daemon. Stop channels in hostapd, dhcp, and iwd signal
monitors are now closed under sync.Once to survive concurrent Stop calls.

App.Shutdown is idempotent and waits for the periodic loops before
closing backends, so signal-driven and deferred shutdowns no longer race.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 21:56:50 +08:00
77370eff19 wpa_supplicant: Reuse existing networks and preserve saved ones on connect
Connect() called AddNetwork unconditionally, creating duplicate entries for
the same SSID, and SelectNetwork's side-effect of disabling all other
networks was being persisted by SaveConfig — making previously saved
networks appear erased. Disconnect() also removed the current network from
the config. Now reuse an existing network entry when the SSID matches,
re-enable other networks after SelectNetwork, and keep entries on
disconnect.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 18:25:30 +08:00
08cbe4f9ff Redesign frontend with minimalist Swiss-Scandinavian aesthetic
Replace gradient-heavy design with clean typography (Outfit + DM Sans),
warm neutral palette, terracotta accent, and generous whitespace.
Preserve all JS-facing IDs, classes, and functionality.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 12:32:56 +07:00
4414c99da9 wpa_supplicant: Save config after successfull connection 2026-01-02 18:03:16 +07:00
5532457cdf wpa_supplicant: Fix connection 2026-01-02 17:54:07 +07:00
10a7998495 wpa_supplicant: Fix detection of open networks 2026-01-02 17:53:52 +07:00
2922a03724 Refactor stations discovery and add hostapd discovery 2026-01-01 23:31:01 +07:00
69594c2fe4 syslog filter could take several filters 2026-01-01 23:31:01 +07:00
04ada45f44 Implement wpa_supplicant backend 2026-01-01 23:31:01 +07:00
79c28da9c5 Create wifi backend abstraction 2026-01-01 23:31:01 +07:00
f4481bca62 Stream logs from syslog 2026-01-01 23:31:01 +07:00
02b93a3ef0 Handle connecting/disconnecting states 2026-01-01 23:31:01 +07:00
1477d909b0 Add websocket wifi updates 2026-01-01 23:31:01 +07:00
c443fce24f Report hotspot config 2026-01-01 23:31:01 +07:00
17d665e21a Implementation with iwd 2026-01-01 23:31:01 +07:00
2b3a5b89f8 Add configuration system and ARP-based device discovery
Implement comprehensive configuration management with CLI flags for WiFi interface, device discovery method, and file paths. Add ARP table parsing as an alternative to DHCP leases for more reliable device detection. Improve WiFi scanning to handle concurrent scan requests gracefully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-01 23:31:01 +07:00
accd7e75d8 Handle config options 2026-01-01 23:31:01 +07:00
b1b9eaa028 Migrate to a better architectured project 2026-01-01 23:31:01 +07:00
cc5ed5f23e Add OpenAPI specs 2025-10-28 18:25:45 +07:00
b3da6774ac Do stations scan/retrieval 2025-07-17 16:05:04 +02:00
5f1d7adaa4 Embed static assets into binary 2025-07-17 16:04:48 +02:00
a044bb759e Split style and js code in anothers files 2025-07-17 13:35:53 +02:00
8c8986e8dc Initial version, from Claude 2025-07-17 13:32:39 +02:00