Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var http = require('http');
- var net = require('net');
- var fs = require('fs');
- var log = [];
- var limit = 32;
- var irc = {
- s: {},
- nick: 'echobot',
- nickpass: 'lockdown',
- user: 'echobot echobot nfdb.net EchoBot',
- server: 'chat.freenode.net',
- port: 6666,
- chan: 'nfdtest',
- cmd: '.',
- priv: '+'
- }
- for (var i=0;i<limit;i++) {
- log[i] = {line:'', nick:'', time:0}
- }
- function pad(n) { return n < 10 ? '0'+n : n; }
- http.createServer(function (req, res) {
- switch (req.url) {
- case "/":
- res.writeHead(200, {'Content-Type': 'text/html'});
- var page = fs.readFileSync('index.htm', 'utf8');
- res.write(page);
- res.end();
- break;
- case "/read":
- res.writeHead(200, {'Content-Type': 'text/plain'});
- var lineformat = fs.readFileSync('line.format', 'utf8');
- var lineresult = '';
- for (line in log) {
- lineresult = lineformat.replace('||||', log[line].line, 'gi');
- lineresult = lineresult.replace('^^^^', log[line].nick, 'gi');
- var td = new Date(log[line].time);
- lineresult = lineresult.replace('{H}', pad(td.getHours()), 'gi');
- lineresult = lineresult.replace('{M}', pad(td.getMinutes()), 'gi');
- lineresult = lineresult.replace('{S}', pad(td.getSeconds()), 'gi');
- lineresult = lineresult.replace('{T}', log[line].time, 'gi');
- res.write((log[line].time > 0 ? lineresult : '<div class="line"> </div>')+"\n");
- }
- res.end();
- break;
- case "/fade.png":
- res.writeHead(200, {'Content-Type': 'image/png'});
- var buff = fs.readFileSync('fade.png');
- res.write(buff);
- res.end();
- default:
- res.writeHead(404, {'Content-Type': 'text/html'});
- res.write("The requested page does not exist.");
- res.end();
- }
- }).listen(80, 'nfd.ath.cx');
- console.log('HTTP Server Running');
- console.log('TCP Server Listening');
- irc.s = new net.Socket();
- irc.s.addListener('data', ircdata);
- irc.s.addListener('connect', ircconnect);
- irc.s.addListener('end', ircdisconnect);
- irc.s.setEncoding('ascii');
- var notconnected = false;
- do {
- notconnected = false;
- try {
- irc.s.connect(irc.port, irc.server);
- console.log('Connecting to IRC server...');
- } catch (e) {
- console.log('Error connecting to server... '+e);
- console.log('Retrying connection...');
- notconnected = true;
- }
- } while (notconnected == true);
- function ircconnect() {
- console.log('IRC Connection Established.');
- irc.s.write('NICK '+irc.nick+'\n');
- irc.s.write('USER '+irc.user+'\n');
- irc.s.write('JOIN #'+irc.chan+'\n');
- }
- function ircdisconnect() {
- console.log('Connection lost.');
- irc.s.connect(irc.port, irc.server);
- console.log('Reconnecting...');
- }
- function ircdata(data) {
- //console.log('Data recieved: '+data.trim());
- var lines = data.split('\n');
- for (var i = 0; i < lines.length; i++) {
- processline(lines[i]);
- }
- }
- function processline(data) {
- var dat = data.split(' ');
- var musr = {
- nick: dat[0].split('!')[0],
- host: dat[0].split('!')[1]
- };
- switch (dat[0]) {
- case 'PING':
- irc.s.write('PONG '+dat[1].substr(1)+'\n');
- console.log('Pong!');
- break;
- default:
- switch (dat[1]) {
- case 'PRIVMSG':
- var msg = dat.slice(3);
- msg = msg.join(' ');
- msg = msg.trim().substr(1);
- if (dat[3].substr(1,1) == irc.cmd) {
- console.log('Command from '+musr.nick+': "'+dat[3].substr(1).trim()+'"');
- // Send a command to the tile page?
- } else {
- console.log('Message from '+musr.nick.substr(1)+': "'+msg+'"');
- log.splice(0,1);
- var d = new Date();
- log.push({line:msg, nick:musr.nick.substr(1), time:d.getTime()});
- }
- break;
- case '372': // MOTD, ignore it.
- break;
- case '433': // Nick in use
- irc.s.write('PRIVMSG nickserv IDENTIFY '+irc.nick+' '+irc.nickpass+'\n'); // Identify with ident services.
- irc.s.write('PRIVMSG nickserv GHOST\n'); // Attempt to ghost anyone using the nick.
- irc.s.write('NICK '+irc.nick+'\n'); // Attempt to set nick back to EchoBot.
- irc.s.write('USER '+irc.user+'\n'); // Perform user auth.
- irc.s.write('JOIN #'+irc.chan+'\n'); // Join the channel.
- break;
- default:
- // The bot didn't recognize the data recieved, ignore it.
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement