{
    "schema": "eupdate-package-specification-v1",
    "author": "PB <pavel.bartos.pb@gmail.com>",
    "project_id": "15b70c7d025661ed",
    "software_id": "eloader",
    "software": "eLoader",
    "module": null,
    "release_id": "90e2873230fca743779292abd0b63b05",
    "version": "1.0.0",
    "release_date": "2026-09-12",
    "published_at": "2026-09-12T15:54:58+00:00",
    "bytes": 488712,
    "sha256": "481395b654855c285397fa5e8484d261b3e122259086d6707b836634ce62dcdd",
    "file_count": 282,
    "languages": {
        "PHP": {
            "bytes": 867962,
            "files": 153
        },
        "HTML": {
            "bytes": 9337,
            "files": 31
        },
        "CSS": {
            "bytes": 8857,
            "files": 1
        },
        "Shell": {
            "bytes": 3894,
            "files": 4
        },
        "JavaScript": {
            "bytes": 1554,
            "files": 1
        },
        "SQL": {
            "bytes": 1036,
            "files": 1
        }
    },
    "installation_url": "https://update.estudium.eu/package.php?software_id=eloader&version=1.0.0",
    "update_url": "https://update.estudium.eu/package.php?software_id=eloader",
    "install_json": {
        "software": "eLoader",
        "software_id": "eloader",
        "version": "1.0.0",
        "release_date": "2026-09-12",
        "description": {
            "cs": "Společné prostředí pro aplikace: přihlášení, oprávnění, instalace aplikací a modulů, eUpdate autoupdate a CZ/EN mail templater.",
            "en": "Shared application environment: sign-in, permissions, application and module installation, eUpdate autoupdate and CZ/EN mail templater."
        },
        "author": {
            "name": "PB",
            "email": "pavel.bartos.pb@gmail.com",
            "website": ""
        },
        "compatibility": {
            "os_types": [
                "source"
            ],
            "os_versions": [],
            "distribution_ids": [],
            "distributions": [],
            "native_windows_supported": false,
            "native_macos_supported": false,
            "any_linux_distribution": false
        },
        "documentation": {
            "readme": "README.md"
        },
        "archive_metadata": {
            "working_directory": ".",
            "publisher": "dcf6d41fbcdf0e16",
            "updated_at": "2026-09-12T15:54:58+00:00",
            "application_author": "PB <pavel.bartos.pb@gmail.com>"
        },
        "installation": {
            "web_root": "public",
            "commands": {
                "linux": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "windows": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "macos": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "other": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "source": {
                    "command": null,
                    "supported": false,
                    "mode": "manual"
                }
            }
        },
        "license": "custom",
        "license_custom": "eLoader: Copyright (c) 2026 PB. All rights reserved. Bundled third-party libraries retain their original licenses; see THIRD-PARTY.md.",
        "package": {
            "type": "release",
            "target": "hosting"
        },
        "requirements": {
            "php": ">=8.2 <9.0"
        },
        "eloader": {
            "api": 1,
            "data_schema": 1,
            "launcher_api": 1,
            "persistent_paths": [
                "var"
            ],
            "core_update": "atomic-private-release-pointer",
            "auto_update_endpoint": "https://update.estudium.eu/package.php?software_id=eloader"
        },
        "project": {
            "website": "https://www.estudium.eu"
        },
        "homepage": "https://www.estudium.eu"
    },
    "readme": "# eLoader 1.0.0\n\nAutor programu: **PB <pavel.bartos.pb@gmail.com>** — shodně s eUpdate. Vydání: 12. 9. 2026.\n\nSpolečné prostředí pro instalaci a spouštění aplikací. Obsahuje CZ/EN rozhraní, výsuvnou levou nabídku, společné přihlášení, správu superadminů, SMTP/SMS, mail templater a instalaci/aktualizaci aplikací i modulů ze ZIPu nebo z eUpdate. Jádro má vlastní automatické aktualizace z eUpdate.\n\n## Požadavky\n\n- PHP **8.2–8.x**, Linux, PHP CLI a PHP-FPM pod stejným uživatelem hostingu.\n- Rozšíření: `pdo_sqlite`, `sqlite3`, `zip`, `curl`, `mbstring`, `dom`, `openssl`, `sodium`, `tokenizer`, `ctype`.\n- Povolené `proc_open` pro oddělenou kontrolu nového vydání. Knihovny jsou přibalené; na produkci není potřeba spouštět Composer.\n- HTTPS. Zapisovatelná soukromá složka pro stav aplikace; veřejný kořen pouze `public/`.\n- Pro upload nastavte `upload_max_filesize=64M`, `post_max_size=70M`, `memory_limit=256M` a odpovídající limit Nginxu. Instalátor omezuje ZIP na 64 MiB a rozbalený obsah na 128 MiB.\n- Jádro používá vlastní SQLite. Databáze připojených aplikací jsou samostatné. Existující isEDU databáze se nemigrují ani nepřepisují.\n\n## Nejrychlejší instalace do eWebu\n\nBalíček nejprve rozbalte **mimo veřejnou webovou složku**, například do pracovního adresáře doménového uživatele. Následující příkazy spouštějte pod uživatelem konkrétního hostingu.\n\nMáte-li doménový adresář s existujícími složkami `web/` a `private/`, použijte:\n\n```bash\nphp bin/install-hosting.php /cesta/k/adresari-domeny https://vase-domena.cz\n```\n\nVeřejná složka `web/` musí být prázdná. Instalátor existující web nepřepíše. Kód uloží do `private/eloader/`, trvalá data do `private/eloader/var/` a do `web/index.php` vloží veřejný vstup. Příkaz vypíše jednorázový token a přesný příkaz pro cron.\n\nOtevřete doménu, zadejte token a vytvořte prvního superadmina: jméno, e-mail, volitelný login, heslo nejméně 12 znaků a výchozí jazyk. Token platí 24 hodin; po dokončení jej nelze použít znovu. Neexistuje výchozí heslo.\n\nNastavte SMTP a v **Mail templateru** odešlete testovací zprávu. Heslo superadmina slouží také k přístupu při poruše doručování PINu.\n\n### Jiný hosting nebo přímé nasazení původního ZIPu\n\nZachovejte **celý obsah ZIPu**, nastavte document root na jeho `public/` a spusťte:\n\n```bash\nphp bin/console.php init https://vase-domena.cz\n```\n\nTím vznikne `var/` vedle `public/`. Alternativní umístění určuje `ELOADER_DATA`; pak musí mít PHP-FPM i cron stejnou hodnotu. Samotné zkopírování obsahu `public/` nestačí, protože jádro a knihovny musí zůstat dostupné mimo webový kořen.\n\n## Publikování v eUpdate 1.7.8+\n\nNahrajte distribuční ZIP jako hlavní program projektu **eLoader**, identifikátor **`eloader`**. Kořen archivu obsahuje připravený `install.json`:\n\n| Nastavení | Hodnota |\n| --- | --- |\n| Autor | PB, pavel.bartos.pb@gmail.com |\n| Verze | 1.0.0 |\n| `package.type` | `release` |\n| `package.target` | `hosting` |\n| `installation.web_root` | `public` |\n| `archive_metadata.working_directory` | `.` |\n| OS | Zdrojový kód / nezávislé na OS |\n| PHP | `>=8.2 <9.0` |\n| Licence jádra | Vlastní; text v `LICENSE` |\n\nZ projektu zkopírujte instalační odkaz. Pro tento identifikátor bude jeho tvar:\n\n```text\nhttps://update.estudium.eu/package.php?software_id=eloader\n```\n\nJde o očekávaný odkaz **po publikování**, nikoli o potvrzení, že projekt už na serveru existuje. Balíček zde nebyl publikován na váš produkční eUpdate. Připravený klient používá skutečný kontrakt `eupdate-installation-v1` z eUpdate 1.7.8.\n\nPrvotní automatické nasazení z rozhraní eWebu vyžaduje, aby jeho hostingový instalátor zachoval celý zdrojový strom a nastavil správný veřejný kořen. Pokud jeho export kopíruje jen `public/`, použijte výše uvedený `install-hosting.php`. Tento balíček nemění program eWeb.\n\n## Automatické aktualizace eLoaderu\n\n1. V **Aktualizace eLoaderu** nastavte odkaz na projekt `eloader` v eUpdate. U neveřejného projektu doplňte SecretID.\n2. Zapněte autoupdate a nastavte čas kontroly; předvolba je **03:30 v Europe/Prague**.\n3. Do cronu konkrétního hostingu vložte přesný příkaz z rozhraní, například:\n\n```cron\n*/5 * * * * /usr/bin/php /cesta/k/adresari-domeny/private/eloader/bin/console.php cron\n```\n\nCron kontroluje plán každých pět minut; stažení a aktualizaci provede nejvýše jednou denně po zvoleném čase. Bez cronu automatické aktualizace neběží. Výchozí stav je vypnuto, dokud správce nenastaví publikovaný zdroj. Samostatná ruční kontrola je dostupná tlačítkem.\n\nOvěřuje se instalační cíl, identita, vyšší verze, PHP, závislosti aplikací, velikost a SHA-256, bezpečný obsah ZIPu a kontrola PHP v odděleném procesu. Nový kód vznikne v soukromém adresáři; aktivuje se atomickou změnou ukazatele. Neprovádí se příkazový skript z `installation.commands`.\n\nZůstává předchozí kód, dva konzistentní snímky databáze jádra a veškerá trvalá data. Tlačítko návratu jádra současně vypne autoupdate. Aktualizace, která neprojde kontrolou, se neaktivuje. Verze 1.0.0 podporuje aktualizace se stejným datovým schématem 1 a launcher API 1. Destruktivní migrační háky odmítá.\n\nNávrat přes CLI:\n\n```bash\nphp bin/console.php rollback eloader\n```\n\nVydání jádra běží pod stejným uživatelem hostingu. Výchozí veřejný vstup a `bootstrap.php` tvoří stabilní launcher; aktualizace jeho rozhraní nebo datového schématu vyžaduje samostatně připravené vydání. Starší adresáře vydání jsou uchovány; průběžně sledujte volné místo. Pro více uzlů/cluster tato verze nemá distribuovaný instalační zámek.\n\n## Přihlašování a oprávnění\n\n- V eLoaderu lze zadat **e-mail, login nebo ID** a zvolit zdroj účtu. Automatické hledání používá eLoader a pověřené nainstalované aplikace. Při více shodách vyžaduje konkrétní zdroj.\n- Společné prostředí vede vlastní **superadminy**. Běžné účty a jejich role/práva zůstávají u příslušných aplikací.\n- Aplikaci musí superadmin v **Aplikace a moduly → Přihlášení a pověření** výslovně pověřit přihlašováním. Instalace sama toto pověření neuděluje.\n- Přihlášení lze zahájit přímo pro pověřenou aplikaci odkazem `/?page=login&app=identifikator`. Vlastní přihlašovací obrazovka aplikace může vést na stejný společný vstup; nemá nastavovat relaci sama.\n- Běžný účet musí být aktivní, mít přidělenou roli a oprávnění `app.access` nebo `*`. Vstup do aplikace a její operace kontrolují aktuální práva na serveru.\n- Sdílené přihlášení podle ověřeného e-mailu je samostatná volba superadmina pro každou aplikaci. Ve druhé aplikaci musí existovat aktivní účet s vlastními právy. Shodný login či číselné ID účty nespojují.\n- Superadmin má přístup do celého prostředí a aplikací. Aplikační role se na superadmina eLoaderu nepovyšuje.\n- PIN má výchozí délku **4 číslice**, je stejný do konce kalendářního dne podle nastaveného časového pásma. Lze změnit délku i časovou platnost. PINy jsou chráněné proti hádání; záznamy neobsahují jejich otevřené hodnoty.\n- Relace platí výchozích **24 hodin od přihlášení**. Prodloužení nenastává při každém kliknutí. Změna délky se projeví u nových přihlášení.\n\n## Aplikace a moduly\n\nV **Aplikace a moduly** přetáhněte ZIP nebo vložte instalační odkaz z eUpdate. Nejprve se zobrazí kontrola balíčku; až poté potvrďte důvěru vydavateli a instalaci. Všechen instalovaný PHP kód běží s právy uživatele hostingu; aplikace nejsou bezpečnostně izolované kontejnery.\n\nAplikace potřebuje eLoader SDK vstup; obyčejná samostatná PHP aplikace se přejmenováním cíle nestane integrovanou aplikací. Přiložený `hosting-example-app-1.2.0.zip` posloužil jako vzor hostingového manifestu, nikoli jako nativní eLoader aplikace.\n\n- `examples/demo-notes-1.0.0.zip`: ukázková aplikace, účty viewer/editor, oddělená data a práva.\n- `examples/demo-summary-1.0.0.zip`: modul pro tuto aplikaci.\n- Zdrojové podoby ukázek jsou také v `examples/`.\n\nPostup: nainstalujte Demo Notes, jako superadmin je otevřete a vytvořte zkušební účet. Pověřte aplikaci přihlašováním. Nastavte SMTP a vyzkoušejte PIN e-mailem, loginem i ID. Pak přidejte Demo Summary. Žádné zkušební účty se automaticky nevytvářejí.\n\nPro placený modul lze použít SecretID nebo údaje už schválené licencované identity eUpdate: Server ID, hostname a check-in API klíč. Při požadavku se používají hlavičky `X-Project-Secret`, `X-Server-ID`, `X-Server-Hostname`, `X-Server-Checkin-Key`. eLoader v této verzi sám neprovádí registraci/licenční check-in; povolení musí již existovat v eUpdate.\n\n## Mail templater CZ/EN\n\nObsahuje zvlášť český a anglický předmět, HTML a textovou variantu pro PIN, uvítání a oznámení. Uložené šablony mají náhled a test odeslání přes SMTP. Před náhledem upravenou šablonu uložte. HTML editor odstraní aktivní obsah a nepovolené atributy. PIN šablona musí mít `{pin}` v HTML i textu.\n\nProměnné: `{name}`, `{pin}`, `{expires}`, `{app_name}`, `{site_name}`, `{site_url}`, `{message}`, `{action_url}`.\n\nŠablony UI i e-mailů používají původní **`tmpl_open(...)`** z `pavel852/php-templates` 2.6. Dynamické hodnoty pro HTML se escapují. Přibalená knihovna není upravená. Potvrzené nesrovnalosti jsou v `docs/php_templates-2.6-findings.md`.\n\nSMTP podporuje STARTTLS a implicitní TLS. SMS brána používá HTTPS POST JSON `{\"to\":\"+420...\",\"message\":\"...\"}` a Bearer token; očekává HTTP 2xx. Pro poskytovatele s jiným protokolem je potřeba adaptér.\n\n## Provoz a další dokumentace\n\n- `docs/SDK.md`: kontrakt aplikací, rolí a modulů.\n- `docs/OPERATIONS.md`: soubory, zálohy, aktualizace a obnova přístupu.\n- `VALIDATION.md`: provedené kontroly a hranice ověření.\n- `README.en.md`: English quick start.\n\nPřed ostrým použitím ověřte doručování na vaší SMTP/SMS bráně a jeden instalační/aktualizační cyklus na testovací doméně s vaší verzí eWebu a eUpdate.",
    "download_url": "https://update.estudium.eu/download.php?project=15b70c7d025661ed&release=90e2873230fca743779292abd0b63b05",
    "package_target": "hosting",
    "requirements": {
        "php": ">=8.2 <9.0"
    },
    "license": {
        "id": "custom",
        "name": "Vlastní",
        "custom_text": "eLoader: Copyright (c) 2026 PB. All rights reserved. Bundled third-party libraries retain their original licenses; see THIRD-PARTY.md."
    },
    "deployment": {
        "archive_root": ".",
        "web_root": "public"
    },
    "project_type": "application",
    "hosting": null
}