Konfiguration

Konfigurationsdateien

Folgende Konfigurationsdateien werden von map.apps verarbeitet:

  • WEB-INF/classes/default-application.properties (NICHT EDITIEREN)
    In dieser Datei befinden sich alle Konfigurationsoptionen von map.apps mit ihren Standardwerten.

  • WEB-INF/classes/custom-application.properties
    Wenn eine Änderung des Arbeitsverzeichnisses (data.directory.location) nötig ist, muss die Änderung in dieser Datei erfolgen. Alle weiteren Anpassungen erfolgen in der nachfolgenden Datei.

  • [data.directory.location]/application.properties
    Nehmen Sie Änderungen an der Konfiguration durch das Bearbeiten dieser Datei vor.
    Das Arbeitsverzeichnis (data.directory.location) von map.apps ist in der Standardinstallation das Verzeichnis ${user.home}/.mapapps. Die Datei wird nicht automatisch erstellt, daher kann als Vorlage die Datei WEB-INF/classes/application.properties dienen. Belassen Sie nur die Einstellungen in der Datei, die geändert wurden.

Das Format der Konfigurationsdateien muss dem Java Properties Dateiformat entsprechen.

Beispiel Java Properties Datei
# Die Dateien müssen UTF-8 kodiert sein, sonst können Umlaute zu Fehlern führen!
# Am sichersten ist die Kodierung von Umlauten in Unicode-Syntax z.B: ä = \u00E4 (vgl. http://0xcc.net/jsescape/)

# Kommentare erfolgen mit Raute

# die Syntax ist:
key = value

# Eine Value kann einen anderen Key referenzieren
key1 = http://${key.with.server}/test

Wenn die Einstellung configuration.watch.changes aktiviert ist (was standardmäßig der Fall ist), führt jede Änderung in der Datei ${data.directory.location}/application.properties zu einem erneuten Einlesen der Konfigurationseinstellungen. Änderungen in anderen Konfigurationsdateien werden dabei berücksichtigt. Fehlerhafte Einstellungen können ein erfolgreiches Einlesen verhindern. Ist dies der Fall, ist ein Neustart der Web-Applikation notwendig.

Ist die Konfiguration configuration.watch.changes nicht aktiviert, ist nach der Änderung einer der Konfigurationsdateien ein manueller Neustart der Web-Applikation erforderlich (alternativ können Sie den kompletten Tomcat Server neu starten).

Konfigurationsparameter

In diesem Abschnitt werden die Parameter beschrieben, die am häufigsten in einer Standardinstallation verändert werden müssen. Weitere Parameter sind in der Datei WEB-INF/classes/default-application.properties in Kommentaren beschrieben.

data.directory.location

Arbeitsverzeichnis, in dem map.apps-Daten (z.B. eine HSQL-Datenbank) lokal gespeichert werden.

Für den Fall, dass der Tomcat-Server als Windows-Dienst betrieben wird, liegt das .mapapps Verzeichnis im Stammverzeichnis ($HOME) des Tomcat-Accounts, der den Dienst gestartet hat.

Tomcat-Account

Wenn kein Tomcat-Account angelegt wurde, wird der Tomcat-Server mit dem System-Account ausgeführt (nicht empfohlen). In diesem Fall wird das Verzeichnis unter folgendem Pfad angelegt: C:/Windows/System32/config/systemprofile/.mapapps

Ein abweichendes map.apps Datenverzeichnis kann in der Datei WEB-INF/classes/custom-application.properties konfiguriert werden. Pfad-Trenner müssen entweder als / oder \\ angegeben werden.

Standardwert: $\{user.home\}/.mapapps

configuration.watch.changes

Überwachung der Datei ${data.directory.location}/application.properties.

Bei Aktivierung können Konfigurationseinstellungen ohne Neustart der Web-Applikation geändert werden. Die Konfigurationsdatei muss beim Starten der Web-Applikation vorhanden sein, damit sie überwacht werden kann.

Standardwert: true

client.config.defaultLocale

Spracheinstellung.

Die Spracheinstellung des Browsers wird erkannt und map.apps wird in der entsprechenden Sprache gestartet. map.apps unterstützt standardmäßig die Sprachen Deutsch und Englisch. Falls die Sprache im Browser weder Deutsch noch Englisch entspricht, wird der Wert dieses Parameters eingesetzt.

