
Webové aplikace, eLoader a licence
Webové aplikace, eLoader a licence od eUpdate 1.7.8
Každé vydání má vlastní instalační cíl, požadavky a licenci. Nastavíte je při
nahrání ZIPu nebo později tlačítkem Instalace a licence u vydání. Úprava
metadat zachová původní ZIP, jeho obsah a SHA-256. Na panelu projektu je vedle
data posledního vydání jeho licence; vedle počtu verzí počet souborů posledního
vydání. Souborů se počítá celý ZIP včetně dokumentace a metadat.
Typy balíčků
| package.target | Použití |
| --- | --- |
| software | Běžný program nebo zdrojový kód; stávající balíčky. |
| hosting | Webová aplikace pro hosting, například PHP. |
| hosting_module | Modul webové aplikace ve stejném projektu. |
| eloader_app | Aplikace instalovaná do eLoaderu. |
| eloader_module | Modul aplikace eLoaderu ve stejném projektu. |
package.type nadále rozlišuje release a module. Pro moduly nejprve
vyberte existující projekt a roli Modul programu. Cíl a požadavky se mohou
mezi jednotlivými vydáními lišit. Pro PHP aplikaci bez závislosti na OS zvolte
Zdrojový kód / nezávislé na OS a doplňte požadavek na PHP.
installation.web_root je cesta od kořene ZIPu, např. public nebo
example-app/public. Tečka znamená celý kořen. Složka musí obsahovat soubory
balíčku. archive_metadata.working_directory zůstává samostatnou pracovní
složkou pro dosavadní instalační příkazy. Instalační descriptor popisuje cesty
původního ZIPu; změny obalových složek v Git exportu tyto cesty nemění.
Požadavky na prostředí
{
"package": { "type": "release", "target": "eloader_app" },
"requirements": {
"php": ">=8.2 <9.0",
"eloader": ">=1.0 <2.0"
},
"license": "MIT",
"installation": { "web_root": "public" }
}Podporované operátory jsou >=, >, <=, < a =. Číselná verze bez
operátoru znamená přesnou shodu. Podmínky oddělte mezerou nebo čárkou; musí
platit všechny. Prázdný požadavek nebo * znamená bez omezení verze. Verze
8.2 se porovnává jako 8.2.0. Zápisy ^, ~, 8.* a || nejsou
podporované a při ukládání se odmítnou. Jde o vlastní omezený formát eUpdate,
nikoli o úplnou syntaxi Composeru. Další požadavky, např. PHP rozšíření a DB,
popište v README; automatický výběr je zatím neposuzuje.
Modul uvede také nadřazenou aplikaci:
{
"package": { "type": "module", "target": "eloader_module" },
"requirements": {
"php": ">=8.2 <9.0",
"eloader": ">=1.0 <2.0",
"application": { "software_id": "example-app", "version": ">=1.2 <2.0" }
}
}ID požadované aplikace odpovídá projektu modulu. U eLoader balíčků musí klient
uvést svou verzi eLoaderu i při neomezeném požadavku. U modulů musí uvést ID i
verzi nainstalované aplikace. Chybějící potřebné údaje znamenají neověřenou
kompatibilitu, nikoli automatický souhlas.
Licence
Předvolby: MIT, Apache 2.0, BSD 2-Clause, BSD 3-Clause, GPL 2.0, GPL 3.0,
LGPL 3.0, AGPL 3.0, MPL 2.0, ISC, Unlicense, CC0 1.0 a Vlastní.
Bez uvedené licence se použije MIT. Existující rozpoznaná licence se zachová;
jiná uvedená licence se nabídne jako Vlastní. U vlastní licence je povinný
název nebo text podmínek v license_custom.
V manifestu je license identifikátor, např. Apache-2.0; u vlastní licence
hodnota custom. V JSON specifikaci je navíc objekt license s poli id,
name a custom_text. Licence balíčku je oddělená od nastavení Open/placený
modul a nemění přístupová oprávnění. Soubor LICENSE se do původního ZIPu
automaticky nevkládá; patří do balíčku připraveného vydavatelem.
Instalační odkaz a kompatibilní aktualizace
Kopírovat instalační odkaz vrátí HTTPS adresu JSON descriptoru konkrétního
vydání. Například:
https://update.estudium.eu/package.php?software_id=example-app&version=1.2.0Pro modul obsahuje odkaz také module=reports. Descriptor má schéma
eupdate-installation-v1. Obsahuje package s verzí, licencí, požadavky,
deployment, install_json, download_url, velikostí ZIPu a SHA-256.
installation_url je odkaz na konkrétní vydání; update_url vybírá nejnovější
kompatibilní vydání po doplnění parametrů prostředí.
/package.php?software_id=example-app&target=eloader_app&php=8.3.6&eloader=1.1.0¤t_version=1.0.0
/package.php?software_id=example-app&module=reports&target=eloader_module&php=8.3.6&eloader=1.1.0&application_id=example-app&application_version=1.5.0¤t_version=1.0.0version: volitelná přesná verze vydání; bez ní se hledá nejnovější kompatibilní.target: požadovaný instalační cíl.php,eloader: skutečné verze prostředí klienta.application_id,application_version: ID a verze aplikace, do které se instaluje modul.current_version: současná verze vybraného balíčku proupdate_available.
Bez version se projdou všechna vydání a vybere nejvyšší kompatibilní podle
PHP version_compare. Např. místo nekompatibilního 2.0.0 může být nabídnuto
1.10.0. Pokud žádné vydání nevyhovuje, endpoint vrátí HTTP 409,
error: no_compatible_release, package: null a seznam candidates s důvody.
Aktualizace se nabízí jen při vyšší verzi, nikdy jako automatický downgrade.
Archivovaný projekt se takto nenabízí; přesná již známá vydání zůstávají dostupná.
U přesného odkazu je možné načíst metadata před zadáním prostředí. Rozhodující
je compatibility.status: compatible, incompatible nebo unknown a
příznak installable. Klient smí pokračovat až po výsledku compatible.
Pole missing a mismatches uvádějí chybějící či nesplněné požadavky.
Stávající /updates.php přijímá stejné parametry prostředí. Bez nich zachovává
dosavadní výběr nejnovější verze. Statický /updates.json je ne filtrovaný
veřejný katalog. Po otevření aktualizované aplikace se automaticky obnoví i
statické specifikace. Cron pro toto rozšíření není potřeba.
Napojení eWebu a eLoaderu
- Klient načte zkopírovaný odkaz a přidá vlastní verze prostředí a cílový typ.
- Ověří
installable, typ balíčku a požadovanou aplikaci. - Stáhne
package.download_urlse stejným oprávněním jako metadata. - Ověří velikost a SHA-256. Použije aktuální metadata descriptoru, protože
vydavatel mohl požadavky opravit bez změny původního install.json uvnitř ZIPu.
- Provede vlastní bezpečné rozbalení, instalaci a evidenci verze. Před
aktualizací zajistí vlastní zálohu a možnost návratu.
Toto vydání implementuje stranu eUpdate. Instalační klient v eWebu/eLoaderu
musí descriptor zpracovat; eUpdate sám na cílovém hostingu nic nespouští.
Veřejné balíčky jsou dostupné bez přihlášení. Pro neveřejné použije klient
hlavičku X-Project-Secret; klíč modulu platí pouze pro daný modul. Pro placené
moduly může použít také dosavadní schválenou identitu serveru a aktivní licenci
(X-Server-ID, X-Server-Hostname a API klíč podle manuálu check-inu).
Přihlašovací údaje nejsou vložené do běžného kopírovaného odkazu ani vraceného
JSON. Platí pro metadata i stažení archivu. Metadata nejsou veřejně cachovaná.
Ukázkové manifesty
Autor programu: PB <pavel.bartos.pb@gmail.com>