Catalog-oldali indítás, karbantartás, frissítési végpontok és esemény-hallgatók
A catalog-kérések indító lépései, a library-diagnosztika, a karbantartási mód, a frissítési szerver- és egészség-végpontok, valamint a számla-, nyelv- és JSON-őr esemény-hallgatók.
Áttekintés
A catalog oldalon nincs admin-munkamenet, és a jogkezelő (dlbtpermission) nincs regisztrálva; csak az admin indító tölti be. A catalog-végpontok ezért az admin útvonalak jogkulcsait a felhasználóra külön ellenőrzik. Időzóna: a PHP és a MySQL-munkamenet is Europe/Budapest.
Az indító lépései
A modul telepítésekor az alapkeretrendszer startup táblájába kerül, és minden catalog-kérésnél fut; jogot nem ellenőriz, adatbázisba nem ír.
- Időzóna beállítása (PHP és
SET time_zone). deployStampCheck(): ha a.deploy_stampeltér a korábban látottól,opcache_reset()és naplóbejegyzés.- Kb. 50 library regisztrálása. Hiányzó vagy hibás osztály nem dönti be a kérést: a
whyMissing()éswhyBroken()diagnosztika (fájl léte, mérete, kora, friss telepítés, hiányzórequire) a naplóba kerül, folyamatban lévő írásnál warning, egyébként error szinttel. - Composer autoload (
Dlbtenv::vendorAutoload(), tartalék útvonallal). - Karbantartási mód őr: ha a frissítő library karbantartásban van, minden kérésre (kivéve
api/updateésmasterdata/cronqueue) HTTP 503,error_codeMAINTENANCE,Retry-After: 120fejléc. dlbtjson->arm(): a központi JSON-védőháló (kivétel- és leállás-kezelő a JSON-t váró kérésekre).
Esemény-hallgatók
| Hallgató | Esemény | Működés |
|---|---|---|
event/invoice.added | dlbt/invoice/add/after (install/event_invoice_added_v1.sql) | minden beszúrt számla után dlbtnotify->invoiceCreated(); hibája nem forgatja vissza a számlát, csak naplóz |
event/wdklanguage | a weboldal-téma fejlécének renderelése után | az aktív nyelvekből választót szúr a fejléc-HTML-be a kosár elé, language URL-paraméteres váltással, ugyanazon az oldalon |
event/jsonguard (before, respond) | az alap bejelentkező, fiókvédelmi, jogosultsági és „nem található” oldal előtt | rendszer-AJAX-kérésre HTML helyett JSON-hibát ad (UNAUTHORIZED, PERMISSION_DENIED, NOT_FOUND), naplóz |
Frissítési végpontok
A api/update vezérlő a központi release-szerver szerepében fogadja a telepítések kéréseit (register, check, authorize, download, report, publish). Vékony vezérlő: a kérés módszerét, a nyers törzset, az X-Dlbt- kezdetű fejléceket (telepítés, időbélyeg, nonce, aláírás, manifest és aláírása, kulcs-azonosító), az If-None-Match és Range fejlécet és a token paramétert átadja a Dlbtupdate\Server::handle()-nek. A download 1 MB-os szeletekben streamel, a többi JSON; kivételnél 500 UNCAUGHT_EXCEPTION. A kódkommentek szerint a regisztráció egyszeri kódot, a publikálás a publikáló kulcs aláírását, a többi telepítéshez kötött HMAC-aláírást kér; a részletek a Server osztályban élnek, a vezérlőből nem látszanak.
A api/update.health&token= végpontot a saját telepítés hívja aktiválás után: a token érvényes-e (10 percig, egyszer), a kulcs-osztályok (Dlbtjson, Permission, Server, Backup) betölthetők-e, az indító és a migrációs fájlok megvannak-e, és planVersioned(). Válasz: ok, version, pending_migrations, drift, failed; rossz token 403, kivétel 500. A token-hash az update_config táblában.