NumaHOP Configuration.

NumaHOP is configured in yaml files called application.yml or application-<profile>.yml.

When NumaHOP is started it search and load configs in this order:

  • Inside the packaged war/jar ressources.
  • In the folder ./config(relative to its current directory).

Profiles

There can be multiple files sourced by NumaHOP with a profile system. First the application.yml is sourced and then the profiles one. Each load overrides the keys redefined.

To activate a profile the flag --spring.profiles.active can be passed to the war:

# Launch numahop with the profiles dev and prod activated. The keys defined in a later profile overide the keys defined in a previous one.
./numahop.war --spring.profile.active=dev,prod

The resulting files will be sourced in this order:

  • Inside the war:
    • application.yml
    • application-dev.yml
    • application-prod.yml
  • In the working directory:
    • ./config/application.yml
    • ./config/application-dev.yml
    • ./config/application-prod.yml

application.yml

Most of the properties in the yaml files are used either by spring-boot or other dependencies but some are custom. All uses of custom properties can be found in the codebase using this command: grep -e "@Value\(\$\{.*\}\)".

Important/UseFull properties to define

Instances

Each establishments using numahop must be declared, choose an id for each libraries using Numahop and sotre it there.

instance:
    libraries: lib1, lib2, lib3
Utilisations
  • src/main/java/fr/progilone/pgcn/config/BinaryStorageConfiguration.java
  • src/main/java/fr/progilone/pgcn/service/delivery/DeliveryReportingService.java
  • src/main/java/fr/progilone/pgcn/service/check/MetaDatasCheckService.java
  • src/main/java/fr/progilone/pgcn/service/document/ui/UIDocUnitService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/CinesRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/ExportCinesService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/ExportSipService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/omeka/OmekaService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/digitallibrary/DigitalLibraryDiffusionRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/storage/FileCleaningManager.java
  • src/main/java/fr/progilone/pgcn/service/storage/AltoService.java
  • src/main/java/fr/progilone/pgcn/service/storage/FileStorageManager.java

Admin

The admin is the only account present after the installation. It is very important to define:

admin:
    login: # default: admin
    password: # Important to override. default: hash of "password"

The password is encrypted using the bcrypt method you can get a good password to encrypt like this:

head /dev/urandom | tr -dc "a-zA-Z0-9"| fold -w 20 | head -n 1

Then encrypt it with a bcrypt implementation. But pay attention not all bcrypt algorithms are secure. The easiest way to encrypt the password is as such it requires a python3 installation with the python3-bcrypt library:

echo "$pwd" | python3 -c <<PYTHON
import bcrypt, getpass;
print(bcrypt.hashpw(input().encode(), bcrypt.gensalt()).decode())'
PYTHON

Where pwd is you password.

Uses:
  • src/main/java/fr/progilone/pgcn/service/user/ui/UIUserService.java
  • src/main/java/fr/progilone/pgcn/web/rest_int/InternalAccountResource.java
  • src/main/java/fr/progilone/pgcn/security/UserDetailsService.java

Jhipster Remember Me key

This is the key needed to make the rememberme service work. It needs to be unique to your installation.

jhipster.security.rememberme.key: # No defaults must be defined.

Same as the password you can get a good randomized key like this:

head /dev/urandom | tr -dc "a-zA-Z0-9"| fold -w 20 | head -n 1
Uses:
  • TODO

Database and elasticsearch

The information needed by numahop to connect to the database and elasticsearch.

spring:
    datasource:
        url: # The url to access the mariadb data base often: jdbc:mariadb://localhost:3306/<db-name>
        username: # The database user
        password: # The database password
    elasticsearch:
        uris:
            - <uri> # default: http://localhost:9200
            # ...

Filesystem

These configuration options define where numahop can find the executables it needs, where to put the various files it generates and where to look for files to import.

imageMagick:
    convert: # default : /usr/bin/convert
    identify: # default : /usr/bin/identify

exifTool:
    process: # default : /usr/bin/exiftool

tesseract:
    process: # default : /usr/bin/tesseract

storage:
    binaries: # default : /opt/pgcn/DAM/DAM_Repository

nativeLibraries:
    path: # default : /opt/svcmgmt/lib

messaging:
    template:
        path: # default : /opt/pgcn/Messaging/MessagingTemplate


uploadPath:
    condition_report: # default : /opt/pgcn/upload/condition_report
    ead: # default : /opt/pgcn/upload/ead
    import: # default : /opt/pgcn/upload/import
    library: # default : /opt/pgcn/upload/library
    user: # default : /opt/pgcn/upload/user
    template: # default : /opt/pgcn/upload/templates

export:
    ssh:
        knownHosts: # default : /opt/pgcn/config/known_hosts

services:
    cines:
        aip: # default : /opt/pgcn/cines/aip
        cache: # default : /opt/pgcn/cines/cache
        xsd:
            sip: # default : /opt/pgcn/xsd/sip.xsd
    archive:
        alto: # default : /opt/pgcn/archive/alto
        text: # default : /opt/pgcn/archive/text
    metaDatas:
        path: # default : /opt/pgcn/metadatas
    deliveryreporting:
        path: # default : /opt/pgcn/deliveryReporting
    omeka:
        cache: # default : /opt/pgcn/omeka/cache
    ftpexport:
        cache: # default : /opt/pgcn/ftpexport/cache
    digitalLibraryDiffusion:
        cache: # default : /opt/pgcn/digitalLibraryDiffusion/cache
