//true - если добавил, false - если уже существует static public bool addProxyToProxyfier(XDocument doc, myProxy proxx, string _id = "777", string options = "48") { if (!checkProxyServerByAdress(doc, proxx.Adress)) { // XDocument doc = XDocument.Load(path); XElement proxList = doc.Root.Element("ProxyList"); // new XElement("ProxyList"); //int maxId = doc.Root.Elements("track").Max(t => Int32.Parse(t.Attribute("id").Value)); XElement prox = new XElement("Proxy", new XAttribute("id", _id), new XAttribute("type", proxx.ProxyType), new XElement("Address", proxx.Adress), new XElement("Port", proxx.Port), new XElement("Options", options), new XElement("Authentication", new XAttribute("enabled", proxx.Auth), new XElement("Username", proxx.Login), new XElement("Password", proxx.Password))); proxList.Add(prox); //doc.Root.Add();.Elements("ProxyList").Add(); // doc.Save(path); return(true); } else { return(false); } }
static public List <myProxy> LoadProxyList(string path) { List <myProxy> proxyList = new List <myProxy>(); //читаем данные из файла XDocument doc = XDocument.Load(path); //проходим по каждому элементу в найшей library //(этот элемент сразу доступен через свойство doc.Root) foreach (XElement el in doc.Root.Elements()) { myProxy prox = new myProxy(); prox.Adress = el.Attribute("Adress").Value; prox.Port = el.Attribute("Port").Value; prox.ProxyType = el.Attribute("ProxyType").Value; if (el.Attribute("Auth").Value == "false") { prox.Auth = false; } else { prox.Auth = true; } prox.Login = el.Attribute("Login").Value; prox.Password = el.Attribute("Password").Value; proxyList.Add(prox); } Log("proxyList загружен."); return(proxyList); }
void addProxifierProfile(string path_VM, string wowName, string proxyAddress) { if (!Directory.Exists(path_VM)) { Log("Папки не существует!"); return; } // myProxy neededProxy = FindProxyInListByAdress(proxList, richTextBox_proxlist.Lines[0].Trim()); try { List <myProxy> proxList = LoadProxyList(path_VM + @"\Dropbox\AccManager\proxyList.xml"); myProxy neededProxy = GetProxyByAddress(proxyAddress, proxList); string Proxifier_Settings_File = $@"C:\Users\{Environment.UserName}\AppData\Roaming\Proxifier\Profiles\Default.ppx"; XDocument doc = XDocument.Load(Proxifier_Settings_File); int maxId = GetMaxId(doc); string newId_str = (maxId + 1).ToString(); ChangeEncryptionMode_Disabled(doc); if (!checkProxyServerByAdress(doc, proxyAddress)) {//если такого еще нет, то делем новый ид+1 addProxyToProxyfier(doc, neededProxy, newId_str); } else {//если прокси уже есть в списке то запонимаем его ИД newId_str = getProxyID_byAddress(doc, neededProxy.Adress); } if (addRuleToProxyfier(doc, $"{wowName}.exe ; {wowName}-32.exe; {wowName}-64.exe", newId_str, wowName) == false) { Log("Файл профилей Proxifier не менялся, применять настройки не будем."); return; } deleteCrap_Defaults(doc); doc.Save(Proxifier_Settings_File); Log("файл с настройками проксифайера сохранен"); Process.Start($@"C:\Users\{Environment.UserName}\AppData\Roaming\Proxifier\Profiles\Default.ppx"); Click_OK_Proxifier(); //принимает изменение настроек Log("настройки проксифайера применены"); } catch (Exception ex) { Log(ex.Message); //throw; } }