| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- <?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'
 
-                 && in_array($item['cipher'], ['aes-128-gcm', 'aes-256-gcm', 'aes-192-gcm'])
 
-             ) {
 
-                 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;
 
-     }
 
- }
 
 
  |