RustMinerSystem

文档

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/infodata 字段:

字段 类型 说明
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.iddata 是延迟毫秒数。
  • /api/poolnode/ports 直接返回端口数组,每项含 serverstatserver 字段沿用通用端口模型;节点 stat 包含 portonlineconnofflinedelaycoin
  • 创建接口成功后返回端口 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/portdata 为 number,route 为 string,enable/indexindex/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/certdata 为 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/webconfigdata 是 Base64 编码的 JSON 字符串,也兼容直接对象。解码后的字段为 logotitletitle1title2rotatetitle3bottomfee,当前前端统一按字符串处理。
  • /api/poolnode/pool/asset/selecteddata 是数组,前两项依次作为 asset_iditem_id;响应可能包含额外状态项,调用方不要假定固定长度为 2。
  • /api/poolnode/pool/assetsdata 是模板数组。
  • /api/poolnode/pool/asset/statusdata{ 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_iditem_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