| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <?php
- class logsController extends Controller
- {
- public $initphp_list = array(
- 'rsync',
- 'test'
- );
- public function run()
- {
- $preg = "/\d+\.\d+\.\d+\.\d+/";
- $s = $this->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 = "<html>
- <head>
- <title>欢迎使用ShadowSocks服务</title>
- </head>
- <body>
- <p>尊敬的ss5用户:" . $userinfo['user_name'] . "</p>
- <table>
- <tr>
- 您在 <a href='https://www.shadowsocks5.com'>https://www.shadowsocks5.com</a> 上的账号由于在海外IP(" . $ip[0] . ":" . $location . ")上使用ss服务已经被冻结,
- <br>如果属于误连接,您可以登录网站后按照网站提示进行解除冻结操作,在冻结解除之前您将无法继续使用ss5提供的shadowsocks服务,如果多次发生此类情况,您的账户将被永久冻结,感谢您的支持与理解!
- <br><font color='red'>本邮件由系统自动发送,请不要直接回复本邮件,如有问题请发送邮件到heanup@vip.qq.com</font>
- </tr>
- </table>
- </body>
- </html>";
- $headers = "MIME-Version: 1.0" . "\r\n";
- $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
-
- // 更多报头
- $headers .= 'From: <webmaster@shadowsocks5.com>' . "\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");
- }
- }
|