sspanel按月结算,修改go版代码【web api】
来源:互联网 发布:可视化编程语言有哪些 编辑:程序博客网 时间:2024/05/16 12:38
开头感谢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
0 0
- sspanel按月结算,修改go版代码【web api】
- sspanel按月结算,修改go版代码【mysql api】
- sspanel进阶——修改属于自己的sspanel站点(一)
- sspanel进阶——修改属于自己的sspanel站点(二)
- 应用内结算 API
- 修改捕鱼结算
- 代码修改web.config
- go 原生http web 服务跨域restful api 写法
- Faygo一款最适合开发API的 Go Web 框架
- 按月份时间循环的代码
- 修改SSDT来挂钩API的代码
- 通过修改代码挂接API
- 网上结算(CO)产品代码路径
- 如何通过代码修改web.config文件?
- 如何通过代码修改web.config文件
- asp.net代码修改web.config
- 如何通过代码修改web.config文件
- sspanel前端安装手册
- 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列
- 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
- 第49章 在SRAM中调试代码—零死角玩转STM32-F429系列
- Web总结
- 第50章 读写内部FLASH—零死角玩转STM32-F429系列
- sspanel按月结算,修改go版代码【web api】
- 第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列
- 如何在程序中跳转到设置里的打开蓝牙界面
- HTC M8 Verizon版刷电信4G破解固件不能出3G的解决办法
- 记一次JAVA程序的性能调优
- 函数-轻松创建易于表达的链式(级联)方法
- 【转载】Mysql数据类型常用属性
- JavaSE 多线程 线程间通信示例-1
- ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-