GhostBSD/networkmgr c20b127 — NetworkMgr configuration.py trayicon.py, po zh_CN.po sv.po

Merge pull request #127 from ghostbsd/issue-99-wifi-auth-feedback

Drive Wi-Fi through wpa_cli, save networks only once they connect
DeltaFile
+1,244-453NetworkMgr/net_api.py
+763-329NetworkMgr/trayicon.py
+449-375NetworkMgr/configuration.py
+0-227tests/unit/test_enterprise_wpa.py
+175-36po/zh_CN.po
+175-36po/sv.po
+2,806-1,45620 files not shown
+4,049-1,98626 files

GhostBSD/networkmgr 66e8140 — src setup-nic.py

Bring the wireless interface up on first setup

On a fresh system wpa_supplicant has no saved network. driver_bsd
downs the interface while it initializes and only raises it again to
scan or associate, which it never does without an enabled network.
rc does not run ifconfig up on WPA interfaces either, so the card
stayed down and wpa_supplicant sat in INTERFACE_DISABLED, refusing
scan requests with FAIL-BUSY.

When setup-nic.py declares the wlan in rc.conf for the first time, it
now marks the interface up after pccard_ether starts it, so
wpa_supplicant sees the interface enabled and starts scanning.
DeltaFile
+8-2src/setup-nic.py
+8-21 files

GhostBSD/networkmgr 4f5611b — NetworkMgr trayicon.py

Merge pull request #126 from lherschi/master

Fix for using translation files in case-sensitive file systems
DeltaFile
+2-2NetworkMgr/trayicon.py
+2-21 files

GhostBSD/networkmgr 06daa42 — NetworkMgr configuration.py trayicon.py, po nb_NO.po de.po

Drive Wi-Fi through wpa_cli, save networks only once they connect

Wireless is now handled through wpa_supplicant's control socket
instead of by editing /etc/wpa_supplicant.conf and restarting the
daemon. Scanning, saving, forgetting, connecting and disconnecting all
go through wpa_cli, and the daemon started by rc is the only one that
ever runs. networkmgr never runs the wpa_supplicant binary, never
restarts a service on the Wi-Fi path, and never uses shell=True.

Connecting

- connect_to_ssid() joins the clicked network with select_network, so
  with two saved networks in range the one clicked is the one joined.
  wait_for_connection() requires wpa_state=COMPLETED and a matching
  ssid; ifconfig's "associated" is not used, since it appears before
  the key handshake finishes.
- Save on connect. A new network, or a retyped passphrase, lives in the
  daemon only until wait_for_connection() succeeds, then save_config
  writes the file. A passphrase that never works never reaches disk,

    [108 lines not shown]
DeltaFile
+1,244-453NetworkMgr/net_api.py
+763-329NetworkMgr/trayicon.py
+449-375NetworkMgr/configuration.py
+0-227tests/unit/test_enterprise_wpa.py
+175-36po/nb_NO.po
+175-36po/de.po
+2,806-1,45620 files not shown
+4,043-1,98626 files

GhostBSD/networkmgr f660d6b — NetworkMgr trayicon.py

Fix for using translation files in case-sensitive file systems
DeltaFile
+2-2NetworkMgr/trayicon.py
+2-21 files

GhostBSD/networkmgr 324b90c — . requirements.txt

Merge pull request #125 from ghostbsd/dependabot/pip/pytest-9.0.3

Bump pytest from 6.2.5 to 9.0.3
DeltaFile
+1-1requirements.txt
+1-11 files

GhostBSD/networkmgr 1f0b809 — . requirements.txt

Bump pytest from 6.2.5 to 9.0.3

Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.5 to 9.0.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.5...9.0.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.0.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support at github.com>
DeltaFile
+1-1requirements.txt
+1-11 files

GhostBSD/networkmgr f97cbc4 — . setup.py, src setup-nic.py

Fix sysrc calls in setup-nic script
DeltaFile
+2-2src/setup-nic.py
+1-1setup.py
+3-32 files

GhostBSD/networkmgr e2b3a3b — . setup.py, src networkmgr.conf setup-nic.py

Merge pull request #123 from ghostbsd/devd

Improve devd scripts and bump version to 6.8
DeltaFile
+17-39src/link-up.py
+21-23src/auto-switch.py
+12-14src/setup-nic.py
+4-4src/networkmgr.conf
+1-1setup.py
+55-815 files

GhostBSD/networkmgr 7289d2d — src link-up.py

Add PIPE to subprocess.run in link-up.py for stdout capture

