diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..258f96c4ab5041267cc165ecde50eccf780f5ddf --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# dcat-catalog-proxy + +Dieses Programm filtert einen von CKAN mit Hilfe der ckanext-dcat bzw. ckanext-dcatde erzeugten DCAT-Katalog für die Übergabe an GovData. +Dabei werden folgende Änderungen an dem Katalog vorgenommen: + +- Datensätze, die nur PDF-Dateien als Distribution haben, werden entfernt +- Datensätze bestimmter (konfigurierbarer) Herausgeber werden erfernt +- Download-Adressen können umgeschrieben werden +- Fehler im DCAT-Export werden korrigiert, so dass er für GovData und das Europäische Datenportal besser geeignet ist + +## Kompilieren + +```console +./mvnw package +``` + +Es wird Java 17 benötigt. + +## Konfiguration + +Konfiguriert wird das Programm in einer Java-Properties-Datei. Die sieht z.B. so aus: + +``` +server.port=8082 + +baseURL=https://opendata.schleswig-holstein.de/ + +remoteURL=https://opendata.schleswig-holstein.de/ + +replaceURL= {'http://efi2.schleswig-holstein.de/','https://efi2.schleswig-holstein.de/','http://opendata.zitsh.de/','https://opendata.schleswig-holstein.de/' } + +unwantedPublishers={'https://opendata.schleswig-holstein.de/organization/d8bd1f1d-7c77-4f6d-9fbd-bad92821fba4','https://opendata.schleswig-holstein.de/organization/6b9a2dd7-48a0-4d62-9120-324474dbe7ae'} +``` + +- `remoteURL` - Von *remoteURL* + `/catalog.xml` wird der Original-Katalog gelesen +- `baseURL` - Diese Adressse wird verwendet, um Links zu weiteren Seiten des Katalogs zu erzeugen. +- `replaceURL` (optional) - Eine Liste mit einer geraden Anzahl Strings, die zur Ersetzung von Download-Adressen werden wird. In im angegebenen Beispiel wird `http://efi2.schleswig-holstein.de/` durch `https://efi2.schleswig-holstein.de/` ersetzt und `http://opendata.zitsh.de/` durch `https://opendata.schleswig-holstein.de/`. +- `unwantedPublishers` (optional) - Liste von Herausgeber (`dct:publisher`) URIs im Open-Data-Portal, deren Datensätze herausgefiltert werden. Wichtig ist, dass die Schreibweise verwendet wird, die CKAN im DCAT-Export für Datensätze verwendet, üblicherweise die Schreibweise mit UUID. Das ist nicht die, die man über die Weboberfläche sieht. Am besten im DCAT-Export eines betroffenen Datensatzes im Element `dct:publisher` nachsehen. +- `server.port` (optional) - TCP-Port, auf den der *DCAT catalogy proxy* hört, Standard ist 8080 + +## Starten + +Es wird Java 17 benötigt. Gestartet wird das Programm mit + +```console +java -jar dcat-catalog-proxy.jar --spring.config.location=settings.properties +``` + +wobei `settings.properties` die Datei mit den Einstellungen ist. + +### systemd + +Um den Dienst mit systemd zu starten, gibt es eine Service-Beschreibung in der Datei [odsh-catalog-proxy.service](./odsh-catalog-proxy.service), die unter `/etc/systemd/system/odsh-catalog-proxy.service` abgelegt wird. Diese Beschreibung erwartet die jar-Datei unter `/opt/odsh-catalog-proxy/target/dcat-catalog-proxy.jar` und die Konfigurationsdatei `/opt/odsh-catalog-proxy/application.properties` + +## Verwendung mit nginx + +Üblicherweise wird man den dcat-catalog-proxy nicht direkt im Internet verfügbar machen, sondern davor einen Webserver oder reverse proxy schalten. Hier ist eine Beispielkonfiguration, wie das mit nginx gemacht werden kann: + +``` +location /catalog-govdata.xml +{ + proxy_pass http://localhost:8082/catalog.xml; +} +``` + diff --git a/odsh-catalog-proxy.service b/odsh-catalog-proxy.service new file mode 100644 index 0000000000000000000000000000000000000000..03d218727783728cfd7ba4716909b99032be8850 --- /dev/null +++ b/odsh-catalog-proxy.service @@ -0,0 +1,16 @@ +[Unit] +Description=ODSH Catalog Proxy (DCAT) +After=syslog.target network.target + +[Service] +SuccessExitStatus=143 +User=proxyuser +Group=proxyuser + +Type=simple + +ExecStart=/usr/bin/java -jar /opt/odsh-catalog-proxy/target/dcat-catalog-proxy.jar --spring.config.location=/opt/odsh-catalog-proxy/application.properties +ExecStop=/bin/kill -15 $MAINPID + +[Install] +WantedBy=multi-user.target