文档
PoolNode 项目与网站管理 API
RustMinerSystem 内置 PoolNode 的项目激活、端口、接入点、网站、TLS、证书、模板和 APP 配置接口。
PoolNode 项目与网站管理 API
本章记录 RustMinerSystem 后台调用的 /api/poolnode/* 管理接口。它们与 PoolNode 用户端开放 API /api/user/* 不同,主要供节点所有者配置项目和网站。
PoolNode 接口常返回 { status, error, data } 包装结构。前端会从 data 读取真实结果,并把 status: 4 视为项目尚未激活。
PoolNode 标准包装
标准包装字段:
| 字段 | 类型 | 说明 |
|---|---|---|
status |
number | 0 成功;4 表示项目未激活;其他值按业务失败处理。 |
error |
string/null | 错误说明,成功时通常为 null。 |
data |
any | 实际业务响应。 |
少数复用通用端口的接口直接返回数组或标量,不使用此包装。
项目申请和激活
| 方法 | 路径 | 主体/用途 |
|---|---|---|
| GET | /api/poolnode/project/info |
获取项目状态、名称和币种费率。 |
| POST | /api/poolnode/project/apply |
申请项目:{ name, token }。 |
| POST | /api/poolnode/project/active |
激活项目:{ code, token, captcha_token }。 |
| POST | /api/poolnode/project/unactive |
注销当前项目。 |
注销会清空前端的项目、费率和端口状态。执行前应确认结算和网站数据已经备份。
GET /api/poolnode/project/info 的 data 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
cid |
number | 项目/客户 ID。 |
name |
string | 项目名称。 |
created_at |
string | 创建时间。 |
config |
array | 币种费率配置。 |
config[].coin |
string | PoolNode 币种代码。 |
config[].email |
string | 收益邮箱,展示时脱敏。 |
config[].r |
string/number | 节点费率,0–1 小数。 |
申请和激活返回业务状态对象;注销成功时包装层 status=0。这三个接口都会修改项目状态。
节点端口和接入点
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/poolnode/ports |
获取节点端口列表。 |
| POST | /api/poolnode/port/new |
在节点服务器创建端口。 |
| POST | /api/poolnode/extra/{port} |
修改指定监听端口的公开模式和统一钱包。 |
| DELETE | /api/port/{id} |
删除节点端口,复用通用端口删除接口。 |
| GET | /api/poolnode/endpoints |
获取节点接入地区/上游端点。 |
| GET | /api/poolnode/ping/{id} |
测试接入端点延迟。 |
| GET | /api/poolnode/project/stats?k={coin} |
获取指定节点币种统计。 |
| GET | /api/poolnode/sync/info |
获取同步成功、失败和明细。 |
部分币种的延迟测试会追加 ?k=KAS。创建端口主体与通用端口结构接近,节点前端额外使用:
{
"port": 3333,
"name": "Pool Port",
"currency": "PI-BTC",
"pool_address": "<接入点 ID 的 JSON 字符串>",
"mode": 1,
"protocol": 0,
"category": "poolnode",
"proxy_addr": ""
}
修改附加配置:
{
"mode": 1,
"proxy_addr": "<公开模式钱包或子账号>"
}
字段依赖和返回值:
/api/poolnode/endpoints返回包装后的Endpoint[];每项为{ id, coin, name, url }。url可能为null。- 创建端口的
pool_address不是主机名,而是从Endpoint.id取得后执行JSON.stringify(id)得到的字符串。只能选择Endpoint.coin与请求currency相同的项。 /api/poolnode/ping/{id}的{id}同样使用Endpoint.id,data是延迟毫秒数。/api/poolnode/ports直接返回端口数组,每项含server和stat。server字段沿用通用端口模型;节点stat包含port、online、conn、offline、delay、coin。- 创建接口成功后返回端口 ID 或成功标量;修改、删除成功后重新 GET 端口列表。
GET /api/poolnode/project/stats?k={coin} 返回包装后的 { hashrate, hashrate1440, online, conn };没有统计时前三项可能为 null。
GET /api/poolnode/sync/info 返回:
{
"status": 0,
"error": null,
"data": {
"summary": { "sc": 0, "fl": 0, "ty": 0, "lt": "..." },
"details": [
{ "sc": 1, "fl": 0, "ty": 0, "lt": "..." }
]
}
}
sc 为成功数/成功标志,fl 为失败数,ty 为同步类型,lt 为最近同步时间。
网站访问设置
| 方法 | 路径 | 请求/用途 |
|---|---|---|
| GET | /api/poolnode/index/port |
获取网站端口。 |
| POST | /api/poolnode/index/port |
修改网站端口:{ "r": 8080 }。 |
| GET | /api/poolnode/route |
获取网站安全路径。 |
| POST | /api/poolnode/route |
修改安全路径:{ "k": "route" }。 |
| GET | /api/poolnode/enable/index |
获取公网访问状态。 |
| POST | /api/poolnode/enable/index/{flag} |
开关公网访问。当前后端标志与 UI 布尔值相反。 |
| GET | /api/poolnode/index/tls |
获取 TLS 状态。 |
| POST | /api/poolnode/index/tls/{flag} |
设置 TLS 状态。 |
端口、路径和 TLS 修改可能触发服务重启,调用端必须准备切换到新地址。
读取接口均使用标准包装:index/port 的 data 为 number,route 为 string,enable/index、index/tls 为 number。公网访问开关的后端值与 UI 相反:前端把 data=0 解释为已开启。写接口成功时 status=0;端口、路径或 TLS 切换时连接可能先断开。
网站证书
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/poolnode/cert |
获取当前证书类型。 |
| POST | /api/poolnode/cert/upload |
上传网站 PEM 证书和私钥。 |
| POST | /api/poolnode/cert/reset |
恢复内置网站证书。 |
上传主体为 { pem, key },两个字段均是 UTF-8 文本的 Base64 编码。
GET /api/poolnode/cert 的 data 为 number;当前前端把 0 解释为使用内置证书,非 0 解释为自定义证书。上传和恢复接口成功时返回包装后的成功标量,并可能重启网站服务。
个性化网站和模板
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/poolnode/webconfig |
获取网站名称、Logo、公告等配置。 |
| POST | /api/poolnode/webconfig |
保存网站配置。 |
| GET | /api/poolnode/pool/asset/selected |
获取当前模板。 |
| GET | /api/poolnode/pool/assets |
获取所有可用模板。 |
| GET | /api/poolnode/pool/asset/status |
获取模板下载状态。 |
| POST | /api/poolnode/pool/asset |
选择模板。 |
| POST | /api/poolnode/pool/asset/reset |
恢复默认模板。 |
网站配置保存为 Base64 编码 JSON:
{
"k": "<Base64(JSON.stringify(config))>"
}
选择模板:
{
"asset_id": 1,
"item_id": 2
}
网站和模板返回结构:
/api/poolnode/webconfig的data是 Base64 编码的 JSON 字符串,也兼容直接对象。解码后的字段为logo、title、title1、title2、rotate、title3、bottom、fee,当前前端统一按字符串处理。/api/poolnode/pool/asset/selected的data是数组,前两项依次作为asset_id、item_id;响应可能包含额外状态项,调用方不要假定固定长度为 2。/api/poolnode/pool/assets的data是模板数组。/api/poolnode/pool/asset/status的data为{ is_downloading: number }。
模板字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
number | 模板资源 ID,选择请求的 asset_id。 |
cid |
number | 所属项目/分类 ID。 |
theme |
string | 模板名称。 |
cover |
string | 预览图地址。 |
uid |
number/null | 发布者 ID。 |
created_at / updated_at |
string | 时间。 |
items |
array | 可选版本。 |
items[].id |
number | 版本项 ID,选择请求的 item_id。 |
items[].version |
string | 版本号。 |
items[].zip_url |
string/null | 下载地址;可能不直接公开。 |
选择或恢复模板成功时 data="Ok"。asset_id 和 item_id 必须来自同一个模板对象,不能跨模板组合。
APP 通信配置
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/poolnode/project/url |
获取 APP API 地址、名称和邀请码。 |
| POST | /api/poolnode/project/url |
保存 APP 通信地址。 |
{
"api_url": "https://pool.example.com/safe-route",
"refresh": 0
}
GET 成功时返回 { invite_code, name, url },部分版本直接返回对象,部分版本放在标准包装的 data 中。当前实例的 invite_code 可能是 number,调用方显示时应转换为字符串。POST 成功后重新 GET 获取规范化 url。
