Identify TechBot to allow private messages
Modified: trunk/irc/TechBot/TechBot/App.config
Modified: trunk/irc/TechBot/TechBot/ServiceThread.cs
Modified: trunk/irc/TechBot/TechBot.Console/App.config
Modified: trunk/irc/TechBot/TechBot.Console/Main.cs
Modified: trunk/irc/TechBot/TechBot.IRCLibrary/IRC.cs
Modified: trunk/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs
Modified: trunk/irc/TechBot/TechBot.Library/IrcService.cs
  _____
Modified: trunk/irc/TechBot/TechBot/App.config
--- trunk/irc/TechBot/TechBot/App.config        2006-01-05 15:17:54 UTC
(rev 20577)
+++ trunk/irc/TechBot/TechBot/App.config        2006-01-05 15:29:08 UTC
(rev 20578)
@@ -5,6 +5,7 @@
                <add key="IRCServerHostPort" value="6667" />
                <add key="IRCChannelNames"
value="channel1;channel2" />
                <add key="IRCBotName" value="MyBot" />
+               <add key="IRCBotPassword" value="MyPassword" />
                <add key="ChmPath" value="C:\IRC\TechBot\CHM" />
                <add key="MainChm" value="kmarch.chm" />
                <add key="NtstatusXml"
value="C:\IRC\TechBot\ntstatus.xml" />
  _____
Modified: trunk/irc/TechBot/TechBot/ServiceThread.cs
--- trunk/irc/TechBot/TechBot/ServiceThread.cs  2006-01-05 15:17:54 UTC
(rev 20577)
+++ trunk/irc/TechBot/TechBot/ServiceThread.cs  2006-01-05 15:29:08 UTC
(rev 20578)
@@ -11,6 +11,7 @@
                private int IRCServerHostPort;
                private string IRCChannelNames;
                private string IRCBotName;
+               private string IRCBotPassword;
                private string ChmPath;
                private string MainChm;
                private string NtstatusXml;
@@ -32,6 +33,7 @@
                        IRCServerHostPort =
Int32.Parse(ConfigurationSettings.AppSettings["IRCServerHostPort"]);
                        IRCChannelNames =
ConfigurationSettings.AppSettings["IRCChannelNames"];
                        IRCBotName =
ConfigurationSettings.AppSettings["IRCBotName"];
+                       IRCBotPassword =
ConfigurationSettings.AppSettings["IRCBotPassword"];
                        ChmPath =
ConfigurationSettings.AppSettings["ChmPath"];
                        MainChm =
ConfigurationSettings.AppSettings["MainChm"];
                        NtstatusXml =
ConfigurationSettings.AppSettings["NtstatusXml"];
@@ -51,6 +53,7 @@
IRCServerHostPort,
IRCChannelNames,
IRCBotName,
+
IRCBotPassword,
                                                               ChmPath,
                                                               MainChm,
NtstatusXml,
  _____
Modified: trunk/irc/TechBot/TechBot.Console/App.config
--- trunk/irc/TechBot/TechBot.Console/App.config        2006-01-05
15:17:54 UTC (rev 20577)
+++ trunk/irc/TechBot/TechBot.Console/App.config        2006-01-05
15:29:08 UTC (rev 20578)
@@ -5,6 +5,7 @@
                <add key="IRCServerHostPort" value="6667" />
                <add key="IRCChannelNames"
value="channel1;channel2" />
                <add key="IRCBotName" value="MyBot" />
+               <add key="IRCBotPassword" value="MyPassword" />
                <add key="ChmPath" value="C:\IRC\TechBot\CHM" />
                <add key="MainChm" value="kmarch.chm" />
                <add key="NtstatusXml"
value="C:\IRC\TechBot\ntstatus.xml" />
  _____
Modified: trunk/irc/TechBot/TechBot.Console/Main.cs
--- trunk/irc/TechBot/TechBot.Console/Main.cs   2006-01-05 15:17:54 UTC
(rev 20577)
+++ trunk/irc/TechBot/TechBot.Console/Main.cs   2006-01-05 15:29:08 UTC
(rev 20578)
@@ -74,6 +74,18 @@
                        }
                }
