前些天在闲置的digitabocean(5美元每月 1CPU 512MB内存 20GSSD 1T流量)搭建了shadowsocks manyuser+ss-panel的Shadowsocks多用户管理系统,为抑制BT党和Y2B党,每月初始流量给得比较少,只有1G,可以通过每日签到随机获得1-50MB流量。我觉得这个流量轻度使用应该是足够的。
弄好之后这两天一直没有管它,今天登陆后台一看,之前发布的5个邀请码都被人用了。但看到流量一栏,咦不对!每个人都有2G以上的流量,我记得已经在ss-panel的设置文件里设置了签到只能随机获得1-100MB流量,他们这些注册一两天的人2G以上的流量是怎么来的?
怀着这个问题,我自己试着注册一个账号,签到一下,坑爹的一幕出现了,一下获得了1103MB
是程序出现BUG了吗?带着这个怀疑,我查看了下ss-panel的源码,一下就找问题所在了,在 user/_chenkin.php 这个文件里,作者加了一个判断条件,如果用户当前可用流量低于2048MB,签到一下可随机获得1024MB-2048MB流量。。。
现以被我改为流量低于512MB,签到一次可随机获得128-512MB流量。
如果你也搭建了ss-panel共享,遇到和我一样的问题,也可以和我一样操作,当然,如果你不需要这个判断条件,可以在源码里直接把这判断条件删除掉。
原始代码如下
if(!$oo->is_able_to_check_in()){
$transfer_to_add = 0;
}else {
if ($oo->unused_transfer() < 2048 * $tomb) {
$transfer_to_add = rand(1024, 2048);
} else {
$transfer_to_add = rand($check_min, $check_max);
}
$oo->add_transfer($transfer_to_add*$tomb);
$oo->update_last_check_in_time();
}
删除掉是否判断低流量增加签到获得流量的代码如下
if(!$oo->is_able_to_check_in()){
$transfer_to_add = 0;
}else {
$transfer_to_add = rand($check_min, $check_max);
$oo->add_transfer($transfer_to_add*$tomb);
$oo->update_last_check_in_time();
}