备份

十月 15, 2024 / 3ku / 5阅读 / 0评论

xboard/index/app/Protocols

public static function buildVless($password, $server){
        $array = [];
        $array['name'] = $server['name'];
        $array['type'] = 'vless';
        $array['server'] = $server['host'];
        $array['port'] = $server['port'];
        $array['uuid'] = $password;
        $array['alterId'] = 0;
        $array['cipher'] = 'auto';
        $array['udp'] = true;

        // XTLS流控算法
        if($server['flow']) ($array['flow'] = $server['flow']);

        if ($server['tls']) {
            switch($server['tls']){
                case 1:  //开启TLS
                    $array['tls'] = true;
                    if ($server['tls_settings']) {
                        $tlsSettings = $server['tls_settings'];
                        if (isset($tlsSettings['allow_insecure']) && !empty($tlsSettings['allow_insecure']))
                            $array['skip-cert-verify'] = ($tlsSettings['allow_insecure'] ? true : false);
                        if (isset($tlsSettings['server_name']) && !empty($tlsSettings['server_name']))
                            $array['servername'] = $tlsSettings['server_name'];
                        $fingerprints = ['chrome', 'firefox', 'safari', 'ios', 'edge', 'qq']; //随机客户端指纹
                        $array['client-fingerprint'] = $fingerprints[rand(0,count($fingerprints) - 1)];
                    }
                    break;
                case 2:  //开启reality
                    $array['tls'] = true;
                    $tls_settings = $server['tls_settings'];
                    if (!empty($tls_settings['allowInsecure'])) $array['skip-cert-verify'] = (bool)$tls_settings['allowInsecure'];

                    if(($tls_settings['public_key'] ?? null)
                    && ($tls_settings['short_id'] ?? null)
                    && ($tls_settings['server_name'] ?? null)){
                        $array['servername'] = $tls_settings['server_name'];
                        $array['reality-opts'] = [
                            'public-key' => $tls_settings['public_key'],
                            'short-id' => $tls_settings['short_id']
                        ];
                        $fingerprints = ['chrome', 'firefox', 'safari', 'ios', 'edge', 'qq']; //随机客户端指纹
                        $array['client-fingerprint'] = $fingerprints[rand(0,count($fingerprints) - 1)];
                    };
                    break;
            }
        }
public static function buildVless($uuid, $server){
        $host = $server['host']; //节点地址
        $port = $server['port']; //节点端口
        $name = $server['name']; //节点名称

        $config = [
            'mode' => 'multi', //grpc传输模式
            'security' => '', //传输层安全 tls/reality
            'encryption' => 'none', //加密方式
            'type' => $server['network'], //传输协议
        ];
        // 判断是否开启XTLS
        if($server['flow']) ($config['flow'] = $server['flow']);
        // 如果开启TLS
        if ($server['tls']) {
            switch($server['tls']){
                case 1:
                    if ($server['tls_settings']) {
                        $tlsSettings = $server['tls_settings'];
                        if (isset($tlsSettings['server_name']) && !empty($tlsSettings['server_name']))
                            $config['sni'] = $tlsSettings['server_name'];
                            $config['security'] = "tls";
                            $fingerprints = ['chrome', 'firefox', 'safari', 'ios', 'edge', 'qq']; //随机客户端指纹
                            $config['fp'] = $fingerprints[rand(0,count($fingerprints) - 1)];
                    }
                    break;
                case 2: //reality
                    $config['security'] = "reality";
                    $tls_settings = $server['tls_settings'];
                    if(($tls_settings['public_key'] ?? null)
                    && ($tls_settings['short_id'] ?? null)
                    && ($tls_settings['server_name'] ?? null)){
                        $config['pbk'] = $tls_settings['public_key'];
                        $config['sid'] = $tls_settings['short_id'];
                        $config['sni'] = $tls_settings['server_name'];
                        $config['servername'] = $tls_settings['server_name'];
                        $config['spx'] = "/";
                        $fingerprints = ['chrome', 'firefox', 'safari', 'ios', 'edge', 'qq']; //随机客户端指纹
                        $config['fp'] = $fingerprints[rand(0,count($fingerprints) - 1)];
                    };
                    break;
            }
        }

文章作者:3ku

文章链接:http://nanodesu.net/archives/48

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!


评论