package main import ( "fmt" "os" "github.com/shadow1ng/fscan/common" "github.com/shadow1ng/fscan/core" // 导入统一插件系统 _ "github.com/shadow1ng/fscan/plugins/services" _ "github.com/shadow1ng/fscan/plugins/web" _ "github.com/shadow1ng/fscan/plugins/local" ) func main() { // Linus式简化:直接执行,删除过度工程 var info common.HostInfo common.Flag(&info) // 检查-local与-h -u的互斥性 if common.LocalPlugin != "" && info.Host != "" { fmt.Printf("错误: -local参数与-h参数互斥,本地插件只能在本机运行\n") os.Exit(1) } if common.LocalPlugin != "" && common.TargetURL != "" { fmt.Printf("错误: -local参数与-u参数互斥,本地插件不需要URL目标\n") os.Exit(1) } // 初始化日志 common.InitLogger() // 解析和验证参数 if err := common.Parse(&info); err != nil { handleError("参数解析失败", err) } // 初始化输出系统 if err := common.InitOutput(); err != nil { handleError("输出初始化失败", err) } defer common.CloseOutput() // 执行扫描 core.RunScan(info) } func handleError(msg string, err error) { common.LogError(fmt.Sprintf("%s: %v", msg, err)) os.Exit(1) }