コード例 #1
0
        public override void Execute()
        {
            var wholist   = _ircReadWriteExchange.GetWhoList();
            var dbUsers   = _persistance.GetUsers();
            var violators = new List <string>();

            foreach (var whoInfo in wholist)
            {
                if (!dbUsers.Contains(whoInfo.Ident, StringComparer.InvariantCultureIgnoreCase))
                {
                    violators.Add(whoInfo.Ident);
                }
            }
            if (violators.Any())
            {
                Messages.Add("IRC security sweep: security violations detected, user(s) are online which are not present in the database:");
                foreach (var violator in violators)
                {
                    var user = wholist.First(w => w.Ident.Equals(violator));
                    var msg  = string.Format("User: {0}  Server: {1}", user.Ident, user.Server);
                    Messages.Add(msg);
                }
            }
            else
            {
                if (Context.MessageOrigin == MessageOrigin.Channel || Context.MessageOrigin == MessageOrigin.Query)
                {
                    Messages.Add("IRC security sweep: Ok. No users detected who are not present in the database.");
                }
            }
        }
コード例 #2
0
        public override void Execute()
        {
            var whoInfos = _ircReadWriteExchange.GetWhoList();
            var online   = whoInfos.Select(s => s.Ident).Distinct().ToList();

            Messages.Add("Online users:");
            var messages = _userDisplay.SortAlphabetically(online);

            Messages.AddRange(messages);
            Messages.Add(string.Format("Total online: {0}", online.Count));
        }
コード例 #3
0
ファイル: SetHost.cs プロジェクト: kjholzapfel/IrcUserAdmin
        public override void Execute()
        {
            User          user  = _persistance.GetUserInfo(Mapping[SetHostArguments.Username]);
            List <string> nicks = _ircReadWriteExchange.GetWhoList().Where(i => i.Ident == user.Name).Select(n => n.Nick).ToList();

            if (nicks.Count == 0)
            {
                Messages.Add(string.Format("Can't change hostname, user {0} is currently offline", Mapping[SetHostArguments.Username]));
            }
            else
            {
                foreach (string nick in nicks)
                {
                    var command = VhostOperCommmand.SetVhost(nick, user.Vhost);
                    OperCommands.Add(command);
                }
                string processednicks = string.Join(" ,", nicks);
                Messages.Add(string.Format("Executing hostname change for user {0}, affected nick(s) {1}", Mapping[SetHostArguments.Username], processednicks));
            }
        }
コード例 #4
0
        public override bool CheckPreconditions()
        {
            if (!base.CheckPreconditions())
            {
                return(false);
            }
            if (!_persistance.UserNameExists(Mapping[KillUserArguments.Username]))
            {
                Messages.Add(string.Format("Username {0} doesn't exists.", Mapping[KillUserArguments.Username]));
                return(false);
            }
            var whoList = _ircReadWriteExchange.GetWhoList();

            _nickInfo = whoList.Where(w => String.Equals(w.Ident, Mapping[KillUserArguments.Username], StringComparison.InvariantCultureIgnoreCase)).ToList();
            if (!_nickInfo.Any())
            {
                Messages.Add(string.Format("User {0} isn't online.", Mapping[KillUserArguments.Username]));
                return(false);
            }
            return(true);
        }
コード例 #5
0
        public override void Execute()
        {
            _persistance.DeleteUser(Mapping[DeleteKillUserArguments.Username]);
            Messages.Add(string.Format("User {0} succesfully deleted.", Mapping[DeleteKillUserArguments.Username]));
            var info = _ircReadWriteExchange.GetWhoList().Where(u => String.Equals(u.Ident, Mapping[DeleteKillUserArguments.Username], StringComparison.InvariantCultureIgnoreCase)).ToList();

            if (info.Any())
            {
                foreach (var who in info)
                {
                    var command = KillOperCommmand.SetKill(who.Nick);
                    OperCommands.Add(command);
                }
                string nicks = string.Join(", ", info.Select(s => s.Nick));
                Messages.Add(string.Format("Killed the following nick(s): {0}", nicks));
            }
            else
            {
                Messages.Add(string.Format("No nicks killed, user {0} wasn't online.", Mapping[DeleteKillUserArguments.Username]));
            }
        }
コード例 #6
0
ファイル: UserInfo.cs プロジェクト: kjholzapfel/IrcUserAdmin
        public override void Execute()
        {
            string groups;
            User   user = _persistance.GetUserInfo(Mapping[ShowUserArguments.Username]);

            if (!user.Groups.Any())
            {
                groups = "No groups added";
            }
            else
            {
                groups = string.Join(", ", user.Groups.Select(s => s.GroupName));
            }
            string online = "Online: No";

            var info = _ircReadWriteExchange.GetWhoList().Where(u => String.Equals(u.Ident, Mapping[ShowUserArguments.Username], StringComparison.InvariantCultureIgnoreCase)).ToList();

            if (info.Any())
            {
                string nicks = string.Join(", ", info.Select(s => s.Nick));
                online = string.Format("Online: Yes, nick(s): {0}", nicks);
            }
            Messages.Add(string.Format("User information for {0}", user.Name));
            Messages.Add(online);
            Messages.Add(string.Format("Groups: {0}", groups));
            Messages.Add(string.Format("Oper rights: {0}", user.IsOper));
            Messages.Add(string.Format("Admin rights: {0}", user.IsAdmin));
            Messages.Add(string.Format("Autojoin: {0}", user.AutoJoin));
            string vhost = "No vhost defined";

            if (!string.IsNullOrEmpty(user.Vhost))
            {
                vhost = user.Vhost;
            }
            Messages.Add(string.Format("Vhost: {0}", vhost));
            Messages.Add(string.Format("Hosts: {0}", string.Join(", ", user.Hosts)));
        }