client.config.supportedLocales

Von map.apps unterstützte Sprachen.

Wird eine Spracherweiterung installiert, muss die neue Sprache ebenfalls hinterlegt werden. In GitHub steht eine Anleitung zum Hinzufügen weiterer Sprachen bereit.

Standardwert: en,de

client.config.productname

Angezeigter Produktname.

Im Standardlayout wird oben links in der App-Übersicht, dem map.apps Manager und in den einzelnen Apps der Begriff map.apps angezeigt. Dieser Text kann mit diesem Parameter angepasst werden.

client.config.requestTimeout

Globaler Timeout-Wert für alle Anfragen, die esri/ct.request verwenden und keinen eigenen Timeout-Wert definieren.

Datenbank-Anbindung

map.apps verwendet standardmäßig eine HSQL-Datenbank, die in der Auslieferung enthalten ist. Sie wird zu Testzwecken automatisch im Dateisystem erstellt und erfordert keine weitere Konfiguration.
Verwenden Sie die HSQL-Datenbank nicht in produktiven Umgebungen.

HSQLDB

Mehrere parallele Installationen von map.apps können nicht auf dieselbe HSQL-Datenbank verweisen. Ändern Sie in diesem Fall für eine Instanz den Parameter data.directory.location.

Microsoft SQL Server

Setzen Sie bei Verwendung von Microsoft SQL Server bei der Anlage der Datenbank die Collation auf ein case-sensitives Format (zum Beispiel Latin1_General_CS_AS).

Ändern Sie die Datenbankverbindung, indem Sie die folgenden Eigenschaften bearbeiten:

db.use

Legt fest, ob eine direkte Datenbankverbindung (JDBC) oder eine container-managed Datenbankverbindung (JNDI) aufgebaut wird.

Verwenden Sie JDNI, wenn mehrere Webanwendungen im Container (z.B. Apache Tomcat) vorhanden sind, die auf dieselbe Datenbank zugreifen (siehe Apache Tomcat JNDI-Dokumentation ). Bei JDBC ist keine Container-Konfiguration notwendig.

Erlaubte Werte: jndi, jdbc
Standardwert: jdbc

db.type

Herstellerspezifischer Typ des verwendeten Datenbanksystems.

Dieser wird intern verwendet, um korrekte und optimierte Datenbankanfragen zu erzeugen.

Erlaubte Werte:

Datenbank Typ Beispiel-URL

PostgreSQL

postgresql

jdbc:postgresql://localhost:5432/mapapps

Oracle Database

oracle

jdbc:oracle:thin:@myhost:1521:orcl

Microsoft SQL Server

sqlserver

jdbc:sqlserver://localhost:1433;databaseName=mapapps

HSQLDB

hsqldb

jdbc:hsqldb:file:$\{data.directory.location\}/storage/db;shutdown=true

Standardwert: hsqldb

db.hibernate.schemaUpdate

Definiert, ob und wie das Datenbankschema automatisch angepasst wird.

Erlaubte Werte: validate, update
Standardwert: update

Direkte Datenbankverbindung (JDBC)

Um eine direkte Datenbankverbindung zu nutzen, konfigurieren Sie zusätzlich zu den drei o.g. Parametern die folgenden Werte:

db.jdbc.url

JDBC Datenbankverbindungs-URL.

Dieser Wert ist vom verwendeten Datenbanksystem abhängig (siehe oben stehende Tabelle).

Standardwert: jdbc:hsqldb:file:$\{data.directory.location\}/storage/db;shutdown=true

db.jdbc.username

Login-Name des Datenbankzugangs.

Standardwert: sa

db.jdbc.password

Passwort des Datenbankzugangs.

db.jdbc.maxActiveConnections

Maximale Anzahl aktiver Datenbankverbindungen im verwendeten Connection-Pool.

Standardwert: 50

db.jdbc.minActiveConnections

Minimale Anzahl aktiver Datenbankverbindungen im verwendeten Connection-Pool.

Standardwert: 1

Wenn eine JDBC-Verbindung verwendet wird, muss der für die Datenbank passende JDBC-Treiber in das Verzeichnis %MAPAPPS%/WEB-INF/lib kopiert werden.

