mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-10-24 08:54:27 +00:00
准备 v2.2.2 版本与发布说明
This commit is contained in:
1 parent
8e78ba557c
commit
2f70227a02
5 files changed
+85
-36
No files matched your search
+38
-33
@@ -1,36 +1,56 @@
|
||||
# 发版流程
|
||||
|
||||
正式版由 `main` 的 push 触发:读取 `common/globals.go` 的版本号、创建对应 tag,并在同一次工作流中构建和发布 GitHub Release。
|
||||
|
||||
**合并到 `main` 就会开始发布。** 合并前必须更新版本号、准备 Release Notes,并验证包含全部待发布改动的候选提交。测试构建工作流与发布工作流独立,发布不会等待合并后的测试结果。
|
||||
|
||||
## 预检查
|
||||
|
||||
```bash
|
||||
# 1. 确认 CI 通过
|
||||
gh run list --branch dev --limit 3
|
||||
# 使用已包含全部待发布改动的分支:dev 或 release/*
|
||||
RELEASE_REF=release/v2.2.2
|
||||
|
||||
# 2. 全平台 dry-run(手动触发 snapshot 模式)
|
||||
gh workflow run release.yml -f snapshot=true
|
||||
# 1. 确认该分支最新提交的测试 CI 通过
|
||||
gh run list --branch "$RELEASE_REF" --workflow test-build.yml --limit 3
|
||||
|
||||
# 3. 确认版本号一致
|
||||
grep "version" common/globals.go
|
||||
grep "版本" README.md
|
||||
grep "Version" README_EN.md
|
||||
# 2. 全平台 dry-run;必须指定 ref,避免默认构建 main
|
||||
gh workflow run release.yml --ref "$RELEASE_REF" -f snapshot=true
|
||||
gh run list --branch "$RELEASE_REF" --workflow release.yml --limit 3
|
||||
|
||||
# 3. 在候选分支确认版本号一致,且 Release Notes 已就绪
|
||||
rg 'version = ' common/globals.go
|
||||
rg '^\*\*版本\*\*:' README.md
|
||||
rg '^\*\*Version\*\*:' README_EN.md
|
||||
cat .github/release-notes/v2.2.2.md
|
||||
|
||||
# 4. 新版本 tag 应不存在;已有 tag 不可移动或覆盖
|
||||
git ls-remote --tags origin refs/tags/v2.2.2
|
||||
```
|
||||
|
||||
## 发版
|
||||
等待 snapshot 工作流成功,并核对该次运行的 SHA 与待合并提交一致。产物包括标准版、无本地插件版、Web 版和 SHA256 校验文件;snapshot 不创建 tag 或 GitHub Release。
|
||||
|
||||
## 正式版发布
|
||||
|
||||
```bash
|
||||
# 1. 确认 release notes 已就绪
|
||||
cat .github/release-notes/v<VERSION>.md
|
||||
# 从已验证的候选分支创建 PR
|
||||
gh pr create --base main --head "$RELEASE_REF"
|
||||
|
||||
# 2. 打 tag(RC 手动打;正式版合并到 main 后由 CI 自动打 tag)
|
||||
git tag v<VERSION>
|
||||
git push origin v<VERSION>
|
||||
# 审核通过后合并 PR;此次 main push 会自动打 tag 并发布
|
||||
# 无需再手动执行 git tag / git push tag
|
||||
|
||||
# CI 自动执行:
|
||||
# - goreleaser 全平台构建 + UPX 压缩
|
||||
# - 创建 GitHub Release(RC 自动标记 pre-release)
|
||||
# - 用 .github/release-notes/ 下的文件覆盖 release body
|
||||
# 跟踪发布任务,确认 Release 与附件完整
|
||||
gh run list --branch main --workflow release.yml --limit 3
|
||||
gh release view v2.2.2
|
||||
```
|
||||
|
||||
若工作流提示 tag 已存在且不指向当前提交,说明版本号未递增或该版本已经发布;先核对提交和版本,不能移动已有 tag。若构建失败,在对应 Actions 运行中查看失败步骤。
|
||||
|
||||
发布完成后将 `main` 同步回 `dev`,保留已发布提交的历史。手动重跑正式版构建必须指定已有 tag;`draft=true` 仅控制本次手动运行创建草稿,不改变 `main` 合并即发布的行为。
|
||||
|
||||
## 预发布
|
||||
|
||||
在候选分支准备 RC 版本号与同名 Release Notes,验证后手动推送 `vX.Y.Z-rc.N` tag。tag push 会触发构建,GoReleaser 自动将 RC 标记为 prerelease。
|
||||
|
||||
## 版本号规范
|
||||
|
||||
| 场景 | 格式 | 分支 | 示例 |
|
||||
@@ -44,18 +64,3 @@ git push origin v<VERSION>
|
||||
放在 `.github/release-notes/<tag>.md`,格式参考 `v2.2.0-rc.md`。
|
||||
|
||||
如果文件不存在,goreleaser 会自动生成基于 commit 的 changelog。
|
||||
|
||||
## 正式版发布(RC → 正式)
|
||||
|
||||
```bash
|
||||
# 1. 在 dev 分支准备正式版内容
|
||||
# common/globals.go, README.md, README_EN.md
|
||||
# .github/release-notes/v2.2.0.md
|
||||
|
||||
# 2. 创建 dev -> main PR
|
||||
gh pr create --base main --head dev
|
||||
|
||||
# 3. 合并 PR
|
||||
# main push 会自动读取 common/globals.go 中的版本号,创建 v<VERSION> tag
|
||||
# tag push 会触发 GoReleaser 构建并创建 GitHub Release
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
# fscan v2.2.2
|
||||
|
||||
v2.2.2 是 v2.2 系列的修复版本,重点解决扫描参数未生效、目标遗漏、SMTP 扫描挂起、POC 表达式兼容性和结果备份丢失问题。
|
||||
|
||||
## 扫描参数与目标调度
|
||||
|
||||
- 修复只指定 `-pwda` 或 `-usera` 时默认字典被覆盖的问题;追加参数保留基础字典
|
||||
- 新增 `-list-plugins`,列出当前构建实际可用的模块及注册端口
|
||||
- 指定固定端口服务模块且未设置 `-p`、`-pf` 时,使用所选模块的注册端口集合;NetBIOS 跳过不适用端口
|
||||
- 修复 `-pf` 端口文件未读取的问题,支持逐行端口、范围和逗号列表;不可读或没有有效端口的文件返回错误
|
||||
- 修复 IPv4/IPv6 `host:port` 在解析后被误判为缺少扫描目标的问题
|
||||
- 服务扫描中的缓存目标遵守 `-eh`、`-ehf`、`-ep`,UDP 插件调度也遵守 `-ep`
|
||||
- 服务扫描策略使用当前 session 的服务识别缓存
|
||||
|
||||
## 协议与 POC 兼容性
|
||||
|
||||
- 为 SMTP 匿名访问和开放中继检查设置连接读写期限,避免目标接受连接后不发送 greeting 导致扫描一直等待
|
||||
- 修复 Base64、JWT 等编码字符串被误当作 CEL 表达式编译的问题,覆盖 POC 的 `set` 和 `sets`
|
||||
- 补充 `timestamp_second()`,修正 POC 中 `randomLowercase` 的调用
|
||||
|
||||
## Web、SDK 与结果保存
|
||||
|
||||
- Web 扫描使用完整配置解析,使自定义账号密码和 `host:port` 生效;项目缓存与显式目标合并
|
||||
- SDK 普通扫描的 `OnProgress` 回调关联实际扫描状态
|
||||
- TXT、JSON、CSV 仅在最终结果写入、同步并关闭成功后删除 `.realtime.tmp`;失败时保留恢复备份并关闭文件资源
|
||||
- 增加对应回归测试,并将 Web 接口测试纳入 CI
|
||||
|
||||
## 相关 Issue 与 PR
|
||||
|
||||
- #605:POC CEL 表达式兼容性
|
||||
- #609、#610、#611:凭据追加、模块端口选择与模块列表
|
||||
- #608:SMTP 静默服务端导致扫描挂起
|
||||
- #612:端口文件、目标调度、Web/SDK 状态及结果备份
|
||||
|
||||
## 升级说明
|
||||
|
||||
- 从 v2.2.1 可直接升级
|
||||
- 使用 `-pwda`、`-usera` 追加凭据时会保留基础字典;只测试指定凭据时请使用 `-user`、`-pwd` 或相应字典文件参数
|
||||
- 如需指定完整扫描端口集合,请显式使用 `-p` 或 `-pf`
|
||||
- 结果保存失败时可检查输出文件旁的 `.realtime.tmp` 恢复备份
|
||||
|
||||
完整变更记录:
|
||||
|
||||
https://github.com/shadow1ng/fscan/compare/v2.2.1...v2.2.2
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
Comprehensive intranet scanning tool for automated vulnerability assessment.
|
||||
|
||||
**Version**: 2.2.1
|
||||
**Version**: 2.2.2
|
||||
|
||||
## Features
|
||||
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ const (
|
||||
|
||||
// 版本信息,通过 ldflags 注入
|
||||
var (
|
||||
version = "2.2.1"
|
||||
version = "2.2.2"
|
||||
commit = "unknown"
|
||||
date = "unknown"
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user