public void RemoveFromFile(ProxySettingsItem proxy, bool andSetBeforeInDb = true) { var oldItems = items.ToList(); List <ProxySettingsItem> list = new List <ProxySettingsItem>(); foreach (var item in items) { if (item.ip.Trim().ToLower() == proxy.ip.Trim().ToLower()) { continue; } list.Add(item); } items = list.ToArray(); if (SaveItemsToFile() && andSetBeforeInDb && createProxyStorageModel != null) { try { int removeId = oldItems.IndexOf(proxy); int beforeId = removeId == 0 ? oldItems.Count - 1 : removeId - 1; var lastUsed = oldItems[beforeId]; createProxyStorageModel.Update(lastUsed.ip); } catch (Exception) { } } }
public ProxySettingsItem Next(ref List <string> usedProxyList, bool withCheckAccess = true, bool sendToEmailIfEmptyProxyList = true) { if (proxySettings.items.Count() == 0) { return(null); } int lastUsedId = GetLastUsedId(); if (lastUsedId >= proxySettings.items.Length - 1) { lastUsedId = 0; } else { lastUsedId++; } ProxySettingsItem proxy = proxySettings.items[lastUsedId]; usedProxyList.Add(proxy.ip); proxyStorageModel.Update(proxy.ip); if (withCheckAccess) { Request request = new Request() { BASE_URL = "https://api.netex24.net/", settings = settings, proxy = proxy }; NetexClient netex = new NetexClient() { request = request, settings = settings }; if (!netex.TryLoadMainPage()) { proxySettings.RemoveFromFile(proxy); if (sendToEmailIfEmptyProxyList && proxySettings.items.Count() == 0) { emailSender.Send("proxy list (" + proxySettings.file + ") is empty"); } return(Next(ref usedProxyList, withCheckAccess, sendToEmailIfEmptyProxyList)); } } return(proxy); }