private bool ActivateBanHammer(IStarServer server, string uuid, string reason, bool includeUserChars, bool active = true) { Character banChar = _db.Characters.SingleOrDefault(p => p.Uuid == uuid); if (banChar == null) return false; IStarProxy banProxy = server.Proxies.SingleOrDefault(p => p.Character.CharacterId == banChar.CharacterId); User user = banProxy?.AuthenticatedUser; Ban ban; if (user != null) { ban = _db.Bans.SingleOrDefault(p => p.User.UserId == user.UserId); } else { ban = _db.Bans.SingleOrDefault(p => p.CharacterId == banChar.CharacterId); } if (ban == null) { Character[] chars = { banChar }; if (user != null && includeUserChars) chars = chars.Concat(user.Characters).DistinctBy(p => p.CharacterId).ToArray(); foreach (Character userChar in chars) { ban = new Ban { Character = userChar, User = user, Reason = reason, Active = active, }; _db.Bans.Add(ban); } } else { ban.Active = active; ban.Reason = reason; _db.Update(ban); } _db.SaveChanges(); banProxy?.Kick(reason); return true; }
public AdminAccountCommands(ILogger<AdminAccountCommands> logger, IStarServer server, StarDbContext db) { _logger = logger; _server = server; _db = db; }
public StarProxy(IStarServer server, IConfiguration config, IPacketTypeCollection packetTypes, ILogger<StarProxy> logger, IStarEventManager evtManager, SocketAsyncEventArgsPool socketPool, Socket clientSocket) { if (clientSocket == null) throw new ArgumentNullException(nameof(clientSocket)); Server = server; ClientPacketProcessor = new PacketProcessor(packetTypes); ServerPacketProcessor = new PacketProcessor(packetTypes); ClientSocket = clientSocket; _logger = logger; _eventManager = evtManager; _isDisposed = false; _isAlive = 0; _socketArgsPool = socketPool; _cancelToken = new CancellationTokenSource(); _clientSem = new SemaphoreSlim(1); _serverSem = new SemaphoreSlim(1); _packetBacklog = new BlockingCollection<PacketBacklogItem>(new ConcurrentQueue<PacketBacklogItem>()); _remoteEndPoint = new IPEndPoint(Dns.GetHostAddressesAsync(config["SBHost"]).Result.First(), int.Parse(config["SBPort"])); }