2020.06 2021.06

Die Kommandos über die Web Schnittstelle (WebCli)

Der Abschnitt beschreibt die Arbeit mit Kommandos direkt aus der Web-Kommandozeilenschnittstelle heraus.

Allgemeines

Das Command Line Interface (CLI) wurde ja bereits beschrieben. MyCoRe gestattet neben der Arbeit über die System-Kommandozeile auch die Arbeit direkt über ein Web-Interface. Es stehen dabei auch alle Kommandos bereit, welche via Cli genutzt werden können. WebCli ist eine Komponente in MyCoRe. Für die Nutzung ist ein Servlet-Container mit Unterstützung für die Servlet-API 3.1 erfordelich. Dafür eignet sich also ein Tomcat ab Version 8 oder Jetty ab Version 9.1.

Integration in die Web-Anwendung

Die Integration der Komponente ist recht einfach. Natürlich muss selbige im benutzten MyCoRe-Code enthalten sein (dependency in der pom.xml). In der Anwendung ist einfach die folgende Web-Seite aufzurufen, welche natürlich vorher in die Anwendung kopiert wurde. Das WebCLI-Modul kommuniziert über WebSockets mit der Anwendung. Weiterhin ist für die Nutzung die Permission use-webcli erforderlich.

/modules/webcli/launchpad.xml

Besonderheiten bei Verwendung von AJP

Betreibt man die MyCoRe-Anwendung hinter einem Apache-Web-Server, so bindet man diesen in der Regel per AJP-Protokoll an den Servlet-Container. Das AJP-Protokoll unterstützt keine Web-Sockets, die für die Funktion des WebCLI notwendig sind. Für die Nutzung des WebCLI wird daher sowohl der AJP-Connector als auch der HTTP-Connector von Tomcat benötigt. Dabei wird davon ausgegangen, dass Apache und Tomcat auf einem Host liegen und intern unverschlüsselt über localhost kommunizieren. Beide Konnektoren müssen in der server.xml für unterschiedliche Ports definiert werden. Hier ein Beispiel:

1
2
3
4
5
6
7
8
...
    <Connector port="{HTTP-Port}" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
    <Connector port="{AJP-Port}" protocol="AJP/1.3"
               redirectPort="8443" />
...

Nun folgt die Konfiguration des Apache-Webservers. Hier ist als erstes das Modul proxy_wstunnel erforderlich (ab Apache httpd 2.4.5). Dies erfolgt je nach OS in der entsprechenden Konfigurationsdatei durch Hinzufügen des Moduls a2enmod proxy_wstunnel .

unter SuSE: /etc/sysconfig/apache2

unter Ubuntu: /etc/apache2

Nun ist noch die Konfiguration im virtuellen Host erforderlich.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
...
        <Location />
             ProxyPass ajp://localhost:{AJP-Port}/
             ProxyPassReverse ajp://localhost:{AJP-Port}/
             Require all granted
        </Location>

        <Location /ws/>
             ProxyPass ws://localhost:{HTTP-Port}/ws/
             Require all granted
        </Location>
...

Verschlüsselte Verbindung zwischen Apache und Tomcat

Für den Fall, dass die Kommunikation zwischen Apache und Tomcat über eine gesicherte Verbindung stattfinden soll, müssen noch folgende Schritte/Änderungen erledigt werden:

1. Es ist ein unsigniertes Zertifikat mit keytool -genkey -alias generic -keyalg RSA zu erzeugen und unter $HOME/.keystore zu speichern.

2. Der Connector im server.xml ist anzupassen.

1
2
3
4
5
6
...
    <Connector port="{HTTPS-Port}" protocol="org.apache.coyote.http11.Http11NioProtocol"
               scheme="https" SSLEnabled="true"
               secure="true" clientAuth="false" sslProtocol="TLS" keyAlias="generic"
               keystoreFile="${user.home}/.keystore" keystorePass="{AJP-Port}"  />
...

3. Der Eintrag für den WebSocket ist anzupassen.

1
2
3
4
5
6
...
      <Location /ws/>
           ProxyPass wss://{Tomcat-Host}:{HTTPS-Port}/ws/
           Require all granted
      </Location>
...