Skip to main content

Standardy kontroly

Automatizovaná validace podání (předfiltr)

Načasování spuštění: Provádí se v reálném čase po podání nové verze na Developer Platform. Selhání validace vede k okamžitému zablokování; nevytvoří se tiket kontroly a nezahájí se úvodní kontrola.

Rozsah validace:

Validace config.ini

Položka kontrolyPopisReference
Platná syntaxe JSON (žádné komentáře, žádné koncové čárky, žádné jednoduché uvozovky mimo dvojité uvozovky)Ověřte pomocí python3 -m json.tool8.4 Specifikace config.ini
Žádné jednoduché uvozovky, žádné vložené komentářeStandard JSON povoluje pouze dvojité uvozovky; // nebo /* */ jsou považovány za komentáře8.4 Specifikace config.ini
Všechna povinná pole přítomna (id/version/system_id/package/platform/type/name/icon/path atd.)Zkontrolujte proti kontrolnímu seznamu povinných polí položku po položce8.4.3 Klíčová pravidla
type a open_path se vzájemně vylučují (obě nemohou existovat)Aplikace Docker používají pole type, aplikace Deb používají pole open_path8.4.2 Reference polí
Pole path musí používat zástupný symbol ${ip}; žádná pevně zakódovaná IP nebo doménaVšechny cesty typu URL musí být zapsány jako https://${ip}:port/8.4.3 Klíčová pravidla
Čísla verzí version / system_id / package jsou konzistentníČísla verzí v config.ini, DEBIAN/control (nebo tag Docker compose) a app.lang musí být sjednocena4.2 Specifikace čísla verze
Pole platform odpovídá skutečné architektuře podaného balíčkunapř. pokud platform deklaruje x86_64, binárky v balíčku musí být architektury x86_648.4.2 Reference polí

Validace app.lang

Položka kontrolyPopisReference
Všech 14 jazykových uzlů přítomno (klíče kompletní)Chybějící jakýkoli jazykový uzel vede k okamžitému zablokování8.5 Specifikace app.lang
Pole name / descript neprázdná pro všechny jazykyPrázdná pole musí být vyplněna anglickými překlady; prázdné řetězce nejsou povoleny8.5.3 Popisy polí
Kódování souboru je UTF-8 bez BOMBajty EF BB BF nejsou v hlavičce souboru povoleny8.5.5 Kódování a formát souboru
Všechny konce řádků musí být LF (\n); CRLF (\r\n) zakázánČastý problém spolupráce napříč platformami; vývojáři na Windows mu musí věnovat zvláštní pozornost4.6 Specifikace konců řádků pro více platforem

Validace souborů prostředků

Položka kontrolyPopisReference
Formát ikony je SVGPNG/JPG/ICO ani jiné bitmapové formáty nejsou přijímány8.6 Ikony aplikací
SVG má transparentní pozadí, platný viewBoxAtribut viewBox musí existovat s rozumnými hodnotami8.6 Ikony aplikací
Cesta souboru ikony přesně odpovídá poli icon v config.iniVčetně rozlišování velkých a malých písmen a hierarchie adresářů8.6 Ikony aplikací
Všechny skriptové soubory (.sh/.py/.pl) nesmějí používat konce řádků CRLFSjednocené konce řádků LF4.6 Specifikace konců řádků pro více platforem

Validace struktury balíčku

Položka kontrolyPopisReference
Datový balíček duálního balíčku (data.tar.gz) nesmí obsahovat binární spustitelné soubory (kromě skriptů životního cyklu, jako jsou postinst/preinst v adresáři DEBIAN)Obchodní programy a běhové binárky se nesmějí objevit v datovém balíčku8.17 Specifikace režimu duálního balíčku
Shoda velkých a malých písmen v názvech adresářů (vše malými písmeny, konzistentní s deklaracemi v config.ini)Souborový systém Linux rozlišuje velká a malá písmena8.2 Běžná struktura adresářů

Validace závislostí

Položka kontrolyPopisReference
Pole depend aplikace Docker musí zahrnovat DockerEngineBez něj nelze zaručit připravenost prostředí Docker při instalaci5.2 Deklarování běhových závislostí

Validace pravidel verzí

Položka kontrolyPopisReference
Číslo verze musí být přísně vyšší než poslední zveřejněná verze (např. 1.0.1 > 1.0.0)Vrácení verze nebo duplicitní podání je zakázáno4.2 Specifikace čísla verze
Číslo verze nesmí obsahovat neformální přípony, jako je beta / alpha / rcIdentifikátory před vydáním musí být u oficiálních zveřejňovaných verzí odstraněny4.2 Specifikace čísla verze

