2022

22.12

Konfigurationsanpassung für das "Generischer XML Import"-Plugin

Dieser Punkt kann ignoriert werden, wenn der Plugin nicht in Verwendung und damit der Output dieses Befehls leer ist:

xmlstarlet sel -t -c '//catalogue/config[@opacType="intranda_opac_xml"]' -n /opt/digiverso/goobi/config/goobi_opac.xml

Falls ja: In der goobi_opac.xml wurde die gesuchte ID bisher der Katalogadresse einfach angehängt, jetzt muss bei einem Katalog mit dem opacType="intranda_opac_xml" dafür {pv.id} geschrieben werden. Beispiel:

-    <config description="EAD database" address="https://example.com/opac?id="
+    <config description="EAD database" address="https://example.com/opac?id={pv.id}"

Die Änderung ermöglicht die Suche in XML-Dateien (address="file:///import/hotfolder/{pv.id}.xml").

22.11

WebAPI ist deprecated

Die WebAPI ist veraltet, stattdessen wird die Nutzung der REST-API empfohlen. Die WebAPI ist nun per Default deaktiviert, bei Bedarf lässt sie sich wieder einschalten:

echo useWebApi=true >> /opt/digiverso/goobi/config/goobi_config.properties

Änderung der Konfigurationsdatei des Plugins goobi_plugin_administration_data_poller

Durch ein Update des Plugins muss ein type="" für jede <rule> gesetzt werden. Der Typ von bestehenden Regeln ist immer filter. Dafür muss in der Config-Datei plugin_intranda_administration_data_poller.xml in jedem <rule>-Tag type="filter" gesetzt werden. Dabei hat sich der Name der Config Datei von plugin_intranda_administration_catalogue_poller.xml auf plugin_intranda_administration_data_poller.xml geändert.

22.10

Umbenennung vom Data Poller

Das Goobi workflow Plugin: Catalogue Poller wurde zu Data Poller umbenannt. Statt plugin_intranda_administration_catalogue-poller.jar heisst die Datei jetzt plugin_intranda_administration_data-poller.jar und ist aus GitHub downloadbar: https://github.com/intranda/goobi-plugin-administration-catalogue-poller Gleichzeitig hat sich auch der Name der Config Datei geändert von plugin_intranda_administration_catalogue_poller.xml zu plugin_intranda_administration_data_poller.xml

Neue Configdatei: goobi_exportValidation.xml

Mit der neuen Version muss goobi_exportValidation.xml als neue Konfigurationsdatei hinterlegt werden.

wget https://raw.githubusercontent.com/intranda/goobi-workflow/master/install/config/goobi_exportValidation.xml -O /opt/digiverso/goobi/config/goobi_exportValidation.xml

22.09

Der Schalter für Proxy-Nutzung wurde umbenannt

Statt http_useProxy heißt es nun http_proxyEnabled. Neu ist die Option http_proxyIgnoreHost mit dem Default:

http_proxyIgnoreHost=127.0.0.1
http_proxyIgnoreHost=localhost

Änderung per Kommandozeile:

sed -e 's|^http_useProxy=|http_proxyEnabled=|' /opt/digiverso/goobi/config/goobi_config.properties -i

Änderung der Konfigurationsdatei für goobi-plugin-step-createfullpdf

Bitte die Datei plugin_intranda_step_createfullpdf.xml entsprechend anpassen. Alt:

<config>
	<writeSinglePdfsFirst>
		true
	</writeSinglePdfsFirst>
	<useMasterImages>
		false
	</useMasterImages>
	<deleteFullPdf>
		false
	</deleteFullPdf>
</config>

Neu:

<config_plugin>
    <!-- order of configuration is: 1.) project name and step name matches 2.)
        step name matches and project is * 3.) project name matches and step name
        is * 4.) project name and step name are * -->
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <!-- which stepss to use for (can be more then one, otherwise use *) -->
        <step>*</step>
        <!-- use images from master or media folder -->
        <imagesFolder>media</imagesFolder>
        <!-- if set to true, create single page pdf files first, merge them to a large file -->
        <!-- if set to false, create a pdf for all images, split them afterwards -->
        <pagePdf enabled="true" />
        <!-- keep the full pdf  if set to true, delete it otherwise -->
        <fullPdf enabled="true" />
    </config>

    <config>
        <project>testocr</project>
        <step>testpdf</step>
        <imagesFolder>master</imagesFolder>
        <pagePdf enabled="true" />
        <fullPdf enabled="false" />
    </config>
