Sign inSign up

consiglionazionalericerche/epas-client-sql

By consiglionazionalericerche

•Updated about 1 year ago

Client di ePAS per l'acquisizione delle timbrature da database SQL

Image
0

682

consiglionazionalericerche/epas-client-sql repository overview

⁠ePAS client - timbratura da database SQL

⁠Introduzione

Questo software è parte del progetto ePAS⁠, il sistema di rilevazione e gestione delle presenze sviluppato dal CNR⁠.

Questo client si occupa di leggere da un database SQL la tabella contenente le timbrature, di effettuare il mapping tra le colonne del database ed i campi JSON attesi da ePAS e di inviare le timbrature via REST al server di ePAS.

Il software è distribuito come immagine Docker⁠ configurata per accedere a scadenza regolare al database contenente le timbrature ed inviare via REST le nuove timbrature al server di ePAS.

Nell'immagine docker sono presenti anche i cron che servono per re-inviare notte tempo le timbrature che non è stato possibile inviare ad ePAS durante le letture giornaliere delle timbrature.

⁠Requisiti

Consigliamo di creare una nuova macchina virtuale che contenga solamente il client che si interfaccerà con il database SQL delle timbrature della vostra sede e che dovrà inviare al server centralizzato di ePAS le timbrature opportunamente normalizzate perchè il server possa correttamente interpretarle ed assegnarle al dipendente.

⁠Requisiti Hardware
  • CPU: 1 core è sufficiente
  • Memoria: 1 GB di ram
  • Storage: 10GB di Hard Disk
    • 10GB consentono di contenere i vari file di log e le eventuali timbrature da reinviare con tranquillità
⁠Requisiti Software
⁠Altri requisiti
  • aver configurato una sorgente timbratura su ePAS per la propria sede
  • accesso alla porta TCP del database server
  • conoscere il nome del database e nome e struttura della tabella contenente le timbrature
  • aver configurato un utente con i diritti di lettura sulla tabella contenente le timbrature

⁠Installazione e configurazione via docker / docker-compose

L'installazione e configurazione consigliata per il deploy è quella via Docker / Docker-compose.

I passi da compiere sono:

  • creare un utente epas (o con altro nome a vostro piacimento)
  • aggiungere l'utente epas al gruppo docker (altrimenti non può usare i comandi docker) $ sudo adduser epas docker
  • creare una directory epas-client nella home dell'utente epas (es. /home/epas/epas-client)
  • creare una directory data nella cartella creata al punto precedente (es. /home/epas/epas-client/data)
  • copiare il file docker-compose.yml⁠ ed il file .env⁠ nella directory /home/epas/epas-client
  • configurare il .env⁠ seguendo i commenti già presenti nei file di esempio, oppure consultando il paragrafo successivo
  • gli ulteriori parametri configurabili nel file docker-compose.yml sono da configurare solo in casi eccezionali

⁠Parametri di configurazione

