diff --git a/html/launcher.php b/html/launcher.php
index c0f39a0..36da695 100755
--- a/html/launcher.php
+++ b/html/launcher.php
@@ -67,20 +67,20 @@ if ($type == "get_config_sqlite") {
}
// Detect real WiFi status from wlan0 (DB value may be stale)
- $wlan0_conn = trim(shell_exec("nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2"));
- if (!empty($wlan0_conn) && $wlan0_conn !== '--') {
+ // Use timeout to prevent blocking if nmcli hangs
+ $wlan0_conn = trim(shell_exec("timeout 2 nmcli -t -f GENERAL.CONNECTION device show wlan0 2>/dev/null | cut -d: -f2"));
+ if ($wlan0_conn !== null && $wlan0_conn !== '' && $wlan0_conn !== '--') {
$is_hotspot = (stripos($wlan0_conn, 'hotspot') !== false);
$real_status = $is_hotspot ? 'hotspot' : 'connected';
- } else {
- $real_status = 'disconnected';
- }
- // Update DB if out of sync
- if (isset($result['WIFI_status']) && $result['WIFI_status'] !== $real_status) {
- $update_stmt = $db->prepare("UPDATE config_table SET value = ? WHERE key = 'WIFI_status'");
- $update_stmt->execute([$real_status]);
+ // Update DB if out of sync
+ if (isset($result['WIFI_status']) && $result['WIFI_status'] !== $real_status) {
+ $update_stmt = $db->prepare("UPDATE config_table SET value = ? WHERE key = 'WIFI_status'");
+ $update_stmt->execute([$real_status]);
+ }
+ $result['WIFI_status'] = $real_status;
}
- $result['WIFI_status'] = $real_status;
+ // If timeout or nmcli fails, keep DB value as-is
// Return JSON response
header('Content-Type: application/json');