protected virtual void DoWork() { BanCheckUser bcu = PopUser(); while (bcu != null) { BanProcessrUserArgs args = new BanProcessrUserArgs(); args.User = bcu.User; args.Token = bcu.Token; bool ipCheckValid = false; if (bcu.User.SocketConnection.RemoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { if (!Bans.CheckIPV4(bcu.User.SocketConnection.RemoteEndPoint.Address.ToString())) { ipCheckValid = true; } } else if (bcu.User.SocketConnection.RemoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) { if (!Bans.CheckIPV6(bcu.User.SocketConnection.RemoteEndPoint.Address.ToString())) { ipCheckValid = true; } } if (ipCheckValid) { if (Bans.CheckHost(System.Net.Dns.GetHostEntry(bcu.User.SocketConnection.RemoteEndPoint.Address).HostName)) { args.Results = BanProcessrUserArgs.ResultTypes.RejectedHost; } else { args.Results = BanProcessrUserArgs.ResultTypes.Accepted; } } else { args.Results = BanProcessrUserArgs.ResultTypes.RejectedIP; } bcu.CallCallback(args); bcu = PopUser(); } Worker = null; }
public void Add(LobbyUser user, EventHandler <BanProcessrUserArgs> cb, object token) { BanCheckUser bcu = new BanCheckUser(); bcu.User = user; bcu.Token = token; bcu.Callback += cb; lock (CheckingUsers) CheckingUsers.Add(bcu); CheckAlive(); }
protected BanCheckUser PopUser() { lock (CheckingUsers) { if (CheckingUsers.Count == 0) { return(null); } BanCheckUser bcu = CheckingUsers[0]; CheckingUsers.RemoveAt(0); return(bcu); } }