gereji
Version:
A non-restrictive web application framework for creating multi-site web applications focused on security and performance.
66 lines (63 loc) • 2.35 kB
JavaScript
;
var gereji = require(__dirname + "/lib/gereji.js");
var fs = require("fs");
var url = require("url");
var storage = require('gereji-storage');
var settings;
var self = {
respond: function(request, response){
var context = self.context();
context.get("cookies").parseCookie(request.headers['cookie']);
context.set("request", request);
context.set("response", response);
var host = request.headers.host ? request.headers.host.split(':')[0] : settings.server.host;
context.set("host", host);
context.set("method", request.method.toLowerCase());
var url_parts = url.parse(request.url.trim(), true, true);
context.set("uri", url_parts.pathname);
context.set("query", url_parts.query);
context.set("storage", storage);
gereji.router.init(context);
gereji.authenticator.init(context);
gereji.cache.init(context);
gereji.operator.init(context);
context.get('broker').emit({type : 'server.end', data : context});
},
cert: function(){
return {
key: fs.readFileSync(settings.server.key, 'utf8'),
cert: fs.readFileSync(settings.server.cert, 'utf8')
};
},
context: function(){
var context = new (require('gereji-context'));
context.init(settings);
var encryption = new (require('gereji-encryption'));
var broker = new (require('gereji-broker'));
var publisher = new (require('gereji-publisher'));
context.set("cookies", (new (require('gereji-cookies'))));
context.set("user", (new (require('gereji-user'))));
context.set("user", (new (require('gereji-user'))));
context.set("user", (new (require('gereji-user'))));
context.set("settings", settings);
context.set("encryption", encryption.init(context.get("settings").key));
broker.log = context.log;
context.set("broker", broker.init());
context.set('publisher', publisher.init());
return context;
}
};
module.exports = {
listen: function(){
settings = arguments[0];
storage.db(settings.database).open(function(error, db){
if(error)
return console.log(error.toString());
storage.set("global", db);
if(settings.server.secure)
require('https').createServer(self.cert(settings), self.respond).listen(settings.server.port, settings.server.host);
else
require('http').createServer(self.respond).listen(settings.server.port, settings.server.host);
});
}
};