From befe04dcd3276c0c51bc9d79e4d327ed5dceb3c0 Mon Sep 17 00:00:00 2001 From: euer Date: Sun, 23 Dec 2012 22:37:34 +0100 Subject: //morse -> //util/morse --- sandbox/roboctl/index.js | 18 +++++++++++++ sandbox/roboctl/lib/irc.js | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 sandbox/roboctl/index.js create mode 100644 sandbox/roboctl/lib/irc.js (limited to 'sandbox') diff --git a/sandbox/roboctl/index.js b/sandbox/roboctl/index.js new file mode 100644 index 00000000..ac92c969 --- /dev/null +++ b/sandbox/roboctl/index.js @@ -0,0 +1,18 @@ + +nick = /(^|\n) *Name *= *(\S*) *($|\n)/ + .exec(require('fs').readFileSync('/etc/tinc/retiolum/tinc.conf'))[2]; + +var config = { + "nick": nick + '-krebs', + "server": "irc.freenode.net", + "port": 6667, + "channel": "#tincspasm" +}; + +irc = require('./lib/irc').createClient(config); + +// TODO call back when joined +irc.connect(function () { + console.log('like a boss: ' + nick); + //irc.write(); +}); diff --git a/sandbox/roboctl/lib/irc.js b/sandbox/roboctl/lib/irc.js new file mode 100644 index 00000000..5f904a74 --- /dev/null +++ b/sandbox/roboctl/lib/irc.js @@ -0,0 +1,67 @@ + +var Client = function (config) { + var client = this; + var net = require('net'); + var sys = require('sys'); + var log = function (x) { + sys.puts('TCP server: ' + x); + }; + + client.connect = function (callback) { + var stream = net.createConnection(config.port, config.server); + stream.on('connect', function () { + stream.write( + 'NICK ' + config.nick + '\n' + + 'USER ' + config.nick + ' 0 *:Karl Koch\n' + + 'JOIN ' + config.channel + '\n' + ); + //client.write = function (text) { + // stream.write('PRIVMSG ' + config.channel + ' :' + text); + //}; + client.write = msg_start_send; + callback(); + }); + //stream.on('secure', function () { + //}); + + var msg = []; + + var msg_start_send = function (x) { + client.write = msg_append; + setTimeout(function () { + var x = msg.join('\n') + '\n'; + msg = []; + client.write = msg_start_send; + stream.write('PRIVMSG ' + config.channel + ' :' + x); + }, 1000); + }; + + var msg_append = function (x) { + msg[msg.length] = x; + }; + + + stream.on('data', function (data) { + data = String(data); + log('' + data + ''); + if (data.substring(0,4) === 'PING') { + log('PONG!'); + stream.write('PONG ' + data.substring(4)); + } + }); + //stream.on('end', function () { + //}); + //stream.on('timeout', function () { + //}); + //stream.on('drain', function () { + //}); + //stream.on('error', function (exception) { + //}); + //stream.on('clonse', function (exception) { + //}); + }; +}; + +exports.createClient = function (config) { + return new Client(config); +}; -- cgit v1.2.3