## HTTP API 接口列表 域名 https://root.punchsky.com/api ### 1.密钥登录接口 **URL**:`/auth/token` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |-----------|------|------|--------------------------| | client_id | string | ✅ | 客户端唯一标识符 | | token | string | ✅ | 密钥 | | mac | string | | MAC地址 | | system | string | | 系统信息(window11/macos 15.8) | | version | string | | 软件版本 | | hostname | string | | 主机名 | #### 响应参数 | 字段 | 类型 | 说明 | |------|--------|-----------------------| | code | int | 0 成功,其他失败 | | message | string | 说明 | | data | object | | | access_token | string | | | username | string | 用户名 | | user_type | string | token密钥登录、account账号登录 | | audit | int | 0 未审核,1审核通过 | | network_id | int | 网络ID | | network_name | string | 网络名称 | | network_domain | string | 网络域名 | | domain | string | 主域名 | | my_network_list | array | 我的网络列表 | #### 示例响应 ```json { "code": 0, "message": "success", "data": { "access_token": "MjZ8NDB8MGZhMWE3OGI2NzVkZDEwOWIyYjg2MmI4ZDQ5MTY1MmV8ZTg4MzgzMThhZDBhMjU5MDI5MzQ4ZGQ5ZTc3ZWExZDVhYmQ2YjQwM2M3NDE1YmE4MWQ5YzEzZTEzOTM3MzYzMQ", "username": "测试clinet_id_123456", "user_type": "token", "audit": 1, "network_id": 3, "network_name": "test的网络", "network_domain": "punchsky8.com", "domain": "punchsky.com", "my_network_list": [] } } ``` #### 错误 ```json { "code": 400, "message": "密钥已失效", "data": null } ``` ### 2.账号登录接口 **URL**:`/auth/login` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|------|------|--------------------------| | client_id | string | ✅ | 客户端唯一标识符 | | username | string | ✅ | 用户名 | | password | string | ✅ | 密码 | | mac | string | | MAC地址 | | system | string | | 系统信息(window11/macos 15.8) | | version | string | | 软件版本 | | hostname | string | | 主机名 | #### 响应参数 - 跟auth/token一致 ,多了一个我的网络列表 ```json { "code": 0, "message": "success", "data": { "access_token": "MzF8NDV8MzM2MzMyMTQ1MTc3YjlkMjYyZGU3OTNkMWFhYjQ4OTB8YmE3ODRiZDE1MmFlMjQ3MDk2NzIyZTRiY2EyOWQzMGZmNWMyMWRhMmJkYzM3Zjk1N2NkNjg2NGRlNjQ1ZDc1MQ", "username": "test3", "user_type": "account", "audit": 1, "network_id": 3, "network_name": "test\u7684\u7f51\u7edc", "network_domain": "lfn1.punchlink.cn", "my_network_list": [ { "network_id": 3, "network_name": "test\u7684\u7f51\u7edc" } ] } } ``` ### 3.连接网络 **URL**:`/connect` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|--------|------|------| | client_id | string | ✅ | 客户端唯一标识符 | | access_token | string | ✅ | | | version | string | | 软件版本 | #### 响应参数 | 字段 | 类型 | 说明 | |------|--------|-------------------| | code | int | 0 成功,其他失败 | | message | string | 说明 | | data | object | | | ip | string | IP地址 | | mask_len | int | mask | | hostname | string | hostname | | identity_id | int | 目前返回单个数字,多组概念稍后解决 | | resource_list | array | 资源列表 | | node_list | string | 节点列表 | | acl | array | 访问规则 | | exit_node | array | 出口节点列表 (可为空) | #### 示例响应 ```json { "code": 0, "message": "success", "data": { "ip": "10.10.2.3", "mask_len": 24, "hostname": "lfmw", "identity_id": 26, "resource_list": [ { "id": 0, "name": "文档中心", "url": "http://10.10.2.6:88", "connection_status": "connected" }, { "id": 1, "name": "文档中心", "url": "http://10.10.2.6:80", "connection_status": "connected" }, { "id": 2, "name": "数据中心", "url": "http://10.10.2.6:88", "connection_status": "connected" }, { "id": 3, "name": "数据中心", "url": "http://10.10.2.6:80", "connection_status": "connected" }, { "id": 4, "name": "数据中心", "url": "http://10.10.2.6:3306", "connection_status": "connected" } ], "node_list": [ { "id": 13, "name": "key_MTE1", "ip": "10.10.2.3", "system": "Macos 1.0.0", "connection_status": "connected" }, { "id": 14, "name": "test3", "ip": "10.10.2.4", "system": "Window 1.0.0", "connection_status": "connected" }, { "id": 23, "name": "alc", "ip": "10.10.2.6", "system": "", "connection_status": "connected" }, { "id": 25, "name": "maliu-window", "ip": "10.10.2.7", "system": "OS: Windows, Host name: DESKTOP-VLMVV81", "connection_status": "connected" }, { "id": 26, "name": "key_MTE4", "ip": "10.10.2.8", "system": "OS: Windows, Host name: DESKTOP-VLMVV81", "connection_status": "connected" }, { "id": 27, "name": "company-window", "ip": "10.10.2.9", "system": "OS: Windows, Host name: DESKTOP-VLMVV81", "connection_status": "disconnected" }, { "id": 28, "name": "maliu-macos", "ip": "10.10.2.10", "system": "", "connection_status": "connected" }, { "id": 29, "name": "key_MTE4", "ip": "10.10.2.5", "system": "linux", "connection_status": "connected" }, { "id": 39, "name": "maliu-ubuntu", "ip": "10.10.2.12", "system": "linux", "connection_status": "disconnected" }, { "id": 40, "name": "测试clinet_id_123456", "ip": "10.10.2.3", "system": "Macos 1.0.0", "connection_status": "connected" }, { "id": 41, "name": "test3", "ip": "10.10.2.5", "system": "linux", "connection_status": "connected" }, { "id": 42, "name": "test3", "ip": "10.10.2.6", "system": "", "connection_status": "connected" }, { "id": 43, "name": "user_MTQw", "ip": "10.10.2.13", "system": "linux", "connection_status": "connected" }, { "id": 45, "name": "test3", "ip": "10.10.2.3", "system": "Macos 1.0.0", "connection_status": "connected" }, { "id": 47, "name": "compay-usa", "ip": "10.10.2.14", "system": "linux", "connection_status": "connected" }, { "id": 48, "name": "test3", "ip": "10.10.2.10", "system": "", "connection_status": "disconnected" }, { "id": 49, "name": "test3", "ip": "10.10.2.7", "system": "OS: Windows, Host name: DESKTOP-VLMVV81", "connection_status": "connected" }, { "id": 50, "name": "test3", "ip": "10.10.2.9", "system": "OS: Windows, Host name: DESKTOP-VLMVV81", "connection_status": "disconnected" }, { "id": 51, "name": "test3", "ip": "10.10.2.15", "system": "OS: Windows, Host name: MALIU3CA0", "connection_status": "disconnected" }, { "id": 52, "name": "test3", "ip": "10.10.2.16", "system": "OS: Ubuntu, Host name: alex-ubuntu", "connection_status": "disconnected" } ], "acl": [], "exit_node": [ { "node_id": 41, "node_name": "test3", "gateway": "10.10.2.5", "target_network": "0.0.0.0/24" } ] } } ``` #### 错误 ```json { "code": 400, "message": "操作失败", "data": null } ``` ### 4.断开网络 **URL**:`/disconnect` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------|--------|------|------| | client_id | string | ✅ | 客户端唯一标识符 | | access_token | string | ✅ | | #### 响应参数 | 字段 | 类型 | 说明 | |------|------|------| | code | int | 0 成功,其他失败 | | message | string | 说明 | | data | | | #### 示例响应 ```json { "code": 0, "message": "success", "data": null } ``` #### 错误 ```json { "code": 400, "message": "操作失败", "data": null } ``` ### 5.设备详情 **URL**:`/get_node_resources` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |----|--------|------|----------| | client_id | string | ✅ | 客户端唯一标识符 | | access_token | string | ✅ | | | id | int | ✅ | 设备id | #### 响应参数 | 字段 | 类型 | 说明 | |------|------|------| | code | int | 0 成功,其他失败 | | message | string | 说明 | | data | | | #### 示例响应 ```json { "code": 0, "message": "success", "data": { "id": 15, "name": "key_MTE1", "ip": "10.10.2.5", "system": "Macos 1.0.0", "connection_status": "connected", "resource_list": [ { "id": 15, "name": "数据中心", "url": "http://10.10.2.5:8080", "connection_status": "connected" }, { "id": 15, "name": "数据中心", "url": "http://10.10.2.5:90", "connection_status": "connected" }, { "id": 15, "name": "数据中心", "url": "http://10.10.2.5:10", "connection_status": "connected" } ] } } ``` ### 6.验证access_token 服务端使用 **URL**:`auth/access_token` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------------|--------|------|----------| | client_id | string | ✅ | 客户端唯一标识符 | | access_token | string | ✅ | | | ip | string | ✅ | | | mask_len | int | ✅ | | | hostname | string | ✅ | | | mac | string | ✅ | | | network_id | int | ✅ | | #### 响应参数 #### 示例响应 ```json { "result": "ok" } ``` #### 错误 ```json { "error": { "code": 1, "message": "缺少必填参数:client_id" } } ``` ### 7.set_node_status 服务端使用 **URL**:`set_node_status` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------------|--------|------|----------| | client_id | string | ✅ | 客户端唯一标识符 | | access_token | string | ✅ | | | status | int | ✅ | | | network_id | int | ✅ | | #### 响应参数 #### 示例响应 ```json { "result": "ok" } ``` #### 错误 ```json { "error": { "code": 1, "message": "缺少必填参数:client_id" } } ``` ### 8.获取节点开放端口 **URL**:`/acl` **Method**:`POST` #### 请求参数 | 参数名 | 类型 | 必填 | 说明 | |--------------|--------|------|---------------------------| | client_id | string | ✅ | 客户端唯一标识符 | | access_token | string | ✅ | | | network_id | int | | 网络ID | #### 响应参数 | 字段 | 类型 | 说明 | |------|--------|-----------------------| | code | int | 0 成功,其他失败 | | message | string | 说明 | | data | object | | #### 示例响应 ```json { "code": 0, "message": "success", "data": { "tcp": [ 80 ], "udp": [] } } ```