_ _ _ __ (_) _ __ ___ __| | | '_ \ | || '__|/ __|/ _` | | |_) || || | | (__| (_| | | .__/ |_||_| \___|\__,_| _ _ |_| _ _ _ | |_| |_ ___ _ __ ___ _ _| | (_)_ _ __ __| |__ _ ___ _ __ ___ _ _ | _| ' \/ -_) | '_ \/ -_) '_| | | | '_/ _| / _` / _` / -_) ' \/ _ \ ' \ \__|_||_\___| | .__/\___|_| |_| |_|_| \__| \__,_\__,_\___|_|_|_\___/_||_| |_| http://pircd.sourceforge.net/ by jay kominek (jkominek@users.sf.net) and other people Yes. It really is an IRC daemon. It's written in Perl. ... You can breathe again. There. Very good. *** Introduction pircd is an IRC daemon written in Perl. I wrote it after realizing that Perl is the right language for IRC. IRC is chock full of various strings and other what not, all of which is easily parsed by Perl, where the C IRC daemons jump through all kinds of hoops and have really nasty looking code (have you ever looked at the Undernet IRC daemon? I gave up on trying to figure out how their extensions to the protocol work by looking at the code.) Whereas pircd is, in my opinion, very clean. Messages from the user are dispatched to the appropriate code via a lookup table to subroutine references, no excessively large if..elsif..else structure, no conversion of the strings into something that they are not (numeric values, if I remember how ircu does it). pircd is now reasonably complete. It lacks STATS output with any relation to reality, and interserver communication. As of this writing, it is 3810 lines long (counting comments and everything). I do not anticipate it getting past twice that with the addition of the remaining features. (interserver communication being the big one.) If you would like to know more about how pircd operates internally, please consult the included file, 'INTERNALS'. *** SSL pircd is one of very few IRC servers which support SSL. As of this writing, however, no clients support SSL. Hopefully, support for authentication and such based on SSL certificates will be added. *** Requirements * Perl 5.004 and later. * The following Perl modules: Fcntl, Getopt::Long, IO::Select, IO::Socket, POSIX, Sys::Syslog, Tie::RefHash, UNIVERSAL IO::Socket::SSL if you want to use SSL In the future, I may make use of Compress::Zlib, also I imagine its use will be optional. * A computer * A port that you can bind to, preferably 6667 *** About the author I graduated from the University of Colorado at Boulder in May 2002 with a degree in Computer Science. Currently I work at the Laboratory for Atmospheric and Space Physics as a research assistant. I write Java stuff. :( An up to date list of people helping with the development of pircd can be found at http://sourceforge.net/project/memberlist.php?group_id=671 - Jay Kominek Hail Eris!