ArkLights icon indicating copy to clipboard operation
ArkLights copied to clipboard

远程配置功能请求

Open DazeCake opened this issue 2 years ago • 13 comments

点佬好,是否有兴趣做一下远程账号配置加载?因为个人觉得多账号的管理有些繁琐,我可以写一套SpringBoot+Mysql的后端API用于管理多账号和配置json载入,可以实现前端账号管理和配置,由速通主动轮询后端服务器来更新配置,不用打开手机进行管理设置效果应该很不错,因为属实是不太会lua没法直接pr,不知意下如何?

DazeCake avatar May 30 '22 09:05 DazeCake

要支持哪些功能,前端谁写。如果只是要远程控制,用命令行控制是否足够。

tkkcc avatar May 30 '22 10:05 tkkcc

前端我可以写 希望支持的功能

  • websocket client
  • 多账号配置热更新
  • 更详细,结构化的通知
  • 远程命令行控制

部分云手机厂商不支持命令行控制,可作为备选方案,由后端向速通推送cmd以执行

DazeCake avatar May 30 '22 11:05 DazeCake

开源地址: https://github.com/DazeCake/ArkLightsCloudBackEnd 等写好几个接口后会列个完整的API Doc

DazeCake avatar May 30 '22 13:05 DazeCake

你可以写,我可以负责脚本这块实现,你要定义好协议格式和详细的处理流程。 详细的流程比如获得一个新的多账号配置后,脚本要怎么处理这个新配置,脚本现在正在打剿灭。 websocket client算功能吗。脚本只能get和post,get到与之前不同的信息就执行,post传状态和通知。 我觉得有用的功能,设备状态判定、实时截屏、实时控制,账号增删改查、历史通知、最后一次执行时间。设备异常时短信通知。

tkkcc avatar May 30 '22 13:05 tkkcc

OK,处理流程我明天列个详细的doc给你 ws没有办法实现的话可以轮询心跳实现,返回报文在脚本处理即可 实时控制可能实现有难度,别的功能应该好实现

DazeCake avatar May 30 '22 13:05 DazeCake

实时截屏有一个流量问题,720p截图大概150K,10台设备每10秒获取一次截屏,一天需要3600*24/10*10*150/1024/1024 = 12GB。可能需要只在浏览器非空闲时才获取截屏。

tkkcc avatar May 30 '22 14:05 tkkcc

实时截屏应该由前端管理,当admin离线时将不会向后端发送截屏请求

DazeCake avatar May 30 '22 14:05 DazeCake

心跳

由于脚本难以实现ws,因此以get请求作为心跳包实现轮询通信

发送与断线

10s一次,3次断连视为掉线

认证

由后端生成唯一deviceToken鉴权,心跳包带此参数向服务器表明身份,并携带参数status向服务器表示状态

响应

响应由2部分组成

  • 状态码
  • 报文

其中状态码表明程序端应执行的操作,报文内为所需的参数

例如:

状态码 200 报文为空 表示后端未做任何请求,为普通心跳

状态码 201 报文为空 表示程序端因向后端上报当前截图

状态码 1000 报文为一json字符串 表示因立即停止程序端当前所有活动并依据json配置插队执行内容

上述状态码仅为例子,具体要沟通约定一个详细的状态表

多账号

多账号由后端进行任务调度和分配

每次程序端对后端post请求将会获得一个账号配置,程序端在执行完该账号预定任务后向后端回报完成,后端将会将其标记为完成并等待下一轮加入队列,在此期间程序端掉线或其他异常导致再次请求,后端将会发送之前请求过的账号配置

肉鸽

后端将会根据心跳包获取到的程序端信息自动分配空闲服务器作为肉鸽服务器,并向其下发任务

大致流程是这样

DazeCake avatar May 30 '22 14:05 DazeCake

大佬可以的!

tkkcc avatar May 30 '22 14:05 tkkcc

Alpha的API文档将会在这里更新,如果对接口有任何想法与建议欢迎随时与我联系

DazeCake avatar May 31 '22 03:05 DazeCake

v0.5.2 功能适配请求

测试服务器 账号:root 密码:123456

停机

接口:/heartBeat 描述:返回值code500时,立即结束并丢弃当前任务,完成动作后,向完成停机上报接口/haltComplete请求,返回值code200时表示已经同步停机操作,可恢复轮询获取任务接口

账号异常处理

关联issue 接口:/failTask 描述:

  • 新增type类型accountError,用于处理所有账号登陆失败问题
  • type类型lineBusy,用于处理账号抢登问题
  • type类型留空,默认归还任务至等待队列末端

日志标准化

示例

{
  "id": 0,
  "level": "INFO",
  "taskType": "daily",
  "title": "[08-13][16:15] 作战报告",
  "detail": "[20分钟] ==> [HD-9]x4 [1-7]x5",
  "imageUrl": "xxx",
  "from": "xxx",
  "server": 0,
  "name": "xxx",
  "account": "xxx",
  "password": "留空,此字段可能会在后期弃用",
  "time": "2022-08-13T16:15:16.844Z",
  "delete": 0
}

DazeCake avatar Aug 13 '22 08:08 DazeCake

返回值code为200时表示已经同步停机操作,可恢复轮询获取任务接口

不是200呢

日志标准化是要我按这个格式给你吗,我看只有title和detail需要修改。非作战报告的格式呢。

tkkcc avatar Aug 13 '22 14:08 tkkcc

不是200的情况只有可能是后端离线,可以30s后重试

日志标准化是希望以一个较为标准的格式来上报日志,旧版的title和detail没有区分

期望的title格式:[MM-dd][HH:mm] 简短的描述内容

detail内容较为不固定,尽可能使用易于分别的半角符号对内容进行分割,非作战报告且无具体内容的可以留空,仅使用title即可

DazeCake avatar Aug 13 '22 14:08 DazeCake