Validace hash

Položka kontrolyPopisReference
SHA-256 nahraného balíčku musí přesně odpovídat deklarovanému sha256 při podáníZabraňuje poškození při přenosu nebo manipulaci8.15 Balení a kontrolní součty

Oznámení výsledku: Selhání automatizované validace zobrazí pouze vyskakovací okno s popisem chyby a odkazem na dokumentaci; nevytvoří se tiket kontroly. Vývojáři opraví a znovu odešlou, což znovu spustí automatizovanou validaci. Teprve po úspěšném absolvování všech kontrol může proces pokračovat k pracovnímu postupu ruční kontroly v oddílu 16.2.

Čtyři rozměry kontroly

RozměrObsah kontrolyKontrolor
Úplnost konfiguraceconfig.ini ve správném formátu JSON, app.lang se všemi 14 jazyky, ikona odpovídající SVG, žádná chybějící povinná pole, platný soubor služby systemdVyhrazení pracovníci kontroly
Funkční dostupnostInstalace/spuštění/zastavení/odinstalace kompletní bez chyb, správná adaptace architektury, funkce odpovídají popisu, porty dostupné bez konfliktůPracovníci podpory testování
ZabezpečeníŽádná pevně zakódovaná pověření, spouštění bez root, žádný privilegovaný režim, žádný škodlivý kód, žádné zranitelnosti, žádné zakázané skripty, ověření hash proběhloPracovníci technické podpory
Dodržování předpisůObsah je legální a vyhovující, žádné porušení duševního vlastnictví, popis odpovídá funkcím, úložiště je veřejné, struktura adresářů odpovídá specifikaciVyhrazení pracovníci kontroly

Úplnost konfigurace — podrobný kontrolní seznam

