Example #1
0
        public static void cmdPart(mcPage aPage, string Parameters)
        {
            string[] parts;
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /part <channel> [reason]");
                return;
            }

            parts = Parameters.Split(null);

            if (parts.Length < 2)
            {
                aPage.MessageInfo("Usage: /part <channel> [reason]");
                return;
            }

            if (parts.Length == 2)
            {
                aPage.Server.IRCSend("PART " + parts[1]);
            }
            else
            {
                aPage.Server.IRCSend("PART " + parts[1] + " :" + Parameters.Substring(parts[1].Length + 2));
            }
        }
Example #2
0
 public static void cmdNick(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         aPage.MessageInfo("Usage: /nick <new_name>");
         return;
     }
     aPage.Server.IRCSend("NICK " + Parameters);
 }
Example #3
0
 public static void cmdJoin(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         aPage.MessageInfo("Usage: /join <channel>");
         return;
     }
     aPage.Server.IRCSend("JOIN " + Parameters);
 }
Example #4
0
        private static void CTCP(string prefix, string[] parameters, mcPage page)
        {
            //:n!u@h PRIVMSG #blah :VERSION
            mcPage target;

            string[] userhost;
            string[] ctcpparams;

            parameters[1] = parameters[1].Replace("", "");

            userhost   = prefix.Split('!');
            ctcpparams = parameters[1].Split(' ');

            target = page.Server.FindPage(parameters[0]);
            if (target == null)
            {
                /* no channel page, try find a private one.. */
                target = page.Server.FindPage(userhost[0]);
            }

            switch (ctcpparams[0])
            {
            case "ACTION":
                /* if we didn't find a page previously, create one (presume private ;)) */
                if (target == null)
                {
                    target = page.Server.AddPage(userhost[0], mcServer.PageType.Message);
                }

                int    i      = 0;
                string action = null;

                foreach (string str in ctcpparams)
                {
                    if (i == 0)                             /* ugly :p */
                    {
                        i++;
                        continue;
                    }
                    action = action + " " + str;
                }

                target.MessageAction(userhost[0], action);
                break;

            case "VERSION":
                if (target == null)
                {
                    target = page.Server.ServerPage;
                }

                target.MessageInfo("[" + userhost[0] + " VERSION]");
                page.Server.IRCSend("NOTICE " + userhost[0] + " :VERSION  " + Obsidian.APP_NAME + " " + Obsidian.APP_VER + " - Got it yet?\r\n");
                break;
            }
        }
Example #5
0
 public static void cmdSay(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         aPage.MessageInfo("Usage: /say <text>");
         return;
     }
     aPage.Server.IRCSend("PRIVMSG " + aPage.Text + " :" + Parameters);
     aPage.MessageUser(aPage.Server.MyNickname, Parameters);
 }
Example #6
0
        public static void cmdMe(mcPage aPage, string Parameters)
        {
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /me <does stuff>");
                return;
            }

            aPage.Server.IRCSend("PRIVMSG " + aPage.Text + " :ACTION" + Parameters + "");
            aPage.MessageAction(aPage.Server.MyNickname, Parameters);
        }
Example #7
0
        public mcServer()
        {
            ServerName = "";
            ServerPort = 6667;
            MyNickname = SystemInformation.UserName;
            MyUsername = MyNickname;
            MyRealname = MyNickname;
            ServerPage = new mcPage(this, "My Status", false);

            CurrentPage = ServerPage;
            ServerPage.DoFocus();
        }
Example #8
0
 public static void cmdDisconnect(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         /* todo: this needs to be configurable */
         aPage.Server.Disconnect("Departing.");
     }
     else
     {
         aPage.Server.Disconnect(Parameters);
     }
 }
Example #9
0
 public static void cmdDisconnect(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         /* todo: this needs to be configurable */
         aPage.Server.Disconnect("Departing.");
     }
     else
     {
         aPage.Server.Disconnect(Parameters);
     }
 }
Example #10
0
        public mcServer()
        {
            ServerName = "";
            ServerPort = 6667;
            MyNickname = SystemInformation.UserName;
            MyUsername = MyNickname;
            MyRealname = MyNickname;
            ServerPage = new mcPage(this, "My Status", false);

            CurrentPage = ServerPage;
            ServerPage.DoFocus();
        }
Example #11
0
        public static void cmdNames(mcPage aPage, string Parameters)
        {
            if (Parameters == null)
            {
                return;
            }

            mcPage target = aPage.Server.FindPage(Parameters);

            if (target != null)
            {
                target.RemoveAllUsersFromChannel();
            }
        }
Example #12
0
        public static void cmdCycle(mcPage aPage, string Parameters)
        {
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /cycle <channel>");
                return;
            }

            //hmm, shouldn't we be waiting for reciept of PART/JOIN
            //to display messages?
            aPage.Server.IRCSend("PART " + aPage.Text + " :Cycling channel.");
            aPage.MessageDisplay("<-- " + aPage.Server.MyNickname + " has left " + aPage.Text);
            aPage.Server.IRCSend("JOIN " + aPage.Text);
            aPage.MessageDisplay("--> " + aPage.Server.MyNickname + " has joined " + aPage.Text);
        }
Example #13
0
        public static void cmdCycle(mcPage aPage, string Parameters)
        {
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /cycle <channel>");
                return;
            }

            //hmm, shouldn't we be waiting for reciept of PART/JOIN
            //to display messages?
            aPage.Server.IRCSend("PART " + aPage.Text + " :Cycling channel.");
            aPage.MessageDisplay("<-- " + aPage.Server.MyNickname+" has left " + aPage.Text);
            aPage.Server.IRCSend("JOIN " + aPage.Text);
            aPage.MessageDisplay("--> " + aPage.Server.MyNickname+" has joined "+aPage.Text);
        }
Example #14
0
        public static void cmdCTCPReply(mcPage aPage, string Parameters)
        {
            string[] parts;
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /ctcpreply <target> <ctcp>]");
                return;
            }

            parts = Parameters.Split(null);

            if (parts.Length < 3)
            {
                aPage.MessageInfo("Usage: /ctcpreply <target> <ctcp>");
                return;
            }

            aPage.Server.IRCSend("NOTICE " + parts[1] + " :" + Parameters.Substring(parts[1].Length + 2) + "");
            aPage.MessageNotice(aPage.Server.MyNickname, "CTCPREPLY " + parts[1] + " " + Parameters.Substring(parts[1].Length + 2));
        }
Example #15
0
        public static void cmdCTCPReply(mcPage aPage, string Parameters)
        {
            string[] parts;
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /ctcpreply <target> <ctcp>]");
                return;
            }

            parts = Parameters.Split(null);

            if(parts.Length < 3)
            {
                aPage.MessageInfo("Usage: /ctcpreply <target> <ctcp>");
                return;
            }

            aPage.Server.IRCSend("NOTICE " + parts[1] + " :" + Parameters.Substring(parts[1].Length + 2) + "");
            aPage.MessageNotice(aPage.Server.MyNickname, "CTCPREPLY " + parts[1] + " " + Parameters.Substring(parts[1].Length + 2));
        }
Example #16
0
        public mcPage AddPage(string PageName, PageType TypeOfPage)
        {
            /* Add a page to the Server instance and return it. */
            mcPage aPage;

            System.Windows.Forms.TreeNode lvi = new System.Windows.Forms.TreeNode(PageName);
            lvi.Tag = this.HashKey;

            switch (TypeOfPage)
            {
            case PageType.Channel:
                aPage = new mcPage(this, PageName, true);
                this.ServerPage.ChannelsNode.Nodes.Add(lvi);
                break;

            case PageType.Message:
                aPage = new mcPage(this, PageName, false);
                this.ServerPage.MessagesNode.Nodes.Add(lvi);
                break;

            default:
                /* unsupported page type?! */
                aPage = new mcPage(this, PageName, false);
                MessageBox.Show("mcServer.AddPage was given an invalid PageType for page " + aPage.Text);
                this.ServerPage.MyNode.Nodes.Add(lvi);
                break;
            }


            aPage.MyNode = lvi;
            Pages.Add(PageName, aPage);

            /* reset focus on current page. */
            CurrentPage.DoFocus();

            /* We don't do duplicates checking (ie two #test's),
             * this is assumed to have already been done by a
             * seperate proceedure (hint: FindPage)
             */
            return(aPage);
        }
Example #17
0
        public static void cmdMsg(mcPage aPage, string Parameters)
        {
            string[] parts;

            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /msg <nickname> <message>");
                return;
            }

            parts = Parameters.Split(null);

            if (parts.Length < 3)
            {
                aPage.MessageInfo("Usage: /msg <nickname> <message>");
                return;
            }

            aPage.Server.IRCSend("PRIVMSG " + parts[1] + " :" + Parameters.Substring(parts[1].Length + 2));
            aPage.MessagePrivate(parts[1], Parameters.Substring(parts[1].Length + 2));
        }
