Lade...
 

Verwaltung von MorphIT

Verwaltung von MorphIT

Für die Verwaltung von MorphIT wird seit dem MorphIT-Release 3.7.5  eine Administrationskonsole für den MorphIT-Server bereitgestellt.

Einrichtung

Die Admin-Konsole wird zusammen mit MorphIT ausgeliefert und befindet sich im Verzeichnis /admin_console. Für den Start der Konsole wird ebenfalls NodeJS benötigt.

Vor MorphIT 4.0.0

Vor dem Start müssen die Abhängigkeiten per npm install in diesem Verzeichnis installiert werden.

Die Konsole kann dann über die start_console.bat gestartet werden. Sie versucht sich an den Endpunkt zu verbinden, der in der Server-Konfiguration unter ws.admin angegeben ist. In dem ausgelieferten Zustand stimmen die Konfigurationen überein, sollte sich die Konsole nicht verbinden können, dann muss geprüft werden, ob der im Server konfigurierte Endpunkt mit dem der Konsole übereinstimmt. (/admin_console/config/config.js & /admin_console/config/custom/config.js)

Ab MorphIT 4.0.0

Die Konsole kann über morphit start console gestartet werden. Der Endpunkt, and den sich die Konsole verbindet, wird in der /config/config.js /config/custom/config.js unter ws.admin festgelegt.

 

Die Konsole verfügt in dem aktuellen Zustand über keine Authentifizierungsmechanismen. Aus Sicherheitsgründen akzeptiert der Server deshalb standardmäßig nur Verbindungen von der lokalen Maschine.

Relevante Konfiguration

Server-Konfiguration: (/server/config.js & /server/custom/config.js)  
Ab MorphIT 4.0.0 in (/config/config.js & /config/custom/config.js)

Name Default Beschreibung
ws.admin.port 8081 Der Port, auf dem Verbindungen zur Admin-Konsole akzeptiert werden sollen.
ws.admin.enabled true Gibt an, ob der Server die Administration per Admin-Konsole überhaupt zulässt.
ws.admin.reject_remote true Gibt an, ob nur Verbindungen von der lokalen Maschine erlaubt sind.
ws.admin.allowed_ips
4.16.0
[] Falls reject_remote auf true gesetzt it, dann kann hier eine Liste von IP-Adressen definiert werden, die von dieser Regel ausgenommen sind. Eingehende Admin-Konsolenverbindungen von diesen IP-Adressen werden dann trotzdem akzeptiert.
ws.admin.allow_eval
4.6.1
true Erlaubt die Ausführung des eval-Befehls der Admin-Konsole. In Sicherheitskritischen Systemen sollte diese Option deaktivert werden, da ein potenzieller Angreifer, der auf der Maschine Nutzerrechte erlangt hierüber die Rechte erhalten kann, mit denen der MorphIT-Server läuft. (Privilege Escalation)
ws.classix.shutdown_timeout 10000 Die Zeit (in ms), die ClassiX-Instanzen maximal haben, um sich beim Wechsel in den Wartungs-
Modus oder beim Trennen der Browser-Verbindung sauber zu beenden, ehe die Verbindung einfach getrennt wird.
ws.classix.kill_on_timeout false Falls sich eine ClassiX-Instanz nicht innerhalb von ws.classix.shutdown_timeout beendet und dieser Wert auf true gesetzt ist, wird zusätzlich zum Trennen der Verbindung auch versucht, die Instanz über deren Launcher als Prozess abzuschießen.
ws.launcher.shutdown_timeout 10000 Die Zeit (in ms), die Launcher-Instnazen maximal haben, um sich beim Wechsel in den Wartungs-
Modus suaber zu beenden, ehe die Verbidnung einfach getrennt wird.
ssl.enabled true Gibt die SSL-Konfiguration für die einzelnen Ports an. Die genaue Semantik ist hier beschrieben.

Admin-Konsole: (/admin_console/config/config.js & /admin_console/config/custom/config.js) 
Ab MorphIT 4.0.0 überflüssig

