开头感谢sspanel的作者orvice大神!【转载请注明】

博主最近在搭建sspanel v3,中间坑确实挺多的,我回头开贴补充一下,ss服务器端我选择了orvice的shadowsocks-go mu版,因为作者是基于流量控制的机理,实际上奸商都是通过时间控制(233),所以我就寻思在作者的基础上加以修改,添加时间的限制。

注:此版本基于mysqlapi,webapi的修改方式令开贴

我在sspanel数据的user表中添加了两个字段:end_time int,到期日期(1970开始的时间戳);package_type int 套餐类型(无,月,三个月,半年,一年)。

具体可以根据自己实际需要情况修改。

首先,我们找到用户控制代码,在shadowsocks-go-mu\mu\mysql\mysql.go中,作者在这里用struct读取mysql中的数据

type User struct {id             intport           intpasswd         stringmethod         stringenable         inttransferEnable intu              intd              int
}

需要在里面加上我们新加的三个字段(因为我不知道go语言如何获取时间戳,所以直接从sql读了,有一个好处是如果配置多个服务器,可以保持时间同步,不受本地时间 )

 end_time        int//从mysql读取服务器当前时间戳now_time        intpackage_type   int

找到读取数据库数据的方法,给上述字段赋值

func (c *Client) GetUsers() ([]user.User, error) {log.Log.Info("get mysql users")var datas []*User//查询数据库加上新增的字段rows, err := c.db.Model(User{}).Select("id, passwd, port, method,enable,transfer_enable,u,d,end_time,UNIX_TIMESTAMP(LOCALTIME()) as now_time,package_type").Rows()if err != nil {log.Log.Error(err)var users []user.Userreturn users, err}defer rows.Close()for rows.Next() {var data User//将读取到的到期时间和账户类型赋值err := rows.Scan(&data.id, &data.passwd, &data.port, &data.method, &data.enable, &data.transferEnable, &data.u, &data.d, &data.end_time, &data.now_time, &data.package_type)if err != nil {log.Log.Error(err)continue}datas = append(datas, &data)}log.Log.Info(len(datas))users := make([]user.User, len(datas))for k, v := range datas {users[k] = v}return users, nil
}

下一步,找到控制方法,增加到期自动断开

func (u *User) IsEnable() bool {if u.enable == 0 {return false}if u.u+u.d > u.transferEnable {return false}//如果过期,停用用户if u.now_time > u.end_time {return false}return true
}

以上,改完之后重新编译,替换掉原有的mu文件,将服务端重新启动即可

有疑问的可以加群讨论,群号256950656