</config_plugin>

Änderung am Escaping für LDAP User

Im Hintergrund hat sich etwas am Escaping geändert. Dies muss in der DB angepasst werden.

mysql goobi -NBse 'update benutzer set ldaplogin = replace(ldaplogin, "\\\\,", "\\,") where ldaplogin regexp "\\\\\\\\"'

22.08

Tomcat

Prüfen, dass der tomcat-lib Ordner nicht mehr als PreResources eingebunden ist in:

Update des URN-Generators nötig

Sofern verwendet, muss die urn-generator.jar aktualisiert werden.

Konfigurationsänderung für das goobi-plugin-export-configurable

Die Optionen exportFolder und useSubFolderPerProcess werden nun direkt aus der Projektkonfiguration (Administration -> Projekte -> Projekt bearbeiten > Technische Daten) gelesen und sollten aus der Konfigurationsdatei plugin_intranda_export_configurable.xml gelöscht werden. Die Projektkonfiguration ist anzupassen: "Export-Verzeichnis für XML-Datei" und "Export-Verzeichnis für die Bilder" an Stelle von exportFolder, "Erzeuge Vorgangsverzeichnis" an Stelle von useSubFolderPerProcess.

Außerdem wurde die Option includeDerivate umbenannt in includeMedia:

sudo sed -i -e 's|includeDerivate|includeMedia|g' /opt/digiverso/goobi/config/plugin_intranda_export_configurable.xml

22.07

Geänderte Bildanzeige in Laufzetteln

Diesen Punkt nur anwenden, wenn diese Funktion verwendet wird. Wenn die folgende SQL-Query keine Ergebnisse liefert, wird diese Funktion nicht genutzt: mysql goobi -NBse 'select * from journal where type="file" limit 10'

In der Konfigurationsdatei goobi_rest.xml muss dieser Block vorhanden sein, um die Bilder auf Laufzetteln anzeigen zu können:

<endpoint path="/process/image/.*">
    <method name="get">
        <allow netmask="127.0.0.0/8"/>
        <allow netmask="0:0:0:0:0:0:0:1/128"/>
    </method>
</endpoint>

Die Änderung mit xmlstarlet vornehmen:

xmlstarlet ed --inplace \
  -s 'config[not(endpoint[@path="/process/image/.*"])]' -t elem -n endpoint \
  --var path '$prev' \
  -i '$path' -t attr -n path -v '/process/image/.*' \
  -s '$path' -t elem -n method \
  -i '$prev' -t attr -n name -v 'get' \
  -s '$path/method' -t elem -n allow \
  -i '$prev' -t attr -n netmask -v '127.0.0.0/8' \
  -s '$path/method' -t elem -n allow \
  -i '$prev' -t attr -n netmask -v '0:0:0:0:0:0:0:1/128' \
  /opt/digiverso/goobi/config/goobi_rest.xml

Bildkommentare umziehen

Diesen Punkt nur anwenden, wenn diese Funktion verwendet wird. Bildkommentare sind nur in Verwendung, wenn MetsEditorShowImageComments oder ShowImageComments in der goobi_config.properties aktiv (true) ist. Damit eventuell vorhandene Bildkommentare vom bisherigen Ort an den neuen Ort bewegt werden, kann das folgende Script aufgerufen werden (Ordnernamen ggf. anpassen):

#!/bin/bash
find -L /opt/digiverso/goobi/metadata/ -regex '/opt/digiverso/goobi/metadata/[0-9]+/images/master_.*_media/imageComments.json' -execdir mv {} ../comments_master.json \;
find -L /opt/digiverso/goobi/metadata/ -regex '/opt/digiverso/goobi/metadata/[0-9]+/images/.*_media/imageComments.json' -execdir mv {} ../comments_media.json \;

Warteschlangen-Dateien löschen