Name Default Beschreibung
endpoint.ssl false Gibt an, ob der Admin-Endpunkt im Server unter SSL läuft, oder nicht.
endpoint.host localhost Gibt an, auf welchen Rechner sich die Admin-Konsole verbinden soll.
endpoint.port 8081 Gibt an, auf welchen Port sich die Admin-Konsole verbinden soll.

 

Benutzung

Die Konsole versucht sich beim Start automatisch mit dem konfigurierten Endpunkt zu verbinden. Falls dies fehlschlägt, sollte die Konfiguration überprüft werden. Sobald die Verbindung hergestellt wurde, wir dem Benutzer ein CMD-ähnlicher Prompt angezeigt, in dem aktuell die folgenden Befehle unterstützt werden. (Die Konsole vervollständigt Befehle, wenn TAB gedrückt wird)

Server-Befehle

Server-Befehle werden im Server-Log protokolliert.

Befehl Beschreibung
comment text Schreibt einen Kommentar in das Server-Log.
config get pfad
4.8.0
Der durch den Pfad erreichte Teil der Serverkonfiguration wird in der Admin-Konsole als JSON ausgegeben. Fals kein Pfad übergeben wurde, dann wird die gesamte Serverkonfiguration ausgegeben.
eval JS-Code

Der angegebene Code wird in dem Kontext des Administrations-Moduls ausgeführt... Hierdurch können zur
Laufzeit in gewissem Umfang Korrekturen am Verhalten des Servers durchgeführt werden. Oder der Zustand des Servers ohne externen Debugger genauer inspiziert werden.

Vorsicht: Durch eine falsche Befehlsfolge kann der Server auch funktionsunfähig gemacht werden und
muss dann neu gestartet werden. 

Dieser Befehl kann über ws.admin.allow_eval=false deaktiviert werden, um in sicherheitskritischen Anwendungen Privilege Escalation über den eval-Befehl zu verhindern.

kill ( classix | launcher | morphit )  ids
4.13.0
Beendet die angegebenen ClassiX/Launcher-Instanzen oder trennt die Verbindung der angegebenen MorphIT-Verbindungen.
Die ids sind eine durch Leerzeichen getrennte Liste und entsprechen den Ids aus dem Status-Befehl. Für das Beenden/Neustarten von ClassiX-Webservice-Instanzen kann auch die Id der Webservice-Konfiguration angegeben werden.
Zusätzlich wird * als spezielle Id akzeptiert, welche alle Instanzen des Typs betrifft.
 
launch webservice configId
4.16.0
Versucht über den verbundenen Launcher eine neue ClassiX-Webservice-Instanz für die angegebene Webservice-Konfiguration zu starten. Dieser Befehl kann genutzt werden, um bei einem fehlgeschlagenen Start die Timeout-Periode zu übergehen und den Webservice schnell wieder verfügbar zu machen.
Dieser Befehl startet auch dann Instanzen, falls die vorgegebene Anzahl an Webservice-Instanzen für eine Konfiguration bereits erreicht ist. Auf diese Weise kann bei hoher Auslasung eines Webservices eine weitere Instanz bei Bedarf gestartet werden.
maintenance text

Setzt den MorphIT-Server in den Wartungs-Modus. Hierzu werden alle Verbundenen Instanzen (ClassiX/Launcher inkl. Dienst) 
sauber beendet und den MorphIT-Clients der eingegebene Text angezeigt. Der Server startet einen Wartungs-Server,
der MorphIT aus dem Cache ausliefert und die Wartungs-Nachricht für neue Clients anzeigt. Anschließend wird der Server beendet
und der Dienst des Servers gestoppt.
 

Ab diesem Zeitpunkt können die MorphIT-Verzeichnisse beliebig verändert werden. Der Wartungs-Server übernimmt die Rolle des
MorphIT-Servers und beantwortet neue MorphIT-Anfragen mit der angegebenen Wartungs-Meldung. Sobald die Änderungen
abgeschlossen sind, kann der Dienst des regulären MorphIT-Servers & -Launchers gestartet werden. Der MorphIT-Server erkennt
einen laufenden Wartungs-Server und beendet ihn vor dem Start.

