简介

本程序使用Go语言的net包实现端口转发,使用令牌桶算法实现速率限制,通过计数器跟踪已使用的总流量,使用JSON文件存储规则配置和状态,使用goroutine实现并发处理连接。适用于各类需要端口转发的业务场景,提供完善的API进行管理,可方便的对接各类程序。
目前程序已完成魔方财务系统对接,可通过魔方财务售卖开通端口转发业务,可实现流量限制,带宽限制,端口数量限制等。具有完备的生命周期管理。

特点

  1. API服务器启动与配置

    • 通过命令行参数配置API服务器的监听地址、规则存储文件路径和API鉴权密钥。
    • 支持API Key鉴权,确保请求的安全性。
  2. 规则管理

    • 支持创建、更新、删除和获取转发规则。
    • 每个规则包含源端口、目标IP和端口、协议类型(TCP或UDP)、流量限制和速率限制等信息。
    • 支持自动分配默认组和名称。
  3. 组管理

    • 支持创建、更新、删除和获取规则组。
    • 每个组可以设置流量和速率限制,管理多个转发规则。
  4. 端口转发

    • 支持TCP和UDP协议的端口转发。
    • 使用限流器实现流量和速率限制。
    • 支持自动重启活跃的转发规则。
  5. 数据持久化

    • 使用JSON文件存储规则和组信息。
    • 支持定时自动保存规则和组信息,确保数据的持久性。
  6. 并发控制

    • 使用互斥锁(Mutex)和读写锁(RWMutex)确保多线程环境下的数据安全。
  7. 错误处理与日志记录

    • 在操作失败时返回详细的错误信息。
    • 记录日志以便于调试和监控。
      在这个api.go文件中,API服务器提供了多个端点用于管理规则和组。以下是所有API端点的概述:

API端点

为了方便插件对接,API未遵循RESTful 规则,所有端点均采用POST请求。

规则管理端点

  1. 获取所有规则

    • 路径: /api/rules/list
    • 方法: POST
    • 功能: 获取所有转发规则的列表。
  2. 创建新规则

    • 路径: /api/rules/add
    • 方法: POST
    • 功能: 创建一个新的转发规则。
  3. 获取单个规则

    • 路径: /api/rules/{id}/info
    • 方法: POST
    • 功能: 获取指定ID的转发规则信息。
  4. 更新现有规则

    • 路径: /api/rules/{id}/update
    • 方法: POST
    • 功能: 更新指定ID的转发规则。
  5. 删除规则

    • 路径: /api/rules/{id}/delete
    • 方法: POST
    • 功能: 删除指定ID的转发规则。
  6. 启动转发

    • 路径: /api/rules/{id}/start
    • 方法: POST
    • 功能: 启动指定ID的转发规则。
  7. 停止转发

    • 路径: /api/rules/{id}/stop
    • 方法: POST
    • 功能: 停止指定ID的转发规则。

组管理端点

  1. 获取所有组

    • 路径: /api/groups/list
    • 方法: POST
    • 功能: 获取所有组的列表。
  2. 创建新组

    • 路径: /api/groups/add
    • 方法: POST
    • 功能: 创建一个新的组。
  3. 获取单个组

    • 路径: /api/groups/{id}/info
    • 方法: POST
    • 功能: 获取指定ID的组信息。
  4. 更新组

    • 路径: /api/groups/{id}/update
    • 方法: POST
    • 功能: 更新指定ID的组信息。
  5. 删除组

    • 路径: /api/groups/{id}/delete
    • 方法: POST
    • 功能: 删除指定ID的组。
  6. 获取组内的所有规则

    • 路径: /api/groups/{id}/rules
    • 方法: POST
    • 功能: 获取指定组ID下的所有规则。

健康检查端点

  • 路径: /health
  • 方法: GET
  • 功能: 检查API服务器的健康状态,无需认证。
分类: IDC相关 标签: post端口转发apigo语言

评论

暂无评论数据

暂无评论数据

目录