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();