diff options
| -rw-r--r-- | modules/roboctl/index.js | 18 | ||||
| -rw-r--r-- | modules/roboctl/lib/irc.js | 67 | 
2 files changed, 85 insertions, 0 deletions
| diff --git a/modules/roboctl/index.js b/modules/roboctl/index.js new file mode 100644 index 00000000..ac92c969 --- /dev/null +++ b/modules/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/modules/roboctl/lib/irc.js b/modules/roboctl/lib/irc.js new file mode 100644 index 00000000..5f904a74 --- /dev/null +++ b/modules/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('[35m' + data + '[m'); +      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); +}; | 
