Skip to content

Client di ePAS per l'acquisizione delle timbrature via file locale/ftp/sftp o lettore badge Smartclock

License

Notifications You must be signed in to change notification settings

consiglionazionaledellericerche/epas-client

Repository files navigation

ePAS client - file locali / ftp /sftp e lettori smartclock

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 file di testo contenente le timbrature (una per riga) oppure via FTP da un lettore di badge di tipo SmartClock (o con interfaccia compatibile). Il software effettua il parsing delle timbrature in funzione di un'espressione regolare configurabile e le invia via REST al server di ePAS. Nel caso di timbrature su file questi ultimi possono risiedere in locale sul server che ospita questo software oppure essere prelevate via FTP o SFTP.

Il software è distribuito come immagine Docker configurata per accedere a scadenza regolare al lettore badge o ai file 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 lettore badge presso la 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

  • Sistema operativo supportato: Ubuntu 18.04 LTS o superiori
  • Docker installato
  • Docker-compose installato

Altri requisiti

  • aver configurato una sorgente timbratura su ePAS per la propria sede

Requisiti in caso di utilizzo smartclock

  • accesso alla porta FTP del lettore badge (in caso di utilizzo dello smartclock)

Requisiti in caso di timbrature prelavate da servizio ftp/sftp remoti

  • accesso alla porta del servizio ftp/sftp del servizio
  • conoscere il tracciato record delle timbrature per poterne configurare il parsing
  • i nomi dei file contenenti le timbrature devono essere ordinati lessicongraficamente per data, per esempio: 2020-11-05.txt, 2020-11-06.txt (il client utilizza l'ordine dei file per leggere le timbrature dai file successivi)

Requisiti in caso di timbrature prelavate da directory locale

  • aver accesso alla directory contenente le timbrature da parte dell'utente che avvia il client
  • conoscere il tracciato record delle timbrature per poterne configurare il parsing
  • la directory con le timbrature deve essere "montata" all'interno del container, vedere per esempio https://github.com/consiglionazionaledellericerche/epas-client/blob/main/docker-compose.yml#L15
  • i nomi dei file contenenti le timbrature devono essere ordinati lessicograficamente per data, per esempio: 2020-11-05.txt, 2020-11-06.txt (il client utilizza l'ordine dei file per leggere le timbrature dai file successivi)

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

Parametro Descrizione Obbligatorio Default
STAMPINGS_SERVER_PROTOCOL Definisce la modalità con cui il client preleva le timbrature da inviare al server. I possibili valori sono: smartclock, local, ftp, sftp. Alcuni dei parametri successivi dipendendono da questo parametro e specificano le informazioni necessarie all'accesso alla timbrature in funzione della modalità scelta. NOTA: nel caso si utilizzi la modalità smartclock è necessario configurare nel docker-compose.yml il volume che effettua il mapping della cartella locale contenente le timbrature:
# docker-compose.yml
[...]
volumes:
[...]
# da personalizzare in caso di timbrature in cartella locale,
# - ${PWD}/folder-timbrature:/client/data/source
SI Nessun default
PARAMETRI PER L'INVIO TIMBRATURE AD EPAS
SERVER_HOST Host del server di ePAS. Esempio: epas-demo.devel.iit.cnr.it SI Nessun default
SERVER_PROTOCOL Protocollo per l'invio delle timbrature al server di ePAS. Possibili valori: http, https NO https
SERVER_PORT Porta del server di ePAS. Solitamente la porta per le comunicazioni via https è la 443 NO 443
EPAS_CLIENT_USER Utente della "sorgente timbrature" di ePAS. SI Nessun default
EPAS_CLIENT_PASSWORD Password della "sorgente timbrature" di ePAS SI Nessun default
PARAMETRI PER SMARTCLOCK
BR_IP_ADDRESS Indirizzo IP del lettore badge SI per modalità smartclock Nessun default
BR_PORT Porta del servizio FTP configurato sul lettore badge NO 21
BR_USER Utente del lettore bagde SI per modalità smartclock Nessun default
BR_PASSWORD Password del lettore badge SI per modalità smartclock Nessun default
PARAMETRI PER FILE DA FTP/SFTP SERVER
FTP_SERVER_NAME Indirizzo IP del server ftp/sftp SI per modalità ftp/sftp Nessun default
FTP_SERVER_PORT Porta del servizio ftp/sftp NO 21
FTP_USERNAME Utente per l'accesso al servizio ftp/sftp SI per modalità ftp/sftp Nessun default
FTP_PASSWORD Password per l'accesso al servizio ftp/sftp SI per modalità ftp/sftp Nessun default
FTP_SERVER_DIR Directory del servizio ftp/sftp contenente le timbrature NO .
FTP_FILE_PREFIX Prefisso del nome dei file da cui prelevare le timbrature. Si applica alle modalità local/ftp/sftp. Tutti i file il cui nome non inizia con questo prefisso verranno scartati. NO 20
FTP_FILE_SUFFIX Suffisso del nome dei file da cui prelevare le timbrature. Si applica alle modalità local/ftp/sftp. Tutti i file il cui nome non termina con questo prefisso verranno scartati. NO vuoto, nessun suffix
REGEX_STAMPING Espressione regolare utilizzata per effettuare il parsing delle righe contenenti le timbrature. La regex di default è per SmartClock ed è la seguente: ^(?P<operazione>[0,E,U,T])(?P<tipo>\w{1})(?P<giornoSettimana>\d{1})(?P<matricolaFirma>\d{9})(?P<causale>\d{4})(?P<ora>\d{2})(?P<minuti>\d{2})(?P<secondi>\d{2})(?P<giorno>\d{2})(?P<mese>\d{2})(?P<anno>\d{2})(?P<lettore>\d{2})$. Nel caso il file contenente le timbrature utilizzi un tracciato record diverso è necessario scrivere la propria regex che rappresenti la timbratura e permetta di estrarre almeno i gruppi della regex (sono obbligatori: operazione, matricolaFirma, causale, ora, minuti, mese, anno) presenti nell'esempio sopra riportato relativo al formato utilizzato dagli Smartclock. Per facilitare a scrivere la regex potete utilizzare un sistema online come questo https://regex101.com/ NO ^(?P<operazione>[0,E,U,T])(?P<tipo>\w{1})(?P<giornoSettimana>\d{1})(?P<matricolaFirma>\d{6})(?P<causale>\d{4})(?P<ora>\d{2})(?P<minuti>\d{2})(?P<secondi>\d{2})(?P<giorno>\d{2})(?P<mese>\d{2})(?P<anno>\d{2})(?P<lettore>\d{2})$
PARAMETRI PER LA CONFIGURAZIONE DELL'INVIO DELLE METRICHE
METRICS_ENABLED Attiva l'invio delle metriche di un client ad un Pushgateway Prometheus NO False
METRICS_PUSHGATEWAY_URL Url del PushGateway a cui inviare le metriche SI se attivate le metriche
METRICS_PUSHGATEWAY_USER Utente per l'autenticazione con il PushGateway NO
METRICS_PUSHGATEWAY_PASSWORD Password per l'autenticazione con il PushGateway NO
Parametri generici generalmente da non impostare
OFFSET_ANNO_BADGE Nel tracciato record delle timbrature spesso l'anno è indicato con le sole due cifre finale (es. 20 per 2020). Questo parametro permette di riportare la data nel formato completo a quattro cifre, il software somma questo offset all'anno estratto dal tracciato record delle timbrature. NO 2000
CHECK_SUCCESS_MSG Parametro per gli smartclock, permette di attivare/disattivare il controllo dei messaggi del lettore. Parametro da modificare solo in casi eccezionali per vecchi lettori. Possibili valori sono True o False NO True
LOG_LEVEL Livello di log, possibili valori sono DEBUG, INFO, WARNING, ERROR NO INFO
MAX_THREADS Eventuale livello di parallelizzazione nell'invio delle timbrature. Si consiglia di non modificare il default. NO 1
CRON Crono che definisce ogni quanto vengono inviate le timbrature. utilizzare il formato richiesto dal crontab. Riferimenti -> https://en.wikipedia.org/wiki/Cron#Examples NO */15 6-23 * * * (ogni 15 minuti dalle 6 alle 23)
CRON_RANDOM_SLEEP Secondi 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. NO 180
PROBLEMS_CRON Cron 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_DAYS Tutte le timbrature con problemi, più vecchie di questo numero di giorni dal momento dell'esecuzione, vengono buttate via. NO 10
SERVER_ERROR_CODES Identifica 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. NO 401, 404, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509
MAPPING_OPERAZIONE_CLIENT_SERVER Specifica, in formato dizionario Python, l'eventuale mapping tra il valore dell'operazione di entrata/uscita letto dalla timbratura e quello aspettato da ePAS (0 per l'ingresso, 1 per l'uscita). NO {'E':'0','U':'1'}
MAPPING_CAUSALI_CLIENT_SERVER Specifica, in formato dizionario Python, l'eventuale mapping tra la causale della timbratura letta dalla timbratura e le causali attese da ePAS (motiviDiServizio, pausaPranzo sono le uniche due supportate al momento da ePAS). NO {'0000': None, '0001': 'motiviDiServizio', '0007': 'pausaPranzo'}

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
  • la directory archives con i file scaricati nel tempo dal lettore badge (in caso di utilizzo modalità smartclock)
  • il file info/last_request.txt che contiene la data ed ora dell'ultima timbratura prelevata dal client (in caso di utilizzo modalità smartclock)
  • il file info/ultimo_file.txt che contiene il nome dell'ultimo file letto, le sue dimensioni e l'ultima riga letta (in caso di utilizzo modalità local, ftp, sftp)

In caso di necessità è possibile retrodatare il prelevamento delle timbrature modificando opportunamente il file info/last_request.txt o il file info/ultimo_file.txt (in funzione della modalità di prelevamento timbrature utilizzata).

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/executeClient.sh.

About

Client di ePAS per l'acquisizione delle timbrature via file locale/ftp/sftp o lettore badge Smartclock

Resources

License

Stars

Watchers

Forks

Packages

No packages published