Files
fscan/main.go
ZacharyZcR 8312808769 refactor(logging): 统一日志前缀,删除废弃的 LogBase
- 删除 LogBase 函数,所有调用迁移到 LogInfo/LogError
- 新增 PrefixDebug ([.]) 前缀,所有日志级别现在都有前缀
- 修复日志输出缩进不一致的问题
- 删除未使用的 PrefixDefault 常量
2026-01-21 18:29:47 +08:00

71 lines
1.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"os"
"os/signal"
"syscall"
"github.com/shadow1ng/fscan/common"
"github.com/shadow1ng/fscan/common/debug"
"github.com/shadow1ng/fscan/common/i18n"
"github.com/shadow1ng/fscan/core"
"github.com/shadow1ng/fscan/web"
// 导入统一插件系统
_ "github.com/shadow1ng/fscan/plugins/local"
_ "github.com/shadow1ng/fscan/plugins/services"
_ "github.com/shadow1ng/fscan/plugins/web"
)
func main() {
// 启动 pprof仅调试版本
debug.Start()
defer debug.Stop()
// 解析命令行参数
var info common.HostInfo
if err := common.Flag(&info); err != nil {
if err == common.ErrShowHelp {
os.Exit(0) // 显示帮助是正常退出
}
common.LogError(i18n.Tr("param_error", err))
os.Exit(1)
}
// Web模式启动Web服务器
if common.WebMode {
if err := web.StartServer(common.WebPort); err != nil {
common.LogError(err.Error())
os.Exit(1)
}
return
}
// 检查参数互斥性
if err := common.ValidateExclusiveParams(&info); err != nil {
common.LogError(i18n.Tr("error_generic", err))
os.Exit(1)
}
// 统一初始化:解析 → 配置 → 输出
result, err := common.Initialize(&info)
if err != nil {
common.LogError(i18n.Tr("init_failed", err))
os.Exit(1)
}
// 设置信号处理,确保 Ctrl+C 时能正确保存结果
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
go func() {
<-sigChan
common.LogInfo(i18n.GetText("received_exit_signal"))
_ = common.Cleanup() // 确保结果写入磁盘
os.Exit(130) // 128 + SIGINT(2) = 130标准的中断退出码
}()
defer func() { _ = common.Cleanup() }()
// 执行扫描
core.RunScan(*result.Info, result.Config, result.State)
}