Container-managed Datenbankverbindung (JNDI)

Um eine Datenbankverbindung über JNDI einzurichten, müssen zusätzlich zu den drei o.g. Parametern die folgenden Werte konfiguriert werden:

db.jndi.name

JNDI-Name, über den die Datenbank vom Container erfragt werden kann.

Standardwert: java:comp/env/jdbc/mapapps

Darüber hinaus sind folgende Schritte in der Konfiguration des Tomcats zu befolgen:

  1. Öffnen Sie die Datei server.xml, die sich im Verzeichnis conf des Apache Tomcat befindet.

  2. Fügen Sie zum Element <GlobalNamingResources> das folgende Element hinzu:

    server.xml
    <Resource name="mapappsdb" auth="Container"
          type="javax.sql.DataSource"
          maxTotal="50"
          maxIdle="1"
          maxWaitMillis="10000"
          defaultAutoCommit="false"
          username="postgres"
          password="postgres"
          driverClassName="org.postgresql.Driver"
          url="jdbc:postgresql://localhost:5432/mapapps" />

    Dieses Element ist beispielhaft auf die PostgreSQL-Datenbank angepasst. Wenn Sie eine andere Datenbank als PostgreSQL verwenden, passen Sie die Attribute driverClassName und URL an. In der oben stehenden Tabelle sind die Werte für die verschiedenen Datenbanken aufgeführt.

  3. Passen Sie die Attribute username und password des Elements an die Gegebenheiten in Ihrem System an.

  4. Kopieren Sie die JAR-Datei des von Ihnen verwendeten JDBC-Datenbanktreibers in das Verzeichnis lib des Apache Tomcat.

  5. Öffnen Sie die Datei context.xml im Verzeichnis META-INF der map.apps-Webanwendung und entfernen Sie die Kommentare um das Element <ResourceLink name="jdbc/mapapps" global="mapappsdb" type="javax.sql.DataSource"/>, um es zu aktivieren.

  6. Speichern Sie alle veränderten Dateien und starten Sie Apache Tomcat neu.

Falls die Einstellungen nicht wirksam sind oder Fehlermeldungen auftreten, überprüfen Sie den Inhalt der Datei conf/Catalina/localhost/ct-mapapps-webapp-4.13.1.xml oder löschen Sie diese. Sie wird beim nächsten Start der Webanwendung neu generiert.

Container-managed Datenbankverbindung (JNDI mit HikariCP)

Wir empfehlen die Verwendung des Datenbank Connection Pool HikariCP .

Die Konfiguration in der server.xml ändert sich dann wie folgt:

server.xml
<Resource name="mapappsdb" auth="Container"
        factory="com.zaxxer.hikari.HikariJNDIFactory"
        type="javax.sql.DataSource"
        minimumIdle="1"
        maximumPoolSize="50"
        connectionTimeout="10000"
        dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
        dataSource.url="jdbc:postgresql://localhost:5432/mapapps"
        dataSource.user="postgres"
        dataSource.password="postgres" />

Zusätzlich müssen neben dem Datenbanktreiber folgende Bibliotheken im Tomcat lib Verzeichnis ergänzt werden:

PostgreSQL Wartung

Um Bundles oder Report-Vorlagen zu speichern werden sog. Blobs verwendet. Je nach Anzahl und Größe der hochgeladenen Dateien kann es dadurch im Laufe der Zeit zu einem hohen Speicherplatzverbrauch kommen, da die Blobs in PostgreSQL nicht korrekt entfernt werden. PostgreSQL empfiehlt folgende Strategien zur Lösung des Problems:

  • Führen Sie regelmäßig das von PostgreSQL zur Verfügung gestellte vacuumlo Werkzeug aus. Das Werkzeug entfernt die nicht länger verwendeten Dateien.

  • Alternativ können Datenbank-Trigger registriert werden, die beim Update oder Löschen von Zeilen die dazugehörigen Daten korrekt löschen. In der Datei postgres-blob-cleanup-trigger.sql im Verzeichnis resources/sql der map.apps Auslieferung finden Sie die benötigten SQL-Statements zum Registrieren der Trigger.

Standard-URLs

Transportverschlüsselung
Verwenden Sie bei der Konfiguration externer URLs immer das HTTPS-Protokoll.
printtask.service.url

