惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
GbyAI
GbyAI
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Blog of Author Tim Ferriss
Vercel News
Vercel News
Microsoft Azure Blog
Microsoft Azure Blog
Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
AWS News Blog
AWS News Blog
Spread Privacy
Spread Privacy
Apple Machine Learning Research
Apple Machine Learning Research
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Privacy International News Feed
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
Hugging Face - Blog
Hugging Face - Blog
H
Heimdal Security Blog
N
News and Events Feed by Topic
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Troy Hunt's Blog
大猫的无限游戏
大猫的无限游戏
SecWiki News
SecWiki News
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
Hacker News: Ask HN
Hacker News: Ask HN
Know Your Adversary
Know Your Adversary
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
S
Secure Thoughts
云风的 BLOG
云风的 BLOG
O
OpenAI News
The Cloudflare Blog
Jina AI
Jina AI
U
Unit 42
L
Lohrmann on Cybersecurity
Attack and Defense Labs
Attack and Defense Labs
The Register - Security
The Register - Security
G
Google Developers Blog
量子位
Simon Willison's Weblog
Simon Willison's Weblog
V
Visual Studio Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
GRAHAM CLULEY
TaoSecurity Blog
TaoSecurity Blog

Halo - 强大易用的开源建站工具 | 应用市场

ShaneYu EverUs Ethereal 主题漫游 Moonlit Playground 山月记 Shortcode 初春图床 AI智能套件 文档 Cosolar 演示站防护 业余无线电 GardMap 通联网格地图 元数据字段管家 评论组件 Next 统一身份认证 Morpho Moesora 全能右键 保险箱插件 Earthquake Aurora InkNest Quiet 项目集 AI回评 AI Foundation Kaze 域名主题路由 代码增强(高亮+折叠+长图折叠) 氢·简 文章组件 Floating Particles Huohuo Weather Glass Vahlok AstraHub 星链 全局私密 业余无线电 QSL卡片管理系统 Bark 推送 微信读书(WeRead)信息展示 自定义社交分享卡片 Halorum 文章加密 KMath 轻言 Navidrome 播放器 家庭私厨 页面转换器 Sky Blog 3(macOS) 在线显示 邀请码注册 安全跳转助手 日程日历 Cartly 商城主题
软件分发管理
2026-07-20 · via Halo - 强大易用的开源建站工具 | 应用市场

软件分发管理插件

适配 Halo 2.x 的软件分发管理插件,提供后台软件管理、版本包分片上传、Halo Attachment 附件存储复用、临时下载链接、防盗链、下载日志、统计面板、运营审计、反馈和订阅能力。

已实现功能

  • 软件管理:新增、编辑、删除、批量删除、置顶、上下架、排序权重、关键词/分类/系统筛选
  • 版本管理:多版本包、推荐版本、系统类型、架构、发布通道、最低系统要求、版本说明、MD5、SHA256、镜像下载源、下载次数
  • 上传能力:分片上传、断点续传、后缀白名单、自动计算 MD5/SHA256、重复文件提示、失败后可重新触发上传
  • 下载能力:游客下载或仅登录下载、限时 token、防盗链、同 IP 同版本短时间限流、Halo Attachment 共享链接跳转
  • 下载日志:记录 IP、用户、时间、软件、版本,后台可检索并导出 CSV
  • 数据统计:总下载、今日下载、热门版本排行、最近 7 天趋势
  • 运营管理:后台操作审计、用户反馈、更新订阅列表
  • 前台页面:/software 软件列表,/software/detail/{id} 软件详情、订阅、反馈和下载
  • 封面辅助:后台使用 Halo 风格封面选择器,支持本地上传、附件库选择、图片链接填写和预览

目录

src/main/java/space/itcainiao/pluginsoftwarecategory
├─ controller   后台接口、公开接口、前台页面
├─ dto          请求和响应 DTO
├─ model        Halo Custom Extension 模型
├─ service      上传、下载、软件、分类、统计、设置、运营服务

ui/src
├─ components/VersionUploadModal.vue
├─ views/SoftwareListView.vue
├─ views/CategoryView.vue
├─ views/StatsView.vue
├─ views/DownloadLogsView.vue
├─ views/OperationsView.vue
├─ views/SettingsView.vue
├─ api.ts
└─ index.ts

## 数据存储

插件业务数据按 Halo 规范存储为 Custom Extension,不再使用插件私有 H2/JPA 数据表:

- `Software`:软件基础信息、SEO 信息、官网、标签、排序、状态
- `SoftwareVersion`:软件版本包,按 `spec.softwareId` 关联软件,承载附件引用、系统/架构、校验值、镜像源、下载量和发布状态
- `SoftwareCategory`:分类
- `SoftwareDownloadLog`:下载日志
- `SoftwareUploadSession`:分片上传会话
- `SoftwareAuditLog`:后台操作审计
- `SoftwareFeedback`:用户反馈
- `SoftwareSubscription`:更新订阅

