Example #1
0
        public async Task <string> GetClientIpAddress()
        {
            if (!string.IsNullOrEmpty(ipAddress))
            {
                return(ipAddress);
            }

            HttpResponseMessage response;

            try
            {
                response = await base.GetAsync("https://api.ipify.org/?format=json");
            }
            catch (Exception e)
            {
                Status = ProxyStatus.Invalid;
                throw new Exception("Proxy is not valid");
            }

            if (!response.IsSuccessStatusCode)
            {
                Status = ProxyStatus.Invalid;
                throw new Exception("Proxy is not valid");
            }

            var content = await response.Content.ReadAsStringAsync();

            ipAddress = JsonConvert.DeserializeObject <ProxyIp>(content).IpAddress;

            return(content);
        }
Example #2
0
 /// <summary>
 /// Добавление прокси
 /// </summary>
 /// <param name="key"></param>
 /// <param name="status"></param>
 /// <param name="dateCheck"></param>
 public void UpdateStatus(string key, ProxyStatus status, DateTime dateCheck)
 {
     try
     {
         if (_locker.TryEnterWriteLock(LOCK_TIMEOUT))
         {
             if (_proxies.ContainsKey(key))
             {
                 var proxyInfo = _proxies[key];
                 proxyInfo.Status    = status;
                 proxyInfo.LastCheck = dateCheck;
                 _proxies[key]       = proxyInfo;
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
     finally
     {
         if (_locker.IsWriteLockHeld)
         {
             _locker.ExitWriteLock();
         }
     }
 }
Example #3
0
 public data(ProxyStatus status, string proxy, string ip, string country, string city, int speed, int uptime)
 {
     this.status  = status;
     this.proxy   = proxy;
     this.ip      = ip;
     this.country = country;
     this.city    = city;
     this.speed   = speed;
     this.uptime  = uptime;
 }
Example #4
0
        public void SetProxyStatus(Proxy proxy, ProxyStatus proxyStatus)
        {
            var itemData = GetData(proxy);

            itemData.Status = proxyStatus;
            if (proxyStatus == ProxyStatus.Broken)
            {
                itemData.BrokenOn = DateTime.UtcNow;
            }
        }
Example #5
0
 public Proxy(ProxyStatus status, string proxies, string ip, string country, string city, double speed, double uptime)
 {
     _status = status;
     Proxies = proxies;
     Ip      = ip;
     Country = country;
     City    = city;
     Speed   = speed;
     Uptime  = uptime;
 }
 static SystemProxy()
 {
     try
     {
         using var proxy = new ProxyService();
         Old             = proxy.Query();
     }
     catch (Exception e)
     {
         Logging.LogUsefulException(e);
     }
 }
Example #7
0
        public bool Load(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return(false);
            }

            var list = str.Split('|');

            if (list.Length < 4)
            {
                return(false);
            }

            Address = list[0];
            int port;

            if (!int.TryParse(list[1], out port))
            {
                return(false);
            }

            Port = port;

            int type;

            if (!int.TryParse(list[2], out type))
            {
                return(false);
            }

            Type = (ProxyType)type;

            DateCreated = DateTime.Parse(list[3]);
            LastCheck   = DateTime.Parse(list[4]);

            if (list.Length > 4)
            {
                int status;
                if (int.TryParse(list[5], out status))
                {
                    Status = (ProxyStatus)status;
                }
                else
                {
                    Status = ProxyStatus.Add;
                }
            }

            return(true);
        }
Example #8
0
        public void OnChatsDisposed(IChatHandler chatHandler1, IChatHandler chatHandler2, TwoChatsHandlerStatus twoChatsHandlerStatus)
        {
            ProxyStatus proxyStatus = (twoChatsHandlerStatus == TwoChatsHandlerStatus.FatalError) ? ProxyStatus.Dead : ProxyStatus.Free;

            if (chatHandler1 != null)
            {
                var ch1 = chatHandler1 as ChatHandler_WrapperForChatvdvoemBasicWorker;
                CacheHandle(ch1.CacheFolder, twoChatsHandlerStatus == TwoChatsHandlerStatus.FatalError);
                if (ch1.ProxyStr != null)
                {
                    _ProxyDispatcher.SetProxyStatus(ch1.ProxyStr, proxyStatus);
                }
            }
            if (chatHandler2 != null)
            {
                var ch2 = chatHandler2 as ChatHandler_WrapperForChatvdvoemBasicWorker;
                CacheHandle(ch2.CacheFolder, twoChatsHandlerStatus == TwoChatsHandlerStatus.FatalError);
                if (ch2.ProxyStr != null)
                {
                    _ProxyDispatcher.SetProxyStatus(ch2.ProxyStr, proxyStatus);
                }
            }
        }
Example #9
0
 private static void handleSetProxyStatus(string[] args)
 {
     if (args.Length > 1)
     {
         try
         {
             ProxyStatus status = (ProxyStatus)Enum.Parse(typeof(ProxyStatus), args[1], true);
             foreach (IBrowserProxy proxy in getProxies())
             {
                 proxy.Status = status;
             }
             printProxyStatus();
         }
         catch (Exception e)
         {
             Console.WriteLine(e.Message);
             printHelp();
         }
     }
     else
     {
         printHelp();
     }
 }
Example #10
0
 private ProxyResult Finish(ProxyStatus proxyStatus)
 {
     _result.ProxyStatus = proxyStatus;
     _result.Elapsed     = DateTime.Now - _start;
     return(_result);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="proxyStatus"></param>
 /// <returns></returns>
 private bool IsProxyAvailable(ProxyStatus proxyStatus)
 => !proxyStatus.IsLocked &&
 proxyStatus.NextAvailability <= DateTime.Now.AddMilliseconds(_random.Next(-DELAY_JITTER, DELAY_JITTER));
        public void UnLock(short searchEngineId, short regionId, int proxyId,
                           CrawlResultID crawlResultID)
        {
            lock (_locker)
            {
                // TODO(zvp): Should we handle this differently ?
                if (!_addedInitStatuses)
                {
                    InitializeProxyStatuses();
                }

                Tuple <short, short> key = new Tuple <short, short>(searchEngineId, regionId);
                if (_proxyStatuses.ContainsKey(key) &&
                    _proxyStatuses[key].ContainsKey(proxyId))
                {
                    ProxyStatus status = _proxyStatuses[key][proxyId];
                    status.IsLocked = false; // unlock proxy

                    // update next availability based on crawl result
                    switch (crawlResultID)
                    {
                    case CrawlResultID.Success:
                    {
                        Data.Entities.ProxyMultiplier multipler = _proxyMultiplierRepo.Select(
                            searchEngineId, regionId, proxyId);
                        if (multipler != null)
                        {
                            status.NextAvailability = DateTime.Now.AddSeconds(multipler.Multiplier);
                        }
                        else
                        {
                            Data.Entities.SearchString searchString = _searchStringRepo
                                                                      .Select(searchEngineId, regionId);
                            if (searchString != null)
                            {
                                status.NextAvailability = DateTime.Now.AddSeconds(searchString.DelayMultiplier);
                            }
                            else
                            {
                                status.NextAvailability = DateTime.Now.AddMinutes(SUCCESS_FALLBACK_DELAY);
                            }
                        }

                        break;
                    }

                    case CrawlResultID.Failure:
                        status.NextAvailability = DateTime.Now.AddMinutes(
                            FAILURE_DELAY);
                        break;

                    case CrawlResultID.Captcha:
                        status.NextAvailability = DateTime.Now.AddMinutes(
                            CAPTCHA_DELAY);
                        break;

                    case CrawlResultID.Block:
                        status.NextAvailability = DateTime.Now.AddMinutes(
                            BLOCK_DELAY);
                        break;
                    }
                }
                else
                {
                    // throw ?
                }
            }
        }
Example #13
0
 public void SetProxyStatus(string proxy, ProxyStatus proxyStatus)
 {
     throw new NotImplementedException();
 }
        public static void Init(string confPath)
        {
            allConf      = new ConcurrentDictionary <string, List <string> > (StringComparer.OrdinalIgnoreCase);
            confFilePath = confPath;
            ReadAll();

            ImportUsers();
            Console.WriteLine("find user(s): {0}", EagleTunnelUser.users.Count);

            encryptionKey = 0x22;
            if (allConf.ContainsKey("data-key"))
            {
                if (byte.TryParse(allConf["data-key"][0], out byte tmpByte))
                {
                    encryptionKey = tmpByte;
                }
            }

            if (allConf.ContainsKey("user"))
            {
                if (EagleTunnelUser.TryParse(allConf["user"][0], out EagleTunnelUser user, true))
                {
                    localUser = user;
                }
            }
            if (LocalUser != null)
            {
                Console.WriteLine("User: {0}", LocalUser.ID);
            }

            PipeTimeOut = 0;
            if (Conf.allConf.ContainsKey("timeout"))
            {
                if (int.TryParse(Conf.allConf["timeout"][0], out int timeout))
                {
                    PipeTimeOut = timeout;
                }
            }
            Console.WriteLine("TimeOut(ms): {0} (0 means infinite timeout period.)", PipeTimeOut);

            maxClientsCount = 500;
            if (allConf.ContainsKey("worker"))
            {
                if (int.TryParse(allConf["worker"][0], out int workerCount))
                {
                    maxClientsCount = workerCount;
                }
            }
            Console.WriteLine("worker: {0}", maxClientsCount);

            try
            {
                List <string> remoteAddressStrs = Conf.allConf["relayer"];
                remoteAddresses = CreateEndPoints(remoteAddressStrs);
            }
            catch (KeyNotFoundException)
            {
                Console.WriteLine("Warning: Relayer not found.");
            }
            if (RemoteAddresses != null)
            {
                Console.WriteLine("Count of Relayer: {0}", RemoteAddresses.Length);
            }

            try
            {
                List <string> localAddressStrs = Conf.allConf["listen"];
                localAddresses = CreateEndPoints(localAddressStrs);
            }
            catch (KeyNotFoundException)
            {
                Console.WriteLine("Warning: Listen not found");
            }

            if (allConf.ContainsKey("socks"))
            {
                if (allConf["socks"][0] == "on")
                {
                    enableSOCKS = true;
                }
            }
            Console.WriteLine("SOCKS Switch: {0}", EnableSOCKS.ToString());

            if (allConf.ContainsKey("http"))
            {
                if (allConf["http"][0] == "on")
                {
                    enableHTTP = true;
                }
            }
            Console.WriteLine("HTTP Switch: {0}", EnableHTTP.ToString());

            if (allConf.ContainsKey("et"))
            {
                if (allConf["et"][0] == "on")
                {
                    enableEagleTunnel = true;
                }
            }
            Console.WriteLine("Eagle Tunnel Switch: {0}", EnableEagleTunnel.ToString());

            if (allConf.ContainsKey("proxy-status"))
            {
                proxyStatus = (ProxyStatus)Enum.Parse(typeof(Conf.ProxyStatus),
                                                      allConf["proxy-status"][0].ToUpper());
            }
            else
            {
                proxyStatus = ProxyStatus.ENABLE; // default enable proxy
            }
            Console.WriteLine("Proxy Status: {0}", proxyStatus.ToString());
            ImportList("whitelist_domain.txt", out whitelist_domain);
            ImportList("whitelist_ip.txt", out whitelist_ip);
            ImportList("blacklist_ip.txt", out blacklist_ip);
            ImportHosts(out hosts);
        }