Zum Hauptinhalt springen

Konfiguration

Für die Initialisierung der Datenbank kann die Importschnittstelle verwendet werden.

Backend

Das Backend kann über Umgebungsvariablen konfiguriert werden. Damit können die Werte in der resources/application.yml überschrieben werden. Spring ermöglicht dies über Namenskonventionen, z.B. SUBATO_PUBLIC_HOSTNAME entspricht dem Konfigurationswert subato.public_hostname. Das Backend verlässt sich zudem darauf, dass das korrekte Profil gesetzt ist. Je nach Umgebung muss SPRING_PROFILES_ACTIVE auf prod oder test gesetzt werden. In den folgenden Abschnitten werden wichtige Optionen beschrieben. Alle konfigurierbaren Optionen finden sich in resources/application.yml.

Hostname

Wenn mit dem Backend über einen Proxy kommuniziert wird, sollte SUBATO_PUBLIC_HOSTNAME auf den öffentlichen Hostnamen gesetzt werden. Andernfalls ist das nicht notwendig. Wenn sich die Ports auch unterscheiden, kann der öffentliche Port so konfiguriert werden: SUBATO_PUBLIC_HOSTNAME=api.subato.cs.hs-rm.de:443

Grund dafür ist, dass relative URLs zu Bildern und anderen Medien in der Aufgabenstellung zu importierten Aufgaben auf absolute URLs umgeschrieben werden, sobald die Aufgabenstellung vom Backend abgerufen wird. Standardmäßig wird für die absolute URL der Hostname verwendet, der bei der HTTP Anfrage verwendet wurde. Wird das Backend nun über eine interne Adresse durch den Proxy angesprochen, können die absoluten URLs von außen ggf. nicht erreicht werden.

Git-Synchronisation von Aufgaben-Pools

Aktivierung/Deaktivierung der automatischen Synchronisation über SUBATO_TASK_POOL_SYNC_ENABLED. Zugangsdaten des Git-Benutzers sind konfigurierbar über SUBATO_TASK_POOL_SYNC_GIT_USER und SUBATO_TASK_POOL_SYNC_GIT_TOKEN. Der Synchronisationsinterval kann mit SUBATO_TASK_POOL_SYNC_CRON definiert werden.

Keycloak

URL zum Keycloak Server über KEYCLOAK_AUTH_SERVER_URL und Realm über KEYCLOAK_REALM setzen. Es muss einen Client mit dem Namen subato-backend geben.

Uploadlimit

Der Dateiupload wird durch ein Limit begrenzt, das mit SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE konfiguriert werden kann. Die Einstellung muss im Format <Größe><Einheit> erfolgen, also z.B. 30MB. Das Limit wird automatisch über den /config HTTP Endpunkt an das Frontend kommuniziert und dort angezeigt.

Proxy-Konfiguration

Wenn das Backend über HTTP Proxies angesprochen wird, muss darauf geachtet werden, dass die Konfiguration der Proxies mindestens dem konfigurierte Limit entspricht. Ebenfalls ist zu beachten, dass evtl. keine trifftige Fehlermeldung im Frontend angezeigt wird, wenn die Proxies ein 413 Content Too Large Response zurückgeben.

Ausnahmeregeln für Mime-Type Erkennung

Für die korrekte Anzeige von Dateien im Frontend (Syntax-Highlighting, Einrückung) und für die Bestimmung von gültigen Lösungen (Quelldatei oder Binärdatei abgegeben?) ist eine Bestimmung des Mime-Types anhand des Dateinamens notwendig. Da eine automatische Erkennung aufgrund des Wildwuchses an definierten Mime Types nicht immer korrekt erfolgt, ist es eventuell notwendig, Ausnahmen zu definieren. Die Ausnahmen lassen sich mit Variablen nach dem folgenden Muster überschreiben oder erweitern:

SUBATO_MIME_0_MAP=.elm
SUBATO_MIME_0_AS=text/x-elm

SUBATO_MIME_1_MAP=.kt
SUBATO_MIME_1_AS=text/x-kotlin

# ...

Automatische Ergänzung von Kursen nach Erstellung

An der Hochschule RheinMain nutzen wir das AoR-System um Veranstaltungen zu Kursen automatisch zu importieren, sobald diese erstellt werden. Sollen nach Erstellung eines Kurses Daten (wie z.B. Veranstaltungen) automatisch aus einer eigenen Datenquelle importiert werden, kann die Schnittstelle CourseSupplement implementiert werden. In den JavaDocs zur Schnittstelle CourseSupplement finden sich weitere Informationen, als Orientierung kann die bestehende AoRCourseSupplement Implementierung genutzt werden.

Frontend

Die Konfiguration erfolgt über Dateien in src/environments/*, es gibt drei Konfigurationen:

  • environment.ts: Lokal/Dev
  • environment.prod.ts: Produktivumgebung
  • environment.test.ts: Testumgebung

Unter environments/environment.common.ts wird alles konfiguriert, was alle Umgebungen betrifft. Selektiv kann dann in den spezifischen environment*.ts Dateien überschrieben werden.

Rebuild bei Änderungen

Bei Konfigurationsänderungen muss (anders als beim Backend) stets ein Rebuild erfolgen. Das Frontend lässt sich aktuell nicht mit Umgebungsvariablen konfigurieren.

Caching wird über cashewConfig() in app.module.ts konfiguriert. Die Verbindungsparameter für Keycloak (außer der URL) befinden sich aktuell ebenfalls in app.module.ts.