Example #18
0
        public static void cmdQuery(mcPage aPage, string Parameters)
        {
            mcPage target;

            string[] parts;

            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /query <nickname>");
                return;
            }

            parts = Parameters.Split(null);

            target = aPage.Server.FindPage(parts[1]);
            if (target == null)
            {
                target           = aPage.Server.AddPage(parts[1], mcServer.PageType.Message);
                target.IsChannel = false;
            }
            target.DoFocus();
        }
Example #19
0
        public static void cmdServer(mcPage aPage, string Parameters)
        {
            string[] parts;
            if (Parameters == null)
            {
                return;
            }
            parts = Parameters.Split(null);
            if (parts.Length < 1 || parts.Length > 3)
            {
                aPage.MessageInfo("Usage: /server <server.name> [port]");
                return;
            }

            if (aPage.Server.Connected)
            {
                aPage.Server.Disconnect("Changing servers.");
            }

            aPage.Server.ServerName = parts[1];
            aPage.Server.ServerPort = (parts.Length == 3) ? System.Int32.Parse(parts[2]) : 6667;
            aPage.Server.Connect();
        }
Example #20
0
        private static void CmdNOTICE(string prefix, string command, string[] parameters, mcPage page)
        {
            // Command: NOTICE  Parameters: <msgtarget> :<text>
            string source;

            string[] userhost;

            mcPage target;

            if (prefix != null)
            {
                userhost = prefix.Split('!');
                source   = userhost[0];
            }
            else
            {
                source = page.Server.ServerName;
            }

            target = page.Server.FindPage(parameters[0]);

            if (target != null)
            {
                target.MessageNotice(source, parameters[1]);
            }
            else
            {
                if (source.IndexOf('.') == -1)
                {
                    page.Server.CurrentPage.MessageNotice(source, parameters[1]);
                }
                else
                {
                    page.Server.ServerPage.MessageNotice(source, parameters[1]);
                }
            }
        }
Example #21
0
        private static void CmdPART(string prefix, string command, string[] parameters, mcPage page)
        {
            //:n!u@h PART #chan :message
            string[] userhost;
            mcPage   target;

            userhost = prefix.Split('!');
            target   = page.Server.FindPage(parameters[0]);

            if (target == null)
            {
                return;
            }

            target.MessagePart(userhost[0], userhost[1], (parameters.Length >= 2 ? parameters[1] : ""));

            if (userhost[0] == page.Server.MyNickname)
            {
                page.Server.DeletePage(target);
                Obsidian.mainForm.tvcWindows.Nodes.Remove(target.MyNode);
            }
        }
Example #22
0
        private static void CmdNICK(string prefix, string command, string[] parameters, mcPage page)
        {
            // Command: NICK    Parameters: :<new>
            string[] userhost;
            userhost = prefix.Split('!');

            if (userhost[0] == page.Server.MyNickname)
            {
                page.Server.MyNickname = parameters[0];
            }

            page.Server.ChangeNick(userhost[0], parameters[0]);
        }
Example #23
0
        private static void CmdNICK(string prefix, string command, string[] parameters, mcPage page)
        {
            // Command: NICK    Parameters: :<new>
            string[] userhost;
            userhost = prefix.Split('!');

            if (userhost[0] == page.Server.MyNickname)
            {
                page.Server.MyNickname = parameters[0];
            }

            page.Server.ChangeNick(userhost[0], parameters[0]);
        }
Example #24
0
        private static void DefaultCommand(string prefix, string command, string[] parameters, mcPage page)
        {
            /* unknown numeric/command */
            string todisplay;

            todisplay = "UNKNOWN: :" + prefix + " " + command + " ";

            foreach (string str in parameters)
            {
                todisplay = todisplay + " " + str;
            }

            page.MessageInfo(todisplay);
        }
Example #25
0
        private static void CmdTOPIC(string prefix, string command, string[] parameters, mcPage page)
        {
            //:n!u@h TOPIC #chan :newtopic zomg!
            string[] userhost;
            mcPage target;

            userhost = prefix.Split('!');
            target = page.Server.FindPage(parameters[0]);

            if (target == null)
                return;

            target.Topic = parameters[1];
            target.MessageInfo(userhost[0] + " has changed the topic to: " + target.Topic);
            if (target.Equals(page.Server.CurrentPage))
                page.Server.CurrentPage.Topic = target.Topic;
        }
