Exemple #1
0
        private static string GetSelfHost(Channel channel)
        {
            // try to get own hostname, if we can't find it, use default from configuration files
            string hostname = Configuration.IRC.Hostname;

            libirc.User self = channel.RetrieveUser(channel.PrimaryInstance.Nick);
            if (self != null)
            {
                hostname = self.Host;
            }
            return(hostname);
        }
Exemple #2
0
 public void GetOp(Channel chan)
 {
     // get our user
     libirc.User user = chan.RetrieveUser(chan.PrimaryInstance.Nick);
     if (user == null)
     {
         chan.PrimaryInstance.Network.Transfer("CS op " + chan.Name, libirc.Defs.Priority.High);
         return;
     }
     if (!user.IsOp)
     {
         chan.PrimaryInstance.Network.Transfer("CS op " + chan.Name, libirc.Defs.Priority.High);
     }
 }
Exemple #3
0
        public override void Hook_PRIV(Channel channel, libirc.UserInfo invoker, string message)
        {
            if (message.StartsWith(Configuration.System.CommandPrefix + "kick "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick   = message.Substring(6);
                        string reason = "Removed from the channel";
                        if (nick.Contains(" "))
                        {
                            reason = nick.Substring(nick.IndexOf(" ") + 1);
                            nick   = nick.Substring(0, nick.IndexOf(" "));
                        }
                        libirc.User user = getUser(nick, channel);
                        if (user == null)
                        {
                            IRC.DeliverMessage(messages.Localize("OpE5", channel.Language), channel, libirc.Defs.Priority.High);
                            return;
                        }
                        // op self
                        GetOp(channel);
                        channel.PrimaryInstance.Network.Transfer("KICK " + channel.Name + " " + user.Nick + " :" + reason, libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name);
                }
                return;
            }

            if (message.StartsWith(Configuration.System.CommandPrefix + "kb "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick   = message.Substring(4);
                        string reason = "Removed from the channel";
                        if (nick.Contains(" "))
                        {
                            reason = nick.Substring(nick.IndexOf(" ") + 1);
                            nick   = nick.Substring(0, nick.IndexOf(" "));
                        }
                        libirc.User user = getUser(nick, channel);
                        if (user == null)
                        {
                            IRC.DeliverMessage(messages.Localize("OpE5", channel.Language), channel);
                            return;
                        }
                        // op self
                        GetOp(channel);
                        if (string.IsNullOrEmpty(user.Host))
                        {
                            IRC.DeliverMessage(messages.Localize("OpE6", channel.Language), channel, libirc.Defs.Priority.High);
                        }
                        else
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " +b *!*@" + user.Host, libirc.Defs.Priority.High);
                        }
                        channel.PrimaryInstance.Network.Transfer("KICK " + channel.Name + " " + user.Nick + " :" + reason, libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick, libirc.Defs.Priority.Low);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low);
                }
                return;
            }

            if (message.StartsWith(Configuration.System.CommandPrefix + "unkb "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick = message.Substring(6);
                        GetOp(channel);
                        channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -b *!*@" + nick, libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick, libirc.Defs.Priority.Low);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low);
                }
                return;
            }

            if (message.StartsWith(Configuration.System.CommandPrefix + "unq "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick = message.Substring(5);
                        if (nick.Contains(" "))
                        {
                            nick = nick.Substring(0, nick.IndexOf(" "));
                        }
                        libirc.User user = getUser(nick, channel);
                        if (user == null)
                        {
                            IRC.DeliverMessage(messages.Localize("OpE5", channel.Language), channel, libirc.Defs.Priority.High);
                            return;
                        }

                        if (string.IsNullOrEmpty(user.Host))
                        {
                            IRC.DeliverMessage(messages.Localize("OpE6", channel.Language), channel, libirc.Defs.Priority.High);
                            return;
                        }
                        // op self
                        GetOp(channel);
                        channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -q *!*@" + user.Host, libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low);
                }
                return;
            }

            if (message.StartsWith(Configuration.System.CommandPrefix + "q "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick = message.Substring(3);
                        if (nick.Contains(" "))
                        {
                            nick = nick.Substring(0, nick.IndexOf(" "));
                        }
                        libirc.User user = getUser(nick, channel);
                        if (user == null)
                        {
                            IRC.DeliverMessage(messages.Localize("OpE5", channel.Language), channel, libirc.Defs.Priority.High);
                            return;
                        }

                        if (string.IsNullOrEmpty(user.Host))
                        {
                            IRC.DeliverMessage(messages.Localize("OpE6", channel.Language), channel, libirc.Defs.Priority.High);
                            return;
                        }
                        GetOp(channel);
                        channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " +q *!*@" + user.Host, libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick, libirc.Defs.Priority.Low);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low);
                }
                return;
            }

            if (message.StartsWith(Configuration.System.CommandPrefix + "jb "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick = message.Substring(4);
                        if (nick.Contains(" "))
                        {
                            nick = nick.Substring(0, nick.IndexOf(" "));
                        }
                        libirc.User user = getUser(nick, channel);
                        if (user != null)
                        {
                            nick = user.Nick;
                        }
                        // op self
                        GetOp(channel);
                        channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " +b " + nick + "!*@*$##fix_your_connection", libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick, libirc.Defs.Priority.Low);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low);
                }
                return;
            }

            if (message.StartsWith(Configuration.System.CommandPrefix + "unjb "))
            {
                if (channel.SystemUsers.IsApproved(invoker, "admin"))
                {
                    if (GetConfig(channel, "OP.Enabled", false))
                    {
                        string nick = message.Substring(6);
                        if (nick.Contains(" "))
                        {
                            nick = nick.Substring(0, nick.IndexOf(" "));
                        }
                        libirc.User user = getUser(nick, channel);
                        if (user != null)
                        {
                            nick = user.Nick;
                        }
                        // op self
                        GetOp(channel);
                        channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -b " + nick + "!*@*$##fix_your_connection", libirc.Defs.Priority.High);
                        if (!GetConfig(channel, "OP.Permanent", false))
                        {
                            channel.PrimaryInstance.Network.Transfer("MODE " + channel.Name + " -o " + channel.PrimaryInstance.Nick, libirc.Defs.Priority.Low);
                        }
                        return;
                    }
                    return;
                }
                if (!channel.SuppressWarnings)
                {
                    IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low);
                }
            }
        }