Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 public AdminAccountCommands(ILogger<AdminAccountCommands> logger, IStarServer server, StarDbContext db)
 {
     _logger = logger;
     _server = server;
     _db = db;
 }
Exemplo n.º 3
0
        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"]));
        }