Example #26
0
 public static void cmdJoin(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         aPage.MessageInfo("Usage: /join <channel>");
         return;
     }
     aPage.Server.IRCSend("JOIN " + Parameters);
 }
Example #27
0
        private static void CmdQUIT(string prefix, string command, string[] parameters, mcPage page)
        {
            //:prefix!u@h QUIT :message :o
            string[] userhost;

            userhost = prefix.Split('!');
            page.Server.QuitNick(userhost[0], parameters[0]);
        }
Example #28
0
 public static void cmdReconnect(mcPage aPage, string Parameters)
 {
     aPage.Server.Disconnect("Reconnecting.");
     aPage.Server.Connect();
 }
Example #29
0
        public static void cmdServer(mcPage aPage, string Parameters)
        {
            string[] parts;
            if (Parameters == null)
            {
                return;
            }
            parts = Parameters.Split(null);
            if(parts.Length < 1 || parts.Length > 3)
            {
                aPage.MessageInfo("Usage: /server <server.name> [port]");
                return;
            }

            if(aPage.Server.Connected)
                aPage.Server.Disconnect("Changing servers.");

            aPage.Server.ServerName = parts[1];
            aPage.Server.ServerPort = (parts.Length == 3) ? System.Int32.Parse(parts[2]) : 6667;
            aPage.Server.Connect();
        }
Example #30
0
        public static void cmdQuery(mcPage aPage, string Parameters)
        {
            mcPage target;
            string[] parts;

            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /query <nickname>");
                return;
            }

            parts = Parameters.Split(null);

            target = aPage.Server.FindPage(parts[1]);
            if (target == null)
            {
                target = aPage.Server.AddPage(parts[1], mcServer.PageType.Message);
                target.IsChannel = false;
            }
            target.DoFocus();
        }
Example #31
0
        private static void CmdPRIVMSG(string prefix, string command, string[] parameters, mcPage page)
        {
            //:n!u@h PRIVMSG target :message here!
            string[] userhost;
            mcPage target;

            userhost = prefix.Split('!');

            if (parameters[1][0] == '\u0001')
            {
                //todo: redo CTCP support (:
                CTCP(prefix, parameters, page);
                return;
            }

            target = page.Server.FindPage(parameters[0]);

            if (target != null)
            {
                target.MessageUser(userhost[0], parameters[1]);
            }
            else
            {
                target = page.Server.FindPage(userhost[0]);

                if (target == null)
                {
                    page.Server.AddPage(userhost[0], mcServer.PageType.Message);
                    target = page.Server.FindPage(userhost[0]);
                }

                target.MessageUser(userhost[0], parameters[1]);
            }
        }
Example #32
0
        private static void CmdQUIT(string prefix, string command, string[] parameters, mcPage page)
        {
            //:prefix!u@h QUIT :message :o
            string[] userhost;

            userhost = prefix.Split('!');
            page.Server.QuitNick(userhost[0], parameters[0]);
        }
Example #33
0
 private static void CmdPING(string prefix, string command, string[] parameters, mcPage page)
 {
     //PING :something.goes.here
     page.Server.IRCSend("PONG " + parameters[0]);
 }
Example #34
0
        public static void cmdMsg(mcPage aPage, string Parameters)
        {
            string[] parts;

            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /msg <nickname> <message>");
                return;
            }

            parts = Parameters.Split(null);

            if(parts.Length < 3)
            {
                aPage.MessageInfo("Usage: /msg <nickname> <message>");
                return;
            }

            aPage.Server.IRCSend("PRIVMSG " + parts[1] + " :" + Parameters.Substring(parts[1].Length + 2));
            aPage.MessagePrivate(parts[1], Parameters.Substring(parts[1].Length + 2));
        }
Example #35
0
        private static void CmdPRIVMSG(string prefix, string command, string[] parameters, mcPage page)
        {
            //:n!u@h PRIVMSG target :message here!
            string[] userhost;
            mcPage   target;

            userhost = prefix.Split('!');

            if (parameters[1][0] == '\u0001')
            {
                //todo: redo CTCP support (:
                CTCP(prefix, parameters, page);
                return;
            }

            target = page.Server.FindPage(parameters[0]);

            if (target != null)
            {
                target.MessageUser(userhost[0], parameters[1]);
            }
            else
            {
                target = page.Server.FindPage(userhost[0]);

                if (target == null)
                {
                    page.Server.AddPage(userhost[0], mcServer.PageType.Message);
                    target = page.Server.FindPage(userhost[0]);
                }

                target.MessageUser(userhost[0], parameters[1]);
            }
        }
