Commit graph

6 commits

Author SHA1 Message Date
0ab9561d2b security: wipe passphrases, bind hidden stash to SSID, re-register agent
Wipe passphrase memory in the auth and hidden-network dialogs (explicit_bzero
on owned copies plus overwriting the elm_entry buffer before destruction) so
secrets don't linger on the heap. Bind the hidden-network passphrase stash to
its SSID with a 30s timeout, so a typo'd or out-of-range hidden connect can't
leak its passphrase to an unrelated network whose RequestPassphrase happens
to land first. Re-RegisterAgent on iwd NameOwnerChanged so PSK connects
survive systemctl restart iwd instead of silently hanging.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 11:24:45 +07:00
1cd214a1f5 popup: disconnect, forget, hidden + signal bars + agent cancel hook
Adds the long-missing user-visible affordances:
  - Disconnect button (visible while connected)
  - Per-row Forget (✕) button on known networks
  - Hidden... button + wifi_hidden_prompt → Station.ConnectHiddenNetwork,
    with one-shot passphrase pre-arming so the agent answers iwd
    automatically without re-prompting.
  - Signal-tier bars in network rows; sort prefers stronger signals
    within the same known/unknown class.
  - iwd Agent.Cancel now tears down any open auth dialog (cancel
    handler installed at module init via the new manager hook).

wifi_auth_prompt now returns the popup widget so the cancel path can
dismiss it externally.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:47:20 +07:00
7c2ea76c63 ui/wifi_auth: surface security label in passphrase prompt
wifi_auth_prompt now takes an optional human-readable security string
("WPA", "WEP", ...) shown above the entry, so the user knows what kind
of credential is being asked for. Popup passes the network's security
type when issuing the prompt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:46:26 +07:00
1b5dd32c0b manager: track Adapter objects + clear list on disable
Promote Adapter to a first-class manager object (Iwd_Adapter with
PropertiesChanged subscription). iwd_manager_set_powered now drives
the adapter directly, so Enable still works after Disable has torn
down the device hash. State recomputation also looks at any
powered adapter, and the popup hides the network list while
state == IWD_STATE_OFF.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:45:09 +07:00
e66a3effa6 Phase 3: popup UI with network list and passphrase dialog
e_gadcon_popup hosts a status label, a scrollable list of networks
(snapshotted from iwd_manager and sorted: connected → known → alpha),
and Rescan/Enable/Disable action buttons. Clicking a network calls
Network.Connect; iwd then asks our Agent for a passphrase, which is
routed to a modal elm_popup via iwd_manager_set_passphrase_handler.

The passphrase handler is installed at module init so iwd-initiated
auth works even when the popup is closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:45:09 +07:00
b9eb5de878 Phase 0: scaffold e_iwd Enlightenment module
Meson build, module entry points, and stub layout for the iwd backend
(D-Bus client, gadget, popup, config, UI widgets). Bodies are TODOs;
this compiles against EFL/E headers but performs no D-Bus work yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:45:09 +07:00