+               private static string IRCBotPassword
+               {
+                       get
+                       {
+                               string optionName = "IRCBotPassword";
+                               string s =
ConfigurationSettings.AppSettings[optionName];
+                               VerifyRequiredOption(optionName,
+                                                    s);
+                               return s;
+                       }
+               }
+
                private static string ChmPath
                {
                        get
@@ -176,6 +188,7 @@
IRCServerHostPort,
IRCChannelNames,
IRCBotName,
+
IRCBotPassword,
                                                               ChmPath,
                                                               MainChm,
NtstatusXml,
  _____
Modified: trunk/irc/TechBot/TechBot.IRCLibrary/IRC.cs
--- trunk/irc/TechBot/TechBot.IRCLibrary/IRC.cs 2006-01-05 15:17:54 UTC
(rev 20577)
+++ trunk/irc/TechBot/TechBot.IRCLibrary/IRC.cs 2006-01-05 15:29:08 UTC
(rev 20578)
@@ -16,6 +16,7 @@
                public const string PONG = "PONG";
                public const string PRIVMSG = "PRIVMSG";
                public const string USER = "USER";
+               public const string PASS = "PASS";
                public const string RPL_NAMREPLY = "353";
                public const string RPL_ENDOFNAMES = "366";
  _____
Modified: trunk/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs
--- trunk/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs   2006-01-05
15:17:54 UTC (rev 20577)
+++ trunk/irc/TechBot/TechBot.IRCLibrary/IrcClient.cs   2006-01-05
15:29:08 UTC (rev 20578)
@@ -556,26 +556,40 @@
                public void ChangeNick(string nickname)
                {
                        if (nickname == null)
-                       {
                                throw new
ArgumentNullException("nickname", "Nickname cannot be null.");
-                       }
                        /* NICK <nickname> [ <hopcount> ] */
                        SendMessage(new IrcMessage(IRC.NICK, nickname));
                }
                /// <summary>
+               /// Submit password to identify user.
+               /// </summary>
+               /// <param name="password">Password of registered
nick.</param>
+               private void SubmitPassword(string password)
+               {
+                       if (password == null)
+                               throw new
ArgumentNullException("password", "Password cannot be null.");
+
+                       /* PASS <password> */
+                       SendMessage(new IrcMessage(IRC.PASS, password));
+               }
+
+               /// <summary>
                /// Register.
                /// </summary>
                /// <param name="nickname">New nickname.</param>
+               /// <param name="password">Password. Can be
null.</param>
                /// <param name="realname">Real name. Can be
null.</param>
-               public void Register(string nickname, string realname)
+               public void Register(string nickname,
+                                    string password,
+                                    string realname)
                {
                        if (nickname == null)
-                       {
                                throw new
ArgumentNullException("nickname", "Nickname cannot be null.");
-                       }
                        firstPingReceived = false;
+                       if (password != null)
+                               SubmitPassword(password);
                        ChangeNick(nickname);
                        /* OLD: USER <username> <hostname> <servername>
<realname> */
                        /* NEW: USER <user> <mode> <unused>
<realname>
*/
  _____
Modified: trunk/irc/TechBot/TechBot.Library/IrcService.cs
--- trunk/irc/TechBot/TechBot.Library/IrcService.cs     2006-01-05
15:17:54 UTC (rev 20577)
+++ trunk/irc/TechBot/TechBot.Library/IrcService.cs     2006-01-05
15:29:08 UTC (rev 20578)
@@ -11,6 +11,7 @@
                private int port;
                private string channelnames;
                private string botname;
+               private string password;
                private string chmPath;
                private string mainChm;
                private string ntstatusXml;
@@ -28,6 +29,7 @@
                                  int port,
                                  string channelnames,
                                  string botname,
+                                 string password,
                                  string chmPath,
                                  string mainChm,
                                  string ntstatusXml,
@@ -41,6 +43,10 @@
                        this.port = port;
                        this.channelnames = channelnames;
                        this.botname = botname;
+                       if (password == null || password.Trim() == "")
+                               this.password = null;
+                       else
+                               this.password = password;
                        this.chmPath = chmPath;
                        this.mainChm = mainChm;
                        this.ntstatusXml = ntstatusXml;
@@ -72,7 +78,7 @@
                                                               hostname,
port));
                        client.Connect(hostname, port);
                        System.Console.WriteLine("Connected...");
-                       client.Register(botname, null);
+                       client.Register(botname, password, null);
System.Console.WriteLine(String.Format("Registered as {0}...",
botname));
                        JoinChannels();