fix: Rechte-Bug und Passwort-Leck im NM-Profil, Loesch-Bug in deploy.sh
setup_pi.sh sourcte /etc/ninlight-station.conf (0600 root:root) als unprivilegierter Benutzer und scheiterte damit bei jedem Lauf, bevor das NetworkManager-Profil angelegt wurde. Die Konfiguration wird jetzt per "sudo cat" gelesen; ninlight-station macht denselben Fallback fuer den dokumentierten Aufruf als normaler Benutzer, ohne die Datei fuer alle lesbar zu machen. Das AP-Profil wird nicht mehr per "nmcli ... wifi-sec.psk $PSK" angelegt (das WLAN-Passwort waere sonst fuer jeden lokalen Prozess in der Kommandozeile sichtbar), sondern als NetworkManager-Keyfile (0600 root:root) geschrieben und per "nmcli connection load" eingelesen. deploy.sh loeschte bei einem gezielten Deploy eines einzelnen Geraetetyps per "rsync --delete" alle Images anderer Geraetetypen aus dem live ausgelieferten Verzeichnis. --delete laeuft jetzt nur noch beim Vollabgleich (kein target-Argument); ein gezielter Deploy ersetzt nur die genannten Dateien. Dabei zusaetzlich -c (Checksumme statt Groesse+Zeitstempel) ergaenzt, sonst uebersieht rsync ein neues Image mit zufaellig gleicher Byte-Groesse. Ausserdem meldet deploy.sh jetzt einen fehlgeschlagenen Dienst-Neustart als Fehler statt ihn mit "Dienst laeuft nicht" zu verwechseln. Stub-Tests unter tools/station/tests/test_deploy.sh (ssh/rsync im PATH ersetzt, Installationsschritt laeuft gegen ein Sandbox-Verzeichnis) decken beide Bugfixes sowie die bereits bestehenden Faelle ab: Image besteht die Trailer-Pruefung nicht, keine Images gefunden. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
fda732d6c4
commit
d23b0d4e02
@@ -9,9 +9,19 @@
|
||||
set -eu
|
||||
|
||||
CONF=/etc/ninlight-station.conf
|
||||
[ -r "$CONF" ] || { echo "Fehler: $CONF fehlt - zuerst tools/station/setup_pi.sh ausfuehren" >&2; exit 1; }
|
||||
# shellcheck disable=SC1090
|
||||
. "$CONF"
|
||||
if [ -r "$CONF" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "$CONF"
|
||||
elif [ -e "$CONF" ]; then
|
||||
# $CONF ist 0600 root:root, damit das Passwort nicht fuer jeden lesbar
|
||||
# ist. Der dokumentierte Aufruf "ssh <pi-host> ninlight-station on" laeuft
|
||||
# aber als normaler Benutzer - "sudo cat" liest die Datei ein, ohne ihre
|
||||
# Rechte aufzuweichen.
|
||||
eval "$(sudo cat "$CONF")"
|
||||
else
|
||||
echo "Fehler: $CONF fehlt - zuerst tools/station/setup_pi.sh ausfuehren" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for _key in SSID PSK IMAGE_DIR HOME_CONNECTION AP_CONNECTION; do
|
||||
eval "test -n \"\${$_key-}\"" || {
|
||||
|
||||
Reference in New Issue
Block a user