sspanel按月结算,修改go版代码【mysql api】相关推荐

  1. x-http-wrapper: 如何解决每次发版时,修改http相关代码造成的错误!(Android、iOS、h5)...

    其实是我做了个开源工具(^__^),拿出来给大家鉴赏下,欢迎大家提意见 项目:github.com/xuyt11/x-ht- 欢迎关注和star . 功能:这是一个http相关代码的创建工具. 现在我 ...

  2. mysql5.5太平洋,太平洋软件下载站SQL全功能新云2.1商业版代码 下载

    太平洋软件下载站SQL全功能新云2.1商业版代码 下载 更新时间:2007年04月17日 00:00:00   作者: 运行环境:Asp/Access/Asp/Mssql/ 文件大小:30.76 MB ...

  3. 【DP练习】月饼盒(提高版)(vijos1255)

    [DP练习]月饼盒(提高版) 测试链接:https://vijos.org/p/1255 [题目背景]:中秋节了,CCC老师决定去送礼.  [问题描述]:一个被分为 n*m 个格子的月饼盒,第 i 行 ...

  4. 【完整教程】nginx反向代理wss,实现不修改服务器端websocket代码加密通讯请求

    最近在用go语言的leaf框架开发H5游戏的服务器端,用websocket的方式进行服务器与客户端之间的通讯.然后之前都是本地websocket开发,要部署到facebook平台的时候,平台要求与第三 ...

  5. 短视频批量伪原创 视频md5修改手机版

             短视频批量伪原创 视频md5修改手机版          都说人是自私的,只关注与自己相关的事情,不论是"唐山大地震"还是"毒鸡汤",它们都能 ...

  6. 基于jQuery仿QQ音乐播放器网页版代码

    基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div class=" ...

  7. 【系统之家首发】10月最新GhostWin7_SP1旗舰版(64位)电脑公司装机版v2011.10

    GhostWin7_SP1旗舰版(64位)电脑公司装机版v2011.10 ■ 概述: Ghost7是指使用Ghost软件做成压缩包的Windows7,俗称克隆版Win7.用克隆版的目的是节省安装时间. ...

  8. twrp调整分区_一加7专版TWRP中英文修改优化版-刷机之家

    详情 一加7TWRP是一款一加7手机专用的TWRP工具,recovery是用来刷第三方的系统包,twrp是刷机必不可少的工具之一,自定义触摸恢复,非常专业的刷机工具,小编带来的是一加7专版TWRP中英 ...

  9. MySQL(最全的MySQL基础版,代码版)

    MySQL 一.引言 1.1 现有的数据存储方式有哪些? Java中存储数据(变量.对象.数组.集合),数据都是保存在内存中,属于瞬时状态数据 文件(File)存储数据,保存在硬盘上,属于持久化状态存 ...

最新文章

  1. java随机产生若干个偶数完成求和_java - 创建随机生成器以生成并计算奇数对偶数 - 堆栈内存溢出...
  2. RSA加密和DH加密
  3. Java数据类型转换(自动转换和强制转换)
  4. OpenCASCADE:拓扑 API之特征
  5. Express + mongoDB + nodejs
  6. MySQL存储树形数据优化技笔记
  7. Android自定义控件学习(三)----- 自定义视图组件
  8. 深度学习2.0-6.tensorflow的高阶操作之合并与分割
  9. Java 字符串使用之性能优化实践
  10. 如何重新编辑排版错乱的PDF文件
  11. [中文语音识别后文本加标点] 维基百科数据下载和解析(xml-txt)
  12. 计算机毕业设计Java宠物收养管理系统(源码+系统+mysql数据库+lw文档)
  13. 【批处理DOS-CMD命令-汇总和小结】-注册表编辑命令reg,如何用cmd命令打开注册表编辑器regedit
  14. android是乐视手机刷机,乐视MAX(乐视 X900+)一键刷机教程,轻松刷机
  15. 内网自建yum源和apt源(含各信创系统)
  16. SIGIR2020推荐系统论文解析:Recommendation for New Users and New Items
  17. 一文了解EpiQuik CUT&RUN m6A RNA富集(MeRIP)试剂盒
  18. cst matlab,CST-MATLAB-API-1.0.0 Linking matlab and cst - 下载 - 搜珍网
  19. Opencv3.0--第二篇【双阈值二值化图像】
  20. 操作系统笔记(王道)(持续更新中)

热门文章

  1. 计算机画画小游戏,这个突然爆火的小游戏,简直是你朋友圈画画水平的照妖镜!...
  2. 以前看flex 性能优化一文后记录
  3. KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现
  4. Python if else条件语句
  5. 行为识别笔记:C3D network-用于视频特征提取的3维卷积网络
  6. mysql的第一次作业_数据库入门第一次作业 - osc_2frf70qv的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 通过git上传代码到代码库步骤(亲测有效)
  8. 〖Python APP 自动化测试实战篇⑦〗- 实战 - appium 定位手机元素的超级方法 - uiautomator
  9. electron-layui搭建桌面应用
  10. Java实现算法应用--百钱买百鸡 主要内容:公鸡5元一只,母鸡3元一只,小鸡一元3只。 * 问100块钱怎样可以买100只鸡?