lx-scan
Version:
License eXtension to find 5-tuples of all installed packages: name, version, project home page, license (e. g. Apache v2, BSD) and required notice. It includes a GUI to edit information for each package and to enter information if necessary.
108 lines (76 loc) • 2.64 kB
JavaScript
var express = require("express");
var app = express();
var server = require('http').Server(app);
var settings = require('./settings');
var hbs = require('./lib/hbhelpers');
var io = require('socket.io')(server);
var routes = require(settings.routerpath);
var mware = require(settings.middlewarepath);
var ioactions = require(settings.iopath);
// Provide settings to all routes
app.locals.lxusettings = settings;
app.set("dirname",__dirname);
// Create and clean temporary directory for license files,
// as well as introduce some rudimentary ability to recover information in the
// event of a crash
require("fs").mkdir(settings.tmpdir,function (err) {
if(err && err.code==="EEXIST") {
var async = require("async");
var path = require("path");
var fs = require("fs");
fs.readdir(settings.tmpdir,function (err,files) {
if(files.length===0)
return;
async.map(files,function (item,callback) {
fs.stat(path.join(settings.tmpdir,item),function (err,stats) {
if(err) {
callback(err,null);
return;
}
callback(null,{name: path.join(settings.tmpdir,item),stats:stats});
});
},function (err, statlist) {
var sortedfiles = require("underscore").sortBy(statlist,function (file) {
return -file.stats.mtime.getTime();
});
app.locals.jfiles[1] = sortedfiles[0].name;
});
});
}
});
// Start middleware (currently without mount points)
mware(app);
// Start websocket scripts
ioactions(app,io,routes);
app.set('view engine', 'html');
app.set('views', __dirname + "/lib/views");
app.engine('html', hbs.__express);
app.locals.jfiles = {};
// Check for dev start
if(!app.locals.jfiles[1])
app.locals.jfiles[1] = typeof process.argv[2]!=="undefined" ? process.argv[2] : "";
// Necessary for inactivity timer
var server = server.listen(8888);
app.locals.server = server;
app.locals.timer = 0;
// Routes
app.all('*',routes.timer);
app.get('/', routes.index.get);
app.get('/terse',routes.terse.get);
app.post('/upload', routes.upload.post);
app.get('/open', routes.open.get);
app.get('/browse', routes.browser.get);
app.get('/scan', routes.scan.get);
app.get('/log', routes.savelog.get);
app.get('/save/options', routes.saveoptions.get);
app.get('/save', routes.save.get);
app.get('/save/report',routes.report.get);
app.get('/displaylicense',routes.displicense.get);
app.get('/close', function(req,res) {
require("rimraf")(settings.tmpdir,function(){
res.send("GUI Closed");
server.close();
setTimeout(process.exit,3000);
});
});
app.use("/resources",express.static(__dirname + "/lib/resources"))