开头感谢sspanel的作者orvice大神!【转载请注明】
博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。
上一篇博客中我实现了mysql api的修改,这一篇是web api。开始我以为orvice是在php api做控制的,看了api发现不是(还是webapi直接控制好啊,修改方便= =),数据库修改等请去看上一帖传送门
找到user结构体,路径shadowsocks-go-mu\mu\webapi\user.go
结构体修改,注意,这里的字段和json字段不能相同,不然会解析不到,首字母大写即可
type User struct { Id int `json:"id"` Port int `json:"port"` Passwd string `json:"passwd"` Method string `json:"method"` Enable int `json:"enable"` TransferEnable int64 `json:"transfer_enable"` U int64 `json:"u"` D int64 `json:"d"` //结束时间 End_time int64 `json:"end_time"` //现在时间 Now_time int64 `json:"now_time"` //套餐类型 package_type int `json:"package_type"` }
控制方法修改
func (u User) IsEnable() bool { if u.Enable == 0 { return false } if u.TransferEnable < (u.U + u.D) { return false } //如果过期,停用用户 if u.Now_time > u.End_time { return false } return true }
因为这里的now_time需要从后台获取,所以还需要修改sspanel的代码(本地读取时间会有时间不一致的风险,不推荐使用)
php mvc的代码改起来很蛋疼= =因为sql操作模块化了,所以需要偷懒,找到API文件,路径 app/Controllers/Mu/UserController.php,修改index方法的代码
// User List public function index($request, $response, $args) { $users = User::all(); //将当前时间戳返回到数据中 foreach($users as $user){ $user->now_time = time(); } $res = [ "ret" => 1, "msg" => "ok", "data" => $users ]; return $this->echoJson($response, $res); }
原有代码里User并没有now_time字段,所以还需要在user表中加入now_time字段,放在end_time后面即可,int类型,默认值随意
改完之后重新编译,php直接到你的网站根目录下手动修改即可
有疑问的可以加群讨论,群号256950656
有疑问加站长微信联系(非本文作者)