Skip to content

django-sspanel 的第三方中间件,方便实现内部 VPN 系统和外部 OA 等系统对接

License

Notifications You must be signed in to change notification settings

luckykeeper/django-sspanel-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-sspanel-api

django-sspanel 的第三方中间件 ,方便实现内部 VPN 系统和外部 OA 等系统对接

基于 django-sspanel Feb 2, 2021 版本开发,不同版本可能需要微调代码

使用方法

  1. 安装 Chrome (里面用到了 Headless Chrome)
  2. 安装配置 postgresql
  3. 填写 config.ini 信息
  4. ./vpnHelper gt 生成授权 token
  5. ./vpnHelper r 生产环境运行(可以用 nohup 或 screen 挂后台,注意运行时需要使路径在项目目录内)

API 功能

  • 新增用户
  • 获取连接信息(导入URL)
  • 删除用户

接口说明

新增用户

  • 地址:/v1/generateUserProfile
  • 请求方法:POST
  • Content-Type:form-data
  • 参数(Body内):
参数名称 参数示例 参数说明
token 12345678901234567890123456789012 授权 Token ,判断是否为可信用户,长度为 32 位
username luckykeeper 作为接入系统的用户名,此值在系统内须唯一
  • 返回:

接口会返回一个 json ,返回的参数如下

参数名称 参数示例 参数说明
StatusCode 200 状态码,表示某项操作执行的状态
StatusString 提交新增用户任务成功! 对状态码进行说明

以下是一个返回示例,返回时用 HTTP 状态码判断是否成功提交到 API 服务器,用 StatusCode 判断操作执行的状态

{
    "StatusCode": 200,
    "StatusString": "提交新增用户任务成功!"
}
  • 状态码速查表:
状态码(StatusCode) 状态码说明(StatusString) 说明
102 该新增用户数据已提交至系统,并且正在处理中,请等待 成功向 API 提交了新增该用户的请求,且该用户的新增流程正在进行,但是仍未完成
200 提交新增用户任务成功! 成功向 API 提交了新增该用户的请求
201 该新增用户数据已提交至系统,正在排队处理中,请等待 成功向 API 提交了新增该用户的请求,但是尚未开始该用户的新增流程
401 Unauthorized Token 授权 Token 错误
405 用户数据已经存在于系统内,不允许重复提交! 成功向 API 提交了新增该用户的请求,但是该用户早已在系统内,并且已经走完了新增流程(用户是由 API 创建的)
406 Not Acceptable 操作的是面板的管理员用户,不允许操作
409 用户数据已经存在于系统内,但是存在问题,请尝试发起删除用户流程后重新创建(重试) 成功向 API 提交了新增该用户的请求,但是系统内已经存在该用户导致新增流程失败。可能原因①(用户不是由 API 创建的无法管理)②【极低概率】(API 新增用户时意外退出)
418 用户数据正在删除,请等待删除操作完成。删除操作需要等待四十八小时后才会执行,请耐心等待 成功向 API 提交了新增该用户的请求,但是该用户已经通过删除用户接口进行了标记删除,由于管理面板限制,刚创建的用户不允许立刻删除。另外出于防止误操作考虑,提交请求后最快四十八小时后才会执行删除用户流程
429 服务请求过于频繁,请稍后再试 同时向 API 服务器提交的请求过多
500 用户数据删除请求已提交满四十八小时,但是API尝试删除用户失败,这是由于系统内尚未刷新该数据允许删除,API会自动重试直到系统允许删除,请等待 成功向 API 提交了新增该用户的请求,但是该用户已经通过删除用户接口进行了标记删除,由于管理面板后台数据尚未刷新,该数据仍未删除,继续等待直到管理面板允许删除

查询连接参数

  • 地址:/v1/getConnInfoByUser
  • 请求方法:POST
  • Content-Type:form-data
  • 参数(Body内):
参数名称 参数示例 参数说明
token 12345678901234567890123456789012 授权 Token ,判断是否为可信用户,长度为 32 位
username luckykeeper 作为接入系统的用户名,此值在系统内须唯一
  • 返回:

此返回中敏感信息已做处理!

接口会返回一个 json ,返回的参数如下

参数名称 参数示例 参数说明
ResultMsg 操作状态
StatusCode 200 状态码,表示某项操作执行的状态
StatusString 提交新增用户任务成功! 对状态码进行说明
NodeInfos 节点信息,可包含多个节点
Sequence 1 顺序
Name 服务节点1 服务节点名称
NodeType ss 节点类型,可为:ssvlesstrojan。三种之一
Tips 服务节点1 对服务节点的说明
Ip 127.0.0.1 服务节点IP
Method aes-256-gcm 加密方法
Port 123 服务端口
ConnInfo ss://** 连接信息,用户使用该链接即可连接(PC)。或扫描此链接直接生成的二维码连接(移动端)

以下是一个返回示例,返回时用 HTTP 状态码判断是否成功提交到 API 服务器,用 StatusCode 判断操作执行的状态

