Das Projekt besteht aus zwei Teilen:
- einem React Frontend
- einem kleinem Server Backend für die Authentifizierung
- und optional einem kleinen Server Backend für Housekeeping-Jobs in der SOA (z.B. Resend von Nachrichten)
Das Frontend liegt im Verzeichnis ./frontend
. Hierbei handelt es sich um ein
gewöhnliches CRA-Projekt, welches eine Single Page App realisiert.
Die Backends sind KOA-Server:
./server.js
bietet eine REST-Schnittstelle zur LDAP-Authentifizierung./backend-jobs/server.js
liefert eine API für's Housekeeping
Working Demo: hier User = Password = testuser
Die Authentifizierung findet gegen ActiveDirectory/LDAP statt. Ich habe kein NPM-Modul gefunden, welches nicht von dem Net-Modul aus node abhängig wäre. Das steht offensichtlich im Browser nicht zur Verfügung.
Eine Eigenimplementierung kam für mich nicht in Frage. Daher brauchte ich einen Node.js Prozess, der die Authentifizierung abhandelt.
Die API für's Housekeeping bietet einen Zugriff auf lokale Verzeichnisse: zum einen für die Definition und Logs der Housekeeping.Jobs, zum anderen um darüber für das Housekeeping benötigte Modell-Informationen bereit zu stellen.
Für das ESB-Dashboard spielen verschiedene Komponenten zusammen:
Basis für die Daten des Dashboards sind die Logpunkte aus der SOA, die für die verschiedenen Laufzeitumgebungen der SOA über eine REST-Schnittstelle angebunden werden (siehe blauen Kasten). Die Authentifizierung des Nutzers erfolgt über einen REST-Call gegen den roten Kasten, der selbst wiederum das LDAP/ActiveDirectory anspricht.
1: Hole Sourcen:
git clone https://github.com/h9h/soa-dashboard.git
2: Lege Customising-Dateien in den Ordnern
./customisation
und
./frontend/src/customisation
entsprechend der dort liegenden README.md an:
3: Lege im Ordner
./frontend
eine .env
gemäß dem Beispiel .env.example
an.
4: yarn install
einmal auf Ebene des Projektes und einmal im Ordner frontend
.
In der ./package.json
sind verschiedene Skripte definiert:
yarn start
startet sowohl einen Hot-Loading Server für das Frontend, welches dann unter http://localhost:3000
verfügbar ist. Des Weiteren werden die Backends für Authentication und Housekeeping gestartet. Diese laufen
standardmäßig unter Port 4166 bzw. 4000.
Alternativ können die drei Komponenten einzeln gestartet werden - dies ist sinnvoll, wenn man in der Entwicklung ein Backend durchstarten möchte, ohne immer das Frontend mit zu starten:
yarn ncc:server:auth
yarn ncc:server:file
yarn start:frontend
yarn build
baut die Frontend-SPA unter ./frontend/build
. Ein Aufruf der index.html
aus dem
Build-Verzeichnis im Browser ergibt folgenden Zustand nach erfolgreichem Bau:
Auf der linken Seite ist ein Stop-Symbol und individueller Text zu sehen. Dies zeigt an, dass das Authentifizierungs- Backend nicht ereichbar ist.
yarn ncc:build
erzeugt unter ./dist
zwei Verzeichnisse - "auth" und "file" - die jeweils eine index.js
enthalten. Dieses sind fertig gebundelte JavaScript-Sourcen für die Backends.
Das Authentifizierungsbackend kann dann mittels node ./dist/auth
gestartet werden. Danach verschwindet das
Stop-Symbol:
Das Frontend wird wieder mit yarn build
gebaut. Die Backends werden mittels
yarn pkg:server:dashboard
yarn pkg:server:file
als Windows-EXEs bereit gestellt.
Ein potentieller Betriebsmodus wäre dann, lokal esb-dashboard.exe
zu starten, da diese sowohl das
Frontend, als auch das Authentifizierungs-Backend bereit stellt. Das Dashboard steht dann unter
http:/localhost:4166
zur Verfügung.
Mittels
yarn build:all
werden
- das Frontend gebundelt
- die esb-dashboard.exe und esb-jobs.exe erzeugt
- die Javascripte für Auth- und Jobs-Backend gebundelt
- und das gebundelte Auth-Javascript mit in das frontend/build-Verzeichnis kopiert.
Damit reicht es dann, das frontend/build Verzeichnis an den gewünschten Ort auf dem Server zu deployen und den Start
von node ./auth.js
in den Start des Servers einzubinden.
Für den Stopp des Authentifizierungs-Backends reicht ein kill auf den Prozess. Es wird kein Zustand gehalten.
Hinter einem Proxy funktioniert das Herunterladen der Binaries für die Packages nicht.
Dies äußert sich dadurch, dass der Bauschritt pkg:server:dashboard
abbricht.
Die Fehlermeldung ist in der Log-Datei output-dashboard-win-pkg.log zu finden.
Dort ist auch der Name der Datei zu finden, die im folgenden Workaround dann manuell herunterzuladen ist.
Daher dieser Workaround:
(hier für v2.6, ansonsten entsprechende Version jeweils anpassen - siehe tag
in der Logdatei)
- gehe zu https://github.com/vercel/pkg-fetch/releases/
- such die passende Version gemäß der Fehlermeldung in der Logdatei
output-...-pkg.log
- Download die gewünschte Version gemäß Log-Datei
- Gehe zum ./pkg-cache Verzeichnis (bei mir: C:\Users\{userid}\.pkg-cache\v3.2)
- Kopiere das heruntergeladene Bin
- Benenne den Anfang der Datei um zu "fetched-..." (z.B. "fetched-v10.24.1-win-x64")
- Versuche pkg Skript noch einmal, sollte dann funktionieren