コード例 #1
0
        public static AsyncSemaphore GetSemaphoreForProxy(FUTProxy proxy)
        {
            AsyncSemaphore returnType = null;

            lock (_lock)
            {
                if (_loginSemaphores == null)
                {
                    _loginSemaphores = new Dictionary <string, AsyncSemaphore>();
                }
                if (proxy == null)
                {
                    returnType = GetSemaphoreForExe();
                }
                else
                {
                    if (!_loginSemaphores.ContainsKey(proxy.ToString()))
                    {
                        _loginSemaphores.Add(proxy.ToString(), new AsyncSemaphore(1));
                    }
                    returnType = _loginSemaphores[proxy.ToString()];
                }
            }
            return(returnType);
        }
コード例 #2
0
 public static void RemoveFUTProxy(FUTProxy proxy)
 {
     lock (_locker)
     {
         _futProxies.RemoveAll(x => x.First.ToString() == proxy.ToString());
     }
 }
コード例 #3
0
 public static void AddFUTProxy(FUTProxy proxy)
 {
     lock (_locker)
     {
         _futProxies.Add(new Pair <FUTProxy, int>(proxy, 0));
     }
 }
コード例 #4
0
        public static FUTProxy GetFUTProxy(FUTProxy pre)
        {
            lock (_locker)
            {
                if (pre != null)
                {
                    var preFound = _futProxies.FirstOrDefault(x => x.First.ToString() == pre.ToString());
                    if (preFound != null)
                    {
                        preFound.Second++;
                        return(preFound.First);
                    }
                }

                foreach (var futProxy in _futProxies)
                {
                    if (futProxy.Second < _maxCounter)
                    {
                        futProxy.Second++;
                        return(futProxy.First);
                    }
                }
                return(null);
            }
        }
コード例 #5
0
 public static void RemoveProxyCounter(FUTProxy proxy)
 {
     lock (_locker)
     {
         if (proxy == null)
         {
             return;
         }
         var p = _futProxies.FirstOrDefault(x => x.First == proxy);
         if (p != null)
         {
             p.Second--;
         }
     }
 }
コード例 #6
0
 public CaptchaSolver(FUTProxy proxy)
 {
     httpClient = new HttpClient(new HttpClientHandler());
     _preProxy  = proxy;
 }
コード例 #7
0
        public ProxyManager()
        {
            this.RequiresAuthentication();
            Get("/proxymanager", args =>
            {
                var mod = new ProxyManagerModel();

                var proxies = new List <FUTProxy>();
                using (var ctx = new FUTSettingsDatabase())
                {
                    proxies = ctx.FUTProxys.ToList();
                }
                mod.Proxies = proxies;
                return(View["ProxyManager", mod]);
            });

            Post("/proxymanager", args =>
            {
                var body       = new StreamReader(Request.Body).ReadToEnd();
                body           = HttpUtility.UrlDecode(body);
                var parameters = HttpUtility.ParseQueryString(body);

                var proxies = parameters["proxies"].Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);

                foreach (var proxyString in proxies)
                {
                    if (proxyString.Split(':').Count() < 4)
                    {
                        continue;
                    }
                    var host          = proxyString.Split(':')[0];
                    var port          = int.Parse(proxyString.Split(':')[1]);
                    var username      = proxyString.Split(':')[2];
                    var password      = proxyString.Split(':')[3];
                    var futProxy      = new FUTProxy();
                    futProxy.Host     = host;
                    futProxy.Port     = port;
                    futProxy.Username = username;
                    futProxy.Password = password;
                    using (var ctx = new FUTSettingsDatabase())
                    {
                        ctx.FUTProxys.Add(futProxy);
                        ctx.SaveChanges();
                    }
                    Fifa.Managers.ProxyManager.AddFUTProxy(futProxy);
                }
                return(Response.AsRedirect("/proxymanager"));
            });

            Post("/deleteproxyarray", args =>
            {
                var body       = new StreamReader(Request.Body).ReadToEnd();
                body           = HttpUtility.UrlDecode(body);
                var parameters = HttpUtility.ParseQueryString(body);

                var proxies = parameters["proxy"].Split(',');

                foreach (var p in proxies)
                {
                    FUTProxy proxy = null;
                    var id         = int.Parse(p);
                    using (var ctx = new FUTSettingsDatabase())
                    {
                        proxy = ctx.FUTProxys.FirstOrDefault(x => x.ID == id);
                        if (proxy != null)
                        {
                            var accounts = FUTAccountsDatabase.GetFUTAccounts()
                                           .Where(x => x.FUTProxyID == proxy.ID).ToList();
                            foreach (var futAccount in accounts)
                            {
                                futAccount.FUTProxyID = -1;
                                futAccount.SaveChanges();
                            }
                            ctx.FUTProxys.Remove(proxy);
                            ctx.SaveChanges();
                        }
                    }
                    Fifa.Managers.ProxyManager.RemoveFUTProxy(proxy);
                }
                return("true");
            });

            Post("/deleteproxy", args =>
            {
                var body       = new StreamReader(Request.Body).ReadToEnd();
                body           = HttpUtility.UrlDecode(body);
                var parameters = HttpUtility.ParseQueryString(body);
                var id         = int.Parse(parameters["proxy"]);
                FUTProxy proxy = null;
                using (var ctx = new FUTSettingsDatabase())
                {
                    proxy = ctx.FUTProxys.FirstOrDefault(x => x.ID == id);
                    if (proxy != null)
                    {
                        var accounts = FUTAccountsDatabase.GetFUTAccounts()
                                       .Where(x => x.FUTProxyID == proxy.ID).ToList();
                        foreach (var futAccount in accounts)
                        {
                            futAccount.FUTProxyID = -1;
                            futAccount.SaveChanges();
                        }
                        ctx.FUTProxys.Remove(proxy);
                        ctx.SaveChanges();
                    }
                }
                Fifa.Managers.ProxyManager.RemoveFUTProxy(proxy);
                return("true");
            });

            Post("/allocateproxies", args =>
            {
                var body       = new StreamReader(Request.Body).ReadToEnd();
                body           = HttpUtility.UrlDecode(body);
                var parameters = HttpUtility.ParseQueryString(body);
                var action     = parameters["action"];
                if (action == "allocate")
                {
                    Fifa.Managers.BotManager.AllocateProxies();
                }
                else
                {
                    Fifa.Managers.BotManager.DeallocateProxies();
                    Fifa.Managers.ProxyManager.ResetProxyCounter();
                }
                return("true");
            });
        }