rename.2.tfsbot
[tfs.git] / tools / tfsbot / SmartIrc4net / IrcCommands / Rfc2812.cs
blobcd1b3df90e8b7211a9dfcf0c873b13f9b425de77
1 /*
2 * $Id: Rfc2812.cs 198 2005-06-08 16:50:11Z meebey $
3 * $URL: svn://svn.qnetp.net/smartirc/SmartIrc4net/tags/0.4.0/src/IrcCommands/Rfc2812.cs $
4 * $Rev: 198 $
5 * $Author: meebey $
6 * $Date: 2005-06-08 18:50:11 +0200 (Wed, 08 Jun 2005) $
8 * SmartIrc4net - the IRC library for .NET/C# <http://smartirc4net.sf.net>
10 * Copyright (c) 2003-2005 Mirco Bauer <meebey@meebey.net> <http://www.meebey.net>
12 * Full LGPL License: <http://www.gnu.org/licenses/lgpl.txt>
14 * This library is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
19 * This library is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with this library; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29 using System;
30 using System.Globalization;
31 using System.Text.RegularExpressions;
33 namespace Meebey.SmartIrc4net
35 /// <summary>
36 ///
37 /// </summary>
38 /// <threadsafety static="true" instance="true" />
39 public sealed class Rfc2812
41 // nickname = ( letter / special ) *8( letter / digit / special / "-" )
42 // letter = %x41-5A / %x61-7A ; A-Z / a-z
43 // digit = %x30-39 ; 0-9
44 // special = %x5B-60 / %x7B-7D
45 // ; "[", "]", "\", "`", "_", "^", "{", "|", "}"
46 private static Regex _NicknameRegex = new Regex(@"^[A-Za-z\[\]\\`_^{|}][A-Za-z0-9\[\]\\`_\-^{|}]+$", RegexOptions.Compiled);
48 private Rfc2812()
52 /// <summary>
53 /// Checks if the passed nickname is valid according to the RFC
54 ///
55 /// Use with caution, many IRC servers are not conform with this!
56 /// </summary>
57 public static bool IsValidNickname(string nickname)
59 if ((nickname != null) &&
60 (nickname.Length > 0) &&
61 (_NicknameRegex.Match(nickname).Success)) {
62 return true;
65 return false;
68 public static string Pass(string password)
70 return "PASS "+password;
73 public static string Nick(string nickname)
75 return "NICK "+nickname;
78 public static string User(string username, int usermode, string realname)
80 return "USER "+username+" "+usermode.ToString()+" * :"+realname;
83 public static string Oper(string name, string password)
85 return "OPER "+name+" "+password;
88 public static string Privmsg(string destination, string message)
90 return "PRIVMSG "+destination+" :"+message;
93 public static string Notice(string destination, string message)
95 return "NOTICE "+destination+" :"+message;
98 public static string Join(string channel)
100 return "JOIN "+channel;
103 public static string Join(string[] channels)
105 string channellist = String.Join(",", channels);
106 return "JOIN "+channellist;
109 public static string Join(string channel, string key)
111 return "JOIN "+channel+" "+key;
114 public static string Join(string[] channels, string[] keys)
116 string channellist = String.Join(",", channels);
117 string keylist = String.Join(",", keys);
118 return "JOIN "+channellist+" "+keylist;
121 public static string Part(string channel)
123 return "PART "+channel;
126 public static string Part(string[] channels)
128 string channellist = String.Join(",", channels);
129 return "PART "+channellist;
132 public static string Part(string channel, string partmessage)
134 return "PART "+channel+" :"+partmessage;
137 public static string Part(string[] channels, string partmessage)
139 string channellist = String.Join(",", channels);
140 return "PART "+channellist+" :"+partmessage;
143 public static string Kick(string channel, string nickname)
145 return "KICK "+channel+" "+nickname;
148 public static string Kick(string channel, string nickname, string comment)
150 return "KICK "+channel+" "+nickname+" :"+comment;
153 public static string Kick(string[] channels, string nickname)
155 string channellist = String.Join(",", channels);
156 return "KICK "+channellist+" "+nickname;
159 public static string Kick(string[] channels, string nickname, string comment)
161 string channellist = String.Join(",", channels);
162 return "KICK "+channellist+" "+nickname+" :"+comment;
165 public static string Kick(string channel, string[] nicknames)
167 string nicknamelist = String.Join(",", nicknames);
168 return "KICK "+channel+" "+nicknamelist;
171 public static string Kick(string channel, string[] nicknames, string comment)
173 string nicknamelist = String.Join(",", nicknames);
174 return "KICK "+channel+" "+nicknamelist+" :"+comment;
177 public static string Kick(string[] channels, string[] nicknames)
179 string channellist = String.Join(",", channels);
180 string nicknamelist = String.Join(",", nicknames);
181 return "KICK "+channellist+" "+nicknamelist;
184 public static string Kick(string[] channels, string[] nicknames, string comment)
186 string channellist = String.Join(",", channels);
187 string nicknamelist = String.Join(",", nicknames);
188 return "KICK "+channellist+" "+nicknamelist+" :"+comment;
191 public static string Motd()
193 return "MOTD";
196 public static string Motd(string target)
198 return "MOTD "+target;
201 public static string Luser()
203 return "LUSER";
206 public static string Luser(string mask)
208 return "LUSER "+mask;
211 public static string Luser(string mask, string target)
213 return "LUSER "+mask+" "+target;
216 public static string Version()
218 return "VERSION";
221 public static string Version(string target)
223 return "VERSION "+target;
226 public static string Stats()
228 return "STATS";
231 public static string Stats(string query)
233 return "STATS "+query;
236 public static string Stats(string query, string target)
238 return "STATS "+query+" "+target;
241 public static string Links()
243 return "LINKS";
246 public static string Links(string servermask)
248 return "LINKS "+servermask;
251 public static string Links(string remoteserver, string servermask)
253 return "LINKS "+remoteserver+" "+servermask;
256 public static string Time()
258 return "TIME";
261 public static string Time(string target)
263 return "TIME "+target;
266 public static string Connect(string targetserver, string port)
268 return "CONNECT "+targetserver+" "+port;
271 public static string Connect(string targetserver, string port, string remoteserver)
273 return "CONNECT "+targetserver+" "+port+" "+remoteserver;
276 public static string Trace()
278 return "TRACE";
281 public static string Trace(string target)
283 return "TRACE "+target;
286 public static string Admin()
288 return "ADMIN";
291 public static string Admin(string target)
293 return "ADMIN "+target;
296 public static string Info()
298 return "INFO";
301 public static string Info(string target)
303 return "INFO "+target;
306 public static string Servlist()
308 return "SERVLIST";
311 public static string Servlist(string mask)
313 return "SERVLIST "+mask;
316 public static string Servlist(string mask, string type)
318 return "SERVLIST "+mask+" "+type;
321 public static string Squery(string servicename, string servicetext)
323 return "SQUERY "+servicename+" :"+servicetext;
326 public static string List()
328 return "LIST";
331 public static string List(string channel)
333 return "LIST "+channel;
336 public static string List(string[] channels)
338 string channellist = String.Join(",", channels);
339 return "LIST "+channellist;
342 public static string List(string channel, string target)
344 return "LIST "+channel+" "+target;
347 public static string List(string[] channels, string target)
349 string channellist = String.Join(",", channels);
350 return "LIST "+channellist+" "+target;
353 public static string Names()
355 return "NAMES";
358 public static string Names(string channel)
360 return "NAMES "+channel;
363 public static string Names(string[] channels)
365 string channellist = String.Join(",", channels);
366 return "NAMES "+channellist;
369 public static string Names(string channel, string target)
371 return "NAMES "+channel+" "+target;
374 public static string Names(string[] channels, string target)
376 string channellist = String.Join(",", channels);
377 return "NAMES "+channellist+" "+target;
380 public static string Topic(string channel)
382 return "TOPIC "+channel;
385 public static string Topic(string channel, string newtopic)
387 return "TOPIC "+channel+" :"+newtopic;
390 public static string Mode(string target)
392 return "MODE "+target;
395 public static string Mode(string target, string newmode)
397 return "MODE "+target+" "+newmode;
400 public static string Service(string nickname, string distribution, string info)
402 return "SERVICE "+nickname+" * "+distribution+" * * :"+info;
405 public static string Invite(string nickname, string channel)
407 return "INVITE "+nickname+" "+channel;
410 public static string Who()
412 return "WHO";
415 public static string Who(string mask)
417 return "WHO "+mask;
420 public static string Who(string mask, bool ircop)
422 if (ircop) {
423 return "WHO "+mask+" o";
424 } else {
425 return "WHO "+mask;
429 public static string Whois(string mask)
431 return "WHOIS "+mask;
434 public static string Whois(string[] masks)
436 string masklist = String.Join(",", masks);
437 return "WHOIS "+masklist;
440 public static string Whois(string target, string mask)
442 return "WHOIS "+target+" "+mask;
445 public static string Whois(string target, string[] masks)
447 string masklist = String.Join(",", masks);
448 return "WHOIS "+target+" "+masklist;
451 public static string Whowas(string nickname)
453 return "WHOWAS "+nickname;
456 public static string Whowas(string[] nicknames)
458 string nicknamelist = String.Join(",", nicknames);
459 return "WHOWAS "+nicknamelist;
462 public static string Whowas(string nickname, string count)
464 return "WHOWAS "+nickname+" "+count+" ";
467 public static string Whowas(string[] nicknames, string count)
469 string nicknamelist = String.Join(",", nicknames);
470 return "WHOWAS "+nicknamelist+" "+count+" ";
473 public static string Whowas(string nickname, string count, string target)
475 return "WHOWAS "+nickname+" "+count+" "+target;
478 public static string Whowas(string[] nicknames, string count, string target)
480 string nicknamelist = String.Join(",", nicknames);
481 return "WHOWAS "+nicknamelist+" "+count+" "+target;
484 public static string Kill(string nickname, string comment)
486 return "KILL "+nickname+" :"+comment;
489 public static string Ping(string server)
491 return "PING "+server;
494 public static string Ping(string server, string server2)
496 return "PING "+server+" "+server2;
499 public static string Pong(string server)
501 return "PONG "+server;
504 public static string Pong(string server, string server2)
506 return "PONG "+server+" "+server2;
509 public static string Error(string errormessage)
511 return "ERROR :"+errormessage;
514 public static string Away()
516 return "AWAY";
519 public static string Away(string awaytext)
521 return "AWAY :"+awaytext;
524 public static string Rehash()
526 return "REHASH";
529 public static string Die()
531 return "DIE";
534 public static string Restart()
536 return "RESTART";
539 public static string Summon(string user)
541 return "SUMMON "+user;
544 public static string Summon(string user, string target)
546 return "SUMMON "+user+" "+target;
549 public static string Summon(string user, string target, string channel)
551 return "SUMMON "+user+" "+target+" "+channel;
554 public static string Users()
556 return "USERS";
559 public static string Users(string target)
561 return "USERS "+target;
564 public static string Wallops(string wallopstext)
566 return "WALLOPS :"+wallopstext;
569 public static string Userhost(string nickname)
571 return "USERHOST "+nickname;
574 public static string Userhost(string[] nicknames)
576 string nicknamelist = String.Join(" ", nicknames);
577 return "USERHOST "+nicknamelist;
580 public static string Ison(string nickname)
582 return "ISON "+nickname;
585 public static string Ison(string[] nicknames)
587 string nicknamelist = String.Join(" ", nicknames);
588 return "ISON "+nicknamelist;
591 public static string Quit()
593 return "QUIT";
596 public static string Quit(string quitmessage)
598 return "QUIT :"+quitmessage;
601 public static string Squit(string server, string comment)
603 return "SQUIT "+server+" :"+comment;