Identify TechBot to allow private messages
authorCasper Hornstrup <chorns@users.sourceforge.net>
Thu, 5 Jan 2006 15:29:08 +0000 (15:29 +0000)
committerCasper Hornstrup <chorns@users.sourceforge.net>
Thu, 5 Jan 2006 15:29:08 +0000 (15:29 +0000)
svn path=/trunk/; revision=20578

irc/TechBot/TechBot.Console/App.config
irc/TechBot/TechBot.Console/Main.cs
irc/TechBot/TechBot.IRCLibrary/IRC.cs
irc/TechBot/TechBot.IRCLibrary/IrcClient.cs
irc/TechBot/TechBot.Library/IrcService.cs
irc/TechBot/TechBot/App.config
irc/TechBot/TechBot/ServiceThread.cs

index 28d804b..310f6ee 100644 (file)
@@ -5,6 +5,7 @@
                <add key="IRCServerHostPort" value="6667" />\r
                <add key="IRCChannelNames" value="channel1;channel2" />\r
                <add key="IRCBotName" value="MyBot" />\r
+               <add key="IRCBotPassword" value="MyPassword" />\r
                <add key="ChmPath" value="C:\IRC\TechBot\CHM" />\r
                <add key="MainChm" value="kmarch.chm" />\r
                <add key="NtstatusXml" value="C:\IRC\TechBot\ntstatus.xml" />\r
index 7c41f5d..323f234 100644 (file)
@@ -74,6 +74,18 @@ namespace TechBot.Console
                        }\r
                }\r
 \r
+               private static string IRCBotPassword\r
+               {\r
+                       get\r
+                       {\r
+                               string optionName = "IRCBotPassword";\r
+                               string s = ConfigurationSettings.AppSettings[optionName];\r
+                               VerifyRequiredOption(optionName,\r
+                                                    s);\r
+                               return s;\r
+                       }\r
+               }\r
+\r
                private static string ChmPath\r
                {\r
                        get\r
@@ -176,6 +188,7 @@ namespace TechBot.Console
                                                               IRCServerHostPort,\r
                                                               IRCChannelNames,\r
                                                               IRCBotName,\r
+                                                              IRCBotPassword,\r
                                                               ChmPath,\r
                                                               MainChm,\r
                                                               NtstatusXml,\r
index 38cb448..488b6b2 100644 (file)
@@ -16,6 +16,7 @@ namespace TechBot.IRCLibrary
                public const string PONG = "PONG";\r
                public const string PRIVMSG = "PRIVMSG";\r
                public const string USER = "USER";\r
+               public const string PASS = "PASS";\r
 \r
                public const string RPL_NAMREPLY = "353";\r
                public const string RPL_ENDOFNAMES = "366";\r
index 3590f57..68c7aa2 100644 (file)
@@ -556,26 +556,40 @@ namespace TechBot.IRCLibrary
                public void ChangeNick(string nickname)\r
                {\r
                        if (nickname == null)\r
-                       {\r
                                throw new ArgumentNullException("nickname", "Nickname cannot be null.");\r
-                       }\r
 \r
                        /* NICK <nickname> [ <hopcount> ] */\r
                        SendMessage(new IrcMessage(IRC.NICK, nickname));\r
                }\r
 \r
+               /// <summary>\r
+               /// Submit password to identify user.\r
+               /// </summary>\r
+               /// <param name="password">Password of registered nick.</param>\r
+               private void SubmitPassword(string password)\r
+               {\r
+                       if (password == null)\r
+                               throw new ArgumentNullException("password", "Password cannot be null.");\r
+\r
+                       /* PASS <password> */\r
+                       SendMessage(new IrcMessage(IRC.PASS, password));\r
+               }\r
+\r
                /// <summary>\r
                /// Register.\r
                /// </summary>\r
                /// <param name="nickname">New nickname.</param>\r
+               /// <param name="password">Password. Can be null.</param>\r
                /// <param name="realname">Real name. Can be null.</param>\r
-               public void Register(string nickname, string realname)\r
+               public void Register(string nickname,\r
+                                    string password,\r
+                                    string realname)\r
                {\r
                        if (nickname == null)\r
-                       {\r
                                throw new ArgumentNullException("nickname", "Nickname cannot be null.");\r
-                       }\r
                        firstPingReceived = false;\r
+                       if (password != null)\r
+                               SubmitPassword(password);\r
                        ChangeNick(nickname);\r
                        /* OLD: USER <username> <hostname> <servername> <realname> */\r
                        /* NEW: USER <user> <mode> <unused> <realname> */\r
index a771f41..2bc382c 100644 (file)
@@ -11,6 +11,7 @@ namespace TechBot.Library
                private int port;\r
                private string channelnames;\r
                private string botname;\r
+               private string password;\r
                private string chmPath;\r
                private string mainChm;\r
                private string ntstatusXml;\r
@@ -28,6 +29,7 @@ namespace TechBot.Library
                                  int port,\r
                                  string channelnames,\r
                                  string botname,\r
+                                 string password,\r
                                  string chmPath,\r
                                  string mainChm,\r
                                  string ntstatusXml,\r
@@ -41,6 +43,10 @@ namespace TechBot.Library
                        this.port = port;\r
                        this.channelnames = channelnames;\r
                        this.botname = botname;\r
+                       if (password == null || password.Trim() == "")\r
+                               this.password = null;\r
+                       else\r
+                               this.password = password;\r
                        this.chmPath = chmPath;\r
                        this.mainChm = mainChm;\r
                        this.ntstatusXml = ntstatusXml;\r
@@ -72,7 +78,7 @@ namespace TechBot.Library
                                                               hostname, port));\r
                        client.Connect(hostname, port);\r
                        System.Console.WriteLine("Connected...");\r
