Exemplo n.º 1
0
        public static Model.Vmess ConfigString2Vmess(string config)
        {
            Model.Vmess v = new Model.Vmess();
            JObject     o;

            try
            {
                o = JObject.Parse(config);
            }
            catch
            {
                return(null);
            }

            v.ps   = GetStrFromJToken(o, "v2raygcon.alias");
            v.add  = GetStrFromJToken(o, "outbound.settings.vnext.0.address");
            v.port = GetStrFromJToken(o, "outbound.settings.vnext.0.port");
            v.id   = GetStrFromJToken(o, "outbound.settings.vnext.0.users.0.id");
            v.aid  = GetStrFromJToken(o, "outbound.settings.vnext.0.users.0.alterId");
            v.net  = GetStrFromJToken(o, "outbound.streamSettings.network");
            v.type = GetStrFromJToken(o, "outbound.streamSettings.kcpSettings.header.type");
            v.host = GetStrFromJToken(o, "outbound.streamSettings.wsSettings.path");
            v.tls  = GetStrFromJToken(o, "outbound.streamSettings.security");

            return(v);
        }
Exemplo n.º 2
0
        public static string Vmess2VmessLink(Model.Vmess vmess)
        {
            string content = JsonConvert.SerializeObject(vmess);

            return(LinkAddPerfix(
                       Base64Encode(content),
                       Model.Enum.LinkTypes.vmess));
        }
Exemplo n.º 3
0
        private void vmessToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var b64cfgStr = setting.GetServer(GetSelectedItemIndex());

            Model.Vmess vmess     = null;
            string      vmessLink = string.Empty;

            if (!string.IsNullOrEmpty(b64cfgStr))
            {
                var cfg = Lib.Utils.Base64Decode(b64cfgStr);
                vmess = Lib.Utils.ConfigString2Vmess(cfg);
            }

            if (vmess != null)
            {
                vmessLink = Lib.Utils.Vmess2VmessLink(vmess);
            }

            Lib.Utils.ShowMsgboxSuccFail(
                Lib.Utils.CopyToClipboard(vmessLink),
                I18N("LinksCopied"),
                I18N("CopyFail"));
        }
Exemplo n.º 4
0
        public static string VmessLink2ConfigString(string vmessLink)
        {
            Model.Vmess vl = VmessLink2Vmess(vmessLink);

            if (vl == null)
            {
                return(string.Empty);
            }

            // prepare template
            JObject config = JObject.Parse(resData("config_vmess_tpl"));

            config["outbound"]["protocol"] = "vmess";
            config["outbound"]["tag"]      = "agentout";
            config["outbound"]["mux"]      = new JObject {
                { "enabled", true }
            };
            config["v2raygcon"]["alias"] = vl.ps;

            // insert vmess info
            config["outbound"]["settings"] = new JObject {
                { "servers", null },
                { "vnext", new JArray {
                      new JObject {
                          { "address", vl.add },
                          { "port", Convert.ToUInt32(vl.port) },
                          { "users", new JArray {
                                new JObject
                                {
                                    { "id", vl.id },
                                    { "alterId", Convert.ToUInt32(vl.aid) },
                                    { "security", "auto" }
                                }
                            } }
                      }
                  } }
            };

            // insert stream type
            string[] streamTypes = { "WS", "TCP", "KCP" };
            string   streamType  = vl.net.ToUpper();

            if (!streamTypes.Contains(streamType))
            {
                return(config.ToString());
            }

            var templateName = resData("Tpl" + streamType);

            config["outbound"]["streamSettings"] = JObject.Parse(templateName);

            config["outbound"]["streamSettings"]["security"] = vl.tls;
            try
            {
                config["outbound"]["streamSettings"]["kcpSettings"]["header"]["type"] = vl.type;
            }
            catch { }
            try
            {
                config["outbound"]["streamSettings"]["wsSettings"]["path"] = vl.host;
            }
            catch { }

            return(config.ToString());
        }