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 kontroly | Popis | Reference |
|---|---|---|
| Platná syntaxe JSON (žádné komentáře, žádné koncové čárky, žádné jednoduché uvozovky mimo dvojité uvozovky) | Ověřte pomocí python3 -m json.tool | 8.4 Specifikace config.ini |
| Žádné jednoduché uvozovky, žádné vložené komentáře | Standard JSON povoluje pouze dvojité uvozovky; // nebo /* */ jsou považovány za komentáře | 8.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žce | 8.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_path | 8.4.2 Reference polí |
Pole path musí používat zástupný symbol ${ip}; žádná pevně zakódovaná IP nebo doména | Vš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 sjednocena | 4.2 Specifikace čísla verze |
| Pole platform odpovídá skutečné architektuře podaného balíčku | např. pokud platform deklaruje x86_64, binárky v balíčku musí být architektury x86_64 | 8.4.2 Reference polí |
Validace app.lang
| Položka kontroly | Popis | Reference |
|---|---|---|
| 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 jazyky | Prázdná pole musí být vyplněna anglickými překlady; prázdné řetězce nejsou povoleny | 8.5.3 Popisy polí |
| Kódování souboru je UTF-8 bez BOM | Bajty EF BB BF nejsou v hlavičce souboru povoleny | 8.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í pozornost | 4.6 Specifikace konců řádků pro více platforem |
Validace souborů prostředků
| Položka kontroly | Popis | Reference |
|---|---|---|
| Formát ikony je SVG | PNG/JPG/ICO ani jiné bitmapové formáty nejsou přijímány | 8.6 Ikony aplikací |
| SVG má transparentní pozadí, platný viewBox | Atribut viewBox musí existovat s rozumnými hodnotami | 8.6 Ikony aplikací |
Cesta souboru ikony přesně odpovídá poli icon v config.ini | Vč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ů CRLF | Sjednocené konce řádků LF | 4.6 Specifikace konců řádků pro více platforem |
Validace struktury balíčku
| Položka kontroly | Popis | Reference |
|---|---|---|
| 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íčku | 8.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ísmena | 8.2 Běžná struktura adresářů |
Validace závislostí
| Položka kontroly | Popis | Reference |
|---|---|---|
Pole depend aplikace Docker musí zahrnovat DockerEngine | Bez něj nelze zaručit připravenost prostředí Docker při instalaci | 5.2 Deklarování běhových závislostí |
Validace pravidel verzí
| Položka kontroly | Popis | Reference |
|---|---|---|
| Čí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áno | 4.2 Specifikace čísla verze |
Číslo verze nesmí obsahovat neformální přípony, jako je beta / alpha / rc | Identifikátory před vydáním musí být u oficiálních zveřejňovaných verzí odstraněny | 4.2 Specifikace čísla verze |
Validace hash
| Položka kontroly | Popis | Reference |
|---|---|---|
| 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 manipulaci | 8.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ěr | Obsah kontroly | Kontrolor |
|---|---|---|
| Úplnost konfigurace | config.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 systemd | Vyhrazení pracovníci kontroly |
| Funkční dostupnost | Instalace/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ěhlo | Pracovní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á specifikaci | Vyhrazení 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/pathatd. typeaopen_pathse vzájemně vylučují: aplikace Docker používají pouzetype; aplikace Deb používají pouzeopen_path- Pole
pathmusí používat zástupný symbol${ip}; pevně zakódovaná IP, doména nebo localhost je zakázán - Čísla verzí
version/system_id/packagekonzistentní - Pole
platformodpoví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/descriptneprá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
iconv config.ini (včetně rozlišování velkých a malých písmen) - Viz 8.6 Ikony aplikací
systemd (pouze aplikace Deb):
User/Groupjsou vyhrazení nerootoví uživatelé- Zahrnuje parametry limitů spouštění
StartLimitInterval/StartLimitBurst - Zahrnuje parametry ochrany systému
ProtectSystem=strictneboProtectSystem=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
descriptvapp.langjsou 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
--privilegedje 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
- Skripty Deb (postinst/postrm atd.) mají zakázáno provádět síťové operace, jako jsou
- 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/descriptvapp.langodpoví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
- 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"
- Stáhnou balíček aplikace v kontrole, získají výchozí hash SHA-256 a zaznamenají jej
- Ověří konzistenci informací: informace o aplikaci podané vývojářem odpovídají obsahu úložiště GitHub/Gitee
- Ověří shodu úložiště: úložiště je veřejné, struktura adresářů je kompletní, žádné nadbytečné ani zakázané soubory
- 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í:
- Pracovníci technické podpory → Bezpečnostní kontrola (bezpečnostní skenování, zabezpečení kódu, síťové zabezpečení, soulad dat)
- Pracovníci podpory testování → Kontrola funkčnosti a kompatibility (testování instalace/spuštění/zastavení/odinstalace, adaptace architektury, funkční úplnost)
- 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ářiDEBIAN/) - Neshoda kontrolních součtů
- Jakýkoli jazyk v app.lang má prázdné pole
namenebodescript - config.ini používá jednoduché uvozovky nebo obsahuje vložené komentáře
- Architektura podaného balíčku neodpovídá poli
platformv config.ini
Běžné důvody zamítnutí (řazeno podle četnosti)
| Pořadí | Důvod zamítnutí | Návrh nápravy | Rozsah použití | Reference |
|---|---|---|---|---|
| 1 | config.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.tool | Všechny aplikace | 8.4 Specifikace config.ini |
| 2 | V app.lang chybí jazykové uzly nebo má prázdná pole | Dokončete všech 14 jazyků; nepřeložené vyplňte angličtinou | Všechny aplikace | 8.5 Specifikace app.lang |
| 3 | Zdroj obrazu Docker compose není z Docker Hub | Hostujte obrazy na Docker Hub; ghcr.io / soukromé registry jsou zakázány | Pouze Docker | 9.4 Požadavky na obraz a zabezpečení |
| 4 | Úložiště není veřejné nebo chybí prostředky | Nastavte úložiště jako veřejné; nahrajte kompletní prostředky (README/zdrojový kód/konfigurace) | Všechny aplikace | 15.2 Požadavky na úložiště |
| 5 | Popis funkce aplikace neodpovídá skutečným funkcím | Opravte pole descript v app.lang, aby byly popisy ověřitelné | Všechny aplikace | 8.5.3 Popisy polí |
| 6 | Duplicitní pole id | Použijte globálně jedinečné ID aplikace; před podáním vyhledejte a potvrďte na platformě | Všechny aplikace | 8.4.2 Reference polí |
| 7 | Formá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.ini | Všechny aplikace | 8.6 Ikony aplikací |
| 8 | Služba balíčku Deb se nespouští/nezastavuje nebo po odinstalaci zůstávají zbytkové soubory | Vylepšete soubor služby systemd a skripty životního cyklu preinst/postinst/postrm | Pouze Deb | 8.12 Specifikace služby systemd |
| 9 | Konflikt portů Docker, žádná perzistence dat | Zajistěte, aby porty nekolidovaly s vyhrazenými systémovými porty; přidejte svazky pro perzistenci dat | Pouze Docker | 9.3 Specifikace docker-compose.yml |
| 10 | Číslo verze nezvýšeno | Nové číslo verze musí být přísně vyšší než předchozí verze; vrácení nebo duplicitní podání zakázáno | Všechny aplikace | 4.2 Specifikace čísla verze |
| 11 | Balíček Deb běží jako root | Vytvořte vyhrazeného nerootového uživatele (UID ≥ 1000); určete User/Group v systemd | Pouze Deb | 8.12 Specifikace služby systemd |
| 12 | Provádění skriptu selže s bad interpreter | Zkontrolujte konce řádků souborů; zajistěte, aby všechny soubory .sh používaly LF (ne CRLF); použijte dos2unix pro hromadný převod | Všechny aplikace | 4.6 Specifikace konců řádků pro více platforem |
| 13 | Závislost není předinstalovaná; command not found | Použijte implementace v Go/Pythonu nebo přibalte statické závislosti; nespoléhejte na nepředinstalovaná prostředí, jako jsou Node.js/Java | Pouze Deb | 2.4 Předinstalované závislosti systému |
| 14 | Aplikace Docker používá privilegovaný režim | Odstraňte privileged: true; místo toho použijte cap_add pro jemnozrnná oprávnění | Pouze Docker | 9.4 Požadavky na obraz a zabezpečení |
| 15 | Neshoda 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 aplikace | 8.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 synchronizaci | Všechny aplikace | 4.2 Specifikace čísla verze |
| 17 | Aplikace Docker používá network_mode: host | Odstraňte network_mode: host; místo toho použijte bridge síť + mapování portů | Pouze Docker | 9.4 Požadavky na obraz a zabezpečení |
| 18 | Architektura podaného balíčku neodpovídá poli platform | Zajistěte, aby platform v config.ini odpovídal architektuře binárek v balíčku (x86_64 / aarch64) | Všechny aplikace | 8.4.2 Reference polí |
| 19 | app.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čtinu | Všechny aplikace | 8.5.3 Popisy polí |
| 20 | config.ini používá jednoduché uvozovky nebo obsahuje vložené komentáře | JSON povoluje pouze řetězce s dvojitými uvozovkami; odstraňte všechny komentáře // nebo /* */ | Všechny aplikace | 8.4 Specifikace config.ini |
Proces nápravy po zamítnutí
- Kontrola neprošla → Systém informuje vývojáře prostřednictvím dvou kanálů: "Zpráva platformy + registrovaný e-mail"
- Vývojář se přihlásí na Developer Platform a zobrazí důvody zamítnutí a návrhy nápravy
- Vývojář musí opravit problémy a znovu podat do 30 dnů
- Žádné znovupodání po 30 dnech → Podání je automaticky uzavřeno
- 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ě
- 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
- 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áze | Odhadovaná doba trvání | Popis |
|---|---|---|
| Automatizovaná validace | V reálném čase | Dokončeno okamžitě po podání |
| Úvodní kontrola | 1–2 pracovní dny | Ověření konzistence informací a shody úložiště |
| Ruční kontrola | 3–5 pracovních dnů | Komplexní kontrola zabezpečení/funkčnosti/souladu |
| Zveřejnění a uvedení | 1–2 pracovní dny | Uvedeno 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.