.. _upl_konfig:

================================
Konfigurace komponenty UPL
================================

Konfigurace komponenty je uložena v jednom konfiguračním souboru. 
Soubor je ve formátu YAML, který je pojmenován  :file:`upl-deploy.yml`. 
Součástí distribuce komponenty je šablona konfiguračního souboru 
(:file:`upl-deploy.yml.template`). V šabloně jsou popsány jednotlivé
konfigurační volby.

Předmětem konfigurace komponenty je:

 - :ref:`webové rozhraní <komp_upl_konfig_web>`
 - :ref:`připojení k databázi <komp_upl_konfig_db>`
 - :ref:`nastavení úložiště SIPů <komp_upl_konfig_data>`
 - :ref:`nastavení logování <komp_upl_konfig_log>`
 - :ref:`nastavení adres UPL <komp_upl_konfig_upl>`


--------------------
Umístění konfigurace
--------------------

Pro každou jednotlivou instanci komponenty je vhodné
mít vždy samostatný adresář, kde jsou umístěny konfigurace,
logy, případně i databázové soubory.

Příklad rozložení adresářů a souborů:

+----------------------------------+---------------------------------+
| Soubor                           | Význam                          |
+==================================+=================================+
| ``upl-x.y.z.jar``                | Binární soubor se službou       |
+----------------------------------+---------------------------------+
| ``config/upl-deploy.yml``        | Konfigurace instance komponenty |
+----------------------------------+---------------------------------+
| ``data/....``                    | Adresář pro přijaté SIPy        |
+----------------------------------+---------------------------------+
| ``logs/....``                    | Adresář pro logovací soubory    |
+----------------------------------+---------------------------------+


.. _komp_upl_konfig_web:

---------------
Webové rozhraní
---------------

Komponenta poskytuje webové rozhraní pro přejímku.
Port, kde je webové rozhraní k dispozici se nastavuje v konfiguraci. 
V konfiguraci je také možné přepnout komunikaci mezi :token:`HTTP` a 
:token:`HTTPS`. Technické detaily nastavení HTTPS jsou součástí dokumentace
Spring Boot (https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.html#howto-configure-ssl).

Příklad nastavení:

.. code-block:: yaml

  # Port, kde bude služba dostupná (HTTP/HTTPS)
  server:
    port: 8203
  # Nastavení HTTPS (standardně vypnuto)
  #  ssl:
  #    enabled: true
  #    key-store: keystore.jks
  #    key-store-password: secret
  #    key-password: another-secret


.. _komp_upl_create_db:

--------------------
Vytvoření databáze
--------------------

1. Vytvoření uživatele:

.. code-block:: sql

  CREATE ROLE app WITH LOGIN PASSWORD 'jk23jkmn3az';


2. Vytvoření DB

.. code-block:: sql

  CREATE DATABASE upl OWNER app;



.. _komp_upl_konfig_db:

--------------------
Připojení k databázi
--------------------

Součástí zkompilované aplikace je JDBC ovladač pro připojení
k PostgreSQL databázi. Databáze musí být vytvořena samostatně administrátorem.
Zvolený uživatel musí mít oprávnění volat DDL příkazy (vytvářet tabulky).

Ovladače PostgreSQL: verze 42.2.5

.. code-block:: yaml

  spring:
    datasource:
      driver-class-name: org.postgresql.Driver
      url: jdbc:postgresql://127.0.0.1:5432/upl
      username: app
      password: app


V části :token:`url` se definuje řetězec pro připojení k databázi,
přihlašovací údaje se uvedou do parametrů :token:`username`
a :token:`password`.


.. _komp_upl_konfig_data:

--------------------------------------
Pracovní adresář
--------------------------------------

Modul má pracovní soubory na disku. 
Cesta k tomuto úložišti musí být nastavena. Je vhodné nastavit
úplnou cestu.

Sekce obsahuje volitelně nastasvení zdroje testovacích dat.


.. code-block:: yaml

  upl:
    # Cesta, kde jsou uloženy datové soubory
    # Ve Windows se zadává takto: D:\\projects\\portal\\eprejimka\\data
    path: /opt/ais/upl/data
    # Volitelný zdroj testovacích dat
    # testPath: /opt/ais/upl/testdata
    # Zapnutí interní validace SIPů
    zafValidation: true

V části :token:`upl` se definuje cesta k adresáři, kde se budou 
ukládat zpracovávaná data.    

.. _komp_upl_konfig_log:

------------------
Nastavení logování
------------------

Logování se nastavuje v sekci :token:`logging`. Komponenta využívá
nástroj *Spring Boot*. Možnosti nastavení logování jsou detailně
popsány v jeho dokumentaci (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html).

Příklad nastavení logování:

.. code-block:: yaml

  logging:
    file: logs/upl.log
    pattern:
      level: "%X{userName:--} %p"
    level:
      com.lightcomp: 'INFO'

.. _komp_upl_konfig_upl:

------------------------------------
Nastavení systémů využívajících UPL
------------------------------------

Každý systém komunikující s UPL musí být definován v sekci systems.


Příklad nastavení:

.. code-block:: yaml

  systems:
    vyber-devel:
      url: http://localhost:8202/ws/uplprogress
      redirectUrl: /vyber/skartace
      authorization:
        username: eskartace-ws
        password: esws1973
        authorizationType: Basic