feat: Fremd-WLAN-Profile löschen und Versionsnummer auf 1.0.74 erhöht
This commit is contained in:
@@ -81,15 +81,14 @@ def stop_ap():
|
||||
nm('con', 'down', NM_AP_CON)
|
||||
|
||||
|
||||
def _takeover_wifi_autoconnect():
|
||||
"""Deaktiviert Autoconnect aller Fremd-WLAN-Profile, damit NM beim Boot PiCopy-WiFi bevorzugt."""
|
||||
def _purge_foreign_wifi_profiles():
|
||||
"""Löscht alle WLAN-Profile die nicht von PiCopy verwaltet werden (z.B. Imager-Profile)."""
|
||||
r = nm('-t', '-f', 'NAME,TYPE', 'con', 'show')
|
||||
for line in r.stdout.splitlines():
|
||||
parts = line.split(':', 1)
|
||||
if len(parts) == 2 and parts[1] == '802-11-wireless' and parts[0] not in (NM_CLIENT_CON, NM_AP_CON):
|
||||
nm('con', 'mod', parts[0], 'connection.autoconnect', 'no')
|
||||
log.info(f'Autoconnect für Fremdprofil deaktiviert: {parts[0]}')
|
||||
nm('con', 'mod', NM_CLIENT_CON, 'connection.autoconnect', 'yes')
|
||||
nm('con', 'delete', parts[0])
|
||||
log.info(f'Fremdprofil gelöscht: {parts[0]}')
|
||||
|
||||
|
||||
def connect_client_wifi(ssid, password):
|
||||
@@ -109,7 +108,6 @@ def connect_client_wifi(ssid, password):
|
||||
ok = r.returncode == 0
|
||||
if ok:
|
||||
log.info(f'Verbunden mit {ssid}')
|
||||
_takeover_wifi_autoconnect()
|
||||
else:
|
||||
log.error(f'WiFi-Verbindung fehlgeschlagen: {r.stderr.strip()}')
|
||||
return ok
|
||||
@@ -166,34 +164,18 @@ def _wait_for_nm(max_wait: int = 30) -> None:
|
||||
def wifi_monitor():
|
||||
log.info('WiFi-Monitor: warte auf NetworkManager...')
|
||||
_wait_for_nm()
|
||||
|
||||
first_run = True
|
||||
_purge_foreign_wifi_profiles()
|
||||
|
||||
while True:
|
||||
try:
|
||||
update_wifi_state()
|
||||
with wifi_lock:
|
||||
mode = wifi_state['mode']
|
||||
current_conn = wifi_state.get('ssid', '')
|
||||
|
||||
cfg = load_cfg()
|
||||
picopy_ssid = cfg.get('wifi_ssid', '')
|
||||
|
||||
# Beim ersten Durchlauf: falls ein Fremdprofil (Imager) verbunden ist
|
||||
# und PiCopy eine eigene SSID kennt → zu PiCopy-WiFi wechseln
|
||||
if first_run and mode == 'client' and current_conn != NM_CLIENT_CON and picopy_ssid:
|
||||
log.info(f'Fremdprofil aktiv ({current_conn}), wechsle zu PiCopy-WiFi ({picopy_ssid})...')
|
||||
connected = connect_client_wifi(picopy_ssid, cfg.get('wifi_password', ''))
|
||||
if connected:
|
||||
time.sleep(5)
|
||||
update_wifi_state()
|
||||
with wifi_lock:
|
||||
mode = wifi_state['mode']
|
||||
|
||||
first_run = False
|
||||
|
||||
if mode == 'disconnected':
|
||||
ssid = picopy_ssid
|
||||
ssid = cfg.get('wifi_ssid', '')
|
||||
pw = cfg.get('wifi_password', '')
|
||||
|
||||
connected = False
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.0.73
|
||||
1.0.74
|
||||
Reference in New Issue
Block a user