Initial commit
This commit is contained in:
61
lib/get.js
Normal file
61
lib/get.js
Normal 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
145
lib/log.js
Normal 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
34
lib/socket.js
Normal 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);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user