ParametroDescrizioneObbligatorioDefault
PARAMETRI PER L'INVIO TIMBRATURE AD EPAS
SERVER_HOSTHost del server di ePAS. Esempio: epas-demo.devel.iit.cnr.itSINessun default
SERVER_PROTOCOLProtocollo per l'invio delle timbrature al server di ePAS. Possibili valori: http, httpsNOhttps
SERVER_PORTPorta del server di ePAS. Solitamente la porta per le comunicazioni via https è la 443NO443
SERVER_USERUtente della "sorgente timbrature" di ePAS.SINessun default
SERVER_PASSWORDPassword della "sorgente timbrature" di ePASSINessun default
PARAMETRI PER ACCESSO AL DATABASE SQL
DB_TYPETipologia di database server. Tipologie supportate: mysql, mssql.SINessun default
DB_HOSTIndirizzo IP o hostname del server SQLSINessun default
DB_PORTPorta tcp per l'accesso al server SQLSINessun default
DB_NAMENome del databaseNO per MsSql / SI per MySqlvuoto
DB_USERUtente per l'accesso al databaseSINessun default
DB_PASSWORDPassword per l'accesso al databaseSINessun default
PER MAPPING COLONNE DB E CAMPI TIMBRATURA EPAS
DB_FIELDS_ID_TIMBRATURACampo del DB corrispondente ad un ID univoco incrementale. Utilizzato per tenere traccia dell'ultima timbratura inviata dal client.NOIDTIMBRATURA
DB_FIELDS_BADGECampo del DB corrispondente al numero di badge.NOBADGE
DB_FIELDS_VERSOCampo del DB corrispondente al verso. Vedi anche il parametro DB_FIELDS_VERSO_ENTRATA.SINessun default
DB_FIELDS_VERSO_ENTRATAValore corrispondente al verso di entrata, per esempio "0" o "E"NOE
DB_FIELDS_DATAORACampo del DB corrispondente alla data e ora della timbraturaSINessun default
DB_FIELDS_DATACampo del DB corrispondente alla data della timbratura (utilizzato congiuntamente al parametro DB_FIELDS_ORA è alternativo all'utilizzo del campo DB_FIELDS_DATAORA).NONessun default
DB_FIELDS_ORACampo del DB corrispondente all'ora della timbratura (utilizzato congiuntamente al parametro DB_FIELDS_ORA è alternativo all'utilizzo del campo DB_FIELDS_DATAORA).NONessun default
DB_FIELDS_LETTORECampo del DB corrispondente al lettoreNONessun default
DB_FIELDS_CAUSALECampo del DB corrispondente alla causaleNOCaus
DB_FIELDS_CAUSALE_MOTIVI_DI_SERVIZIOValore del campo causale corrispondente ai motivi di servizio, per esempio "motiviDiServizio"NOmotiviDiServizio
DB_FIELDS_CAUSALE_PAUSA_PRANZOValore del campo causale corrispondente alla pausa pranzo, per esempio "pausaPranzo"NOpausaPranzo
Parametri generici generalmente da non impostare
DAYS_BEFOREIl numero di giorni a partire da oggi dal quale iniziare il download delle timbrature e assenze.NO30
STAMPINGS_CRONCron che definisce ogni quanto vengono inviate le timbrature. utilizzare il formato richiesto dal crontab. Riferimenti -> https://en.wikipedia.org/wiki/Cron#Examples⁠NO*/8 6-23 * * * (ogni 8 minuti dalle 6 alle 23)
CRON_RANDOM_SLEEPSecondi di sleep random massimo prima di lanciare (via cron) il client per le timbrature. Questo tempo random serve per evitare che tutte le timbrature arrivino contemporaneamente al server di ePAS.NO180
BAD_STAMPINGS_CRONCron che definisce l'invio di tutte le timbrature non inviate correttamente a epas (badge non trovato o altri problemi).NO-0 1 * * * (all'una di notte)
MAX_BAD_STAMPING_DAYSTutte le timbrature con problemi, più vecchie di questo numero di giorni dal momento dell'esecuzione, vengono buttate via.NO10
RETRY_CODESIdentifica i codici HTTP di risposta da parte di ePAS all'inserimento di una timbratura per cui è opportuno che la timbratura venga re-inviata al server per un nuovo tentativo di inserimento. Specificare i valori separati da virgola che comportano un re-invio delle timbrature.NO401, 404, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509
⁠Verifica della configurazione docker-compose

Una volta configurato il file docker-compose.yml ed il file .env è possibile verificare che la configurazione docker-compose.yml sia corretta con il comando $ docker-compose config.

⁠Avvio del client

Se la configurazione è corretta per avviare il client lanciare il comando $ docker-compose up -d.

Tramite il docker-compose.yml il container del client è già configurato per riavviarsi automaticamente in caso di riavvio della macchina virtuale ospitante il client.

⁠Informazioni ed utilità per il mantenimento ed il troubleshooting

La directory /home/epas/epas-client/data contiene:

  • la directory log con i log del client
  • il file lastRequest.txt che contiene l'id e la data ed ora dell'ultima timbratura prelevata dal client
  • il file stampsInTrouble.json (potrebbe non esserci o essere vuoto) che contiene le eventuali timbrature da re-inviare con il cron notturno

In caso di necessità è possibile retrodatare il prelevamento delle timbrature modificando opportunamente il file info/lastRequest.txt.

Per verificare che il container docker sia attivo, da dentro la directory /home/epas/epas-client, utilizzare il comando $ docker-compose ps.

Per riavviare il servizio utilizzare il comando $ docker-compose restart.

Se volete entrare nel container per verificarne il contenuto potete utilizzare il comando $ docker-compose exec client bash.

Se, senza entrare nel container, volete lanciare un'acquisizione immediata delle timbrature potete utilizzare il comando $ docker-compose exec client /client/stampings.sh.

Tag summary

Content type

Image

Digest

sha256:a1fbe0f93…

Size

77.8 MB

Last updated

about 1 year ago

docker pull consiglionazionalericerche/epas-client-sql