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) { }
            }
        }
Exemple #2
0
        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);
        }