-                       client.Register(botname, null);\r
+                       client.Register(botname, password, null);\r
                        System.Console.WriteLine(String.Format("Registered as {0}...", botname));\r
                        JoinChannels();\r
                        \r
index dc0bf34..2a40c92 100644 (file)
@@ -5,6 +5,7 @@
                <add key="IRCServerHostPort" value="6667" />\r
                <add key="IRCChannelNames" value="channel1;channel2" />\r
                <add key="IRCBotName" value="MyBot" />\r
+               <add key="IRCBotPassword" value="MyPassword" />\r
                <add key="ChmPath" value="C:\IRC\TechBot\CHM" />\r
                <add key="MainChm" value="kmarch.chm" />\r
                <add key="NtstatusXml" value="C:\IRC\TechBot\ntstatus.xml" />\r
index 0c95478..f2595c9 100644 (file)
@@ -11,6 +11,7 @@ namespace TechBot
                private int IRCServerHostPort;\r
                private string IRCChannelNames;\r
                private string IRCBotName;\r
+               private string IRCBotPassword;\r
                private string ChmPath;\r
                private string MainChm;\r
                private string NtstatusXml;\r
@@ -32,6 +33,7 @@ namespace TechBot
                        IRCServerHostPort = Int32.Parse(ConfigurationSettings.AppSettings["IRCServerHostPort"]);\r
                        IRCChannelNames = ConfigurationSettings.AppSettings["IRCChannelNames"];\r
                        IRCBotName = ConfigurationSettings.AppSettings["IRCBotName"];\r
+                       IRCBotPassword = ConfigurationSettings.AppSettings["IRCBotPassword"];\r
                        ChmPath = ConfigurationSettings.AppSettings["ChmPath"];\r
                        MainChm = ConfigurationSettings.AppSettings["MainChm"];\r
                        NtstatusXml = ConfigurationSettings.AppSettings["NtstatusXml"];\r
@@ -51,6 +53,7 @@ namespace TechBot
                                                               IRCServerHostPort,\r
                                                               IRCChannelNames,\r
                                                               IRCBotName,\r
+                                                              IRCBotPassword,\r
                                                               ChmPath,\r
                                                               MainChm,\r
                                                               NtstatusXml,\r