12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Http\Controllers\Client;
- use App\Http\Controllers\Client\Protocols\V2rayN;
- use App\Http\Controllers\Controller;
- use App\Services\ServerService;
- use Illuminate\Http\Request;
- use App\Services\UserService;
- class ClientController extends Controller
- {
- public function subscribe(Request $request)
- {
- $flag = $request->input('flag')
- ?? (isset($_SERVER['HTTP_USER_AGENT'])
- ? $_SERVER['HTTP_USER_AGENT']
- : '');
- $flag = strtolower($flag);
- $user = $request->user;
- // account not expired and is not banned.
- $userService = new UserService();
- if ($userService->isAvailable($user)) {
- $serverService = new ServerService();
- $servers = $serverService->getAvailableServers($user);
- $this->setSubscribeInfoToServers($servers, $user);
- if ($flag) {
- foreach (glob(app_path('Http//Controllers//Client//Protocols') . '/*.php') as $file) {
- $file = 'App\\Http\\Controllers\\Client\\Protocols\\' . basename($file, '.php');
- $class = new $file($user, $servers);
- if (strpos($flag, $class->flag) !== false) {
- die($class->handle());
- }
- }
- }
- // todo 1.5.3 remove
- $class = new V2rayN($user, $servers);
- die($class->handle());
- die('该客户端暂不支持进行订阅');
- }
- }
- private function setSubscribeInfoToServers(&$servers, $user)
- {
- if (!(int)config('v2board.show_info_to_server_enable', 0)) return;
- $useTraffic = round($user['u'] / (1024*1024*1024), 2) + round($user['d'] / (1024*1024*1024), 2);
- $totalTraffic = round($user['transfer_enable'] / (1024*1024*1024), 2);
- $remainingTraffic = $totalTraffic - $useTraffic;
- $expiredDate = $user['expired_at'] ? date('Y-m-d', $user['expired_at']) : '长期有效';
- $userService = new UserService();
- $resetDay = $userService->getResetDay($user);
- array_unshift($servers, array_merge($servers[0], [
- 'name' => "套餐到期:{$expiredDate}",
- ]));
- if ($resetDay) {
- array_unshift($servers, array_merge($servers[0], [
- 'name' => "距离下次重置剩余:{$resetDay} 天",
- ]));
- }
- array_unshift($servers, array_merge($servers[0], [
- 'name' => "剩余流量:{$remainingTraffic} GB",
- ]));
- }
- }
|