licence-server/docs/asp-terminia/README.md
Nenad Djukic 1abe7176ec Preimenovanje: dal-license-server -> licence-server (+ debrendiranje)
Vlasnik izlazi iz DAL price za ovaj projekat - postaje samostalan proizvod.
Preimenovanje je mehanicko (import putanje, imena fajlova/baze/UI naslova),
NIJEDNA linija poslovne logike u internal/handler ili internal/service nije
dirana - go build, go vet i go test ./... prolaze cisto pod novim imenom.

- go.mod: module dal-license-server -> licence-server; 28 import linija u
  13 .go fajlova usaglaseno
- internal/config/config.go (+test): default DB_NAME licence_db
- HTML sabloni (7 stranica) + 7 Playwright e2e spec fajlova: "DAL License
  Server" -> "Licence Server" u title/nav-brand, testovi usaglaseni u istom
  prolazu (nista ne moze da se razdvoji)
- package.json/package-lock.json/.gitignore/.claude/project.json: ime
  projekta/binarnog fajla/work_dir
- Usput: package.json je u repository.url nosio OTVORENU Gitea lozinku u
  cistom tekstu - uklonjena (URL sad bez kredencijala). Lozinka je i dalje
  u staroj git istoriji - preporuka: rotirati je posebno.
- CLAUDE.md/README/API/TESTING/docs/SPEC/ARCHITECTURE/SETUP: naslovi, ASCII
  dijagrami, git clone URL, mysqldump primer, systemd predlozak u SETUP.md
  zamenjen stvarnim (obrazac terminia.service - journal log + graceful
  shutdown, ne stari minimalni predlozak)
- Debrendiranje: "Univerzalni licencni server za sve DAL proizvode" ->
  "za vise proizvoda i klijenata"; potpis "Nenad Djukic / DAL d.o.o." ->
  "Nenad Djukic". NE dirano: nazivi ESIR/ARV/LIGHT_TICKET (tudji proizvodi,
  ne DAL brend), "DAL" kao stvaran naziv org-a u RBAC modelu
  (docs/loggerservice/README.md) - to je podatak, ne branding ovog servera.
- docs/asp-terminia/, docs/loggerservice/: prozni pomeni imena servera

Baza (dal_license_db -> licence_db) i deploy na 151 idu u posebnom koraku,
posle preimenovanja Gitea repoa - vidi CLAUDE.md istorijsku belesku na dnu.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 07:55:26 +02:00

61 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ASP-Terminia — licenciranje (radni paket)
> **Misija:** dovesti licenciranje ASPTerminia terminala do produkcije na
> postojećem `licence-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
> <https://git.terminia.net/djuka/asp-terminia>.
## 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 E1E6 za vlasnika: šta uređaj radi bez licence |
## Kontekst u 5 redova
1. **Šta se licencira:** ESP32S3 terminal za kontrolu prolaza (bazeni/spa), proizvod
**„ASPTerminia"** (Autonomni Sistem Prolaza). Licenca je vezana za **MAC** čipa
(eFuse, nepromenljiv) preko `machine_fingerprint`.
2. **Server već postoji:** `licence-server` (Go, MySQL, RSA2048/SHA256) 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 IPa 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):** <https://git.terminia.net/djuka/asp-terminia>
(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).