summaryrefslogtreecommitdiffstats
path: root/webchat/hello_web.js
diff options
context:
space:
mode:
Diffstat (limited to 'webchat/hello_web.js')
-rw-r--r--webchat/hello_web.js81
1 files changed, 45 insertions, 36 deletions
diff --git a/webchat/hello_web.js b/webchat/hello_web.js
index 8e2a0bb8..076097f0 100644
--- a/webchat/hello_web.js
+++ b/webchat/hello_web.js
@@ -4,59 +4,68 @@ var sockjs = require('sockjs');
var connect = require('connect');
var irc = require('irc');
var Clients = [];
-Clients.broadcast = function(object) {
+
+Clients.broadcast = function(object) { //broadcast to all clients
Clients.forEach(function(client) {
client.write(JSON.stringify(object));
});
}
-var pingTimeoutDelay = 5*60*1000
-var lastping = setTimeout(reconnect, pingTimeoutDelay)
-var irc_client = new irc.Client('irc.freenode.net', 'kweb', {
- channels: ['#krebs'],
- sasl: true,
+var irc_reconnect = function() { //reconnt to irc
+ console.log("reconnecting due to pingtimeout");
+ irc_client.disconnect();
+ irc_client.connect();
+}
+
+var pingTimeoutDelay = 5*60*1000
+var lastping = setTimeout(irc_reconnect, pingTimeoutDelay)
+
+var irc_client = new irc.Client('irc.freenode.net', 'kweb', { //create irc_client to talk to irc
+ channels: ['#krebs'], //todo: read from local_config
+ sasl: true,
secure: true,
- userName: 'kweb',
- realName: 'kweb',
+ userName: 'kweb', //todo: read from local_config
+ realName: 'kweb', //todo: read from local_config
password: fs.readFileSync(__dirname+'/local_config/irc.key').toString(),
- debug: true,
+ debug: false,
showErrors: true,
+ floodProtection: true,
port: 6697,
autoRejoin: true,
autoConnect: true,
stripColors: true
});
-var reconnect = function() {
- console.log("reconnecting due to pingtimeout");
- irc_client.disconnect();
- irc_client.connect();
-}
-irc_client.on('ping', function(server) {
+irc_client.on('ping', function(server) { //restart timer on server ping
console.log("got ping from server, renewing timeout for automatic reconnect");
clearTimeout(lastping);
- lastping = setTimeout(reconnect, pingTimeoutDelay);
+ lastping = setTimeout(irc_reconnect, pingTimeoutDelay); //reconnect after irc timeout
})
irc_client.on('message#krebs', function(from, message) {
console.log({ from: from, message: message });
- Clients.broadcast({ from: from, message: message });
+ Clients.broadcast({ from: from, message: message }); //broadcast irc messages to all connected clients
clearTimeout(lastping);
});
+var web_serv_options = { //certificates for https
+ key: fs.readFileSync(__dirname+'/local_config/server_npw.key'),
+ cert: fs.readFileSync(__dirname+'/local_config/server.crt'),
+};
+
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
var origin = conn.remoteAddress;
Clients.push(conn);
Clients.broadcast({from: 'system', message: origin + ' has joined'})
- irc_client.say("#krebs", origin + ' has joined');
- conn.write(JSON.stringify({from: 'system', message: 'hello'}))
+// irc_client.say("#krebs", origin + ' has joined');
+ conn.write(JSON.stringify({from: 'system', message: 'hello'})) //welcome message
conn.on('data', function(data) {
console.log('data:',data);
try {
var object = JSON.parse(data);
- if (/^\/nick\s+(.+)$/.test(object.message)) {
+ if (/^\/nick\s+(.+)$/.test(object.message)) { //if nick is send use nick instead of ip
object.from = origin;
} else if (typeof object.nick === 'string') {
object.from = object.nick;
@@ -71,35 +80,35 @@ echo.on('connection', function(conn) {
console.log(error);
}
});
-conn.on('close', function() {
+conn.on('close', function() { //propagate if client quits the page
Clients.splice(Clients.indexOf(conn));
Clients.broadcast({from: 'system', message: origin + ' has quit'})
- irc_client.say("#krebs", origin + ' has quit');
+// irc_client.say("#krebs", origin + ' has quit');
});
});
-var options = {
- key: fs.readFileSync(__dirname+'/local_config/server_npw.key'),
- cert: fs.readFileSync(__dirname+'/local_config/server.crt'),
-};
var app = connect()
.use(connect.logger('dev'))
.use(connect.static(__dirname+'/public'))
.use( function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
- res.write('<!doctype html>');
- res.write('<link rel="stylesheet" type="text/css" href="reset.css">');
- res.write('<script src="sockjs-0.3.min.js"></script>');
- res.write('<script src="jquery-2.0.3.min.js"></script>');
- res.write('<script src="client.js"></script>');
- res.write('<div id=bg><div id=chatter>');
- res.write('hello, this is the official krebs support:<br>');
- res.write('<table id="chatbox"><tr id="foot"><td id="time"></td><td id="nick" class="chat_from"></td><td><input type="text" id="input"></td></tr></table>');
- res.end('</div></div>');
+ page_template='<!doctype html>\n';
+ page_template+='<link rel="stylesheet" type="text/css" href="reset.css">\n';
+ page_template+='<script src="sockjs-0.3.min.js"></script>\n';
+ page_template+='<script src="jquery-2.0.3.min.js"></script>\n';
+ page_template+='<script src="client.js"></script>\n';
+ page_template+='<div id="bg">';
+ page_template+='<div id="chatter">';
+ page_template+='<div id="space"></div>';
+ page_template+='hello, this is the official krebs support:<br>\n';
+ page_template+='<table id="chatbox"><tr id="foot"><td id="time"></td><td id="nick" class="chat_from"></td><td><input type="text" id="input"></td></tr></table>\n';
+ page_template+='<div id="sideboard"><table id="links"></table></div>';
+ page_template+='</div></div>';
+ res.end(page_template);
})
-var server = http.createServer(options, app);
+var server = http.createServer(web_serv_options, app);
echo.installHandlers(server, {prefix:'/echo'});
server.listen(1337, '0.0.0.0');
console.log('Server running at https://127.0.0.1:1337/');