private static void VmessNode(string url) { var nodeBase = url.Replace("vmess://", ""); var node = Base64.Decode(nodeBase); var json = JObject.Parse(node); var version = json["v"].ToString(); if (version != "2") { return; } var server = json["host"].ToString(); var port = Convert.ToInt32(json["port"]); var alterId = Convert.ToInt32(json["aid"]); var id = json["id"].ToString(); var network = json["net"].ToString(); var security = json["tls"].ToString(); var path = json["path"].ToString(); var remark = json["ps"].ToString(); if (server.Contains("账户状态")) { userInfo = $"{server}:{remark}"; } else { var v = new Vmess { Name = remark, Address = server, Port = port, AlterID = alterId, ID = id, Network = network, Security = security, Path = path }; vmesses.Add(v); } }
private static void ChangeVmess(Vmess vmess) { var jObject = ReadConfig(); var jArray = jObject["outbounds"].ToObject <JArray>(); foreach (var item in jArray) { if (item["tag"].ToString() == "proxy") { item["settings"]["vnext"][0]["address"] = vmess.Address; item["settings"]["vnext"][0]["port"] = vmess.Port; item["settings"]["vnext"][0]["users"][0]["id"] = vmess.ID; item["settings"]["vnext"][0]["users"][0]["alterId"] = vmess.AlterID; item["streamSettings"]["network"] = vmess.Network; item["streamSettings"]["security"] = vmess.Security; item["streamSettings"]["tlsSettings"]["serverName"] = vmess.Address; item["streamSettings"]["wsSettings"]["path"] = vmess.Path; item["streamSettings"]["wsSettings"]["headers"]["Host"] = vmess.Address; } break; } jObject["outbounds"] = jArray; WriteConfig(jObject); }