This app is of system of counting data usage from every port provied by shadowsocks, and depending on the data, a order system has been built, it's payment depends on WeChat, Paypal now is not provied.
此应用是一个用于统计shadowsocks每个端口数据的网站,在统计数据的基础上,建成了一套订单系统,订单系统基于微信支付,目前不支持Paypal。
在设计一套ss交易系统的时候,优先考虑的是使用目前的开源方案ss-panel,但是,发现了一些问题,所以自己重新写了一套:
-
基于PHP+mysql
-
应用iptables统计流量
-
crontab来定时刷新计费系统和验证系统
-
微信二维码扫码支付
1.用户的管理和端口映射 ---解决方法:用户和端口绑定
2.流量统计 ---解决方法:iptables
3.重启后数据的保存 ---解决方法:更改脚本
4.其他的系统功能,如付款,邮件,邀请码,但是跟 ss 无关
1.加深对Shadowsocks的理解
2.避免出现框架问题,代码在我们手里掌握,可以用最基本的方式解决所有的问题
1.user,用户数据表:用户的最基本信息,无关shadowsocks服务,基本信息注册逻辑直接写入
id | username | password | ss_password | code | reg_time | recommender_email | |
---|---|---|---|---|---|---|---|
自增 ID | 用户名 | 邮箱 | 密码 | ss密码 | 验证码 | 注册时间 | 邀请者 |
2.node_data_record流量统计表:专门存放流量统计,此表的用户信息在设置的时候写入,此表的流量统计由脚本定时执行来刷新,此表只记录单个节点信息
id | uid | ip | port | in_data | out_data |
---|---|---|---|---|---|
自增 ID | 用户ID,强绑定,不删除 | 机器节点 | 端口号 | 输入流量 | 输出流量 |
3.user_data_contronl用户流量控制表,用来控制是否停机,以及根据过期月份,可以统计活跃用户数量
id | uid | expires_month | month_limit | extra_data |
---|---|---|---|---|
自增 ID | 用户 | 1号生效,到期月份,根据购买不同,添加的月份的数量也不同 | 月流量限制 | 流量叠加包 |
4.orders, 订单表:用来生成流量控制表
id | uid | type | price | 支付状态 |
---|---|---|---|---|
自增 ID | 用户 | 订单种类为数字或字符串,对应多少个月和每个月多少流量:1,月套餐,在用户流量的到期日期加一个月;2.年套餐,加12个月 3.月流量叠加包状态给个特殊值, | 价格 | 微信支付回掉 |
5.激活码表:专用的激活码或者优惠码
id | code | count_limit | count_used | expire_time | type |
---|---|---|---|---|---|
自增 ID | 激活码明文或者密位,如“买一送一” | 使用次数限制 | 已经使用次数 | 过期时间 | 活动类型 |
6.节点表(二期):用户注册后,在得到 ip 时候从这里获取两个节点,在一期,IP 只有一个,写死即可,二期实现两个,多个里面根据用户数量和区域分配两个
id | address | node_ip | user_count_limit | country |
---|---|---|---|---|
自增 ID | 域名 | ip | 用户数量 | 国家地区 |
- master 机器承载 web 和 sql 服务
- node 机器仅仅提供 shadowsocks 服务,以及流量统计的 php 服务;只需要这两个服务,不允许其他服务,其他诸如定时,统计等全部由 master 实现,简化 node 部署
- master 定时访问某个节点,得到该节点下的所有用户端口的流量,然后根据 ip 和端口号将流量直接写入流量统计表,如果一个用户有两个或者多个节点,他们并不冲突,分别写入即可
- 根据流量统计表,我们能确定这个用户下面的多个节点的流量,统计一下,和流量控制表对比即可
- 流量控制表,由用户购买行为来生成
低价,快速,稳定,安全的 VPN 代理。
(1)注册一个很快销毁的匿名邮箱 (2)用此邮箱注册三个账户:谷歌(统计),百度(统计),vultr(VPS)
(1)配置 json 由数据库未过期用户生成 (2)写入配置,重启服务 (3)每天自动化检查一次各用户流量,超过停机,每天检查一次过期日期,过期停机