Example #36
0
 public static void cmdNick(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         aPage.MessageInfo("Usage: /nick <new_name>");
         return;
     }
     aPage.Server.IRCSend("NICK " + Parameters);
 }
Example #37
0
        private static void CmdTOPIC(string prefix, string command, string[] parameters, mcPage page)
        {
            //:n!u@h TOPIC #chan :newtopic zomg!
            string[] userhost;
            mcPage   target;

            userhost = prefix.Split('!');
            target   = page.Server.FindPage(parameters[0]);

            if (target == null)
            {
                return;
            }

            target.Topic = parameters[1];
            target.MessageInfo(userhost[0] + " has changed the topic to: " + target.Topic);
            if (target.Equals(page.Server.CurrentPage))
            {
                page.Server.CurrentPage.Topic = target.Topic;
            }
        }
Example #38
0
        private static void DefaultCommand(string prefix, string command, string[] parameters, mcPage page)
        {
            /* unknown numeric/command */
            string todisplay;

            todisplay = "UNKNOWN: :" + prefix + " " + command + " ";

            foreach (string str in parameters)
            {
                todisplay = todisplay + " " + str;
            }

            page.MessageInfo(todisplay);
        }
Example #39
0
        private static void CmdNOTICE(string prefix, string command, string[] parameters, mcPage page)
        {
            // Command: NOTICE  Parameters: <msgtarget> :<text>
            string source;
            string[] userhost;

            mcPage target;
            if (prefix != null)
            {
                userhost = prefix.Split('!');
                source = userhost[0];
            }
            else
            {
                source = page.Server.ServerName;
            }

            target = page.Server.FindPage(parameters[0]);

            if (target != null)
                target.MessageNotice(source, parameters[1]);
            else
            {
                if (source.IndexOf('.') == -1)
                    page.Server.CurrentPage.MessageNotice(source, parameters[1]);
                else
                    page.Server.ServerPage.MessageNotice(source, parameters[1]);
            }
        }
Example #40
0
        private static void CTCP(string prefix, string[] parameters, mcPage page)
        {
            //:n!u@h PRIVMSG #blah :VERSION
            mcPage target;
            string[] userhost;
            string[] ctcpparams;

            parameters[1] = parameters[1].Replace("", "");

            userhost = prefix.Split('!');
            ctcpparams = parameters[1].Split(' ');

            target = page.Server.FindPage(parameters[0]);
            if (target == null)
            {
                /* no channel page, try find a private one.. */
                target = page.Server.FindPage(userhost[0]);
            }

            switch (ctcpparams[0])
            {
                case "ACTION":
                    /* if we didn't find a page previously, create one (presume private ;)) */
                    if (target == null)
                    {
                        target = page.Server.AddPage(userhost[0], mcServer.PageType.Message);
                    }

                    int i = 0;
                    string action = null;

                    foreach (string str in ctcpparams)
                    {
                        if (i == 0) /* ugly :p */
                        {
                            i++;
                            continue;
                        }
                        action = action + " " + str;
                    }

                    target.MessageAction(userhost[0], action);
                    break;
                case "VERSION":
                    if (target == null)
                    {
                        target = page.Server.ServerPage;
                    }

                    target.MessageInfo("[" + userhost[0] + " VERSION]");
                    page.Server.IRCSend("NOTICE " + userhost[0] + " :VERSION  " + Obsidian.APP_NAME + " " + Obsidian.APP_VER + " - Got it yet?\r\n");
                    break;
            }
        }
Example #41
0
        public static void cmdMe(mcPage aPage, string Parameters)
        {
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /me <does stuff>");
                return;
            }

            aPage.Server.IRCSend("PRIVMSG " + aPage.Text + " :ACTION" + Parameters + "");
            aPage.MessageAction(aPage.Server.MyNickname, Parameters);
        }
Example #42
0
 private static void CmdPING(string prefix, string command, string[] parameters, mcPage page)
 {
     //PING :something.goes.here
     page.Server.IRCSend("PONG " + parameters[0]);
 }
Example #43
0
        public static void cmdNames(mcPage aPage, string Parameters)
        {
            if (Parameters == null)
                return;

            mcPage target = aPage.Server.FindPage(Parameters);

            if (target != null)
                target.RemoveAllUsersFromChannel();
        }