- Updated subprocess.run with `stdout=PIPE` for capturing output
- Removed unnecessary `close_fds` parameter (default True in Python 3)
DeltaFile
+2-2src/link-up.py
+2-21 files

GhostBSD/networkmgr ccd165b — . setup.py, src networkmgr.conf setup-nic.py

Improve devd scripts and bump version to 6.8

- Replace Popen with subprocess.run() for cleaner code and better resource handling across all devd scripts
- Use proper raw string prefix (r"") for regex patterns
- Remove deprecated close_fds parameter (default True in Python 3)
- Change devd priority from 100 to 5 for faster event handling

auto-switch.py:
- Create marker file /tmp/link-down-{nic} for coordination with link-up.py
- Replace os.system() calls with subprocess.run()

link-up.py:
- Simplify logic using marker file from auto-switch.py
- Remove complex /tmp/network-{nic} state tracking
- Use explicit service calls instead of shell command strings

setup-nic.py:
- Use sysrc command instead of manual rc.conf file writing
- Fix wlan configuration logic to check wlans_{nic} only once
- Use appropriate pccard_ether action (startchildren for WiFi, start forEthernet)
DeltaFile
+17-39src/link-up.py
+21-23src/auto-switch.py
+12-14src/setup-nic.py
+4-4src/networkmgr.conf
+1-1setup.py
+55-815 files

GhostBSD/networkmgr 106d5cc — NetworkMgr net_api.py query.py

Merge pull request #121 from Kernel-Error/feature/ipv6-support

Add IPv6 configuration support
DeltaFile
+167-44NetworkMgr/configuration.py
+106-0NetworkMgr/query.py
+61-0NetworkMgr/net_api.py
+334-443 files

GhostBSD/networkmgr 9ccfa4f — NetworkMgr query.py

Fix ipv6_defaultrouter regex to properly match interface suffix
DeltaFile
+1-1NetworkMgr/query.py
+1-11 files

GhostBSD/networkmgr 3dbcdf2 — NetworkMgr query.py net_api.py

Address code review feedback

- Fix ipv6_defaultrouter regex to match link-local with interface suffix
- Fix enable_slaac docstring to match actual behavior
- Fix get_ipv6_addresses docstring (returns all addresses, not filtered)
DeltaFile
+6-4NetworkMgr/net_api.py
+2-1NetworkMgr/query.py
+8-52 files

GhostBSD/networkmgr 134e2e7 — NetworkMgr net_api.py query.py

Add IPv6 configuration support

Implement IPv6 support in the Network Configuration dialog:

- Add SLAAC (Stateless Address Autoconfiguration) support
- Add static IPv6 address configuration
- Add IPv6 gateway configuration (with link-local address support)
- Add IPv6 DNS server configuration
- Fix existing GUI bugs (labels, connect handlers)

New functions in net_api.py:
- start_static_ipv6_network()
- enable_slaac() / disable_slaac()
- get_ipv6_addresses()
- has_slaac_enabled()
- get_ipv6_gateway()

New function in query.py:
- get_interface_settings_ipv6()

    [4 lines not shown]
DeltaFile
+167-44NetworkMgr/configuration.py
+105-0NetworkMgr/query.py
+59-0NetworkMgr/net_api.py
+331-443 files

GhostBSD/networkmgr e222f08 — NetworkMgr wg_api.py net_api.py, docs TESTING_ENTERPRISE_WPA.md

Merge pull request #119 from Kernel-Error/feature/enterprise-wpa-support

Add Enterprise WPA (802.1X/EAP) support
DeltaFile
+292-9NetworkMgr/trayicon.py
+241-0docs/TESTING_ENTERPRISE_WPA.md
+227-0tests/unit/test_enterprise_wpa.py
+203-4NetworkMgr/net_api.py
+1-2NetworkMgr/wg_api.py
+1-1src/setup-nic.py
+965-166 files

GhostBSD/networkmgr 616c5ec — docs TESTING_ENTERPRISE_WPA.md

Update docs/TESTING_ENTERPRISE_WPA.md

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
DeltaFile
+1-1docs/TESTING_ENTERPRISE_WPA.md
+1-11 files

GhostBSD/networkmgr 00cd68f — NetworkMgr trayicon.py net_api.py, tests/unit test_enterprise_wpa.py

Address code review feedback

- Add input escaping for wpa_supplicant.conf values (security)
- Use context manager and error handling for config file reads
- Fix i18n strings to use %s interpolation instead of f-strings
- Fix test expectation for bare RSN classification
DeltaFile
+18-9NetworkMgr/net_api.py
+10-4NetworkMgr/trayicon.py
+2-1tests/unit/test_enterprise_wpa.py
+30-143 files