3.16.1:
Der Wartungsserver schreibt eine Log-Datei mit dem Schema cxm####.log ins %TEMP%-Verzeichnis und löscht sie sobald er wieder durch den regulären MorphIT-Server ersetzt wurde. Sollte der Wartungsserver nicht korrekt starten, dann können in der Log-Datei Hinweise auf die Ursache des Problems enthalten sein.

4.15.0
Der MorphIT-Server lässt sich per morphit start mserver von der CMD direkt in den Maintenance-Modus starten, ohne vorher den Server starten zu müssen und dann per Admin-Konsole in den Maintenance-Modus zu versetzen.
Per --message "..." Parameter kann zusätzlich die anzuzeigende Wartungsnachricht konfiguriert werden.

status filter

Fragt den Status des Servers und aller Verbundenen ClassiX-, MorphIT-, & Launcher-Instanzen ab.
Potenzielle Probleme werden farblich rot markiert. Dadurch kann bei Problemen schnell die 
Ursache gefunden werden.

Der Status-Befehl kann durch Anfügen von einem oder mehreren Filtern:

classix launcher morphit queue server strategy webwidget 

auf die Ausgabe der angegebenen Bereiche eingeschränkt werden. Dies kann hilfreich sein, wenn viele Instanzen mit dem Server verbunden sind und die volle Ausgabe zu lang wäre und womöglich durch den beschränkten CMD-Buffer gekürzt wird.

