SIP2 Edge Modul einrichten

Dokumentation:


https://folio-org.atlassian.net/browse/SIP2-43

https://github.com/folio-org/edge-sip2

https://folio-org.atlassian.net/wiki/display/FOLIOtips/Edge+APIs#EdgeAPIs-edge-sip2

Üblicherweise wird das edge-sip2 Modul nicht von Okapi deployed, aber der Module Descriptor kann zum Auflösen von Abhängigkeiten in Okapi geladen werden.

Das edge-sip2 Modul bekommt SIP2 Kommandos von den Bestellautomaten und wandelt diese in Folio API Calls um. Ein Benutzer mit entsprechenden Rechten muss in Folio vorhanden sein, und diese Credentials in den Automaten konfiguriert werden, bzw. am Automaten wird ein Login vorgenommen.

Die SIP2 Kommunikation sollte z.B. mit stunnel verschlüsselt werden. Evtl. kann auch überlegt werden, ob das edge-sip2 Modul nahe beim Automaten installiert wird, wenn man die Kommunikation mit den Folio APIs dafür verschlüsselt.


Konfiguration

echo '{
  "module": "edge-sip2",
  "configName": "acsTenantConfig",
  "enabled": true,
  "value": "{\"supportedMessages\": [{\"messageName\": \"PATRON_STATUS_REQUEST\",\"isSupported\": \"N\"},{\"messageName\": \"CHECKOUT\",\"isSupported\": \"Y\"},{\"messageName\": \"CHECKIN\",\"isSupported\": \"Y\"},{\"messageName\": \"BLOCK_PATRON\",\"isSupported\": \"N\"},{\"messageName\": \"SC_ACS_STATUS\",\"isSupported\": \"Y\"},{\"messageName\": \"LOGIN\",\"isSupported\": \"Y\"},{\"messageName\": \"PATRON_INFORMATION\",\"isSupported\": \"Y\"},{\"messageName\": \"END_PATRON_SESSION\",\"isSupported\": \"Y\"},{\"messageName\": \"FEE_PAID\",\"isSupported\": \"N\"},{\"messageName\": \"ITEM_INFORMATION\",\"isSupported\": \"N\"},{\"messageName\": \"ITEM_STATUS_UPDATE\",\"isSupported\": \"N\"},{\"messageName\": \"PATRON_ENABLE\",\"isSupported\": \"N\"},{\"messageName\": \"HOLD\",\"isSupported\": \"N\"},{\"messageName\": \"RENEW\",\"isSupported\": \"N\"},{\"messageName\": \"RENEW_ALL\",\"isSupported\": \"N\"}, {\"messageName\": \"REQUEST_SC_ACS_RESEND\",\"isSupported\": \"Y\"}],\"statusUpdateOk\": false,\"offlineOk\": false,\"patronPasswordVerificationRequired\": false}"
}' | ./OkapiCLI.py -v -u https://foliotest-2.bib-bvb.de/okapi  -U bvb_admin -p XXXXXXXXXX -t bvb -i raw  -r "/configurations/entries" -m post
 
./OkapiCLI.py -v -u https://foliotest-2.bib-bvb.de/okapi  -U bvb_admin -p XXXXXXXXX -t bvb -i raw  -r "/service-points"
 
 
echo '{
  "module": "edge-sip2",
  "configName": "selfCheckoutConfig.7c5abc9f-f3d7-4856-b8d7-6712462ca007",
  "enabled": true,
  "value": "{\"timeoutPeriod\": 5,\"retriesAllowed\": 3,\"checkinOk\": true,\"checkoutOk\": true,\"acsRenewalPolicy\": false,\"libraryName\": \"Datalogisk Institut\",\"terminalLocation\": \"e0ab8c91-2a4a-433d-a3cf-1837053c89a8\"}"
}' | ./OkapiCLI.py -v -u https://foliotest-2.bib-bvb.de/okapi  -U bvb_admin -p XXXXXXXXXXXX -t bvb -i raw  -r "/configurations/entries" -m post


Modul starten auf dem Rechner


docker run -d --restart unless-stopped -p 6443:6443 -v /root/edge-sip2/conf:/sip2conf  folioorg/edge-sip2:1.4.0 -conf /sip2conf/sip2.conf


Oder per Docker compose (hier werden zwei verschiedene Versionen auf unterschiedlichen Ports gestartet)