GhostBSD/networkmgr b426c08 — NetworkMgr trayicon.py

Fix caps_string index bug causing PSK to be detected as WEP

The setup_wpa_supplicant function was using index 6 (short CAPS like
"EPS") instead of index 7 (full caps_string like "RSN HTCAP WME...").

Since "EPS" doesn't contain 'RSN' or 'WPA', networks were incorrectly
falling through to WEP configuration, causing authentication failures.
DeltaFile
+3-1NetworkMgr/trayicon.py
+3-11 files

GhostBSD/networkmgr 7174afc — NetworkMgr net_api.py

Improve enterprise network detection heuristic for FreeBSD

FreeBSD ifconfig scan doesn't distinguish PSK from EAP explicitly.
Use heuristic: RSN without WPS and without typical consumer router
features (HTCAP, VHTCAP, ATH, WME) suggests enterprise AP.
DeltaFile
+23-2NetworkMgr/net_api.py
+23-21 files

GhostBSD/networkmgr ab62a3a — NetworkMgr trayicon.py

Fix enterprise detection: check correct index (9) for enterprise flag
DeltaFile
+2-2NetworkMgr/trayicon.py
+2-21 files

GhostBSD/networkmgr 821460a — NetworkMgr wg_api.py

Fix KeyError when WireGuard directory does not exist
DeltaFile
+1-2NetworkMgr/wg_api.py
+1-21 files

GhostBSD/networkmgr 8844266 — NetworkMgr net_api.py trayicon.py, docs TESTING_ENTERPRISE_WPA.md

Add Enterprise WPA (802.1X/EAP) support

- Add detection of enterprise networks in scan results
- Implement EnterpriseAuthentication dialog with support for:
  - EAP methods: PEAP, TTLS, TLS, LEAP, FAST, PWD
  - Phase 2 authentication: MSCHAPV2, GTC, PAP, CHAP, MD5
  - CA certificate selection
  - Client certificate/key for TLS
  - Anonymous identity support
- Generate proper wpa_supplicant.conf blocks for EAP
- Add certificate validation helpers
- Fix security issue: wpa_supplicant.conf permissions (0o765 -> 0o600)
- Add unit tests for enterprise WPA functions
- Add FreeRADIUS test setup documentation

Addresses: ghostbsd/networkmgr#24
DeltaFile
+284-9NetworkMgr/trayicon.py
+241-0docs/TESTING_ENTERPRISE_WPA.md
+226-0tests/unit/test_enterprise_wpa.py
+173-4NetworkMgr/net_api.py
+1-1src/setup-nic.py
+925-145 files

GhostBSD/networkmgr eb901ce — po zh_CN.po

Merge pull request #117 from ykla/patch-1

Update Simplified Chinese translation
DeltaFile
+15-15po/zh_CN.po
+15-151 files

GhostBSD/networkmgr 33c50c0 — NetworkMgr trayicon.py wg_api.py

Merge pull request #116 from MatthiasLanter/master

Add basic WireGuard functions
DeltaFile
+69-0NetworkMgr/wg_api.py
+41-0NetworkMgr/trayicon.py
+110-02 files

GhostBSD/networkmgr ec48633 — NetworkMgr wg_api.py

suggestion (bug_risk): File handle 'content' is not closed after reading.

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
DeltaFile
+5-5NetworkMgr/wg_api.py
+5-51 files

GhostBSD/networkmgr 286500e — NetworkMgr trayicon.py wg_api.py

Revised version, checked with Pylint
Wireguard menu entries only if configuration exists and Wireguard service is stopped
DeltaFile
+36-39NetworkMgr/wg_api.py
+23-21NetworkMgr/trayicon.py
+59-602 files

GhostBSD/networkmgr ae3088d — po zh_CN.po

Update Simplified Chinese translation
DeltaFile
+15-15po/zh_CN.po
+15-151 files

GhostBSD/networkmgr 15a017a — NetworkMgr wg_api.py

Use f-string instead of string concatenation

Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
DeltaFile
+1-1NetworkMgr/wg_api.py
+1-11 files

GhostBSD/networkmgr 8def754 — NetworkMgr trayicon.py wg_api.py

Add basic WireGuard functions to connect and disconnect tunnel based on WireGuard configurations
DeltaFile
+72-0NetworkMgr/wg_api.py
+39-0NetworkMgr/trayicon.py
+111-02 files