licence-server/logger/deploy/terminia-logger.service
Nenad Djukic 3480766c3e Prijemnik dijagnostike sa TERMINIA uredjaja (logger/)
- UDP prijemnik (podrazumevano 46465, NE 46464 gde uredjaji slusaju discovery):
  dnevnik rada sa zaglavljem #TERMINIA, heartbeat JSON, sve ostalo se odbacuje
- paket bez zaglavlja (FW < 0.13.4) se vodi kao "nepoznat uredjaj" po izvornoj
  IP adresi i tako je i oznacen u prikazu
- dnevnik u fajlove po uredjaju i danu, rotacija po velicini + tri kvote
  (starost, po uredjaju, ukupno); otvoren fajl se nikad ne brise
- heartbeat u memoriji; interval se meri iz razmaka javljanja, "tih" = 3x interval
- web stranica (podrazumevano 127.0.0.1:8081): spisak uredjaja, crveno za tihe,
  poslednjih N linija sa pretragom, /dnevnik.txt i /api/uredjaji
- bez baze i bez spoljnih zavisnosti; ne dira licencni servis, njegovu bazu,
  rute ni nginx
- sanitizacija svega iz paketa (duzine, kontrolni znaci, ime foldera) — bez
  izlaska iz foldera dnevnika
- systemd unit + primer env fajla + README sa uputstvom za pustanje na server
- testovi: parsiranje (zaglavlje/JSON/bez zaglavlja/smece), registar, rotacija
  i kvote, web rute

Nije pusteno na server — puštanje radi vlasnik po logger/README.md.
2026-07-25 17:40:27 +02:00

43 lines
1.3 KiB
Desktop File

# Prijemnik servisne dijagnostike sa TERMINIA uredjaja.
# Obrazac: licence-server.service (vidi docs/SETUP.md), ali BEZ MySQL zavisnosti -
# ovaj servis nema bazu i ne dodiruje licencni servis.
#
# Instalacija:
# cp logger/deploy/terminia-logger.service /etc/systemd/system/
# cp logger/deploy/terminia-logger.env.example /root/projects/licence-server/logger.env
# systemctl daemon-reload && systemctl enable --now terminia-logger
[Unit]
Description=TERMINIA prijemnik dijagnostike (UDP dnevnik + heartbeat)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/projects/licence-server
ExecStart=/root/projects/licence-server/terminia-logger
EnvironmentFile=-/root/projects/licence-server/logger.env
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=terminia-logger
KillMode=mixed
KillSignal=SIGTERM
TimeoutStopSec=15
# Dnevnici sadrze BROJEVE KARATA - folder je citljiv samo vlasniku procesa.
StateDirectory=terminia-logger
StateDirectoryMode=0750
# Osnovno ogradjivanje: servis samo slusa UDP i pise u svoj folder.
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
# ProtectHome se NE ukljucuje: binar i EnvironmentFile stoje pod /root/projects
# (isto kao licence-server), a ProtectHome bi taj folder sakrio od servisa.
[Install]
WantedBy=multi-user.target