test_mode (enable|disable|statustimeout
4.8.0
Schaltet den MorphIT-Server in den Test-Modus oder deaktiviert diesen wieder. Beim Aktivieren kann optional ein timeout in Millisekunden übergeben werden. Nach Ablauf dieser Zeit wird der test_modus automatisch wieder deaktiviert.
Bereits bestehende MorphIT-Verbindungen werden durch das Aktivieren des Test-Modus nicht getrennt.

Lokale-Befehle

Befehl Beschreibung
help Gibt eine Beschreibung der unterstützten Befehle aus.
clear Löscht den Text-Inhalt der Konsole.
exit Trennt die Verbindung zum Server und beendet die Konsole.

 

Befehlszeilen-Parameter

Ab MorphIT 3.20.0

Die Admin-Konsole kann über Befehlzeilen-Argumente so gestartet werden, dass zunächst eine Sequenz von Befehlen ausgeführt wird und sich die Konsole anschließend beendet, oder interaktiv Befehle entgegen nimmt. Bei einem Verbindungsfehler setzte die Konsole einen entsprechenden %ERRORLEVEL%.

Parameter Beschreibung
--command Zeile

Führt die angegebene Zeile so aus, als hätte der Benutzer sie in die Konsole eingegeben. Enthält die Zeile Leerzeichen, dann muss sie in Anführungszeichen eingeschlossen werden.
Es können mehrere Befehle hintereinander ausgeführt werden, indem mehrere --command Parameter gesetzt werden. Die Ausführungsreihenfolge ist dann identisch zur Parameterreihenfolge.

--cmd und --c können als Kurzform von --command genauso verwendet werden.

--exit

Wird dieser Parameter gesetzt, dann beendet sich die Konsole nach der Ausführung aller Befehle automatisch. Dieser Parameter ist gleichwertig mit einem --command exit als letzter Parameter. Der Parameter hat keine Auswirkung falls kein --command angegeben wurde.

--help Gibt einen Hilfetext zur Benutzung der Admin-Konsole aus.

 

 

Testmodus des MorphIT-Servers

4.8.0


Der Wartungsmodus startet einen Dummy-MorphIT-Server, der alle Anfragen mit einer rudimentären Antwort beantwortet und keinen Verzeichniszugriff benötigt, sodass die MorphIT-Installation ohne Bedenken aktualisiert werden kann. Wird der reguläre MorphIT-Server anschließend gestartet, dann ersetzt er diesen Dummy-Server und MorphIT ist ab diesem Zeitpunkt wieder voll funktionsfähig und für alle Clients erreichbar.

Nachdem größere Updates eingespielt wurden, ist es aber hilfreich, wenn man die aktualisierte Anwendung vor dem Live-Schalten noch einmal in Ruhe testen kann. Hierfür wurde der Testmodus entwickelt, der in den regulären MorphIT-Server integriert ist und jederzeit aktiviert und deaktiviert werden kann. Ist der Modus aktiviert, dann immitiert der MorphIT-Server für bestimmte IPs (standard: alle nicht lokalen IPs) den Wartungs-Server, indem er auf die gleiche Weise auf Anfragen antwortet. 

Der MorphIT-Server kann so konfiguriert werden, dass der nach Übernahme eines Wartungs-Servers direkt in den Testmodus startet, sodass reguläre Nutzer des Systems den Wechsel nicht merken. Der Admin kann dann die aktualisierte Anwendung in Ruhe auf Fehler testen, ehe er den Testmodus deaktiviert und die Anwendung damit für alle Nutzer freigibt.

Der Test-Modus wird über folgende Konfiguration im Server gesteuert:

Default-Werte
'maintenance_test_mode': { 'after_maintenance': false, 'after_start': false, 'auto_disable': false, 'allowed_ips' : [] }

 

Die Optionen after_maintenance und after_start definieren, wann sich der Server automatisch in den Test-Modus schalten soll. after_start=true heißt, dass sich der Server nach jedem Start/Neustart (auch nach einem Fehler) zunächst in den Testmodus schaltet, was zur Folge hätte, dass reguläre Nutzer dann nicht mit MorphIT arbeiten könnten, ehe der Server in der Admin-Konsole wieder freigeschaltet wird. after_maintenance=true führt dazu, dass sich der Server nur dann automatisch in den Testmodus schaltet, wenn er einen vorher laufenden Wartungs-Dummy-Server ersetzt hat. Dies sollte im Normalfall die sinnvollste Einstellung sein.

Der Server kann auch jederzeit über die Admin-Konsole mit dem Befehl test_mode enable in den Testmodus geschaltet werden, jedoch könnte sich dann ein Nutzer bereits mit dem Server verbunden haben. Bestehende Verbindungen werden beim Aktivieren des Testmodus nicht getrennt, sodass der Weg über die Admin-Konsole dazu führen kann, dass während der Tests einzelne Nutzer bereits auf dem System arbeiten. 

Der Option auto_disable kann alternativ eine Dauer in Millisekunden zugewiesen werden, die angibt, nach welcher Zeit der Testmodus automatisch wieder deaktiviert wird. Diese Option wird nur dann berücksichtigt, wenn der Test-Modus nicht über die Admin-Konsole aktiviert wurde, sondern durch den Start des Server automatisch aktiviert wurde.

In allowed_ips kann eine Liste von IP-Adressen (als Strings) eingetragen werden. Alle hier eingetragenen IPs dürfen auch im Test-Modus MorphIT ganz normal verwenden und erhalten keine Wartungsmeldung. Auch ohne Angabe von IP-Adressen sind alle Verbindungen von localhost immer erlaubt.

Die IP-Adresse kann als v4 oder v6-Adresse eingetragen werden, jedoch führt der Server keine Namensauflösung durch. Falls der Zugriff nicht funktioniert, dann sollte in der Admin-Konsole mit dem Befehl status --morphit geprüft werden, welche IP-Adresse der Client aus Sicht des Servers hat. Falls der Server hinter einem Reverse-Proxy steht, dann muss der Proxy den X-Forwared-For HTTP-Header setzen und in der Server-Konfiguration muss ws.trust_proxy=true gesetzt werden, damit die IP-Adressen der Clients durch den Proxy hindurch erkannt werden können.