Initial commit

This commit is contained in:
Thomas FORGIONE
2016-09-09 18:20:59 +02:00
commit 3490d8aab7
28 changed files with 53483 additions and 0 deletions

61
lib/get.js Normal file
View File

@@ -0,0 +1,61 @@
var express = require('express');
var fs = require('fs');
var log = require('log.js')
module.exports = function(parent){
log.debug("Loading get :");
fs.readdirSync(__dirname + '/../routes').forEach(function(name){
// index.js in controller, with function as pages (views.py for django)
var obj = require('./../routes/' + name + '/index');
// urls.js, just like django urls.py
var urls = require('./../routes/' + name + '/urls');
name = obj.name || name;
var app = express();
// allow specifying the view engine
if (obj.engine) app.set('view engine', obj.engine);
app.set('views', __dirname + '/../routes/' + name + '/views');
// generate routes based
// on the exported methods
log.debug(' ' + name + ':');
for (var key in urls) {
app.get(key, ((key) => function(req, res, next) {
var path = obj[urls[key]](req, res, function(view) {
res.render(
__dirname +
'/../routes/' +
name + '/views/' +
view,
res.locals,
function(err, out) {
if (err !== null) {
log.pugerror(err);
}
res.send(out);
}
);
}, next);
})(key));
log.debug(' ' + key + ' -> ' + name + '.' + urls[key]);
}
log.debug();
// mount the app
parent.use(app);
});
};

145
lib/log.js Normal file
View File

@@ -0,0 +1,145 @@
var express = require('express');
var http = require('http');
var yargs = require('yargs');
var argv = yargs.argv;
var log = {};
var Color = {
DEFAULT:0,
BLACK:1,
RED:2,
GREEN:3,
YELLOW:4,
BLUE:5,
MAGENTA:6,
CYAN:7,
ORANGE:8
}
function getColorCode(c) {
switch (c) {
case Color.DEFAULT: return '\u001b[0m';
case Color.BLACK: return '\u001b[30m';
case Color.RED: return '\u001b[31m';
case Color.GREEN: return '\u001b[32m';
case Color.YELLOW: return '\u001b[33m';
case Color.BLUE: return '\u001b[34m';
case Color.MAGENTA: return '\u001b[35m';
case Color.CYAN: return '\u001b[36m';
case Color.ORANGE: return '\u001b[38;5;202m';
}
}
var isDev = require('express')().get('env') === 'development';
var write;
if (argv.nolisten || argv.n) {
write = function(elt, color) { }
} else if (isDev) {
write = function(elt, color) {
console.log(getColorCode(color) + elt + getColorCode(Color.DEFAULT));
}
} else {
write = function(elt, color) {
console.log(elt);
}
}
log.ready = function(msg) {
write('[RDY] ' + new Date() + ' ' + msg, Color.GREEN);
}
log.request = function(req, res, time) {
if (req.headers['x-forwarded-for'] !== undefined || isDev) {
var isStatic = req.url.substr(0, 7) === '/static' || req.url === '/favicon.ico';
write(
'[REQ] ' + new Date() + ' ' +
(req.headers['x-forwarded-for'] || req.connection.remoteAddress) +
(time !== undefined ? (' in ' + (" " + time).slice(-6) + ' ms') : '') +
' : ' + (isStatic && req.url !== '/favicon.ico' ? '/static' + req.url : req.url),
isStatic ? Color.YELLOW : Color.CYAN
);
}
}
log.socket = {};
log.socket.connection = function(socket, isTest) {
write(
'[SOK] ' + new Date() + ' ' +
(socket.handshake.headers['x-forwarded-for'] || socket.handshake.address) + (isTest ? ' test' : '') + ' connection',
Color.MAGENTA
);
}
log.socket.disconnect = function(socket, isTest) {
write(
'[SOK] ' + new Date() + ' ' +
(socket.handshake.headers['x-forwarded-for'] || socket.handshake.address) + (isTest ? ' test' : '') + ' disconnect',
Color.MAGENTA
);
}
log.dberror = function(error) {
write(
'[DBE] ' + new Date() + ' ' + error,
Color.RED
);
}
log.prefetcherror = function(error) {
write(
'[PFE] ' + new Date() + ' ' + error,
Color.RED
);
}
log.mailerror = function(error) {
write(
'[MLE] ' + new Date() + ' ' + error,
Color.RED
);
}
log.debug = function(info, force) {
if (isDev || force === true) {
write(
'[DBG] ' + (info !== undefined ? info : ''),
Color.YELLOW
);
}
}
log.pugerror = function(error) {
write(
'[PER] ' + new Date() + ' ' + error,
Color.RED
);
}
log.warning = function(message) {
write(
'[WRN] ' + new Date() + ' ' + message,
Color.ORANGE
);
}
log.faceerror = function(message) {
write(
'[FER] ' + new Date() + ' ' + message,
Color.RED
);
}
module.exports = log;

34
lib/socket.js Normal file
View File

@@ -0,0 +1,34 @@
module.exports = function(io) {
io.on('connection', function(socket) {
socket.emit('welcome');
socket.on('viewer', function(filename) {
socket.join(filename);
});
socket.on('speaker', function(filename, socketId) {
socket.join(filename);
socket.speakerId = socketId;
});
socket.on('change-slide', function(filename, pageNumber) {
socket.broadcast.to(filename).emit('update', pageNumber);
});
socket.on('pointer', function(filename, id, x, y) {
if (id === socket.speakerId) {
socket.broadcast.to(filename).emit('pointer', 'speaker', x, y);
} else {
socket.broadcast.to(filename).emit('pointer', 'speaker', x, y);
}
});
socket.on('viewer-laser', function(filename, enabled) {
socket.broadcast.to(filename).emit('viewer-laser', enabled);
});
});
}