summaryrefslogtreecommitdiffstats
path: root/roboctl
diff options
context:
space:
mode:
authortv <tv@also>2011-05-29 15:47:21 +0200
committertv <tv@also>2011-05-29 15:47:21 +0200
commit12c77cdbfa4ec48d935af3ae7cf1118e38bec6e1 (patch)
tree2fdf8b557d2a2a1edaba2be569c2110c3822559f /roboctl
parentedaa1d7f7a0ed33c019fce185b8aff7563498b6e (diff)
lowered filesystem hierarchy--everything are modules
Diffstat (limited to 'roboctl')
-rw-r--r--roboctl/index.js18
-rw-r--r--roboctl/lib/irc.js67
2 files changed, 85 insertions, 0 deletions
diff --git a/roboctl/index.js b/roboctl/index.js
new file mode 100644
index 00000000..ac92c969
--- /dev/null
+++ b/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/roboctl/lib/irc.js b/roboctl/lib/irc.js
new file mode 100644
index 00000000..5f904a74
--- /dev/null
+++ b/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);
+};