Lucky 移动端远程管理实战:手机调通 4 个核心 API,规则随时改
2026/9/20 9:58:22 网站建设 项目流程

Lucky 移动端远程管理实战:手机调通 4 个核心 API,规则随时改

【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky

出门在外发现服务器连不上,不用赶回家——打开手机端应用调一次 Lucky 的 API,把端口转发规则改好、再一键 WOL 唤醒设备,整套远程管理就跑通了。Lucky 是软硬路由与家庭服务器上的网络工具,端口转发、反向代理、DDNS、网络唤醒(WOL)全部提供 HTTP 接口,你完全可以用它给手机或其他客户端做远程管理。

下面按"先跑通 → 按目的拆能力 → 工程细节 → 源码导航"的顺序讲,所有接口路径和字段都来自仓库实际代码。

先跑通一次调用:环境确认与登录取 Token

这一节能解决两个问题:Lucky 服务是否可达、你的账号能否拿到后续所有请求的通行证(Token)。

  • 存活探测:GET /version不需要登录,直接返回版本号,适合做心跳。
  • 登录:POST /api/login。注意请求体 JSON 字段是首字母大写AccountPassword,写成小写会解析失败。
  • 登录成功返回token(JWT,有效期 24 小时),之后所有/api/*请求都要在Authorization请求头(或同名 query 参数)里带上它。
  • 一个容易踩的坑:Lucky 默认只接受局域网来源的后台请求,远程管理前需在基础设置里打开"允许外网访问"开关,否则外网请求会被直接拦截。
# 1. 存活探测(无需登录) curl http://<Lucky IP>:<管理端口>/version # 2. 登录取 Token TOKEN=$(curl -s -X POST http://<Lucky IP>:<管理端口>/api/login \ -H 'Content-Type: application/json' \ -d '{"Account":"账号","Password":"密码"}' | jq -r .token) # 3. 用 Token 调用状态接口,验证链路 curl -s http://<Lucky IP>:<管理端口>/api/status -H "Authorization: $TOKEN"

🔑 记住一个全局约定:Lucky 的业务接口 HTTP 状态码几乎总是 200,成功与否看返回体里的ret字段0才是成功。

按使用目的拆能力:查状态、管转发、配域名、唤醒设备

这一节按"你想干什么"分组,每组给出接口地址、方法和关键字段。总览表放在本节末尾。

查状态与日志:/api/status 和 /api/logs

  • GET /api/status:内存、CPU、进程 CPU 占用、当前 TCP/UDP 连接数、运行时长,移动端首页卡片直接消费它。
  • GET /api/logs?pre=<时间戳>:增量拉取该时间戳之后的运行日志。
  • GET /api/info:应用基础信息。

端口转发接口:规则增删与开关

Lucky 端口转发接口的规则对象关键字段:NameForwardTypestcp/udp数组)、ListenAddressListenPortsTargetAddressListTargetPorts(端口支持8000-8005区间写法)。

  • GET /api/portforwards:规则列表,附带每条规则的流量统计和最近日志。
  • POST /api/portforward:新增规则。Key由服务端随机生成(16 位),新规则会立即启用
  • PUT /api/portforward:修改(整体提交,带原Key)。
  • DELETE /api/portforward?key=<key>:删除。
  • GET /api/portforward/enable?key=<key>&enable=true:开关规则,注意这里用的是 GET + query。
  • GET /api/portforward/logs?key=<key>&pageSize=10&page=1:分页查访问日志。
# 新增一条端口转发规则:0.0.0.0:9000 -> 192.168.1.100:5000 (tcp) curl -s -X POST http://<Lucky IP>:<管理端口>/api/portforward \ -H "Authorization: $TOKEN" -H 'Content-Type: application/json' \ -d '{ "Name": "NAS 远程访问", "ForwardTypes": ["tcp"], "ListenAddress": "0.0.0.0", "ListenPorts": "9000", "TargetAddressList": ["192.168.1.100"], "TargetPorts": "5000" }'

DDNS 接口:域名任务的增删改

关键字段:TaskNameTaskTypeIPv4/IPv6)、GetTypeurl从 URL 解析 IP /netInterface从网卡取 IP)、URLDomainsDNS(内含NameIDSecret)、TTL

  • GET /api/ddnstasklist:任务列表。若 DDNS 总开关未开启会返回ret=6,先用PUT /api/ddns/configureEnable置为true
  • POST /api/ddns/PUT /api/ddns?key=<key>/DELETE /api/ddns?key=<key>:增改删任务。
  • GET /api/ddns/enable?key=<key>&enable=true:开关单个任务。

反向代理接口:规则查询与开关

  • GET /api/reverseproxyrules:规则列表。
  • POST /api/reverseproxyrule/PUT /api/reverseproxyrule/DELETE /api/reverseproxyrule?key=<key>:增改删。
  • GET /api/reverseproxyrule/enable?ruleKey=<key>&proxyKey=<proxyKey>&enable=true:精确开关某条规则下的某个代理。
  • GET /api/reverseproxyrule/logs?ruleKey=&proxyKey=&pageSize=&page=:分页查访问日志。

网络唤醒接口:一键 WOL 设备

设备对象关键字段:DeviceNameMacListBroadcastIPs(广播地址列表,留空则用本机网段广播地址)、Port(默认 9)、Repeat(重发次数,默认 5)。

  • GET /api/wol/devices/POST /api/wol/device/PUT /api/wol/device/DELETE /api/wol/device?key=<key>:设备增删改查。
  • GET /api/wol/device/wakeup?key=<key>:发送唤醒报文。
# 按设备 key 触发 WOL 唤醒 curl -s "http://<Lucky IP>:<管理端口>/api/wol/device/wakeup?key=<设备key>" \ -H "Authorization: $TOKEN"

全模块接口总览

模块接口方法说明
状态/api/statusGET资源与连接数
日志/api/logsGET按时间戳增量拉取
版本/versionGET无需 Token,可做心跳
端口转发列表/api/portforwardsGET含流量与最近日志
端口转发规则/api/portforwardPOST / PUT / DELETEDELETE 用 query 传key
端口转发开关/api/portforward/enableGETkey+enable
转发日志/api/portforward/logsGETkey+ 分页参数
DDNS 任务列表/api/ddnstasklistGET总开关未开返回ret=6
DDNS 任务/api/ddnsPOST / PUT / DELETEPUT/DELETE 用 query 传key
DDNS 开关/api/ddns/enableGETkey+enable
反向代理列表/api/reverseproxyrulesGET规则列表
反向代理规则/api/reverseproxyrulePOST / PUT / DELETEDELETE 用 query 传key
反向代理开关/api/reverseproxyrule/enableGETruleKey+proxyKey+enable
WOL 设备/api/wol/devicePOST / PUT / DELETEDELETE 用 query 传key
WOL 唤醒/api/wol/device/wakeupGETquery 传key
登录 / 注销/api/login//api/logoutPOST / PUT登录无需 Token

Token 续期、重试与弱网策略

这些是写进移动端客户端前的工程细节,照着做能少踩很多坑。

  • Token 续期:JWT 有效期 24 小时;收到ret=-1("登录失效")时重新走/api/login即可。注意服务端每次登录都会刷新登录密钥,新登录会使旧 Token 立即失效,多端同时用的话要保证同一时刻只保留一个活跃登录。
  • 错误判定:HTTP 200 不代表成功。ret=0成功;ret=1多为参数/校验错误,不要盲目重试,先看msg;资源超限、保存失败等对应其他非零值。
  • 重试策略:只对网络层错误(超时、断连)做指数退避重试;写操作(POST/PUT/DELETE)无法确认幂等性前不要自动重发。
  • 缓存规避:官方前端每次 GET 都带_=<时间戳>参数绕过缓存(见 web/adminviews/src/apis/utils.js),你的客户端可同样处理。
  • 弱网/离线:规则列表本地缓存一份;断线期间把写操作放进队列,重连后先GET /api/portforwards等接口核对最新状态,再逐条提交。
  • 心跳:用无需登录的GET /version做存活探测,失败才进入重连流程。
// 带重试与 Token 续期的请求封装 async function request(url, options = {}) { for (let i = 0; i < 3; i++) { try { const res = await fetch(url, { ...options, headers: { Authorization: token, ...options.headers } }); const data = await res.json(); if (data.ret === -1) await login(); // 登录失效,重新取 Token return data.ret === 0 ? data : null; // 业务错误不盲目重试 } catch (e) { await new Promise(r => setTimeout(r, 1000 * 2 ** i)); // 网络错误退避重试 } } return null; }

📶 这段封装基本就是移动端 API 层的全部骨架,后面每个功能页都只是调用它。

顺着源码深挖:后端、前端与配置目录

想确认字段细节或加新能力时,直接看这些路径:

  • 路由注册与 Token 校验:web/web.go——全部/api路由、tokenCheck中间件、外网访问拦截都在这里。
  • 各模块处理器:web/portforward.go、web/ddns.go、web/reverseproxy.go、web/wol.go。
  • 字段结构定义:config/portforward.go、config/ddns.go、config/wol.go,JSON 字段名以jsontag 为准。
  • 前端调用范例:web/adminviews/src/apis/utils.js,每个接口都封装成独立函数,照着抄最省事。
  • 转发与代理实现:socketproxy/;WOL 魔术报文:thirdlib/go-wol/。
  • 界面组件参考:web/adminviews/src/components/,Vue3 组件可直接借鉴交互设计。

status+ WOL 这两个最轻量的接口先做成一个两页小应用跑起来,再逐步补齐端口转发与 DDNS 的规则管理页。动手前记得先在服务端确认外网访问开关与账号安全,你的第一次远程调用就不会被拦在半路。

【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询