Für ein Versionsupdate von ActiveMQ sollten die Dateien für die Goobi Warteschlangen gelöscht werden (wenn sie leer sind, einsehbar in Administration > Warteschlangen):

find /opt/digiverso/goobi/activemq/ -type f -delete

22.06

2022-06-29

In der Apache-Config finden sich ggf. noch veraltete Optionen, die das Funktionieren von Websockets unter Umständen verhinden. Diese beiden Zeilen löschen:

        SetEnv force-proxy-request-1.0 1
        SetEnv proxy-nokeepalive 1

22.05.7

2022-06-12

Der MySQL-Connector wurde noch einmal aktualisiert. Das zieht folgende Änderung nach sich:

sed -re 's|(driverClassName=).*|\1"software.aws.rds.jdbc.mysql.Driver"|' /etc/tomcat9/Catalina/localhost/goobi.xml -i

2022-05-05

Der MySQL-Connector wurde aktualisiert. Das zieht folgende Änderung nach sich:

sed -re 's|(driverClassName=).*|\1"com.mysql.cj.jdbc.Driver"|' /etc/tomcat9/Catalina/localhost/goobi.xml -i

2022-05-04

Das Delivery-Plugin für die Universitätsbibliothek Leiden wurde umbenannt. Statt plugin_intranda_step_file-delivery.jar heisst die Datei jetzt plugin_intranda_step_leiden_file_delivery.jar und ist aus GitHub downloadbar: https://github.com/intranda/goobi-plugin-step-leiden-file-delivery

2022-05-03

Für die Verwendung von Bildkoordinaten müssen die Regelsätze angepasst werden. Die folgenden Metadatenelemente müssen erzeugt werden:

  <MetadataType>
    <Name>_COORDS</Name>
    <language name="de">Koordinaten</language>
    <language name="en">Coordinates</language>
  </MetadataType>
  <MetadataType>
    <Name>_SHAPE</Name>
    <language name="de">Form</language>
    <language name="en">Shape</language>
  </MetadataType>

Dieses Strukturelement muss erzeugt werden:

  <DocStrctType>
    <Name>area</Name>
    <language name="de">Region</language>
    <language name="en">Area</language>
    <metadata num="1o">_urn</metadata>
    <metadata num="1o">_COORDS</metadata>
    <metadata num="1o">_SHAPE</metadata>
    <metadata num="1m">physPageNumber</metadata>
    <metadata num="1m">logicalPageNumber</metadata>
  </DocStrctType>

Und abschließend muss dieses Element noch innerhalb von page erlaubt werden:

  <DocStrctType>
	  <Name>page</Name>
	  <language name="de">Seite</language>
	  <language name="en">Page</language>
+	  <allowedchildtype>area</allowedchildtype>
	  <metadata num="1m">logicalPageNumber</metadata>
	  <metadata num="*">_ucc_id</metadata>
	  <metadata num="1m">physPageNumber</metadata>
	  <metadata num="1o">_urn</metadata>
  </DocStrctType>

Möglicherweise fehlt auch das Metadatum _dateDigitization im Regelsatz für manche Dokumententypen. Alles zusammen lässt sich so automatisieren:

for R in /opt/digiverso/goobi/rulesets/*.xml; do

xmlstarlet sel -t -v 'boolean(Preferences/MetadataType/Name="_COORDS")' -n $R | bash ||
xmlstarlet ed --inplace \
 -a 'Preferences/MetadataType[last()]' -t elem -n MetadataType \
 --var pos '$prev' \
 -s '$pos' -t elem -n Name -v _COORDS \
 -s '$pos' -t elem -n language -v Koordinaten \
 -i '$prev' -t attr -n name -v de \
 -s '$pos' -t elem -n language -v Coordinates \
 -i '$prev' -t attr -n name -v en \
 $R

xmlstarlet sel -t -v 'boolean(Preferences/MetadataType/Name="_SHAPE")' -n $R | bash ||
xmlstarlet ed --inplace \
 -a 'Preferences/MetadataType[last()]' -t elem -n MetadataType \
 --var pos '$prev' \
 -s '$pos' -t elem -n Name -v _SHAPE \
 -s '$pos' -t elem -n language -v Form \
 -i '$prev' -t attr -n name -v de \
 -s '$pos' -t elem -n language -v Shape \
 -i '$prev' -t attr -n name -v en \
 $R

xmlstarlet sel -t -v 'boolean(Preferences/DocStrctType/Name="area")' -n $R | bash ||
xmlstarlet ed --inplace \
 -a 'Preferences/DocStrctType[last()]' -t elem -n DocStrctType \
 --var pos '$prev' \
 -s '$pos' -t elem -n Name -v area \
 -s '$pos' -t elem -n language -v Region \
 -s '$prev' -t attr -n name -v de \
 -s '$pos' -t elem -n language -v Area \
 -s '$prev' -t attr -n name -v en \
 -s '$pos' -t elem -n metadata -v _urn \
 -s '$prev' -t attr -n num -v 1o \
 -s '$pos' -t elem -n metadata -v _COORDS \
 -s '$prev' -t attr -n num -v 1o \
 -s '$pos' -t elem -n metadata -v _SHAPE \
 -s '$prev' -t attr -n num -v 1o \
 -s '$pos' -t elem -n metadata -v physPageNumber \
 -s '$prev' -t attr -n num -v 1m \
 -s '$pos' -t elem -n metadata -v logicalPageNumber \
 -s '$prev' -t attr -n num -v 1m \
 $R

xmlstarlet sel -t -v 'boolean(Preferences/DocStrctType[Name="page"]/allowedchildtype="area")' -n $R | bash ||
xmlstarlet ed --inplace \
 -a 'Preferences/DocStrctType[Name="page"]/language[last()]' -t elem -n allowedchildtype -v area \
 $R


xmlstarlet ed --inplace \
 -s '//DocStrctType[../MetadataType/Name="_dateDigitization"][@topStruct="true"][not(metadata="_dateDigitization")]' -t elem -n metadata -v _dateDigitization \
 -i '$prev' -t attr -n num -v 1o \
 $R

done

2022-05-02

Für das Archiv-Management (sofern installiert) muss eine zusätzliche xq-Datei an der richtigen Stelle vorhanden sein. Diese kann so heruntergeladen werden:

sudo -u tomcat wget https://raw.githubusercontent.com/intranda/goobi-plugin-administration-archive-management/master/module-base/src/main/resources/basex9/findDb.xq -O /opt/digiverso/basex/webapp/findDb.xq

2022-04-19

Zeilenumbrüche in der goobi_projects.xml können sich auf das Genererieren des Prozesstitels beim Anlegen neuer Prozesse auswirken. Die XML-Datei kann man so neu formatieren (dabei geht die Formatierung insbesondere mehrzeiliger Kommentare verloren):

TMPFILE=$(mktemp)
CONFIGFILE=/opt/digiverso/goobi/config/goobi_projects.xml
sed -zre 's|\s+| |g' "${CONFIGFILE}" |  python3 -c 'import sys; from xml.dom.minidom import parseString; s=sys.stdin.read(); print(parseString(s).toprettyxml())' | awk NF | sed -re 's/ $//' | xmlstarlet fo -e UTF-8 -s 4 > ${TMPFILE}
cat ${TMPFILE} > "${CONFIGFILE}"
rm ${TMPFILE}

2022-03-21

Die Syntax für die Konfigurationsdatei des Editors für Konfigurationsdateien hat sich geändert und sollte noch einmal auf dem System neu eingespielt und dafür angepasst werden. Die aktuelle Fassung einer Beispielkonfiguration für die Datei plugin_intranda_administration_config_file_editor.xml findet sich hier.

2022-02-25

goobi-plugin-import-excel: config angepasst:

Die alte Version:

<!-- prefix path to the image folder. Can be empty or missing if the import doesn't contain images or if the excel field contains absolute path  -->
<imageFolderPath>/opt/digiverso/images/</imageFolderPath>
<!-- define which column contains the image folder name. Can be combined with <imageFolderPath> prefix or an absolute path.
If the field is missing, empty or does not contain an existing directory, no images will be imported -->
<imageFolderHeaderName>images</imageFolderHeaderName>

<!-- defines, if images are moved from the source folder to the destination (true) or copied (false) -->
<moveImages>true</moveImages>

Wird ersetzt durch:

<importImages failOnMissingImageFiles="true">
	<!-- prefix path to the image folder. Can be empty or missing if the import doesn't contain images or if the excel field contains absolute path  -->
	<imageFolderPath>/opt/digiverso/images/</imageFolderPath>
	<!-- define which column contains the image folder name. Can be combined with <imageFolderPath> prefix or an absolute path.
	If the field is missing, empty or does not contain an existing directory, no images will be imported -->
	<imageFolderHeaderName>images</imageFolderHeaderName>
    <!-- Image handling strategy. Valid values are "move", "copy" or "ignore".  -->
    <imageHandlingStrategy>move</imageHandlingStrategy>
</importImages>

Skript dafür:

file=/opt/digiverso/goobi/config/plugin_intranda_import_excel.xml

XSL=$(cat << "EOF"
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" encoding="UTF-8" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="UTF-8" version="1.0" indent="yes"/>

    <xsl:template match="config">
        <xsl:copy>
            <xsl:apply-templates select="comment() | @* | *[not(self::steps|self::propertyName|self::propertyValue)]" />
            <importImages failOnMissingImageFiles="true">
                <xsl:copy-of select="imageFolderPath|imageFolderHeaderName"/>
                <imageHandlingStrategy>
                    <xsl:if test="moveImages = 'true'">move</xsl:if>
                    <xsl:if test="moveImages != 'true'">copy</xsl:if>
                    <xsl:if test="not(moveImages)">copy</xsl:if>
                </imageHandlingStrategy>
            </importImages>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="config/imageFolderPath|config/imageFolderHeaderName|config/moveImages"/>

    <!-- IdentityTransform -->
    <xsl:template match="/ | @* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>
EOF
)

xmlstarlet tr <(echo "$XSL") $file | xmlstarlet fo -s 4 > ${file}.tmp
mv ${file}.tmp ${file}

2022-02-16

Database und Tomcat Systemanforderungen

Goobi workflow benötigt nun Tomcat 9 und MariaDB >= 10.1

Metadata editor: Dateimanipulation nun per Default deaktiviert

Falls "Reihenfolge der Seiten" unter "Paginierung" vermisst wird:

echo MetsEditorDisplayFileManipulation=true >> /opt/digiverso/goobi/config/goobi_config.properties

Plugin umbenannt: Sword export

  • Der Repository-Name ist unverändert: goobi-plugin-export-sword

  • Die Plugin-Jar-Datei hat sich geändert von plugin_intranda_export_mycore.jar zu plugin_intranda_export_sword.jar.

  • Die Plugin-Konfigurationsdatei ändert sich entsprechend:

    mv -i /opt/digiverso/goobi/config/{plugin_MycoreExportPlugin.xml,plugin_intranda_export_sword.xml}
  • Der Pluginname ändert sich von plugin_intranda_mycore_export zu intranda_export_sword:

    mysql goobi -e 'update schritte set stepplugin="intranda_export_sword" where stepplugin="plugin_intranda_mycore_export"'

2022-02-09

Seit einiger Zeit unterstützt Goobi workflow WebSockets. Dafür muss dessen Unterstützung in dem Apache Webserver in die Konfiguration mit aufgenommen werden:

## make sure rewrite is enabled
RewriteEngine On
## Enable WebSockets to check concurrent access
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule /?(.*) ws://localhost:8080/$1 [P,L]

Sollte der Tomcat nicht auf 8080 lauschen bitte den Port entsprechend anpassen. Es muss aber immer auf den HTTP Connector, nicht auf den AJP Connector weitergeleitet werden.

Anschließend das benötigte Modul aktivieren und den Dienst neu starten:

a2enmod proxy_wstunnel
systemctl restart apache2

2022-02-09

Die Datei docket_metadata.xsl muss ausgetauscht werden:

curl https://raw.githubusercontent.com/intranda/goobi-workflow/master/install/xslt/docket_metadata.xsl > /opt/digiverso/goobi/xslt/docket_metadata.xsl

Zuletzt aktualisiert