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"); } }