From 029c7891ef4086f96bf33384c9554ddf86e1d33d Mon Sep 17 00:00:00 2001 From: cyan <> Date: Sat, 27 Sep 2003 09:27:29 +0000 Subject: [PATCH] Initial checkin of irclib.js, a library which assists in the creation of IRC clients, servers, bots, or other neat stuff. This is very much still in its infancy. Commited as per DigitalMan's sword. ;p --- exec/load/irclib.js | 131 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 exec/load/irclib.js diff --git a/exec/load/irclib.js b/exec/load/irclib.js new file mode 100644 index 0000000000..cc2df50ed0 --- /dev/null +++ b/exec/load/irclib.js @@ -0,0 +1,131 @@ +// $Id$ +// +// irclib.js +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details: +// http://www.gnu.org/licenses/gpl.txt +// +// A library of useful IRC functions and objects that can be used to assist +// in the creation of IRC clients, bots, servers, or custom shells. +// +// If you use this to create something neat, let me know about it! :) +// Either email, or find me on #synchronet, irc.synchro.net, nick 'Cyan' +// +// Copyright 2003 Randolph Erwin Sommerfeld <sysop@rrx.ca> +// + +const IRCLIB_REVISION = "$Revision$".split(' ')[1]; +const IRCLIB_VERSION = "irclib.js-0.1(" + IRCLIB_REVISION + ")"; + +// Connect to a server as a client. +// hostname Hostname to connect to +// nick Desired nickname +// username Desired username (i.e. username@host) [RECOMMENDED] +// realname Desired IRCname field [RECOMMENDED] +// port Port to connect to [OPTIONAL] +// password Password to use (if applicable) [OPTIONAL] +// RETURNS: socket object on success, 0 on failure. +function IRC_client_connect(hostname,nick,username,realname,port,password) { + var sock; + + if (!port) + port = 6667; + if (!username) + username = "irclib"; + if (!realname) + realname = IRCLIB_VERSION; + + sock = new Socket(); + sock.connect(hostname,port); + if (sock.is_connected) { + if (password) + sock.send("PASS " + password + "\r\n"); + sock.send("NICK " + nick + "\r\n"); + sock.send("USER " + username + " * * :" + realname + "\r\n"); + return sock; + } else { + return 0; + } +} + +// Connect to a server as a server +// hostname Hostname to connect to +// servername Desired server name +// password Password to use [REQUIRED] +// description Description of IRC server (realname) [RECOMMENDED] +// port Port to connect to [OPTIONAL] +// RETURNS: socket object on success, 0 on failure. +function IRC_server_connect(hostname,servername,password,description,port) { + var sock; + + if (!port) + port = 6667; + if (!description) + description = IRCLIB_VERSION; + + sock = new Socket(); + sock.connect(hostname,port); + if (sock.is_connected) { + sock.send("PASS " + password + "\r\n"); + sock.send("SERVER " + servername + " 1 :" +description+"\r\n"); + return sock; + } else { + return 0; + } +} + +// Simply takes a string and returns the 'IRC string' (i.e. what's after a :) +// Moves up to 'arg' argument before parsing, if defined. +// RETURNS: The 'IRC string' of 'str' +function IRC_string(str,arg) { + var cindex; + + if (arg) { + for(sw_counter=0;sw_counter<startword;sw_counter++) { + str=str.slice(str.indexOf(" ")+1); + } + } + cindex = str.indexOf(":")+1; + if (!cindex) + cindex = str.lastIndexOf(" ")+1; + if (!cindex) + return str; + return(str.slice(cindex)); +} + +// Takes a string in and strips off the IRC originator, if applicable. +// RETURNS: an array containing the command arguments, cmd[0] is the command, +// uppercased. +function IRC_parsecommand(str) { + var cmd; + + if (str[0] == ":") + str = str.slice(str.indexOf(" ")+1); + + if (!str) + return 0; // nothing in the string! + + cmd = str.split(' '); + cmd[0] = cmd[0].toUpperCase(); + return cmd; +} + +// Quits from a server, regardless of whether we're connected as a client or +// a server. 'server' must be a valid socket object which points to the +// server in question. 'reason' is an optional QUIT message which displays +// your reason for quitting. +// RETURNS: void. +function IRC_quit(server,reason) { + if (!reason) + reason = IRCLIB_VERSION; + + server.send("QUIT :" + reason + "\r\n"); +} -- GitLab