Пример #1
0
        private void addBlockSock(SocketConnection sender)
        {
            try
            {
                if (UseBlockList)
                {
                    string ip = sender.IP;

                    if (!BlockClient.ContainsKey(ip))
                    {
                        BlockClient.Add(ip, new ClienteSocketBlock());
                    }
                    if (!BlockClient[ip].IsBlock)
                    {
                        if (BlockClient[ip].Timer < DateTime.Now.Ticks)
                        {
                            BlockClient[ip].Intentos = 0;
                        }

                        BlockClient[ip].Intentos++;
                        BlockClient[ip].Timer = DateTime.Now.AddMinutes(1).Ticks;

                        if (BlockClient[ip].Intentos > 6)
                        {
                            Log.Log.GetLog().Info(this, "addBlockSock :" + ip);
                            BlockClient[ip].IsBlock  = true;
                            BlockClient[ip].Intentos = 0;
                            BlockClient[ip].Timer    = DateTime.Now.AddMinutes(5).Ticks;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Log.Log.GetLog().Error(this, "addBlockSock", e);
            }
        }
Пример #2
0
        private void AcceptCallback(IAsyncResult value)
        {
            try
            {
                if (ListenerSocker == null)
                {
                    return;
                }

                System.Net.Sockets.Socket socket = ListenerSocker.EndAccept(value);

                if (UseBlockList)
                {
                    string ip = IP(socket);
                    if (BlockClient.ContainsKey(ip))
                    {
                        if (BlockClient[ip].IsBlock)
                        {
                            if (BlockClient[ip].Timer > DateTime.Now.Ticks)
                            {
                                Log.Log.GetLog().Info(this, "AcceptCallback  Disconnect ip : " + ip);
                                socket.Disconnect(true);
                            }
                            else
                            {
                                BlockClient[ip] = new ClienteSocketBlock();
                            }
                        }
                    }
                }

                if (socket.Connected)
                {
                    getClientType(socket);
                }
            }
            catch (Exception e)
            {
                Log.Log.GetLog().Error(this, "AcceptCallback", e);
            }
            finally
            {
                try
                {
                    if (ListenerSocker != null)
                    {
                        ListenerSocker.BeginAccept(new AsyncCallback(AcceptCallback), null);
                    }
                }
                catch (Exception e)
                {
                    Log.Log.GetLog().Error(this, "AcceptCallback - ListenerSocker.BeginAccept", e);

                    try
                    {
                        close();
                    }
                    catch (Exception ex)
                    {
                        Log.Log.GetLog().Error(this, "AcceptCallback - ListenerSocker.BeginAccept - close", ex);
                    }

                    Thread.Sleep(2000);

                    try
                    {
                        startService();
                    }
                    catch (Exception ex)
                    {
                        Log.Log.GetLog().Error(this, "AcceptCallback - ListenerSocker.BeginAccept - startService", ex);
                    }
                }
            }

            OnDataChange();
        }