# ASP-Terminia — licenciranje (radni paket) > **Misija:** dovesti licenciranje ASP‑Terminia terminala do produkcije na > postojećem `dal-license-server`-u (server 151), bez lomljenja ijednog > postojećeg klijenta (ESIR/ARV/LIGHT_TICKET su ŽIVI u produkciji). > > **Jezik projekta:** srpski (ekavica), latinica. Kod/komentari na serveru su Go — > komentari srpski ASCII. > **Poreklo:** paket je nastao u firmverskom repou (`asp-terminia/licence/`) i > prebačen ovde 2026-07-24, jer je sav posao serverski. Firmverska strana je > gotova i ne dira se. „**ASP repo**" u tekstu znači > . ## Sadržaj foldera | Fajl | Šta je unutra | |---|---| | [01-postojece-stanje.md](01-postojece-stanje.md) | šta VEĆ postoji: server (Go/MySQL/nginx/kripto) i firmware klijent (gotov!) | | [02-api-ugovor-firmware.md](02-api-ugovor-firmware.md) | tačan ugovor koji firmware očekuje — polja, potpis, greške | | [03-zadaci.md](03-zadaci.md) | šta treba uraditi, redom, sa kriterijumima prihvatanja | | [04-pravila-rada.md](04-pravila-rada.md) | **OBAVEZNO pročitati prvo** — produkcija, backup, tajne, granice | | [05-enforcement-odluke.md](05-enforcement-odluke.md) | pitanja E1–E6 za vlasnika: šta uređaj radi bez licence | ## Kontekst u 5 redova 1. **Šta se licencira:** ESP32‑S3 terminal za kontrolu prolaza (bazeni/spa), proizvod **„ASP‑Terminia"** (Autonomni Sistem Prolaza). Licenca je vezana za **MAC** čipa (eFuse, nepromenljiv) preko `machine_fingerprint`. 2. **Server već postoji:** `dal-license-server` (Go, MySQL, RSA‑2048/SHA‑256) na `157.180.119.151`, u produkciji sa 3 proizvoda / ~140 licenci / ~19 aktivacija. 3. **Firmware klijent je GOTOV** (modul `licenca.h/.cpp` u firmveru, od verzije 0.10.0): aktivacija, offline verifikacija potpisa javnim ključem, UI. Čeka samo proizvod i ključ na serveru. 4. **Dva sloja:** potpisana lokalna licenca (radi offline) + serverska provera/obnova (opoziv). Mrežna greška NIKAD ne obara uređaj. 5. **Domeni (kupuje vlasnik):** `licenca.terminia.net` → 157.180.119.151 (Let's Encrypt). Dok domena nema, uređaj radi preko IP‑a sa `setInsecure()` — odluku ionako štiti RSA potpis, ne TLS kanal. ## Šta agent NE radi - Ne donosi odluku o **ponašanju uređaja bez licence** (gašenje funkcija) — to je odluka vlasnika (pitanja u 03-zadaci.md §Z4). Priprema se predlog, čeka se DA. - Ne dira postojeće proizvode (ESIR, ARV, LIGHT_TICKET) niti `terminia` SaaS (portovi 8091/8092 na istom serveru — TO NIJE OVAJ POSAO). - Ne čita niti loguje tajne (`.env`, privatni ključ) — vidi 04-pravila-rada.md. ## Veze ka ostatku projekta - **Firmware repo (ASP repo):** (klijent: `firmware/10_terminia/licenca.h`, `licenca.cpp`; javni ključ ugrađen). Firmverska strana je GOTOVA od FW 0.10.0 — ovaj paket je ne dira. - Dizajn/istorijat: `ASP repo docs/18-licenciranje-po-mac.md` (pisan PRE nego što je pravi API poznat — gde se razlikuju, **ovaj folder je merodavan**), `ASP repo docs/21-platforma-i-provisioning.md`. - Serviserska strana (RBAC, uređaji, LoggerService): `ASP repo: serviseri/` — isti backend, drugi radni paket; koordinacija preko šeme baze (vidi tamo 01). *(Taj paket se seli u ovaj repo posebno — vidi dogovor od 2026-07-24.)* - Serverski kod i konvencije: [../../CLAUDE.md](../../CLAUDE.md), [../ARCHITECTURE.md](../ARCHITECTURE.md), [../../API.md](../../API.md).