文件本体仍存储在 Halo Attachment 中,插件只保存附件 `metadata.name` 引用。

版本包已支持独立 Custom Extension 存储。新建或更新软件时,版本包会写入 `SoftwareVersion` 资源,避免大量版本继续膨胀 `Software.spec.versions`;旧版本内嵌数据仍保留读取兼容,后续可通过迁移任务逐步搬迁并清理。

插件启动时会自动执行一次安全迁移:扫描旧的 `Software.spec.versions`,为缺失的版本包创建独立 `SoftwareVersion` 资源;迁移完成后会将对应 `Software` 标记为 `versionStorage=EXTERNAL`、`versionsMigrated=true`,并清空旧的内嵌版本列表,降低后续读取和更新成本。

## 入口

后台:

```text
http://localhost:8090/console/software-distribution

前台:

http://localhost:8090/software
http://localhost:8090/software/detail/{软件ID}

软件上传下载界面

公开 API:

image

image

image

image

image

/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/page-config
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/software
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/software/{id}
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/software-view
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/software-view/{id}
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/software-view/latest
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/versions/{versionId}/token
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/versions/{versionId}/ticket
/apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/download?ticket=...
POST /apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/feedback
POST /apis/plugin-softwarecategory.itcainiao.space/v1alpha1/public/subscriptions

其中 /software/software/{id} 保留为前台页面兼容接口;主题模板或后续 Finder API 集成建议优先使用 /software-view 系列接口。software-view 会返回已整理的标签数组、推荐版本、版本包数量、下载源标识和详情页地址,不暴露 Halo Attachment ID 或镜像真实 URL。主题侧下载时应使用版本包 iddownloadSources[].source 调用 /versions/{versionId}/ticket 生成短 ticket,再跳转 /download?ticket=...

隐私说明

本插件会在提供软件下载、访问控制、统计、审计、反馈和订阅能力时处理必要的个人信息。站点管理员在启用、上架或公开提供本插件能力前,应在站点隐私政策或上架说明中告知访客数据处理规则,并按适用法律法规取得必要授权或同意。

插件可能收集和存储的信息包括:

  • 下载日志:访问 IP、登录用户名或访客标识、下载时间、软件名称、版本、系统类型、下载结果等。
  • 运营审计:后台操作人、操作类型、操作对象、操作时间和操作说明。
  • 反馈信息:反馈类型、联系方式、反馈内容、提交时间、提交 IP。
  • 更新订阅:订阅邮箱、关联软件、订阅时间、提交 IP。
  • 软件与版本数据:管理员录入的软件名称、描述、版本信息、附件引用和下载统计。

这些信息仅用于以下目的:

  • 生成限时下载 token、执行下载权限校验、防盗链、IP 限流和异常排查。
  • 统计软件下载量、热门版本和趋势数据。
  • 支持后台审计、问题反馈处理和更新订阅通知。
  • 帮助站点管理员维护软件分发内容和排查安全问题。

数据存储和传输边界:

  • 插件业务数据按 Halo 规范存储为 Custom Extension,位于当前 Halo 服务端环境内。
  • 文件本体存储在 Halo Attachment 中,插件仅保存附件引用。
  • 下载 token 签名密钥在首次启动时由服务端随机生成,并保存在 Halo 插件数据目录内;不会由插件名称、ConfigMap 名称等公开元数据派生。
  • 前台下载页面默认使用服务端短 ticket 跳转下载,避免把完整签名 token 暴露在浏览器地址栏、历史记录或访问日志中;旧版 token 下载参数仅作为兼容接口保留。
  • 插件自身不会主动把上述个人信息发送到第三方服务;如果站点配置了外部对象存储、反向代理、访问日志、邮件服务或其他扩展组件,相关处理边界由站点管理员负责说明。

保留和删除:

  • 下载日志和运营审计日志会按插件设置中的 downloadLogRetentionDaysauditLogRetentionDays 清理。
  • 管理端支持手动清理下载日志、审计日志、已处理反馈和已停用订阅;这些操作会删除对应个人信息,界面会显示二次确认,后端按下载日志导出权限或运营管理权限限制访问。
  • 管理员可在插件设置中关闭反馈、订阅、游客下载记录,或开启日志 IP 脱敏。
  • 删除软件时会删除插件业务记录,但不会主动删除 Halo Attachment 中的共享附件,避免误删其他内容引用的文件。
  • 反馈、订阅、下载日志和审计数据如需导出、删除或响应用户请求,应由站点管理员结合 Halo 数据管理能力和站点隐私政策处理。

敏感字段提交要求:

  • 反馈中的联系方式、反馈内容,以及订阅邮箱必须通过 POST JSON 请求体提交。
  • 插件不支持通过 GET query 提交上述字段,避免个人信息进入浏览器历史、代理日志或访问日志 URL。