| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | <?phpnamespace 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;    }}
 |