Example #44
0
 public ChanUser(string nick, mcPage p)
 {
     this.Nick = nick;
     this.DispColor = Color.White;
     this.p = p;
 }
Example #45
0
        public static void cmdPart(mcPage aPage, string Parameters)
        {
            string[] parts;
            if (Parameters == null)
            {
                aPage.MessageInfo("Usage: /part <channel> [reason]");
                return;
            }

            parts = Parameters.Split(null);

            if(parts.Length < 2)
            {
                aPage.MessageInfo("Usage: /part <channel> [reason]");
                return;
            }

            if(parts.Length == 2)
            {
                aPage.Server.IRCSend("PART " + parts[1]);
            }
            else
            {
                aPage.Server.IRCSend("PART " + parts[1] + " :" + Parameters.Substring(parts[1].Length + 2));
            }
        }
Example #46
0
        private static void CmdPART(string prefix, string command, string[] parameters, mcPage page)
        {
            //:n!u@h PART #chan :message
            string[] userhost;
            mcPage target;

            userhost = prefix.Split('!');
            target = page.Server.FindPage(parameters[0]);

            if (target == null)
                return;

            target.MessagePart(userhost[0], userhost[1], (parameters.Length >= 2 ? parameters[1] : ""));

            if (userhost[0] == page.Server.MyNickname)
            {
                page.Server.DeletePage(target);
                Obsidian.mainForm.tvcWindows.Nodes.Remove(target.MyNode);
            }
        }
Example #47
0
 public static void cmdClear(mcPage aPage, string Parameters)
 {
     aPage.Clear();
 }
Example #48
0
 private static void Cmd421(string prefix, string command, string[] parameters, mcPage page)
 {
     //:devel.rburchell.org 421 w00t me :Unknown command
     page.Server.CurrentPage.MessageInfo(parameters[1] + ": " + parameters[2]);
 }
Example #49
0
 public static void cmdSay(mcPage aPage, string Parameters)
 {
     if (Parameters == null)
     {
         aPage.MessageInfo("Usage: /say <text>");
         return;
     }
     aPage.Server.IRCSend("PRIVMSG " + aPage.Text + " :" + Parameters);
     aPage.MessageUser(aPage.Server.MyNickname, Parameters);
 }
Example #50
0
        private static void Cmd671(string prefix, string command, string[] parameters, mcPage page)
        {
            string todisplay = null;             /* join parts of parameters together to display */

            for (int i = 2; i < parameters.Length; i++)
            {
                todisplay = todisplay + " " + parameters[i];
            }

            page.Server.CurrentPage.MessageInfo("Status:" + todisplay);
        }
Example #51
0
        public static void MainParser(mcPage aPage, string CommandString)
        {
            System.Reflection.MethodInfo m;
            Type t;
            string CurrentLine;
            string[] Lines;
            string MyCmd;
            string Parameters;
            int i;
            int a;

            CommandString = CommandString.Replace('\r','\n');
            Lines = CommandString.Split('\n');

            for(i = 0; i < Lines.Length; i++)
            {
                CurrentLine = Lines[i];
                if(CurrentLine.Length < 1)
                    continue;
                if(CurrentLine[0] == '/')
                {
                    a = CurrentLine.IndexOf(" ");
                    if (a == -1)
                    {
                        //one-word command, no params
                        MyCmd = CurrentLine.Substring(1);
                        Parameters = null;
                    }
                    else
                    {
                        //more complex :/
                        MyCmd = CurrentLine.Substring(1, a - 1);
                        Parameters = CurrentLine.Substring(a);
                    }
                    /* Try and invoke it now. */
                    mcCommands MyScript = new mcCommands();
                    t = MyScript.GetType();
                    m = t.GetMethod("cmd" + MyCmd, BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.IgnoreCase | BindingFlags.Public);
                    if (m == null)
                    {
                        /* no command, send it raw. */
                        aPage.Server.IRCSend(MyCmd + " " + Parameters);
                    }
                    else
                    {
                        try
                        {
                            object[] anObj = new object[] {aPage, Parameters};
                            m.Invoke(null, anObj);
                            anObj = null;
                        }
                        catch (TargetInvocationException ex)
                        {
                            aPage.MessageInfo("Scripting error, error dump follows:");
                            aPage.MessageInfo(ex.ToString());
                        }
                    }
                }
                else
                {
                    cmdSay(aPage, CurrentLine);
                }
            }
        }
