123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- namespace App\Http\Controllers\Client\Protocols;
- class Shadowsocks
- {
- public $flag = 'shadowsocks';
- private $servers;
- private $user;
- public function __construct($user, $servers)
- {
- $this->user = $user;
- $this->servers = $servers;
- }
- public function handle()
- {
- $servers = $this->servers;
- $user = $this->user;
- $configs = [];
- $subs = [];
- $subs['servers'] = [];
- $subs['bytes_used'] = '';
- $subs['bytes_remaining'] = '';
- $bytesUsed = $user['u'] + $user['d'];
- $bytesRemaining = $user['transfer_enable'] - $bytesUsed;
- foreach ($servers as $item) {
- if ($item['type'] === 'shadowsocks') {
- array_push($configs, self::SIP008($item, $user));
- }
- }
- $subs['version'] = 1;
- $subs['bytes_used'] = $bytesUsed;
- $subs['bytes_remaining'] = $bytesRemaining;
- $subs['servers'] = array_merge($subs['servers'] ? $subs['servers'] : [], $configs);
- return json_encode($subs, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
- }
- public static function SIP008($server, $user)
- {
- $config = [
- "id" => $server['id'],
- "remarks" => $server['name'],
- "server" => $server['host'],
- "server_port" => $server['port'],
- "password" => $user['uuid'],
- "method" => $server['cipher']
- ];
- return $config;
- }
- }
|