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.

  1. Időzóna beállítása (PHP és SET time_zone).
  2. deployStampCheck(): ha a .deploy_stamp eltér a korábban látottól, opcache_reset() és naplóbejegyzés.
  3. Kb. 50 library regisztrálása. Hiányzó vagy hibás osztály nem dönti be a kérést: a whyMissing() és whyBroken() 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.
  4. Composer autoload (Dlbtenv::vendorAutoload(), tartalék útvonallal).
  5. Karbantartási mód őr: ha a frissítő library karbantartásban van, minden kérésre (kivéve api/update és masterdata/cronqueue) HTTP 503, error_code MAINTENANCE, Retry-After: 120 fejléc.
  6. 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ényMűködés
event/invoice.addeddlbt/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/wdklanguagea weboldal-téma fejlécének renderelése utánaz 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őttrendszer-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.

Kapcsolódó témák: szoftverfrissítés REST API értesítés