controller->get_gp("s");
preg_match($preg, $s, $ip);
$port = $this->controller->get_gp("port");
writeLog($ip[0], $port);
$ip_lib = self::getIp();
$server_ip = $ip_lib->getIp();
$logs = $this->getLogsDao();
$data['ip'] = $ip[0];
$data['port'] = $port;
$location = $ip_lib->get_area($ip[0]);
$ssh = $this->getSshServeice();
$servers = $ssh->getAll();
$_servers = array();
foreach ($servers as $k => $v) {
$_servers[] = $v['server'];
}
if ($r = $logs->getOneByField($data)) {
$logs->update($r['id'], array(
'time' => date("Y-m-d H:i:s"),
'server_ip' => $server_ip,
'location' => $location
));
echo "OK";
} else {
$data['server_ip'] = $server_ip;
$data['time'] = date("Y-m-d H:i:s");
$data['location'] = $location;
$logs->add($data);
}
die();
if (! $ip_lib->inChina($location) && ! in_array($ip[0], $_servers)) { // 非中国大陆IP,冻结账户,发邮件通知
$user = $this->getUserService();
$userinfo = $user->getUserByPort($port);
if($userinfo['switch']==0){
echo "has disabled!";
die();
}
$user->delUser($userinfo['uid']);
$subject = $userinfo['user_name'] . ':您在shadowsocks5上的账号出现异常登录被冻结!';
$message = "
欢迎使用ShadowSocks服务
尊敬的ss5用户:" . $userinfo['user_name'] . "
您在 https://www.shadowsocks5.com 上的账号由于在海外IP(" . $ip[0] . ":" . $location . ")上使用ss服务已经被冻结,
如果属于误连接,您可以登录网站后按照网站提示进行解除冻结操作,在冻结解除之前您将无法继续使用ss5提供的shadowsocks服务,如果多次发生此类情况,您的账户将被永久冻结,感谢您的支持与理解!
本邮件由系统自动发送,请不要直接回复本邮件,如有问题请发送邮件到heanup@vip.qq.com
";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
// 更多报头
$headers .= 'From: ' . "\r\n";
$headers .= 'Cc: shadowsocks5@foxmail.com' . "\r\n";
mail($userinfo['email'], $subject, $message, $headers);
}
}
public function rsync()
{
set_time_limit(0);
$logs = $this->getLogsDao();
$data = $logs->getAll();
$ip_lib = self::getIp();
foreach ($data as $k => $v) {
if (trim($v['location']) != "") {
continue;
}
$temp = array();
$temp['location'] = $ip_lib->get_area($v['ip']);
if (trim($temp['location']) != "")
$logs->update($v['id'], $temp);
}
echo "OK";
}
public function test()
{
$ip = "163.44.170.225";
$ssh = $this->getSshServeice();
$servers = $ssh->getAll();
$_servers = array();
foreach ($servers as $k => $v) {
$_servers[] = $v['server'];
}
$ip_lib = self::getIp();
$location = "北美地区";
if (! $ip_lib->inChina($location) && ! in_array($ip, $_servers)) {
echo "国外";
} else {
echo "国内";
}
}
/**
*
* @return logsDao
*/
private function getLogsDao()
{
return InitPHP::getDao("logs");
}
/**
*
* @return userService
*/
private function getUserService()
{
return InitPHP::getService("user");
}
/**
*
* @return areacodeInit
*/
private function getIp()
{
return InitPHP::getLibrarys("areacode");
}
/**
*
* @return sshInit
*/
private function getssh()
{
return InitPHP::getLibrarys("ssh");
}
/**
*
* @return sshDao
*/
private function getSshServeice()
{
return InitPHP::getDao("ssh");
}
}