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); }
public static string Vmess2VmessLink(Model.Vmess vmess) { string content = JsonConvert.SerializeObject(vmess); return(LinkAddPerfix( Base64Encode(content), Model.Enum.LinkTypes.vmess)); }
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")); }
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()); }