Exiftool Uses:
  • src/main/java/fr/progilone/pgcn/service/storage/ExifToolService.java
  • src/main/java/fr/progilone/pgcn/service/storage/ImageMagickService.java
Upload Path Uses:
  • src/main/java/fr/progilone/pgcn/service/JasperReportsService.java
  • src/main/java/fr/progilone/pgcn/service/user/UserService.java
  • src/main/java/fr/progilone/pgcn/service/library/LibraryService.java
  • src/main/java/fr/progilone/pgcn/service/document/conditionreport/ConditionReportAttachmentService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/ead/ExportEadService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/ImportReportService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/template/TemplateService.java
Services Uses:
  • src/main/java/fr/progilone/pgcn/service/delivery/DeliveryReportingService.java
  • src/main/java/fr/progilone/pgcn/service/check/MetaDatasCheckService.java
  • src/main/java/fr/progilone/pgcn/service/check/FacileCinesService.java
  • src/main/java/fr/progilone/pgcn/service/document/ui/UIDocUnitService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/internetarchive/InternetArchiveService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/CinesRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/ExportCinesService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/ExportSipService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/omeka/OmekaService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/digitallibrary/DigitalLibraryDiffusionRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/digitallibrary/DigitalLibraryDiffusionService.java
  • src/main/java/fr/progilone/pgcn/service/storage/FileCleaningManager.java
  • src/main/java/fr/progilone/pgcn/service/storage/AltoService.java

Server

The port used by numahop on the server.

server:
    port: # default: 80
Uses:
  • src/main/java/fr/progilone/pgcn/web/rest/administration/HealthController.java

Instance

In the instance section we can configure the different libraries using this instance of numahop.

instance:
    libraries: lib1, lib2, lib3
Uses:
  • src/main/java/fr/progilone/pgcn/config/BinaryStorageConfiguration.java
  • src/main/java/fr/progilone/pgcn/service/delivery/DeliveryReportingService.java
  • src/main/java/fr/progilone/pgcn/service/check/MetaDatasCheckService.java
  • src/main/java/fr/progilone/pgcn/service/document/ui/UIDocUnitService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/CinesRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/ExportCinesService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/ExportSipService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/omeka/OmekaService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/digitallibrary/DigitalLibraryDiffusionRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/storage/FileCleaningManager.java
  • src/main/java/fr/progilone/pgcn/service/storage/AltoService.java
  • src/main/java/fr/progilone/pgcn/service/storage/FileStorageManager.java

Image Sizes

images:
    format:
        default:
            thumbHeight: # default: 150 
            thumbWidth: # default: 150
            viewHeight: # default: 1417
            viewWidth: # default: 982
            printHeight: # default: 2835
            printWidth: # default: 1964
Uses:
  • src/main/java/fr/progilone/pgcn/service/util/DefaultFileFormats.java

Cron jobs.

Some services are annotated with @Scheduled. These are cron jobs configured in the cron section:

cron:
    removeOldTokens: # default: 0 0 0 * * ?
    cleanLocks: # default: 0 30 0 * * *
    rebuildIndex: # Rebuild elastic search index. default: 0 40 0 * * *
    cleanDeliveryFiles: # default: 0 0 1 * * ?
    cinesExport: # Try to export eligible document units to the CINES. default: 0 30 1 * * ?
    localExport: # Try to export eligible document units via SFTP. default: 0 0 4 * * ?
    cleanTemporaryFiles: # Clean up temporary files for each library. default: 0 0 2 * * ?
    internetArchiveExport: # Try to export eligible document units to Internet Archive. default: 0 26 17 * * ?
    gestDeliveredFiles: # Save or delete the archived documents. default: 0 00 18 * * SAT
    cinesUpdateStatus: # Download status of CINES export from the mailbox. default: 0 10 * * * *
    omekaExport: # Try to export eligible document units to an Omeka instance. default: 0 0 3 * * ?
    cleanExportCaches: # default: 0 30 6 * * ?
    docUnitUpdateArk: # Retrieve Internet archive urls of archived documents. default: 0 0 6 * * ?
    digitalLibraryExport: # default: 0 0 3 * * ?

The value is a cron expression used to configure when to run the job.

Uses:
  • src/main/java/fr/progilone/pgcn/service/storage/FileCleaningManager.java
  • src/main/java/fr/progilone/pgcn/service/exchange/digitallibrary/DigitalLibraryDiffusionRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/exportftp/ExportFtpService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/omeka/OmekaRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/cines/CinesRequestHandlerService.java
  • src/main/java/fr/progilone/pgcn/service/es/IndexManagerService.java
  • src/main/java/fr/progilone/pgcn/service/LockService.java
  • src/main/java/fr/progilone/pgcn/service/exchange/internetarchive/InternetArchiveServiceAsync.java
  • src/main/java/fr/progilone/pgcn/service/document/DocUnitService.java
  • src/main/java/fr/progilone/pgcn/service/user/UserService.java

Mail

spring:
    mail:
        host: # default: localhost
        port: # default: 25
        user:
        password:
        from: # default: contact-numahop@numahop.fr
        tls: # default: false
        auth: # default: false
        activated: # default: false
Uses:
  • TODO