{
    "ResultMsg": [
        {
            "StatusCode": 200,
            "StatusString": "查询成功!"
        }
    ],
    "NodeInfos": [
        {
            "Sequence": "1",
            "Name": "服务节点1",
            "NodeType": "ss",
            "Tips": "服务节点1",
            "Ip": "127.0.0.1",
            "Method": "****",
            "Port": "123",
            "ConnInfo": "ss://**"
        },
        {
            "Sequence": "2",
            "Name": "服务节点2",
            "NodeType": "ss",
            "Tips": "服务节点2",
            "Ip": "127.0.0.1",
            "Method": "****",
            "Port": "123",
            "ConnInfo": "ss://**"
        }
    ]
}
  • 状态码速查表:
状态码(StatusCode) 状态码说明(StatusString) 说明
102 该新增用户数据已提交至系统,并且正在处理中,请等待 成功向 API 提交了新增该用户的请求,且该用户的新增流程正在进行,但是仍未完成,无法获取连接信息
200 查询成功! 操作正常完成
201 该新增用户数据已提交至系统,正在排队处理中,请等待 成功向 API 提交了新增该用户的请求,但是尚未开始该用户的新增流程,无法获取连接信息
204 该用户不存在,无法获取连接信息 需要先去调用新增用户接口后再获取信息
401 Unauthorized Token 授权 Token 错误
406 Not Acceptable 操作的是面板的管理员用户,不允许操作
409 用户数据已经存在于系统内,但是存在问题,请尝试发起删除用户流程后重新创建(重试) 成功向 API 提交了新增该用户的请求,但是系统内已经存在该用户导致新增流程失败。可能原因①(用户不是由 API 创建的无法管理)②【极低概率】(API 新增用户时意外退出)
412 系统内没有节点或 API 还未拉取节点信息,请稍后再试
418 用户数据正在删除,不允许获取连接信息 已经标记删除的用户不允许获取连接信息

删除用户

  • 地址:/v1/delUserProfile
  • 请求方法:POST
  • Content-Type:form-data
  • 参数(Body内):
参数名称 参数示例 参数说明
token 12345678901234567890123456789012 授权 Token ,判断是否为可信用户,长度为 32 位
username luckykeeper 作为接入系统的用户名,此值在系统内须唯一
  • 返回:

返回中敏感信息已做处理!

接口会返回一个 json ,返回的参数如下

参数名称 参数示例 参数说明
StatusCode 200 状态码,表示某项操作执行的状态
StatusString 系统已收到删除用户:*** 的请求,已处理 对状态码进行说明

以下是一个返回示例,返回时用 HTTP 状态码判断是否成功提交到 API 服务器,用 StatusCode 判断操作执行的状态

{
    "StatusCode": 200,
    "StatusString": "系统已收到删除用户:*** 的请求,已处理"
}
  • 状态码速查表:
状态码(StatusCode) 状态码说明(StatusString) 说明
102 该新增用户数据已提交至系统,并且正在处理中,请等待 成功向 API 提交了新增该用户的请求,且该用户的新增流程正在进行,但是仍未完成,不允许删除
200 系统已收到删除用户:user.UserName 的请求,已处理 成功向 API 提交了删除该用户的请求
200 系统已收到删除可能存在问题的用户:user.UserName 的请求,已处理 成功向 API 提交了删除该用户的请求
201 该新增用户数据已提交至系统,正在排队处理中,请等待 成功向 API 提交了新增该用户的请求,但是尚未开始该用户的新增流程,不允许删除
401 Unauthorized Token 授权 Token 错误
404 系统内没有该用户记录! 成功向 API 提交了删除该用户的请求,但是API数据库内找不到该用户记录
406 Not Acceptable 操作的是面板的管理员用户,不允许操作
409 用户数据已经存在于系统内,但是存在问题,请尝试发起删除用户流程后重新创建(重试) 成功向 API 提交了新增该用户的请求,但是系统内已经存在该用户导致新增流程失败。可能原因①(用户不是由 API 创建的无法管理)②【极低概率】(API 新增用户时意外退出)
418 用户数据正在删除,请等待删除操作完成。删除操作需要等待四十八小时后才会执行,请耐心等待 成功向 API 提交了新增该用户的请求,但是该用户已经通过删除用户接口进行了标记删除,由于管理面板限制,刚创建的用户不允许立刻删除。另外出于防止误操作考虑,提交请求后最快四十八小时后才会执行删除用户流程
429 服务请求过于频繁,请稍后再试 同时向 API 服务器提交的请求过多
500 用户数据删除请求已提交满四十八小时,但是API尝试删除用户失败,这是由于系统内尚未刷新该数据允许删除,API会自动重试直到系统允许删除,请等待 成功向 API 提交了新增该用户的请求,但是该用户已经通过删除用户接口进行了标记删除,由于管理面板后台数据尚未刷新,该数据仍未删除,继续等待直到管理面板允许删除