Esempio n. 1
0
        public void BanUser(string username, string duration, string reason)
        {
            // Check for valid parameters
            if (!GameData.UserName.IsValid(username))
            {
                User.Send(GameMessage.CommandGeneralInvalidUser, ServerMessageType.GUI, username);
                return;
            }

            if (StringComparer.OrdinalIgnoreCase.Equals(User.Name, username))
            {
                User.Send(GameMessage.SelfBanFailed, ServerMessageType.GUI);
                return;
            }

            var target = World.FindUser(username);

            if (target == null)
            {
                return;
            }

            if (target.Permissions > User.Permissions)
            {
                User.Send(GameMessage.BanInsufficientPermissions, ServerMessageType.GUI, username);
                return;
            }

            if (string.IsNullOrEmpty(duration))
            {
                User.Send(GameMessage.CommandGeneralInvalidParameter, ServerMessageType.GUI, "duration");
                return;
            }

            // Parse the duration
            TimeSpan dur;
            string   parseFailReason;

            if (!DurationParser.TryParse(duration, out dur, out parseFailReason))
            {
                User.Send(GameMessage.CommandGeneralInvalidParameterEx, ServerMessageType.GUI, "duration", parseFailReason);
                return;
            }

            // Perform the ban and notify the issuer if it was successful or not
            BanManagerFailReason banFailReason;

            if (!BanningManager.Instance.TryAddUserBan(username, dur, reason, User.Name, out banFailReason))
            {
                // Ban failed
                User.Send(GameMessage.BanUserFailed, ServerMessageType.GUI, username, banFailReason.GetDetailedString());
            }
            else
            {
                // Ban successful
                User.Send(GameMessage.BanUserSuccessful, ServerMessageType.GUI, username);
            }
        }
Esempio n. 2
0
        public void Should_parse_correctly(string input, TimeSpan expected)
        {
            TimeSpan result;

            var success = DurationParser.TryParse(input, out result);

            success.Should().BeTrue();
            result.Should().Be(expected);
        }
Esempio n. 3
0
        public void BanUser(string username, string duration, string reason)
        {
            // Check for valid parameters
            if (!GameData.UserName.IsValid(username))
            {
                User.Send(GameMessage.CommandGeneralInvalidUser, ServerMessageType.GUI, username);
                return;
            }

            if (string.IsNullOrEmpty(duration))
            {
                User.Send(GameMessage.CommandGeneralInvalidParameter, ServerMessageType.GUI, "duration");
                return;
            }

            // Parse the duration
            TimeSpan dur;
            string   parseFailReason;

            if (!DurationParser.TryParse(duration, out dur, out parseFailReason))
            {
                User.Send(GameMessage.CommandGeneralInvalidParameterEx, ServerMessageType.GUI, "duration", parseFailReason);
                return;
            }

            // Perform the ban and notify the issuer if it was successful or not
            BanManagerFailReason banFailReason;

            if (!BanningManager.Instance.TryAddUserBan(username, dur, reason, User.Name, out banFailReason))
            {
                // Ban failed
                User.Send(GameMessage.BanUserFailed, ServerMessageType.GUI, username, banFailReason.GetDetailedString());
            }
            else
            {
                // Ban successful
                User.Send(GameMessage.BanUserSuccessful, ServerMessageType.GUI, username);
            }
        }
Esempio n. 4
0
        public void Should_fail_if_input_is_not_a_correct_duration(string input, string reason)
        {
            var success = DurationParser.TryParse(input, out _);

            success.Should().BeFalse($"because {reason}. Input: [{input}]");
        }