APmanageur Wi-Fi V1.0 : conteneur Debian + Apache
This commit is contained in:
1 parent
c705504e5d
commit
2d3f8d8b3c
5 files changed
+66
-47
No files matched your search
+28
-13
@@ -3,18 +3,33 @@ set -euo pipefail
|
||||
|
||||
log() { echo "[ap-wifi] $*"; }
|
||||
|
||||
# 1. Interface Wi-Fi (Netgear) --------------------------------------------------
|
||||
IFACE="${AP_INTERFACE:-}"
|
||||
mapfile -t FOUND < <(iw dev 2>/dev/null | awk '$1=="Interface"{print $2}')
|
||||
if [[ -z "$IFACE" ]]; then
|
||||
if [[ ${#FOUND[@]} -eq 1 ]]; then
|
||||
IFACE="${FOUND[0]}"
|
||||
else
|
||||
log "ERREUR : précisez AP_INTERFACE. Interfaces Wi-Fi détectées : ${FOUND[*]:-aucune}"
|
||||
exit 1
|
||||
fi
|
||||
# Port d'écoute d'Apache (défini dans docker-compose.yml)
|
||||
AP_WEB_PORT="${AP_WEB_PORT:-1001}"
|
||||
if ! [[ "$AP_WEB_PORT" =~ ^[0-9]+$ ]] || (( AP_WEB_PORT < 1 || AP_WEB_PORT > 65535 )); then
|
||||
log "ERREUR : AP_WEB_PORT invalide ('$AP_WEB_PORT'), attendu un nombre entre 1 et 65535"
|
||||
exit 1
|
||||
fi
|
||||
iw dev "$IFACE" info >/dev/null 2>&1 || { log "ERREUR : interface '$IFACE' introuvable (détectées : ${FOUND[*]:-aucune})"; exit 1; }
|
||||
export AP_WEB_PORT
|
||||
|
||||
# 1. Interface Wi-Fi --------------------------------------------------
|
||||
IFACE="${AP_INTERFACE:-}"
|
||||
log "Recherche de la carte Wi-Fi…"
|
||||
FOUND=()
|
||||
for _ in $(seq 1 180); do
|
||||
mapfile -t FOUND < <(iw dev 2>/dev/null | awk '$1=="Interface"{print $2}')
|
||||
if [[ -n "$IFACE" ]]; then
|
||||
printf '%s\n' "${FOUND[@]:-}" | grep -qx "$IFACE" && break
|
||||
elif [[ ${#FOUND[@]} -ge 1 ]]; then
|
||||
IFACE="${FOUND[0]}"
|
||||
for d in "${FOUND[@]}"; do
|
||||
p="$(iw dev "$d" info 2>/dev/null | awk '/wiphy/{print "phy"$2}')"
|
||||
if [[ -n "$p" ]] && iw "$p" info 2>/dev/null | grep -qE '^\s+\* AP$'; then IFACE="$d"; break; fi
|
||||
done
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
[[ -n "$IFACE" ]] && iw dev "$IFACE" info >/dev/null 2>&1 || { log "ERREUR : interface '${IFACE:-?}' absente après 3 min (détectées : ${FOUND[*]:-aucune})"; exit 1; }
|
||||
export AP_INTERFACE="$IFACE"
|
||||
log "Interface utilisée : $IFACE"
|
||||
|
||||
@@ -48,7 +63,7 @@ nmcli radio wifi on 2>/dev/null || true
|
||||
nmcli device set "$IFACE" managed yes 2>/dev/null || true
|
||||
log "NetworkManager prêt"
|
||||
|
||||
# 3. API Python (port 8080) + Apache (port 80) ------------------------------------
|
||||
# 3. API Python (socket Unix, aucun port) + Apache (port 1001) ------------------------------------
|
||||
python3 /app/ap.py &
|
||||
API_PID=$!
|
||||
apache2ctl -D FOREGROUND &
|
||||
@@ -56,7 +71,7 @@ WEB_PID=$!
|
||||
|
||||
trap 'log "Arrêt"; kill "$WEB_PID" "$API_PID" "$NM_PID" 2>/dev/null || true; exit 0' TERM INT
|
||||
|
||||
log "Interface web : http://<ip-de-la-machine>:1001/ (API directe : port 8080)"
|
||||
log "Interface web : http://<ip-de-la-machine>:${AP_WEB_PORT}/ (API interne par socket, aucun port)"
|
||||
wait -n
|
||||
log "Un service s'est arrêté, fermeture du conteneur"
|
||||
kill "$WEB_PID" "$API_PID" "$NM_PID" 2>/dev/null || true
|
||||
|
||||
Reference in new issue
Block a user