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>
61 lines
3.4 KiB
Markdown
61 lines
3.4 KiB
Markdown
# ASP-Terminia — licenciranje (radni paket)
|
||
|
||
> **Misija:** dovesti licenciranje ASP‑Terminia 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 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:** `licence-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):** <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).
|