request->request('local_addr'); $user_ip = $this->request->request('client_addr'); $service = $this->request->request('service'); $is_sps = $this->request->request('sps')=='1'; $account = $this->request->request('user'); $password = $this->request->request('pass'); $target = $this->request->request('target'); if (!$account || !$password) { return $this->err(); } $ret = $this->auth->login($account, $password); if ($ret) { $user = \app\common\model\User::where(['mobile'=>$account])->find(); if($user->total_traffic < $user->traffic){ // 流量已用完 return $this->err(); } $user_ip = explode(":",$user_ip)[0]; \app\common\model\User::where(['id'=>$this->auth->id])->update(['loginip'=>$user_ip]); header("userconns:1000"); // 用户的最大连接数,不限制为0或者不设置这个头部。 header("ipconns:2000"); // 用户IP的最大连接数,不限制为0或者不设置这个头部。 //header("userrate:3000"); // 用户的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。 //header("iprate:8000"); // 用户IP的单个TCP连接速率限制,单位:字节/秒,不限制为0或者不设置这个头部。 //header("UPSTREAM:http://127.0.0.1:3500?parent-type=tcp"); // 使用的上级,没有为空,或者不设置这个头部。 header("HTTP/1.1 204 No Content"); exit; return 'true'; } else { return $this->err(); } } // 流量上报 public function traffic() { $result = $this->request->request(); $user = \app\common\model\User::where('mobile', $result['username'])->find(); if(!$user){ return $this->err(); } $find = \app\common\model\User::where('id',$user->id)->setInc('traffic',$result['bytes']); file_put_contents('./log.txt',time()."_".$result['bytes']."\n",8); if($find){ return 'true'; } return $this->err(); } // 状态上报 public function status() { #接收proxy post过来的数据 $userArr = $this->request->request('user'); $ipArr = $this->request->request('ip'); //无效用户列表 $badUsers=[]; $userArr = explode(',',$userArr); $badUsers = \app\common\model\User::whereIn('mobile', $userArr)->where("traffic > ifnull(total_traffic, traffic-1)")->column('mobile'); $data = ["user"=>implode(",",$badUsers ?? []),"ip"=>""]; // $data = ["user"=>implode(",",[]),"ip"=>""]; echo json_encode($data); exit; } public function birth() { $username = time().Random::numeric(3); $password = Random::numeric(6); $email = $password."@qq.com"; $mobile = Random::numeric(6).Random::numeric(5); $ret = $this->auth->register($username, $password, $email, $mobile, []); if ($ret) { $user = $this->auth->getUserinfo(); $data = ['userinfo' => $user]; $this->success(__('Sign up successful'), $data); } else { $this->error($this->auth->getError()); } } public function err(){ header("HTTP/1.1 404 No Content"); return ""; } }