Paket je nastao u asp-terminia/licence/ ali je sav posao serverski, pa se seli ovde. Firmverska strana je gotova od FW 0.10.0 i ne dira se. - docs/asp-terminia/ - 6 dokumenata: postojece stanje servera i FW klijenta, tacan API ugovor koji firmware ocekuje, zadaci Z1-Z6 sa kriterijumima prihvatanja, pravila rada na produkciji, enforcement pitanja E1-E6 - reference prepravljene: "ASP repo" = https://git.terminia.net/djuka/asp-terminia (ranije su pokazivale na lokalnu putanju D:\priv\... koja vise ne postoji) - CLAUDE.md: sekcija o cetvrtom proizvodu + pokazivac na paket ASP-Terminia se od ESIR/ARV/LIGHT_TICKET razlikuje po tome sto je machine_fingerprint MAC cipa (eFuse), a uredjaj radi offline - mrezna greska ne sme da ga obori. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.9 KiB
Zadaci (redom; svaki ima kriterijum prihvatanja)
Redosled je namerno ovakav: prvo ono što odblokira kraj-do-kraja test sa pravim uređajem, pa infrastruktura (domen), pa odluke, pa katalog firmvera. Pre svakog write-a na produkciju: backup + izričita dozvola vlasnika (vidi 04-pravila-rada.md).
Z1 — Proizvod „ASP-Terminia" na serveru
Šta: kroz migraciju (SQL u migrations/, po uzoru na 002_seed_products.sql)
ili admin API/dashboard napraviti proizvod:
code/name: ASP-Terminia (linija: ASP — Autonomni Sistem Prolaza)key_prefix:ASP-- limiti (predlog, potvrditi sa vlasnikom):
max_citaca(npr. basic 2 / pro 8),max_kartica(basic 2000 / pro 30000) - features (predlog bitova, uskladiti sa ASP repo docs/18 §6.3): provera karte, izdavanje, štampa, katalog-sa-servera, anti-passback, sync, OTA
Kako: pogledati kako su postojeći proizvodi definisani (tabela products +
seed migracija) i uraditi ISTIM šablonom. Ne menjati postojeće redove.
Prihvatanje: proizvod vidljiv u dashboardu; postojeći proizvodi netaknuti (COUNT pre = posle za njihove licence/aktivacije); backup fajl postoji.
Z2 — Test ključ + kraj-do-kraja aktivacija sa uređajem
Šta: izdati 1 test licencu ASP-Terminia (trajnu ili 90 dana) i proći ceo tok sa
PRAVIM uređajem (MAC 1C:DB:D4:A6:A4:60, dostupan vlasniku):
- Odgovoriti na P1–P4 iz 02-api-ugovor-firmware.md (čitanjem Go koda).
- Ako se fingerprint formula razlikuje od FW pretpostavke → zapisati TAČNU formulu u 02 i javiti (menja se FW, jedna linija).
- Vlasnik unese ključ u SPA (Podešavanja → Uređaj → Licenca) → Aktiviraj.
- Proveriti: status „važi" na uređaju; restart uređaja → i dalje „važi" (offline);
Proveri na serveru→ potvrda. - Negativni testovi: pogrešan ključ (INVALID_KEY prikazan), opozvan ključ (revoked prikazan), ključ aktiviran na drugom fingerprint-u (PRODUCT/ALREADY ponašanje po P2).
Prihvatanje: svih 5 koraka dokumentovano (šta je poslato/vraćeno, bez tajni).
Z3 — Domen licenca.terminia.net + Let's Encrypt
Preduslov: vlasnik kupi/podesi terminia.net (A rekord → 157.180.119.151).
Dok toga nema, zadatak stoji — NE blokira Z1/Z2 (ide se preko IP-a).
Šta:
- nginx: novi
server_name licenca.terminia.netblok koji proksira ISTI backend (port 8090) — ne dirati postojećiarvsajt (postojeći klijenti ostaju na IP). - certbot (Let's Encrypt) za taj domen; auto-obnova.
- Provera da
https://licenca.terminia.net/api/v1/validateradi sa validnim lancem. - U firmware repou:
cfg.licUrlpodrazumevana vrednost se menja na domen, asetInsecure()se zamenjuje validacijom lanca (ugraditi ISRG root CA) — to je FW izmena: pripremiti tačan diff/uputstvo, primenu radi firmware strana.
Prihvatanje: domen služi API sa validnim certom; stari IP pristup i dalje radi.
Z4 — Odluke o enforcement-u (PRIPREMA, vlasnik odlučuje)
Šta: pripremiti kratak dokument sa predlogom (na bazi ASP repo docs/18 §5) i KONKRETNIM pitanjima za vlasnika:
- Bez licence: potpuno odbijanje ILI ograničen rad (predlog: web/konfiguracija/ručno upravljanje rade; izdavanje+štampa+provera karata ne rade uz jasnu poruku)?
- Grejs: 14 dana posle isteka (podesivo)?
- Nepouzdan sat = grejs (nikad pad) — potvrda?
- Koje funkcije vezati za
featuresbite, koje zalimits?
Prihvatanje: dokument 05-enforcement-odluke.md u ovom folderu sa odgovorima
vlasnika upisanim (ne pretpostavkama). Implementacija enforcement-a u FW ide TEK
posle toga (firmware strana).
Z5 — Obnova/opoziv tok (sloj B)
Šta: definisati i (posle Z4) implementirati periodičnu proveru na uređaju:
validate na N sati (podesivo), revoked → od kad važi ograničenje (posle grejsa),
server može vratiti NOVU licencu (produženje) — proveriti da li postojeći server to
podržava kroz activate re-poziv ili treba dorada (check endpoint po ASP repo docs/18 §4).
Prihvatanje: opisan tačan tok + potvrđeno na test ključu (produženje + opoziv).
Z6 — Potpisivanje firmvera + veza sa katalogom
Šta: .bin slike se potpisuju RSA lancem (ODVOJEN ključ od licenci — preporuka
ASP repo docs/18 §7.1; ako vlasnik odluči isti, dokumentovati). Server strana: skripta za
potpis + čuvanje potpisa uz artefakt. Katalog (nginx fw.terminia.net) i
kratkotrajni download URL su u paketu ASP repo: serviseri/03 — ovde samo potpisni deo.
Prihvatanje: komanda za potpis + format potpisa dokumentovan + probni potpisan
.bin verifikovan javnim ključem.
Redosled i zavisnosti (sažetak)
Z1 (proizvod) ──► Z2 (kraj-do-kraja) ──► Z4 (odluke) ──► [FW enforcement — firmware strana]
└──► Z5 (obnova/opoziv)
Z3 (domen) — čim vlasnik obezbedi DNS (nezavisno)
Z6 (potpis .bin) — pre auto-OTA kataloga (koordinacija sa ASP repo: serviseri/)