Example #52
0
 private static void CmdERROR(string prefix, string command, string[] parameters, mcPage page)
 {
     // Command: ERROR   Parameters: <error message>
     page.Server.ServerPage.MessageInfo("ERROR " + parameters[0]);
     /* this is being a bit cheeky ;) */
     page.Server.Disconnect("ERROR " + parameters[0]);
 }
Example #53
0
        private static void CmdMODE(string prefix, string command, string[] parameters, mcPage page)
        {
            //:w00t!u@h MODE #test +oi Brik
            //:w00t!u@h MODE w00t +h
            mcPage target;

            string[] userhost;

            target   = page.Server.FindPage(parameters[0]);
            userhost = prefix.Split('!');
            if (target == null)
            {
                /* setting modes on us, handle later */
                page.MessageInfo(userhost[0] + " sets mode " + parameters[1] + " on you");
                page.Server.ParseModes(parameters[1]);
                return;
            }

            bool   adding     = true;
            int    j          = 2;
            bool   prefixmode = false;
            int    n          = 0;
            bool   requiresparam;
            string myparams = null;

            for (n = 1; n < parameters.Length; n++)
            {
                myparams = myparams + " " + parameters[n];
            }

            target.MessageMode(userhost[0], userhost[1], myparams.Substring(1));

            foreach (char modechar in parameters[1])
            {
                switch (modechar)
                {
                case '-':
                    adding = false;
                    break;

                case '+':
                    adding = true;
                    break;

                default:
                    /* first, determine if it's a prefix mode.. treat them differently. */
                    prefixmode = false;
                    for (n = 0; n < target.Server.ISupport.PREFIX_Modes.Length; n++)
                    {
                        if (modechar == target.Server.ISupport.PREFIX_Modes[n])
                        {
                            /* We are dealing with a prefix. */
                            prefixmode = true;
                            break;
                        }
                    }

                    if (prefixmode)
                    {
                        if (adding)
                        {
                            target.AddPrefix(parameters[j], target.Server.ISupport.PREFIX_Characters[n]);
                            j++;
                        }
                        else
                        {
                            target.RemovePrefix(parameters[j], target.Server.ISupport.PREFIX_Characters[n]);
                            j++;
                        }
                    }
                    else
                    {
                        if (target.Server.ISupport.CHANMODES[0].IndexOf(modechar) >= 0 || target.Server.ISupport.CHANMODES[1].IndexOf(modechar) >= 0 || (target.Server.ISupport.CHANMODES[2].IndexOf(modechar) >= 0 && adding))
                        {
                            requiresparam = true;
                        }
                        else
                        {
                            requiresparam = false;
                        }

                        if (adding)
                        {
                            if (requiresparam)
                            {
                                target.AddMode(modechar, parameters[j], requiresparam);
                                j++;
                            }
                            else
                            {
                                target.AddMode(modechar, null, requiresparam);
                            }
                        }
                        else
                        {
                            if (requiresparam)
                            {
                                target.RemoveMode(modechar, parameters[j]);
                                j++;
                            }
                            else
                            {
                                target.RemoveMode(modechar, null);
                            }
                        }
                    }
                    break;
                }
            }
        }
Example #54
0
 private static void CmdINVITE(string prefix, string command, string[] parameters, mcPage page)
 {
     // Do something with this...
 }
Example #55
0
 public static void cmdExit(mcPage aPage, string Parameters)
 {
     Obsidian.mainForm.Exit(null, null);
 }
Example #56
0
        private static void CmdJOIN(string prefix, string command, string[] parameters, mcPage page)
        {
            //:w00t!u@h JOIN :#test
            mcPage target;

            string[] userhost;

            target   = page.Server.FindPage(parameters[0]);
            userhost = prefix.Split('!');

            if (target == null)
            {
                /* Joining a new channel. */
                target           = page.Server.AddPage(parameters[0], mcServer.PageType.Channel);
                target.IsChannel = true;
            }

            target.MessageJoin(userhost[0], userhost[1]);
        }
Example #57
0
 public void DeletePage(mcPage Page)
 {
     Pages.Remove(Page.Text);
     Page.Dispose();
 }
