Add resilient dual-radio network failover
This commit is contained in:
+32
-1
@@ -38,7 +38,7 @@ fi
|
||||
echo "[1/7] Installing operating-system packages"
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y ca-certificates curl gnupg git rsync sudo util-linux avahi-daemon sqlite3 android-tools-adb build-essential
|
||||
apt-get install -y ca-certificates curl gnupg git rsync sudo util-linux avahi-daemon sqlite3 android-tools-adb build-essential network-manager
|
||||
|
||||
node_major=""
|
||||
if command -v node >/dev/null 2>&1; then
|
||||
@@ -111,8 +111,10 @@ mv -Tf "${INSTALL_ROOT}/current.next" "${CURRENT}"
|
||||
|
||||
echo "[5/7] Installing system services"
|
||||
install -m 0755 "${SCRIPT_DIR}/scripts/pi-car-companion-update" /usr/local/sbin/pi-car-companion-update
|
||||
install -m 0755 "${SCRIPT_DIR}/scripts/pi-car-companion-network-setup" /usr/local/sbin/pi-car-companion-network-setup
|
||||
install -m 0644 "${SCRIPT_DIR}/systemd/pi-car-companion.service" /etc/systemd/system/pi-car-companion.service
|
||||
install -m 0644 "${SCRIPT_DIR}/systemd/pi-car-companion-update.service" /etc/systemd/system/pi-car-companion-update.service
|
||||
install -m 0644 "${SCRIPT_DIR}/systemd/pi-car-companion-network.service" /etc/systemd/system/pi-car-companion-network.service
|
||||
install -m 0440 "${SCRIPT_DIR}/systemd/pi-car-companion.sudoers" /etc/sudoers.d/pi-car-companion
|
||||
visudo -cf /etc/sudoers.d/pi-car-companion >/dev/null
|
||||
install -d -m 0755 /etc/avahi/services
|
||||
@@ -133,8 +135,34 @@ ADB_ENABLED=false
|
||||
ADB_PATH=adb
|
||||
ADB_SERIAL=
|
||||
ADB_TIMEOUT_MS=3000
|
||||
NETWORK_MANAGER_ENABLED=false
|
||||
NETWORK_STATUS_PATH=${DATA_DIR}/network-status.json
|
||||
NETWORK_COMMAND_PATH=${DATA_DIR}/network-command.json
|
||||
NETWORK_HOTSPOT_INTERFACE=wlan0
|
||||
NETWORK_UPSTREAM_INTERFACE=wlan1
|
||||
NETWORK_HOTSPOT_CONNECTION=pi-car-hotspot
|
||||
NETWORK_PROBE_TIMEOUT_SECONDS=60
|
||||
NETWORK_STABILITY_SECONDS=10
|
||||
NETWORK_POLL_SECONDS=5
|
||||
EOF
|
||||
fi
|
||||
|
||||
ensure_env_default() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
if ! grep -q "^${key}=" "${CONFIG_DIR}/companion.env"; then
|
||||
printf '%s=%s\n' "${key}" "${value}" >> "${CONFIG_DIR}/companion.env"
|
||||
fi
|
||||
}
|
||||
ensure_env_default NETWORK_MANAGER_ENABLED false
|
||||
ensure_env_default NETWORK_STATUS_PATH "${DATA_DIR}/network-status.json"
|
||||
ensure_env_default NETWORK_COMMAND_PATH "${DATA_DIR}/network-command.json"
|
||||
ensure_env_default NETWORK_HOTSPOT_INTERFACE wlan0
|
||||
ensure_env_default NETWORK_UPSTREAM_INTERFACE wlan1
|
||||
ensure_env_default NETWORK_HOTSPOT_CONNECTION pi-car-hotspot
|
||||
ensure_env_default NETWORK_PROBE_TIMEOUT_SECONDS 60
|
||||
ensure_env_default NETWORK_STABILITY_SECONDS 10
|
||||
ensure_env_default NETWORK_POLL_SECONDS 5
|
||||
chown root:"${SERVICE_USER}" "${CONFIG_DIR}/companion.env"
|
||||
chmod 0640 "${CONFIG_DIR}/companion.env"
|
||||
|
||||
@@ -148,6 +176,9 @@ echo "[6/7] Enabling start-on-boot services"
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now avahi-daemon
|
||||
systemctl enable pi-car-companion.service
|
||||
if grep -qx 'NETWORK_MANAGER_ENABLED=true' "${CONFIG_DIR}/companion.env"; then
|
||||
systemctl enable --now pi-car-companion-network.service
|
||||
fi
|
||||
systemctl restart pi-car-companion.service
|
||||
|
||||
echo "[7/7] Verifying the service"
|
||||
|
||||
Reference in New Issue
Block a user