URL für den ArcGIS for Server Print Task.

Der Wert wird vom printing Bundle und vom Report-Dienst verwendet. Es muss sich um einen synchron konfigurierten Task handeln. Über den Parameter reporting.printtask.service.url kann eine abweichende Konfiguration für den Report-Dienst festgelegt werden.

esri.api.arcgisPortalUrl

URL des verwendeten ArcGIS Enterprise-Portal.

Standardwert: //www.arcgis.com
Beispiel: https://www.myserver.de/portal

geometry.service.url

URL des ArcGIS for Server Geometry Service.

locator.service.url

URL eines Esri Locator Services, der standardmäßig vom Bundle locator-store verwendet wird.

Sicherheitseinstellungen

jsregistry.browsing.enabled

Aktiviert die HTML basierte Suche in der JS-Registry /resources/jsregistry/root.

Erlaubte Werte: true, false
Standardwert: true

security.ssl.trustAny

Aktiviert die Unterstützung für selbst signierte Zertifikate bei HTTPS-Verbindungen.

Aktivieren Sie diese Einstellung in Produktionsumgebungen nicht.

Erlaubte Werte: true, false
Standardwert: false

security.login.redirect.trusted.hosts

Komma-separierte Liste von akzeptierten Hostnamen.

Diese Liste definiert, welche Ziele zur Weiterleitung (Redirect) akzeptiert werden, wenn map.apps am Ende des Login-Prozesses den Browser zur nächsten Seite weiterleitet. Dies stellt sicher, dass Angreifer niemanden unter Vorlage einer entsprechenden URL auf eine bösartige Seite lenken können.

Wenn eine Applikation zum Login auf map.apps umleitet und die Applikation unter einem anderen Hostnamen als map.apps aufgerufen wird, müssen hier die entsprechenden Hostnamen hinzugefügt werden. Dies ist z.B. häufig bei der Nutzung von Entwicklungsprojekten der Fall.

Sie können Wildcards verwenden, um z.B. Redirects auf alle Rechner einer Domäne zu erlauben.

Standard: localhost
Beispiel: *.gishost.org

security.embedding.allowed.origins

Komma-separierte Liste von Quellen, die map.apps in einem iFrame einbetten dürfen.

Ist die einbettende Seite nicht erlaubt, wird den Responses der Anfrage der X-Frame-Options: DENY Header hinzugefügt.

Standard: <leer>
Beispiel: https://my‑example.com:8080,https://demos.de

security.responseHeaders.common

Liste von HTTP Headern gemäß der Antwort-Header Syntax.

Die Header werden an jede Antwort des map.apps Backend-Service geschrieben. Die Konfiguration sollte nur bei besonderen Sicherheitsanforderungen verändert werden.

Standardmäßig werden folgende Header ergänzt:

X-Content-Type-Options:nosniff

Definiert, dass der Browser Serverantworten nur auf Basis des Content-Type Headers interpretieren darf.
Genauere Informationen finden Sie unter X-Content-Type-Options .

Strict-Transport-Security:max-age=604800

Definiert, dass der Browser sich merken soll, dass der Host für 7 Tage (604800 Sekunden) nicht mehr per HTTP angefragt werden dar.
Wirkt nur, wenn map.apps via HTTPS verwendet wird. Genauere Informationen finden Sie unter Strict-Transport-Security .

Standard: X-Content-Type-Options:nosniff,Strict-Transport-Security:max-age=604800

security.responseHeaders.manager

Liste von HTTP Headern gemäß der Antwort-Header Syntax.

Die Header werden beim Ausliefern der map.apps manager HTML Seiten, wie /manager oder /account/login/, ergänzt. Die Konfiguration sollte nur bei besonderen Sicherheitsanforderungen verändert werden.

Standardmäßig werden folgende Header ergänzt:

Referrer-Policy:same-origin

Definiert, dass der Browser einen Referrer Header nur zu den Seiten senden soll, die zum gleichen Ursprung, wie die Ausgangsseite gehören.

Genauere Informationen finden Sie unter Referrer-Policy .

Content-Security-Policy

Definiert Sicherheitsrestriktionen.

Genauere Informationen finden Sie unter Content-Security-Policy .

