Exemplo n.º 1
0
        public string GetShareLink(Server s)
        {
            if (Global.Settings.V2RayConfig.V2rayNShareLink)
            {
                var server = (VMess)s;

                var vmessJson = JsonSerializer.Serialize(new V2rayNSharing
                {
                    v    = 2,
                    ps   = server.Remark,
                    add  = server.Hostname,
                    port = server.Port,
                    id   = server.UserID,
                    aid  = server.AlterID,
                    net  = server.TransferProtocol,
                    type = server.FakeType,
                    host = server.Host,
                    path = server.Path,
                    tls  = server.TLSSecureType
                },
                                                         new JsonSerializerOptions
                {
                    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
                });

                return("vmess://" + ShareLink.URLSafeBase64Encode(vmessJson));
            }

            return(V2rayUtils.GetVShareLink(s));
        }
Exemplo n.º 2
0
        public IEnumerable <Server> ParseUri(string text)
        {
            var data = new VMess();

            string s;

            try
            {
                s = ShareLink.URLSafeBase64Decode(text.Substring(8));
            }
            catch
            {
                return(V2rayUtils.ParseVUri(text));
            }

            V2rayNSharing vmess = JsonSerializer.Deserialize <V2rayNSharing>(s,
                                                                             new JsonSerializerOptions {
                NumberHandling = JsonNumberHandling.WriteAsString | JsonNumberHandling.AllowReadingFromString
            }) !;

            data.Remark           = vmess.ps;
            data.Hostname         = vmess.add;
            data.Port             = vmess.port;
            data.UserID           = vmess.id;
            data.AlterID          = vmess.aid;
            data.TransferProtocol = vmess.net;
            data.FakeType         = vmess.type;

            if (data.TransferProtocol == "quic")
            {
                if (VMessGlobal.QUIC.Contains(vmess.host !))
                {
                    data.QUICSecure = vmess.host;
                    data.QUICSecret = vmess.path;
                }
            }
            else
            {
                data.Host = vmess.host;
                data.Path = vmess.path;
            }

            data.TLSSecureType = vmess.tls;
            data.EncryptMethod = "auto"; // V2Ray 加密方式不包括在链接中,主动添加一个

            return(new[] { data });
        }
Exemplo n.º 3
0
    public IEnumerable <Server> ParseUri(string text)
    {
        var data = new VMessServer();

        string s;

        try
        {
            s = ShareLink.URLSafeBase64Decode(text.Substring(8));
        }
        catch
        {
            return(V2rayUtils.ParseVUri(text));
        }

        V2rayNJObject vmess = JsonSerializer.Deserialize <V2rayNJObject>(s,
                                                                         new JsonSerializerOptions {
            NumberHandling = JsonNumberHandling.WriteAsString | JsonNumberHandling.AllowReadingFromString
        }) !;

        data.Remark           = vmess.ps;
        data.Hostname         = vmess.add;
        data.EncryptMethod    = vmess.scy;
        data.Port             = vmess.port;
        data.UserID           = vmess.id;
        data.AlterID          = vmess.aid;
        data.TransferProtocol = vmess.net;
        data.FakeType         = vmess.type;
        data.ServerName       = vmess.sni;

        if (data.TransferProtocol == "quic")
        {
            data.QUICSecure = vmess.host;
            data.QUICSecret = vmess.path;
        }
        else
        {
            data.Host = vmess.host;
            data.Path = vmess.path;
        }

        data.TLSSecureType = vmess.tls;

        return(new[] { data });
    }
Exemplo n.º 4
0
        public IEnumerable <Server> ParseUri(string text)
        {
            var data = new VMess();

            V2rayNSharing vmess;

            try
            {
                vmess = JsonSerializer.Deserialize <V2rayNSharing>(ShareLink.URLSafeBase64Decode(text.Substring(8)));
            }
            catch
            {
                return(V2rayUtils.ParseVUri(text));
            }

            data.Remark           = vmess.ps;
            data.Hostname         = vmess.add;
            data.Port             = ushort.Parse(vmess.port);
            data.UserID           = vmess.id;
            data.AlterID          = int.Parse(vmess.aid);
            data.TransferProtocol = vmess.net;
            data.FakeType         = vmess.type;

            if (data.TransferProtocol == "quic")
            {
                if (VMessGlobal.QUIC.Contains(vmess.host))
                {
                    data.QUICSecure = vmess.host;
                    data.QUICSecret = vmess.path;
                }
            }
            else
            {
                data.Host = vmess.host;
                data.Path = vmess.path;
            }

            data.TLSSecureType = vmess.tls;
            data.EncryptMethod = "auto"; // V2Ray 加密方式不包括在链接中,主动添加一个

            return(new[] { data });
        }
Exemplo n.º 5
0
 public IEnumerable <Server> ParseUri(string text)
 {
     return(V2rayUtils.ParseVUri(text));
 }
Exemplo n.º 6
0
 public string GetShareLink(Server s)
 {
     return(V2rayUtils.GetVShareLink(s, "vless"));
 }