summaryrefslogtreecommitdiffstats
path: root/sandbox/roboctl
diff options
context:
space:
mode:
authoreuer <root@euer.krebsco.de>2012-12-23 22:37:34 +0100
committereuer <root@euer.krebsco.de>2012-12-23 22:37:34 +0100
commitbefe04dcd3276c0c51bc9d79e4d327ed5dceb3c0 (patch)
tree21acf24c63d6a29d1621598f5ca07a438fa52a5d /sandbox/roboctl
parent3b8a155589443ecf3012805a316421fcbd08c9ae (diff)
//morse -> //util/morse
Diffstat (limited to 'sandbox/roboctl')
-rw-r--r--sandbox/roboctl/index.js18
-rw-r--r--sandbox/roboctl/lib/irc.js67
2 files changed, 85 insertions, 0 deletions
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);
+};