Beispiel: Referrer-Policy:same-origin, Content-Security-Policy:default-src 'self'

Standard: Referrer-Policy:same-origin, Content-Security-Policy:default-src 'self'; script-src 'self' https://demos.conterra.de https://api.github.com; connect-src 'self' https: http:; img-src 'self' data: https:; worker-src 'self' blob:; child-src 'self' blob:; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self'

security.responseHeaders.apps

Liste von HTTP Headern gemäß der Antwort-Header Syntax.

Die Header werden beim Ausliefern der map.apps App HTML Seiten, wie /resources/apps/<app>/index.html, ergänzt. Die Konfiguration sollte nur bei besonderen Sicherheitsanforderungen verändert werden.

Standardmäßig werden folgende Header ergänzt:

Referrer-Policy:same-origin

Definiert, dass der Browser einen Referrer Header nur zu den Seiten senden soll, die zum gleichen Ursprung, wie die Ausgangsseite gehören.

Genauere Informationen finden Sie unter Referrer-Policy .

Content-Security-Policy

Definiert Sicherheitsrestriktionen.

Genauere Informationen finden Sie unter Content-Security-Policy .

Beispiel: Referrer-Policy:same-origin, Content-Security-Policy:default-src 'self'

Standard: Referrer-Policy:same-origin,Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' https: http:; worker-src 'self' blob:; child-src 'self' blob:; connect-src 'self' https: http: wss: ws:; frame-src 'self' https: http:; img-src 'self' data: blob: https: http:; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self'

Antwort-Header Syntax

Um eine Liste von Antwortheadern zu definieren, verwenden Sie folgende Syntax: <header-name>:<header-value>,<header-name>:<header-value>. Dabei gilt

  • <header-name> ist der Name eines HTTP Header. Dieser muss mit einem Großbuchstaben beginnen.

  • <header-value> ist der Wert eines HTTP Header.

Proxy-Einstellungen

proxy.allowedServerUrls

Liste von URLs, auf die der Proxy weiterleiten darf.

map.apps stellt einen integrierten Proxy bereit. Dieser wird benötigt, weil direkter Zugang zu anderen Ressourcen aufgrund von Sicherheitsbeschränkungen innerhalb von JavaScript untersagt ist.

Die Konfiguration nutzt folgende Syntax:

<url-expression>[,<property-expression>];

Nach jedem Eintrag muss ein ; folgen. Um mehrere Zeilen zu nutzen, ergänzen Sie am Ende jeder Zeile (außer der letzten) ein \. Nach dem \ dürfen keine Leerzeichen folgen.

Innerhalb von url-expression dürfen * als Platzhalter verwendet werden:

https://*.test.de/arcgis/**

Definiert, dass Zugriffe auf jede Subdomäne von test.de und dem Pfad /arcgis erlaubt sind.
Ergänzen Sie am Ende des Ausdrucks ein **, damit alle tieferen URLs erlaubt sind wenn Platzhalter verwendet werden. Der * Platzhalter beinhaltet das / nicht. Der ** Platzhalter beinhaltet das /.

https://test.de/arcgis

Wenn keine Platzhalter verwendet werden, wird angenommen, dass alle Weiterleitungen an URLs erlaubt sind, die mit dem Ausdruck beginnen.

Folgende property-expressions gibt es:

  • user:<username>
    Der Login-Name für HTTP basic Authentifizierung

  • pw:<password>
    Das Password für HTTP basic Authentifizierung

  • token:<token>
    Ein lang lebendes ArcGIS Server Token

  • bearer:<bearer-token>
    Ein Bearer Token für die Übertragung im HTTP Authorization Header

  • followRedirects:<true|false>
    Definiert ob Weiterleitungen vom Proxy verfolgt werden (Standard ist false)

  • trusted:<true|false>
    Wenn eine URL als trusted markiert ist, bedeutet dies, dass Cookies und Authorization HTTP-Header über den Proxy weitergeleitet werden.

Konfigurieren Sie URLs immer so exakt wie möglich, um Sicherheitsrisiken zu vermeiden.