Example #58
0
        private static void CmdKICK(string prefix, string command, string[] parameters, mcPage page)
        {
            /* :aggressor!u@h KICK #somechan target :reason */
            string[] userhost;
            mcPage   target;

            userhost = prefix.Split('!');
            target   = page.Server.FindPage(parameters[0].ToLower());

            if (target == null)
            {
                return;                 /* probably server lag. */
            }
            target.MessageKick(parameters[1], userhost[0], parameters[1]);
            /* TODO: Clear the nicklist? */
        }
Example #59
0
        public mcPage AddPage(string PageName, PageType TypeOfPage)
        {
            /* Add a page to the Server instance and return it. */
            mcPage aPage;
            System.Windows.Forms.TreeNode lvi = new	System.Windows.Forms.TreeNode(PageName);
            lvi.Tag = this.HashKey;

            switch (TypeOfPage)
            {
                case PageType.Channel:
                    aPage = new mcPage(this, PageName, true);
                    this.ServerPage.ChannelsNode.Nodes.Add(lvi);
                    break;
                case PageType.Message:
                    aPage = new mcPage(this, PageName, false);
                    this.ServerPage.MessagesNode.Nodes.Add(lvi);
                    break;
                default:
                    /* unsupported page type?! */
                    aPage = new mcPage(this, PageName, false);
                    MessageBox.Show("mcServer.AddPage was given an invalid PageType for page " + aPage.Text);
                    this.ServerPage.MyNode.Nodes.Add(lvi);
                    break;
            }

            aPage.MyNode = lvi;
            Pages.Add(PageName, aPage);

            /* reset focus on current page. */
            CurrentPage.DoFocus();

            /* We don't do duplicates checking (ie two #test's),
             * this is assumed to have already been done by a
             * seperate proceedure (hint: FindPage)
             */
            return aPage;
        }
Example #60
0
        private static void CmdMODE(string prefix, string command, string[] parameters, mcPage page)
        {
            //:w00t!u@h MODE #test +oi Brik
            //:w00t!u@h MODE w00t +h
            mcPage target;
            string[] userhost;

            target = page.Server.FindPage(parameters[0]);
            userhost = prefix.Split('!');
            if (target == null)
            {
                /* setting modes on us, handle later */
                page.MessageInfo(userhost[0] + " sets mode " + parameters[1] + " on you");
                page.Server.ParseModes(parameters[1]);
                return;
            }

            bool adding = true;
            int j = 2;
            bool prefixmode = false;
            int n = 0;
            bool requiresparam;
            string myparams = null;

            for (n = 1; n < parameters.Length; n++)
                myparams = myparams + " " + parameters[n];

            target.MessageMode(userhost[0], userhost[1], myparams.Substring(1));

            foreach (char modechar in parameters[1])
            {
                switch (modechar)
                {
                    case '-':
                        adding = false;
                        break;
                    case '+':
                        adding = true;
                        break;
                    default:
                        /* first, determine if it's a prefix mode.. treat them differently. */
                        prefixmode = false;
                        for (n = 0; n < target.Server.ISupport.PREFIX_Modes.Length; n++)
                        {
                            if (modechar == target.Server.ISupport.PREFIX_Modes[n])
                            {
                                /* We are dealing with a prefix. */
                                prefixmode = true;
                                break;
                            }
                        }

                        if (prefixmode)
                        {
                            if (adding)
                            {
                                target.AddPrefix(parameters[j], target.Server.ISupport.PREFIX_Characters[n]);
                                j++;
                            }
                            else
                            {
                                target.RemovePrefix(parameters[j], target.Server.ISupport.PREFIX_Characters[n]);
                                j++;
                            }
                        }
                        else
                        {
                            if (target.Server.ISupport.CHANMODES[0].IndexOf(modechar) >= 0 || target.Server.ISupport.CHANMODES[1].IndexOf(modechar) >= 0 || (target.Server.ISupport.CHANMODES[2].IndexOf(modechar) >= 0 && adding)) {
                                requiresparam = true;
                            }
                            else
                            {
                                requiresparam = false;
                            }

                            if (adding)
                            {
                                if (requiresparam)
                                {
                                    target.AddMode(modechar, parameters[j], requiresparam);
                                    j++;
                                }
                                else
                                {
                                    target.AddMode(modechar, null, requiresparam);
                                }
                            }
                            else
                            {
                                if (requiresparam)
                                {
                                    target.RemoveMode(modechar, parameters[j]);
                                    j++;
                                }
                                else
                                {
                                    target.RemoveMode(modechar, null);
                                }
                            }
                        }
                        break;
                }

            }
        }