userDao = InitPHP::getDao("user"); } /** * 添加一个用户 */ public function createUser($data) { $port = $this->userDao->getLastPort(); $data['port'] = $port + rand(1, 2); return $this->userDao->createUser($data); } /** * 更新用户的信息 * * @param integer $id * @param array $data * @return boolean */ public function updateUser($id, $data) { return $this->userDao->updateUser($id, $data); } public function resetTran() { set_time_limit(0); $users = $this->getUsers(); sort($users); foreach ($users as $k => $v) { if ((time() - $v['last_login_time'] > 86400 * 30) && (time() - $v['last_check_in_time'] > 86400 * 30) && $v['switch'] == 1 && $v['plan'] == 'A') { if ($v['u'] + $v['d'] < 1024 * 1024) { self::delUser($v['uid']); $subject = $v['user_name'] . ':您在shadowsocks5上的账号由于长期未使用已经被冻结'; $message = " 欢迎使用ShadowSocks服务

尊敬的ss5用户:" . $v['user_name'] . "

您在 SS5 上的账号由于长期未使用已经被冻结,具体可能的情况如下:
1、您已没有近一个月没有登录过我们的网站了;
2、您在本月的使用流量小于1M;
您可以登录网站后按照网站提示进行解除冻结操作,在冻结解除之前您将无法继续使用ss5提供的shadowsocks服务,感谢您的支持与理解!
本邮件由系统自动发送,请不要直接回复本邮件,如有问题请发送邮件到support@tailsocks.com
"; sendmail($v['email'],$subject,$message,'webmaster@tailsocks.com'); sleep(1); } } } return $this->userDao->resetTran(); } /** * 获取所有用户的总流量 */ public function getAllTran() { return $this->userDao->getAllTran(); } /** * 更新用户信息 * * @param integer $id * @param array $data * @return bool */ public function updateUserinfo($id, $data) { $userinfo = $this->userDao->getUserById($id); $nowpass = md5($data['nowpassword']); if ($userinfo['pass'] != $nowpass) { return false; } if ($data['password'] != "") { $userdata['pass'] = md5($data['password']); } if ($data['email'] != "") { $userdata['email'] = $data['email']; } if (empty($userdata)) { return true; } return $this->userDao->updateUser($id, $userdata); } public function updatePortPass($id, $data) { return $this->userDao->updateUser($id, $data); } /** * 根据用户id获取用户信息 * * @param int $uid * 用户id * @return Ambigous */ public function getUserById($uid) { return $this->userDao->getUserById($uid); } /** * 登陆 * * @param array $data * @return boolean|Ambigous */ public function login($data) { $userinfo = $this->userDao->getUserByName($data['username']); if ($userinfo['pass'] != md5($data['password'])) { $userinfo = $this->userDao->getUserByEmail($data['username']); if ($userinfo['pass'] != md5($data['password'])) { return false; } } $u_data['last_login_time'] = time(); $this->userDao->updateUser($userinfo['uid'], $u_data); return $userinfo; } public function getUserByNameOrEmail($name) { $userinfo = $this->userDao->getUserByName($name); if (!$userinfo) { $userinfo = $this->userDao->getUserByEmail($name); if (!$userinfo) { return false; } } return $userinfo; } /** * 对用户解除冻结 * * @param int $uid * 用户的uid * @param string $code * 校验码 * @param bool $pass * @return bool */ public function doReset($uid, $code, $pass = FALSE) { if ($pass === true) { $user_info = $this->userDao->getUserById($uid); if ($user_info['code'] == $code && time() < $user_info['vaild_time']) { return true; } else { return false; } } elseif (strlen($pass) > 6) { $user_info = $this->userDao->getUserById($uid); if ($user_info['code'] == $code && time() < $user_info['vaild_time']) { $data['code'] = ""; $data['vaild_time'] = 0; $data['pass'] = md5($pass); return $this->userDao->updateUser($uid, $data); } else { return false; } } else { $data['code'] = $code; $data['vaild_time'] = time() + 3600; return $this->userDao->updateUser($uid, $data); } } /** * 获取所有用户 */ public function getUsers($num = NULL, $offset = 0) { return $this->userDao->getUsers($num, $offset); } /** * 获取所有用户 */ public function getUserByPort($port) { return $this->userDao->getUserByField(array( 'port' => $port )); } /** * 删除一个用户 * * @param integer $uid * @return boolean */ public function delUser($uid) { return $this->userDao->delUser($uid); } /** * 获取所有用户数 * * @return number */ public function getCount() { return $this->userDao->getCount(); } /** * 检测用户是否可以注册 * * @param array $userinfo * @return boolean */ public function checkUser($userinfo) { return $this->userDao->checkUser($userinfo); } /** * 检测邀请码 * * @param string $code * @return boolean */ public function checkInvite($code) { $invite = InitPHP::getDao("invite"); $data = $invite->getOneByInvite($code); if ($data['status'] == 1) { return true; } else { return false; } } /** * 删除邀请码 * * @param string $code */ public function deleteInvite($code) { $invite = InitPHP::getDao("invite"); return $invite->delete($code); } /** * 增加邀请码 * * @param string $pre * 邀请码前缀设置 * @param int $num * 产生个数 * @param string $platform * 产生平台来源 * @return boolean */ public function add($pre, $num, $platform) { $invite = InitPHP::getDao("invite"); $str = ""; for ($i = 0; $i < $num; $i++) { $data = array(); $data['code'] = $pre . $i . substr(md5($i . time() . uniqid()), 0, 8); $data['platform'] = $platform; $invite->add($data); $str .= $data['code'] . "
"; } return $str; } /** * 获取一个随机邀请码 */ public function getInvite() { $invite = InitPHP::getDao("invite"); $codes = $invite->getAll(); return $codes[rand(0, count($codes) - 1)]; } /** * 对用户解除冻结 * * @param int $uid * 用户的uid * @param string $code * 校验码 * @param bool|string $free * 是否执行解冻 * @return bool */ public function doFreeze($uid, $code, $free = FALSE) { if ($free) { $user_info = $this->userDao->getUserById($uid); if ($user_info['code'] == $code && time() < $user_info['vaild_time']) { $data['switch'] = 1; // $data['enable'] = 1; $data['code'] = ""; $data['vaild_time'] = 0; return $this->userDao->updateUser($uid, $data); } else { return false; } } else { $data['code'] = $code; $data['vaild_time'] = time() + 86400 * 2; return $this->userDao->updateUser($uid, $data); } } }