eStudium.eu

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.0

Pro 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&current_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&current_version=1.0.0

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

vydavatel mohl požadavky opravit bez změny původního install.json uvnitř ZIPu.

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>