Skip to main content

审核标准

提交自动校验(前置拦截)

触发时机: 开发者平台新增版本后实时执行。校验失败直接拦截,不生成审核工单,不进入初审。

校验覆盖范围:

config.ini 校验

检查项说明对应章节
JSON 语法合法(无注释、无尾随逗号、无双引号外单引号)使用 python3 -m json.tool 校验8.4 config.ini 规范
无单引号、无行内注释JSON 标准仅允许双引号,///* */ 均视为注释8.4 config.ini 规范
必填字段完整(id/version/system_id/package/platform/type/name/icon/path 等)对照必填字段清单逐项检查8.4.3 关键规则
type 与 open_path 互斥(两者不可同时存在)Docker 应用使用 type 字段,Deb 应用使用 open_path 字段8.4.2 字段参考
path 字段必须使用 ${ip} 占位符,禁止写死 IP 或域名所有 URL 类 path 必须以 https://${ip}:端口/ 格式书写8.4.3 关键规则
version / system_id / package 三者版本号一致config.ini、DEBIAN/control(或 Docker compose 标签)、app.lang 三处版本号必须统一4.2 版本号规范
platform 字段与实际提交包架构匹配如 platform 声明 x86_64 则包内二进制必须为 x86_64 架构8.4.2 字段参考

app.lang 校验

检查项说明对应章节
14 种语言节点全部存在(key 完整)缺失任一语种节点直接拦截8.5 app.lang 规范
所有语种的 name / descript 字段非空空字段必须填充英文翻译,不允许空白字符串8.5.3 Field Descriptions
文件编码 UTF-8 无 BOM文件头不允许出现 EF BB BF 字节8.5.5 File Encoding & Format
换行符全部为 LF(\n),禁止 CRLF(\r\n)跨平台协作常见问题,Windows 开发者须额外注意4.6 跨平台换行规范

资源文件校验

检查项说明对应章节
图标格式为 SVG不接受 PNG/JPG/ICO 等位图格式8.6 应用图标
SVG 透明背景、viewBox 规范viewBox 属性必须存在且数值合理8.6 应用图标
图标文件路径与 config.ini 中 icon 字段完全匹配包括大小写和目录层级8.6 应用图标
所有脚本文件(.sh/.py/.pl)禁止 CRLF 换行统一使用 LF 换行符4.6 跨平台换行规范

包结构校验

检查项说明对应章节
双包数据包(data.tar.gz)禁止包含二进制可执行文件(DEBIAN 目录下 postinst/preinst 等生命周期脚本除外)业务程序、运行时二进制不可出现在数据包中8.17 双包模式规范
目录名大小写合规(全小写,与 config.ini 中声明一致)Linux 文件系统大小写敏感8.2 通用目录结构

依赖校验

检查项说明对应章节
Docker 应用 depend 字段必须包含 DockerEngine缺少则应用安装时无法确保 Docker 环境就绪5.2 声明运行时依赖

版本规则校验

检查项说明对应章节
版本号严格大于上一已上架版本(如 1.0.1 > 1.0.0)禁止版本回退或重复提交4.2 版本号规范
版本号不含 beta / alpha / rc 等非正式后缀正式上架版本必须去除预发布标识4.2 版本号规范

哈希校验

检查项说明对应章节
上传包的 SHA-256 与提交时声明的 sha256 完全匹配防止传输损坏或人为篡改8.15 打包与校验

结果通知: 自动校验失败仅弹窗提示错误说明与文档链接,不生成审核工单。开发者修复后重新提交,重新触发自动校验。全部通过后方可进入 2 人工审核流程。

四大审核维度

维度审核内容审核人
配置完整性config.ini JSON 格式正确、app.lang 14 种语言齐全、图标 SVG 规范、必填字段无缺失、systemd 服务文件有效专职审核人员
功能可用性安装/启动/停止/卸载完整无异常、架构适配正确、功能与描述一致、端口可用无冲突测试支持人员
安全性无硬编码凭据、非 root 运行、无特权模式、无恶意代码、无漏洞、无违规脚本、哈希值校验通过技术支持人员
合规性内容合法合规、不侵犯知识产权、描述与功能相符、仓库为公开状态、目录结构规范专职审核人员

配置完整性 — 细分检查清单

