fscan/Docs/插件编写指南.md

1.8 KiB
Raw Blame History

FScan 插件开发指南

1. 创建插件

Plugins 目录下创建你的插件文件,例如 myPlugin.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 中注册你的插件:

Common.RegisterPlugin("myplugin", Common.ScanPlugin{
    Name:     "MyPlugin",
    Port:     12345,   // 指定端口如果是web类插件可设为0
    ScanFunc: Plugins.MyPluginScan,
})

3. 开发规范

插件结构

  • 每个插件应当是独立的功能模块
  • 使用清晰的函数名和变量名
  • 添加必要的注释说明功能和实现逻辑

错误处理

// 推荐的错误处理方式
if err != nil {
    return fmt.Errorf("plugin_name scan error: %v", err)
}

日志输出

// 使用内置的日志函数
Common.LogSuccess("发现漏洞")
Common.LogError("扫描错误")

4. 测试验证

  • 编译整个项目确保无错误
  • 实际环境测试插件功能
  • 验证与其他插件的兼容性

5. 提交流程

  1. Fork 项目仓库
  2. 创建功能分支
  3. 提交代码更改
  4. 编写清晰的提交信息
  5. 创建 Pull Request

注意事项

  • 遵循 Go 编码规范
  • 保证代码可读性和可维护性
  • 禁止提交恶意代码
  • 做好异常处理和超时控制
  • 避免过度消耗系统资源
  • 注意信息安全,不要泄露敏感数据