version: '2'
services:
  edge-sip2:
    container_name: edge-sip2
    image: folioorg/edge-sip2:2.0.1
    restart: unless-stopped
    ports:
      - "6443:6443"
    volumes:
      - /root/edge-sip2/conf:/sip2conf
    command: -conf /sip2conf/sip2.conf
  edge-sip2-latest:
    container_name: edge-sip2-latest
    image: folioorg/edge-sip2
    restart: unless-stopped
    ports:
      - "6444:6443"
    volumes:
      - /root/edge-sip2/conf:/sip2conf
    command: -conf /sip2conf/sip2.conf

Die Konfiguration sieht so aus:


root@foliotest-20:~/edge-sip2# cat conf/sip2.conf
{
  "port": 6443,
  "okapiUrl": "http://192.168.128.19:9130",
  "tenantConfigRetrieverOptions": {
    "scanPeriod": 300000,
    "stores": [{
      "type": "file",
      "format": "json",
      "config": {
        "path": "/sip2conf/sip2-tenants.conf"
      },
      "optional": false
    }]
  }
}
 
           
root@foliotest-20:~/edge-sip2# cat conf/sip2-tenants.conf
{
  "scTenants": [
    {
      "scSubnet": "131.188.00.00/16",
      "tenant": "bvb",
      "errorDetectionEnabled": true,
      "charset": "ISO-8859-1"
    }
  ]
}

Hier ist wichtig, dass die Okapi URl angepasst ist.

Erster Test in Kubernetes

Installation per helm chart. z.B.:

helm -n folio-test install sip2 edge/ -f global-values.yml -f edge/valuesd/kiwi-h1-edge-sip2.yaml


Wichtig: anpassen der modul-values file unter edge/valuesd, zumindest den tenant!

Manuelle settings über okapicli:

TENANT_ID=<hier tenantid eintragen>
ADMIN_PASSWORD=<admin password in der entsprechenden configmap/secret nachschaun>
OKAPI_CLI_RAW="./OkapiCLI.py -v --url http://okapi:9130 --username admin --password $ADMIN_PASSWORD -t $TENANT_ID -i raw -r"
 
$OKAPI_CLI_RAW "/configurations/entries" -m post << EOF
{                       
  "module": "edge-sip2",
  "configName": "acsTenantConfig",
  "enabled": true,
  "value": "{\"supportedMessages\": [{\"messageName\": \"PATRON_STATUS_REQUEST\",\"isSupported\": \"N\"},{\"messageName\": \"CHECKOUT\",\"isSupported\": \"Y\"},{\"messageName\": \"CHECKIN\",\"isSupported\": \"Y\"},{\"messageName\": \"BLOCK_PATRON\",\"isSupported\": \"N\"},{\"messageName\": \"SC_ACS_STATUS\",\"isSupported\": \"Y\"},{\"messageName\": \"LOGIN\",\"isSupported\": \"Y\"},{\"messageName\": \"PATRON_INFORMATION\",\"isSupported\": \"Y\"},{\"messageName\": \"END_PATRON_SESSION\",\"isSupported\": \"Y\"},{\"messageName\": \"FEE_PAID\",\"isSupported\": \"N\"},{\"messageName\": \"ITEM_INFORMATION\",\"isSupported\": \"N\"},{\"messageName\": \"ITEM_STATUS_UPDATE\",\"isSupported\": \"N\"},{\"messageName\": \"PATRON_ENABLE\",\"isSupported\": \"N\"},{\"messageName\": \"HOLD\",\"isSupported\": \"N\"},{\"messageName\": \"RENEW\",\"isSupported\": \"N\"},{\"messageName\": \"RENEW_ALL\",\"isSupported\": \"N\"}, {\"messageName\": \"REQUEST_SC_ACS_RESEND\",\"isSupported\": \"Y\"}],\"statusUpdateOk\": false,\"offlineOk\": false,\"patronPasswordVerificationRequired\": false}"
}
EOF
 
$OKAPI_CLI_RAW "/service-points"
 
$OKAPI_CLI_RAW "/configurations/entries" -m post << EOF
{
  "module": "edge-sip2",
  "configName": "selfCheckoutConfig.7c5abc9f-f3d7-4856-b8d7-6712462ca007",
  "enabled": true,
  "value": "{\"timeoutPeriod\": 5,\"retriesAllowed\": 3,\"checkinOk\": true,\"checkoutOk\": true,\"acsRenewalPolicy\": false,\"libraryName\": \"Datalogisk Institut\",\"terminalLocation\": \"e0ab8c91-2a4a-433d-a3cf-1837053c89a8\"}"
}
EOF



ingress-nginx tcp ingress per config anpassen, siehe Ingress ohne Http, firewall Einstellungen nicht vergessen!


Test mit Bibliotheka

  • Im Selbstverbucher: locationCode entspricht in Folio der UUID des Servicepoints bei selfcheckoutConfig....