Beispiele:

  • Exakte URL: http://sampleserver1.arcgisonline.com/arcgis/rest/services/**;

  • HTTP + HTTPS URL (Aber nur mit Standardports 80/443): *://sampleserver1.arcgisonline.com/arcgis/rest/services/**;

  • HTTP + HTTPS URLs (Egal an welchem Port): *://sampleserver1.arcgisonline.com:*/arcgis/rest/services/**;

  • Arcgis Server Token ergänzen: http://myserver.mycompany.com/arcgis/rest/services,token:xyz123;

  • Bearer Token ergänzen: http://myserver.mycompany.com/arcgis/rest/services,bearer:xyz123;

  • Login-Name und Passwort für http basic Authentication vordefinieren: http://test.de/path/**,user:test,pw:testtest;

  • Erlauben, dass Cookies and Authorization-Header weitergeleitet werden: http://test.de/path/**,trusted:true;

proxy.allowUnsafeServerUrls

Aktiviert unsichere Werte in dem Parameter proxy.allowedServerUrls.

Folgende Konfigurationen werden als unsicher betrachtet:

  • localhost Weiterleitungen. Dies würde die externe Verwendung von localhost ermöglichen.

  • Konfigurationen, die nur das Protokoll beinhalten z.B: http://. Dies würde den Zugriff auf alle URLs über den Proxy erlauben.

Standardwert: false

proxy.use.rules

Regeln für den Proxy-Zugriff abhängig von den angefragten Hostnamen.

Dies ermöglicht die Kontrolle darüber, welche Requests über eine bestimmte Proxy-Seite geleitet werden.

Beispiel: proxy.use.rules=sample1.mapapps.de,sample2.mapapps.de|/proxyPage
Bedeutung:
sample1.mapapps.de wird über die Standardproxyseite /proxy geleitet,
sample2.mapapps.de wird über eine eigene Proxyseite /proxyPage geleitet.

CORS-Einstellungen

Diese Einstellungen werden benötigt, um Cross Origin Requests zu ermöglichen.

map.apps geht davon aus, dass angefragte Webdienste CORS unterstützen. Falls Sie eine Proxy Rule konfiguriert haben, wird map.apps diese weiterhin verwenden. In allen anderen Fällen werden Anfragen mit der Annahme gemacht, dass CORS unterstützt wird.

cors.allowed.origins

Liste von Basis-URLs von Webseiten, die per CORS auf die angebotenen Serviceschnittstellen zugreifen dürfen.

* kann als Platzhalter genutzt werden.

Beispiele:

  • http://mydomain.net,http://otherdomain.de

  • http*://*.mydomain.net:*
    Das Beispiel erlaubt den Zugriff von jeder Subdomäne von mydomain.net via http and https von jedem Port.

proxy.cors.trustedServers

Liste von URLs zu Backenddiensten, für die die Übergabe von sicherheitskritischen Informationen mittels CORS aktiviert wird.

Dies ist beispielsweise bei Cookies und Autorisierung-Header der Fall.

Beispiel: https://myserver1.com,http://myserver2.com

proxy.cors.enabledServers
Ersetzt ab 4.6.0
Verwenden Sie stattdessen proxy.cors.trustedServers.

Logging von Fehlern und weiteren Meldungen

Es stehen folgende Konfigurationsparameter zur Anpassung des Loggings zur Verfügung:

logging.logger.level

Dieser Parameter definiert den Detailgrad des Logs.

Erlaubte Werte: TRACE, DEBUG, INFO, WARN, ERROR
Standardwert: INFO

logging.output.location
Ersetzt ab 4.9.1
Verwenden Sie stattdessen logging.file.location.
logging.file.location

Ort, an dem die Log-Datei gespeichert wird.

Der Standardwert entspricht dem logs Verzeichnis des Tomcat. Um Log-Dateien im Arbeitsverzeichnis von map.apps zu erstellen, verwenden Sie den Wert ${data.directory.location}/logs.

Standardwert: ${catalina.base}/logs

logging.file.prefix

Namen der Log-Dateien.

Um den Log-Dateien den URL-Kontextpfad der map.apps-Installation voranzustellen (zum Beispiel mapapps), verwenden Sie den Wert ${webcontext.name}.

Standardwert: ct-mapapps-webapp

Weitere Logging-Parameter sind in der Datei default-application.properties beschrieben, z.B. zum Aktivieren oder Deaktivieren des Loggings in die Konsole, in Log-Dateien oder mittels GELF.