config.ini:

  • JSON 无注释(///* */)、无尾随逗号
  • 无单引号,所有字符串使用双引号
  • 必填字段完整:id / version / system_id / package / platform / type / name / icon / path
  • typeopen_path 互斥:Docker 应用仅用 type,Deb 应用仅用 open_path
  • path 字段必须使用 ${ip} 占位符,禁止写死 IP、域名或 localhost
  • version / system_id / package 三者版本号一致
  • platform 字段与实际提交包架构匹配
  • 参见 8.4 config.ini 规范

app.lang:

  • 14 个语种节点全部存在(en/zh-CN/zh-HK/ja/ko/fr/de/es/it/pt/ru/ar/th/vi)
  • 所有语种的 name / descript 字段非空,空字段必须填充英文翻译
  • 文件编码 UTF-8 无 BOM
  • 换行符全部 LF(\n),禁止 CRLF(\r\n
  • 参见 8.5 app.lang 规范

图标:

  • SVG 格式,透明背景
  • 包含规范的 viewBox 属性
  • 图标文件路径与 config.ini 中 icon 字段完全匹配(大小写一致)
  • 参见 8.6 应用图标

systemd(仅 Deb 应用):

  • User / Group 为非 root 专属用户
  • 包含 StartLimitInterval / StartLimitBurst 启动限制参数
  • 包含 ProtectSystem=strictProtectSystem=full 系统保护参数
  • 建议包含 NoNewPrivileges=yes / PrivateTmp=yes 等安全加固参数
  • 参见 8.12 Systemd 服务规范

功能可用性 — 细分检查清单

  • 安装流程:无报错、无依赖缺失(command not found)、非预装依赖已打包
  • 启动:服务正常启动、端口监听正常、systemd 状态 active
  • 停止:服务正常停止、无僵尸进程残留
  • 卸载:完全清理安装目录和 service 文件、无残留配置
  • 架构适配:x86_64 / aarch64 双架构分别测试通过
  • 功能与描述一致:app.langdescript 描述的功能均可实际使用
  • 端口检查:不占用 TOS 系统保留端口,不与其他已安装应用冲突
  • UI 可用性(如有):Web 界面正常打开、页面无 JS 报错、首次加载时间 ≤ 5 秒
  • 参见 13 本地测试与调试

安全性 — 细分检查清单

  • 运行权限: User/Group 为非 root,禁止 --privileged 特权模式
  • 凭据扫描: 无硬编码密码、API Key、Token、数据库连接字符串
  • 网络行为:
    • Deb 脚本(postinst/postrm 等)禁止联网执行 apt installpip installcurl | bash 等操作
    • Docker 应用禁止 network_mode: host(容器网络隔离)
    • 端口映射合理,不暴露不必要的端口
  • 镜像来源: Docker 应用镜像必须来源于 Docker Hub,禁止使用 ghcr.io、quay.io、私有仓库等非 Docker Hub 镜像
  • 文件权限: 禁止读写 /etc/root/boot 等系统敏感目录
  • 代码扫描: 无恶意代码(反弹 shell、挖矿程序、数据窃取)、无已知 CVE 高危漏洞
  • 日志安全: 不输出密码、序列号、Token 等敏感信息到日志
  • 哈希校验: 所有审核岗位接收包后必须先验证 SHA-256 与基准一致
  • 参见 11.3 安全审计要求

合规性 — 细分检查清单

  • 内容合法:不包含违法、暴力、色情、赌博等内容
  • 知识产权:不侵犯 TerraMaster 或第三方商标、专利、著作权
  • 描述一致性:app.lang 中 name/descript 与实际功能一致,无夸大宣传
  • 仓库状态:GitHub/Gitee 仓库为公开状态,README 完整
  • 目录结构:符合 8.2 通用目录结构,无冗余、违规文件
  • 开源协议:如使用开源代码,须遵守其许可证要求并在包内声明
  • 隐私合规:不违规采集用户数据、不未经授权上传数据
  • 参见 15.2 仓库要求

审核流程

1.初审阶段

  1. 专职审核人员登录应用管理平台(https://mgmt.terra-master.com),领取"待初审"任务
  2. 下载待审核的应用包,获取基准 SHA-256 哈希值并记录
  3. 验证信息一致性:开发者提交的应用信息与 GitHub/Gitee 仓库内容一致
  4. 验证仓库规范性:仓库为公开状态、目录结构完整、无冗余违规文件
  5. 知识产权合规检查:不侵犯 TerraMaster 或第三方知识产权

初审结果:

  • ✅ 通过 → 应用状态更新为"待人工审核",进入人工审核阶段
  • ❌ 驳回 → 详细填写驳回原因,双渠道通知开发者整改

2.哈希值流转验证

所有审核岗位人员在接收应用包后,必须先验证哈希值与基准哈希值一致,方可开展审核工作。哈希值异常立即暂停并排查。

3.人工审核阶段

按以下顺序进行:

  1. 技术支持人员 → 安全性审核(安全扫描、代码安全、网络安全、数据合规)
  2. 测试支持人员 → 功能与兼容性审核(安装/启停/卸载测试、架构适配、功能完整性)
  3. 专职审核人员 → 合规性与内容审核、用户体验与文档质量审核

各岗位出具明确的审核意见(通过/驳回及具体原因),由专职审核人员汇总形成综合审核结果。

一票否决项(出现任意一项直接驳回,无需继续审核)

  • 应用以 root 用户运行
  • Docker 应用使用特权模式(--privileged
  • Docker 应用 network_mode: host(容器网络隔离违规)
  • 检测到恶意代码或数据窃取行为
  • 应用 ID 与已有应用重复
  • 数据包(<appid>.deb)包含二进制可执行文件(DEBIAN/ 目录下的生命周期脚本 postinst/preinst/postrm/prerm 除外)
  • 校验和不匹配
  • app.lang 存在任意语种 namedescript 字段为空
  • config.ini 使用单引号或包含行内注释
  • 提交包架构与 config.ini 中 platform 字段不匹配

常见驳回原因(按频次排序)

排名驳回原因整改建议适用场景对应章节
1config.ini 包含注释、语法错误或字段缺失(此问题在自动校验阶段即会拦截,开发者提交后会立即收到提示。)移除所有注释,用 python3 -m json.tool 校验 JSON 格式全应用通用8.4 config.ini 规范
2app.lang 缺少语言节点或字段为空补充全部 14 种语言,未翻译的用英文填充全应用通用8.5 app.lang 规范
3Docker compose 镜像来源非 Docker Hub将镜像托管到 Docker Hub,禁止使用 ghcr.io / 私有仓库仅 Docker9.4 镜像与安全要求
4仓库非公开或资源缺失设为公开仓库,上传完整资源(README/源码/配置)全应用通用15.2 仓库要求
5应用功能描述与实际功能不符修正 app.lang 中的 descript 字段,确保描述可验证全应用通用8.5.3 Field Descriptions
6id 字段重复使用全局唯一的应用 ID,提交前在平台搜索确认全应用通用8.4.2 字段参考
7图标格式不符合要求或路径不匹配使用 SVG 格式(透明背景 + viewBox),路径与 config.ini icon 完全一致全应用通用8.6 应用图标
8Deb 包服务无法启停或卸载残留完善 systemd 服务文件和 preinst/postinst/postrm 生命周期脚本仅 Deb8.12 Systemd 服务规范
9Docker 端口冲突、无数据持久化确认端口不与系统保留端口冲突,添加 volumes 卷挂载仅 Docker9.3 docker-compose.yml 规范
10版本号未递增新版本号必须严格大于前一版本,禁止回退或重复提交全应用通用4.2 版本号规范
11Deb 包以 root 运行创建专用非 root 用户(UID ≥ 1000),systemd 中指定 User/Group仅 Deb8.12 Systemd 服务规范
12脚本执行失败,报 bad interpreter检查文件换行符,确保所有 .sh 文件使用 LF 换行(非 CRLF),可用 dos2unix 批量转换全应用通用4.6 跨平台换行规范
13依赖未预装,报 command not found改用 Go/Python 实现或打包静态依赖,禁止依赖系统未预装的 Node.js/Java 等环境仅 Deb2.4 系统预装依赖说明
14Docker 应用使用特权模式移除 privileged: true,改用 cap_add 细粒度权限仅 Docker9.4 镜像与安全要求
15校验和不匹配或缺少校验和文件重新生成 SHA-256 校验和,确保上传包与提交声明一致全应用通用8.15 打包与校验
16config.ini / DEBIAN/control / app.lang 版本号不一致统一三处版本号,建议用脚本自动同步全应用通用4.2 版本号规范
17Docker 应用 network_mode: host移除 network_mode: host,使用 bridge 网络 + 端口映射仅 Docker9.4 镜像与安全要求
18提交包架构与 platform 字段不匹配确保 config.ini 中 platform 与包内二进制架构一致(x86_64 / aarch64)全应用通用8.4.2 字段参考
19app.lang 存在空 name/descript(某语种)所有语种的 name 和 descript 必须填充,未翻译语种用英文填充全应用通用8.5.3 Field Descriptions
20config.ini 使用单引号或包含行内注释JSON 仅允许双引号字符串,移除所有 ///* */ 注释全应用通用8.4 config.ini 规范

驳回整改流程

  1. 审核不通过 → 系统通过「平台消息 + 注册邮箱」双渠道通知开发者
  2. 开发者登录开发者平台查看驳回原因和整改建议
  3. 开发者须在 30 天内 修正问题并重新提交
  4. 超过 30 天未重新提交 → 提交自动关闭
  5. 连续 3 次自动校验失败人工审核驳回均计入驳回次数;连续 3 次驳回后,平台自动生成客服咨询工单(非审核工单),由技术专员一对一协助整改
  6. 整改成功提交新版本后,连续驳回计数自动清零:开发者完成整改、提交新版本并通过审核后,历史驳回次数归零,不再累计
  7. 整改后重新提交 → 更新版本号,以新版本名义重新进入审核流程

永久限制条款:

出现以下任一情形,平台将 永久关闭 该开发者的应用提交通道:

  • 多次提交恶意应用(含病毒、木马、挖矿程序、勒索软件等)
  • 多次提交侵犯第三方知识产权的应用
  • 被举报并核实存在数据窃取、后门等严重安全违规行为
  • 避免或伪造审核材料(虚假仓库、伪造校验和、冒用他人身份等)

永久限制为不可逆处罚,平台将通过邮件发送正式通知并附证据说明。开发者可在 15 个工作日内通过平台申诉渠道提交复议申请。

审核时效

阶段预计耗时说明
自动校验实时提交后即时完成
初审1-2 个工作日信息一致性与仓库规范验证
人工审核3-5 个工作日安全/功能/合规全面审核
上架发布1-2 个工作日审核通过后上架至应用中心

总审核周期通常为 5-8 个工作日。从提交到初审结果通常为 1-2 个工作日,可登录开发者平台实时查看进度。高峰期可能延长,请提前规划提交时间。