# 在线设备数限制 1. 在订阅上添加客户端连接数限制 2. 用户订阅的时候将客户端限制附加到用户表字段上 3. 后端获取用户信息的时候增加客户端显示字段显示 4. 获取在线用户IP,判断是否达到了限制数量,当达到了限制IP数量拒绝新的IP连接 , 当有新的IP连接的时候立刻上报到xboard后端 5. 上报用户流量时附带IP #### xboard 需要增加接口 1. 获取节点用户列表 ``` { "id": 1, "uuid":"cd692137-3f7b-47fb-b7a3-037a203d6489", "speed_limit": null, "device_limit": 10, "online_ips": ['1.1.1.1', '2.2.2.2'] } ``` 2. 后端上报新的在线用户IP (后端获取到在线数量没达到用户在线限制才会上报) ``` { "id": 1, "new_online_ip": "3.3.3.3" } ``` 上报成功返回 ```{ "data":true }``` 当达到用户在线数量限制就返回,面板的在线用户的IPs ``` { "data": ['1.1.1.1','2.2.2.2','3.3.3.3','4.4.4.4','5.5.5.5'] } ``` 3. 后端上报用户流量(IP,ID,流量,三要素) ``` { "id":1, "u": 100, "d": 100, "ip": "1.1.1.1" } ``` #### 安全设计 1、为了不泄漏用户的在线IP, ip使用Hash加密处理, 后端有用户连接时,对用户的连接IP使用 hash验证 #### 界面反馈 ##### 后台界面 - 在订阅界面增加用户设备限制 - 编辑用户时增加用户设备限制 - 在用户列表显示在线用户量 - 在订阅列表显示当前订阅在线用户、IP数量 - 在节点页面显示在线用户数量和IP数 ##### 用户前端 - 首页增加在线链接设备数(旁边增加重置订阅按钮) #### 后续性能优化 - 后端上报用户流量使用 brotli压缩,减少体积 - 后端上报新的用户IP接口使用websocet或者grpc