config.ini:

  • JSON bez komentářů (//, /* */), žádné koncové čárky
  • Žádné jednoduché uvozovky; všechny řetězce používají dvojité uvozovky
  • Všechna povinná pole přítomna: id / version / system_id / package / platform / type / name / icon / path atd.
  • type a open_path se vzájemně vylučují: aplikace Docker používají pouze type; aplikace Deb používají pouze open_path
  • Pole path musí používat zástupný symbol ${ip}; pevně zakódovaná IP, doména nebo localhost je zakázán
  • Čísla verzí version / system_id / package konzistentní
  • Pole platform odpovídá skutečné architektuře podaného balíčku
  • Viz 8.4 Specifikace config.ini

app.lang:

  • Všech 14 jazykových uzlů přítomno (en/zh-CN/zh-HK/ja/ko/fr/de/es/it/pt/ru/ar/th/vi)
  • Pole name / descript neprázdná pro všechny jazyky; prázdná pole musí být vyplněna anglickými překlady
  • Kódování souboru UTF-8 bez BOM
  • Všechny konce řádků LF (\n); CRLF (\r\n) zakázán
  • Viz 8.5 Specifikace app.lang

Ikona:

  • Formát SVG, transparentní pozadí
  • Obsahuje platný atribut viewBox
  • Cesta souboru ikony přesně odpovídá poli icon v config.ini (včetně rozlišování velkých a malých písmen)
  • Viz 8.6 Ikony aplikací

systemd (pouze aplikace Deb):

  • User / Group jsou vyhrazení nerootoví uživatelé
  • Zahrnuje parametry limitů spouštění StartLimitInterval / StartLimitBurst
  • Zahrnuje parametry ochrany systému ProtectSystem=strict nebo ProtectSystem=full
  • Doporučeno: zahrnout parametry posílení zabezpečení, jako jsou NoNewPrivileges=yes / PrivateTmp=yes
  • Viz 8.12 Specifikace služby systemd

Funkční dostupnost — podrobný kontrolní seznam

  • Proces instalace: žádné chyby, žádné chybějící závislosti (command not found), nepředinstalované závislosti přibaleny
  • Spuštění: služba se spouští normálně, naslouchání portů funguje, stav systemd je active
  • Vypnutí: služba se zastavuje normálně, nezůstávají žádné zombie procesy
  • Odinstalace: instalační adresář a soubory služeb zcela vyčištěny, žádná zbytková konfigurace
  • Adaptace architektury: duální architektury x86_64 / aarch64 testovány samostatně a prošly
  • Funkce odpovídají popisu: všechny funkce popsané v descript v app.lang jsou skutečně použitelné
  • Kontrola portů: nezabírá vyhrazené systémové porty TOS, žádný konflikt s jinými nainstalovanými aplikacemi
  • Použitelnost UI (pokud je relevantní): webové rozhraní se otevírá normálně, na stránce žádné chyby JS, doba prvního načtení ≤ 5 sekund
  • Viz 13 Lokální testování a ladění

Zabezpečení — podrobný kontrolní seznam

  • Spouštěcí oprávnění: User/Group nejsou root; privilegovaný režim --privileged je zakázán
  • Skenování pověření: Žádná pevně zakódovaná hesla, API Keys, Tokeny ani řetězce připojení k databázi
  • Síťové chování:
    • Skripty Deb (postinst/postrm atd.) mají zakázáno provádět síťové operace, jako jsou apt install, pip install, curl | bash
    • Aplikace Docker mají zakázáno používat network_mode: host (izolace sítě kontejneru)
    • Mapování portů je rozumné; nejsou vystaveny zbytečné porty
  • Zdroj obrazu: Obrazy aplikací Docker musí pocházet z Docker Hub; použití ghcr.io, quay.io, soukromých registrů nebo jiných obrazů mimo Docker Hub je zakázáno
  • Oprávnění souborů: Čtení/zápis do systémově citlivých adresářů, jako jsou /etc, /root, /boot, je zakázán
  • Skenování kódu: Žádný škodlivý kód (reverse shelly, těžaři kryptoměn, krádež dat), žádné známé vysoce rizikové zranitelnosti CVE
  • Bezpečnost protokolů: Žádný výstup hesel, sériových čísel, Tokenů ani jiných citlivých informací do protokolů
  • Ověření hash: Všechny kontrolní pozice musí před pokračováním ověřit, že SHA-256 odpovídá výchozí hodnotě
  • Viz 11.3 Požadavky na bezpečnostní audit

Dodržování předpisů — podrobný kontrolní seznam

  • Legálnost obsahu: Žádný nelegální, násilný, pornografický, hazardní ani jiný zakázaný obsah
  • Duševní vlastnictví: Žádné porušení ochranných známek, patentů ani autorských práv společnosti TerraMaster ani třetích stran
  • Konzistence popisu: name/descript v app.lang odpovídají skutečným funkcím; žádná přehnaná tvrzení
  • Stav úložiště: Úložiště GitHub/Gitee je veřejné; README je kompletní
  • Struktura adresářů: Odpovídá 8.2 Běžná struktura adresářů; žádné nadbytečné ani zakázané soubory
  • Open-source licence: Pokud je použit open-source kód, musí být dodrženy a v balíčku deklarovány jeho licenční požadavky
  • Soulad se soukromím: Žádný neoprávněný sběr uživatelských dat; žádné neoprávněné nahrávání dat
  • Viz 15.2 Požadavky na úložiště

Pracovní postup kontroly

1.Fáze úvodní kontroly

  1. Vyhrazení pracovníci kontroly se přihlásí do Platformy pro správu aplikací (https://mgmt.terra-master.com) a převezmou úlohy "Pending Initial Review"
  2. Stáhnou balíček aplikace v kontrole, získají výchozí hash SHA-256 a zaznamenají jej
  3. Ověří konzistenci informací: informace o aplikaci podané vývojářem odpovídají obsahu úložiště GitHub/Gitee
  4. Ověří shodu úložiště: úložiště je veřejné, struktura adresářů je kompletní, žádné nadbytečné ani zakázané soubory
  5. Kontrola souladu s duševním vlastnictvím: žádné porušení duševního vlastnictví společnosti TerraMaster ani třetích stran

Výsledky úvodní kontroly:

  • ✅ Prošlo → Stav aplikace aktualizován na "Pending Manual Review", aplikace vstupuje do fáze ruční kontroly
  • ❌ Zamítnuto → Uvedeny podrobné důvody zamítnutí; vývojář je informován prostřednictvím obou kanálů za účelem nápravy

2.Ověření toku hodnoty hash

Všichni pracovníci kontroly musí před zahájením své kontrolní práce nejprve ověřit, že hodnota hash odpovídá výchozí hodnotě hash. Pokud je hodnota hash abnormální, okamžitě pozastavte práci a prošetřete.

3.Fáze ruční kontroly

Pokračujte v následujícím pořadí:

  1. Pracovníci technické podpory → Bezpečnostní kontrola (bezpečnostní skenování, zabezpečení kódu, síťové zabezpečení, soulad dat)
  2. Pracovníci podpory testování → Kontrola funkčnosti a kompatibility (testování instalace/spuštění/zastavení/odinstalace, adaptace architektury, funkční úplnost)
  3. Vyhrazení pracovníci kontroly → Kontrola souladu a obsahu, kontrola kvality uživatelské zkušenosti a dokumentace

Každá pozice poskytuje jasné kontrolní stanovisko (schválení/zamítnutí s konkrétními důvody). Vyhrazení pracovníci kontroly konsolidují výsledky do komplexního výsledku kontroly.

Položky s právem veta (jakákoli jediná položka spustí okamžité zamítnutí; další kontrola není nutná)

  • Aplikace běží jako uživatel root
  • Aplikace Docker používá privilegovaný režim (--privileged)
  • Aplikace Docker používá network_mode: host (porušení izolace sítě kontejneru)
  • Detekován škodlivý kód nebo chování krádeže dat
  • ID aplikace je duplicitní s existující aplikací
  • Datový balíček (<appid>.deb) obsahuje binární spustitelné soubory (kromě skriptů životního cyklu postinst/preinst/postrm/prerm v adresáři DEBIAN/)
  • Neshoda kontrolních součtů
  • Jakýkoli jazyk v app.lang má prázdné pole name nebo descript
  • config.ini používá jednoduché uvozovky nebo obsahuje vložené komentáře
  • Architektura podaného balíčku neodpovídá poli platform v config.ini

Běžné důvody zamítnutí (řazeno podle četnosti)

PořadíDůvod zamítnutíNávrh nápravyRozsah použitíReference
1config.ini obsahuje komentáře, chyby syntaxe nebo chybějící pole (tento problém je zachycen ve fázi automatizované validace; vývojáři obdrží okamžitou výzvu po podání.)Odstraňte všechny komentáře; ověřte formát JSON pomocí python3 -m json.toolVšechny aplikace8.4 Specifikace config.ini
2V app.lang chybí jazykové uzly nebo má prázdná poleDokončete všech 14 jazyků; nepřeložené vyplňte angličtinouVšechny aplikace8.5 Specifikace app.lang
3Zdroj obrazu Docker compose není z Docker HubHostujte obrazy na Docker Hub; ghcr.io / soukromé registry jsou zakázányPouze Docker9.4 Požadavky na obraz a zabezpečení
4Úložiště není veřejné nebo chybí prostředkyNastavte úložiště jako veřejné; nahrajte kompletní prostředky (README/zdrojový kód/konfigurace)Všechny aplikace15.2 Požadavky na úložiště
5Popis funkce aplikace neodpovídá skutečným funkcímOpravte pole descript v app.lang, aby byly popisy ověřitelnéVšechny aplikace8.5.3 Popisy polí
6Duplicitní pole idPoužijte globálně jedinečné ID aplikace; před podáním vyhledejte a potvrďte na platforměVšechny aplikace8.4.2 Reference polí
7Formát ikony neodpovídá požadavkům nebo cesta nesouhlasíPoužijte formát SVG (transparentní pozadí + viewBox); cesta musí přesně odpovídat icon v config.iniVšechny aplikace8.6 Ikony aplikací
8Služba balíčku Deb se nespouští/nezastavuje nebo po odinstalaci zůstávají zbytkové souboryVylepšete soubor služby systemd a skripty životního cyklu preinst/postinst/postrmPouze Deb8.12 Specifikace služby systemd
9Konflikt portů Docker, žádná perzistence datZajistěte, aby porty nekolidovaly s vyhrazenými systémovými porty; přidejte svazky pro perzistenci datPouze Docker9.3 Specifikace docker-compose.yml
10Číslo verze nezvýšenoNové číslo verze musí být přísně vyšší než předchozí verze; vrácení nebo duplicitní podání zakázánoVšechny aplikace4.2 Specifikace čísla verze
11Balíček Deb běží jako rootVytvořte vyhrazeného nerootového uživatele (UID ≥ 1000); určete User/Group v systemdPouze Deb8.12 Specifikace služby systemd
12Provádění skriptu selže s bad interpreterZkontrolujte konce řádků souborů; zajistěte, aby všechny soubory .sh používaly LF (ne CRLF); použijte dos2unix pro hromadný převodVšechny aplikace4.6 Specifikace konců řádků pro více platforem
13Závislost není předinstalovaná; command not foundPoužijte implementace v Go/Pythonu nebo přibalte statické závislosti; nespoléhejte na nepředinstalovaná prostředí, jako jsou Node.js/JavaPouze Deb2.4 Předinstalované závislosti systému
14Aplikace Docker používá privilegovaný režimOdstraňte privileged: true; místo toho použijte cap_add pro jemnozrnná oprávněníPouze Docker9.4 Požadavky na obraz a zabezpečení
15Neshoda kontrolních součtů nebo chybějící soubor kontrolních součtůPřegenerujte kontrolní součet SHA-256; zajistěte, aby nahraný balíček odpovídal deklaraci při podáníVšechny aplikace8.15 Balení a kontrolní součty
16Čísla verzí config.ini / DEBIAN/control / app.lang nejsou konzistentníSjednoťte čísla verzí na všech třech místech; doporučuje se používat skripty pro automatickou synchronizaciVšechny aplikace4.2 Specifikace čísla verze
17Aplikace Docker používá network_mode: hostOdstraňte network_mode: host; místo toho použijte bridge síť + mapování portůPouze Docker9.4 Požadavky na obraz a zabezpečení
18Architektura podaného balíčku neodpovídá poli platformZajistěte, aby platform v config.ini odpovídal architektuře binárek v balíčku (x86_64 / aarch64)Všechny aplikace8.4.2 Reference polí
19app.lang má prázdné name/descript (v některém jazyce)name a descript pro všechny jazyky musí být vyplněny; nepřeložené jazyky používají jako výplň angličtinuVšechny aplikace8.5.3 Popisy polí
20config.ini používá jednoduché uvozovky nebo obsahuje vložené komentářeJSON povoluje pouze řetězce s dvojitými uvozovkami; odstraňte všechny komentáře // nebo /* */Všechny aplikace8.4 Specifikace config.ini

Proces nápravy po zamítnutí

  1. Kontrola neprošla → Systém informuje vývojáře prostřednictvím dvou kanálů: "Zpráva platformy + registrovaný e-mail"
  2. Vývojář se přihlásí na Developer Platform a zobrazí důvody zamítnutí a návrhy nápravy
  3. Vývojář musí opravit problémy a znovu podat do 30 dnů
  4. Žádné znovupodání po 30 dnech → Podání je automaticky uzavřeno
  5. Po sobě jdoucí 3 selhání automatizované validace nebo zamítnutí ruční kontroly se obě počítají do počtu zamítnutí; po 3 po sobě jdoucích zamítnutích platforma automaticky vygeneruje tiket konzultace se zákaznickým servisem (nikoli tiket kontroly), přičemž technický specialista poskytne individuální asistenci při nápravě
  6. Po úspěšné nápravě a podání nové verze se počet po sobě jdoucích zamítnutí automaticky vynuluje: Jakmile vývojář dokončí nápravu, podá novou verzi a projde kontrolou, historický počet zamítnutí se vynuluje na nulu a dále se nekumuluje
  7. Znovupodání po nápravě → Aktualizujte číslo verze a znovu vstupte do pracovního postupu kontroly pod novou verzí

Podmínky trvalého omezení:

Za kterékoli z následujících okolností platforma trvale uzavře kanál podávání aplikací vývojáře:

  • Vícenásobná podání škodlivých aplikací (obsahujících viry, trojské koně, těžaře kryptoměn, ransomware atd.)
  • Vícenásobná podání aplikací porušujících práva duševního vlastnictví třetích stran
  • Ověřená hlášení o krádeži dat, zadních vrátkách nebo jiných závažných bezpečnostních porušeních
  • Obcházení nebo falšování kontrolních materiálů (falešná úložiště, padělané kontrolní součty, vydávání se za identity jiných osob atd.)

Trvalé omezení je nevratný trest. Platforma zašle formální oznámení e-mailem s podpůrnými důkazy. Vývojáři mohou do 15 pracovních dnů podat odvolání prostřednictvím odvolacího kanálu platformy.

Časové osy kontroly

FázeOdhadovaná doba trváníPopis
Automatizovaná validaceV reálném časeDokončeno okamžitě po podání
Úvodní kontrola1–2 pracovní dnyOvěření konzistence informací a shody úložiště
Ruční kontrola3–5 pracovních dnůKomplexní kontrola zabezpečení/funkčnosti/souladu
Zveřejnění a uvedení1–2 pracovní dnyUvedeno v App Center po schválení

Celkový cyklus kontroly je obvykle 5–8 pracovních dnů. Výsledky úvodní kontroly od podání jsou obvykle dostupné do 1–2 pracovních dnů; průběh můžete sledovat v reálném čase na Developer Platform. Ve špičkách může dojít ke zpožděním; načasujte své podání odpovídajícím způsobem.