# FScan 插件开发指南 ## 1. 创建插件 在 `Plugins` 目录下创建你的插件文件,例如 `myPlugin.go`: ```go package Plugins import ( "github.com/shadow1ng/fscan/Common" ) func MyPluginScan(info *Common.HostInfo) error { // 1. 基础检查 if info == nil { return errors.New("Invalid host info") } // 2. 实现扫描逻辑 result, err := doScan(info) if err != nil { return err } // 3. 处理结果 if result.Vulnerable { Common.LogSuccess(fmt.Sprintf("Found vulnerability in %s:%d", info.Host, info.Port)) } return nil } ``` ## 2. 注册插件 在 `Core/Registry.go` 中注册你的插件: ```go Common.RegisterPlugin("myplugin", Common.ScanPlugin{ Name: "MyPlugin", Port: 12345, // 指定端口,如果是web类插件可设为0 ScanFunc: Plugins.MyPluginScan, }) ``` ## 3. 开发规范 ### 插件结构 - 每个插件应当是独立的功能模块 - 使用清晰的函数名和变量名 - 添加必要的注释说明功能和实现逻辑 ### 错误处理 ```go // 推荐的错误处理方式 if err != nil { return fmt.Errorf("plugin_name scan error: %v", err) } ``` ### 日志输出 ```go // 使用内置的日志函数 Common.LogSuccess("发现漏洞") Common.LogError("扫描错误") ``` ## 4. 测试验证 - 编译整个项目确保无错误 - 实际环境测试插件功能 - 验证与其他插件的兼容性 ## 5. 提交流程 1. Fork 项目仓库 2. 创建功能分支 3. 提交代码更改 4. 编写清晰的提交信息 5. 创建 Pull Request ## 注意事项 - 遵循 Go 编码规范 - 保证代码可读性和可维护性 - 禁止提交恶意代码 - 做好异常处理和超时控制 - 避免过度消耗系统资源 - 注意信息安全,不要泄露敏感数据