Aendern ging bisher nur ueber "proxy add --update", und das schreibt den
Eintrag vollstaendig neu: wer den Port aendern wollte, verlor still die
zusaetzlichen Pfade und die erweiterte Konfiguration, weil die Nutzlast
aus Vorgaben zusammengesetzt wird.
Die Schnittstelle des Proxy Managers arbeitet als Patch - ein PUT mit
nur einem Feld aendert auch nur dieses; an einem laufenden NPM 2.15.1
nachgemessen. Darauf setzt "proxy edit" auf: angegeben wird, was sich
aendern soll, alles Uebrige bleibt unberuehrt.
proxy edit --id 3 --forward-port 5001
proxy edit --domain checkmk.example.local --cert self
proxy edit --id 3 --location /grafana=127.0.0.1:3000
proxy edit --id 3 --del-location /grafana
Dazu Ziel, Schema, Name, Zertifikat, erweiterte Konfiguration, die vier
Schalter und ein/aus. Ohne Angabe wird nur der Stand gezeigt. In der
Oberflaeche liegt dasselbe unter "Proxy-Host bearbeiten", mit den
aktuellen Werten vorbelegt.
Pfade kennt die Schnittstelle nur als Ganzes, sie werden deshalb gelesen,
geaendert und zurueckgeschrieben. Das an "}" aufzuteilen geht nicht:
"advanced_config" darf nginx-Bloecke mit geschweiften Klammern und
maskierte Anfuehrungszeichen enthalten. Dafuer gibt es jetzt json_raw
und json_split_array, die die Verschachtelung mitzaehlen und
Zeichenketten erkennen. "proxy show" liest die Pfade ebenfalls darueber.
Zwei Fehler kamen dabei ans Licht:
- NPM_CODE wurde in npm_api gesetzt, aber npm_api wird fast immer in
einer Kommandoersetzung aufgerufen - also in einer Subshell. Der
HTTP-Code kam nie beim Aufrufer an; unter "set -u" brach das Skript
im Fehlerpfad sogar ab, statt den Fehler zu zeigen. Betraf auch
"proxy add" und das Anlegen von Zertifikaten. Der Code wird jetzt
zusaetzlich abgelegt und mit npm_code gelesen.
- Der Proxy Manager schaltet ohne Zertifikat http2_support und
ssl_forced von sich aus ab. Das blieb unbemerkt; jetzt wird nach dem
Schreiben verglichen und eine Abweichung gemeldet.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>