-rw-r--r-- | backend/node/src/app.js | 18 | ||||
-rw-r--r-- | backend/node/src/clipperz.js | 2 | ||||
-rw-r--r-- | backend/node/src/package.json | 15 |
3 files changed, 20 insertions, 15 deletions
diff --git a/backend/node/src/app.js b/backend/node/src/app.js index 61c2c72..ca05e6f 100644 --- a/backend/node/src/app.js +++ b/backend/node/src/app.js @@ -9,43 +9,43 @@ var LOGGER = BUNYAN.createLogger({ res: BUNYAN.stdSerializers.res, err: BUNYAN.stdSerializers.err }, src: true }); var EXPRESS = require('express'); var HTTP = require('http'); var PATH = require('path'); var CLIPPERZ = require('./clipperz'); var CONF = require('./conf'); var clipperz = CLIPPERZ({ psql: CONF.psql||'postgresql:///clipperz', logger: LOGGER, dump_template: PATH.join(__dirname,'htdocs/beta/index.html') }); var app = EXPRESS(); app.set('port', process.env.PORT || 3000); -app.use(EXPRESS.logger('dev')); -app.use(EXPRESS.urlencoded()); -app.use(EXPRESS.methodOverride()); -app.use(EXPRESS.cookieParser('your secret here')); -app.use(EXPRESS.session({secret:'99 little bugs in the code', key:'sid', store: clipperz.session_store() })); -app.use(app.router); +app.use(require('morgan')('dev')); +app.use(require('body-parser').urlencoded({extended:true})); +app.use(require('cookie-parser')('your secret here')); +app.use(require('express-session')({secret:'99 little bugs in the code', key:'sid', store: clipperz.session_store(), resave: false, saveUninitialized: false })); + +app.post('/json',clipperz.json); +app.get('/beta/dump',clipperz.dump); + app.use(EXPRESS.static(PATH.join(__dirname, 'htdocs/'))); if ('development' == app.get('env')) { - app.use(EXPRESS.errorHandler()); + app.use(require('express-error-with-sources')()); } -app.post('/json',clipperz.json); -app.get('/beta/dump',clipperz.dump); HTTP.createServer(app).listen(app.get('port'), function(){ LOGGER.info({port:app.get('port')},"Listener established"); }); diff --git a/backend/node/src/clipperz.js b/backend/node/src/clipperz.js index 04b054a..c51b0bc 100644 --- a/backend/node/src/clipperz.js +++ b/backend/node/src/clipperz.js @@ -1,30 +1,30 @@ var FS = require('fs'); var CRYPTO = require('crypto'); var BIGNUM = require('bignum'); var ASYNC = require('async'); -var express_store = require('express').session.Store; +var express_store = require('express-session').Store; function clipperz_hash(v) { return CRYPTO.createHash('sha256').update( CRYPTO.createHash('sha256').update(v).digest('binary') ).digest('hex'); }; function clipperz_random() { for(var r = '';r.length<64;r+=''+BIGNUM(Math.floor(Math.random()*1e18)).toString(16)); return r.substr(0,64); }; function clipperz_store(PG) { var rv = function(o) { express_store.call(this,o); } rv.prototype.get = function(sid,cb) { PG.Q( "SELECT s_data FROM clipperz.thesession WHERE s_id=$1",[sid], function(e,r) { cb(e,(e||!r.rowCount)?null:JSON.parse(r.rows[0].s_data)); } ) }; rv.prototype.set = function(sid,data,cb) { var d = JSON.stringify(data); PG.Q( "UPDATE clipperz.thesession SET s_data=$1, s_mtime=current_timestamp" +" WHERE s_id=$2",[d,sid], function(e,r) { if(e) return cb(e); if(r.rowCount) return cb(); PG.Q("INSERT INTO clipperz.thesession (s_id,s_data) VALUES ($1,$2)",[sid,d],cb); diff --git a/backend/node/src/package.json b/backend/node/src/package.json index 825f756..98755bd 100644 --- a/backend/node/src/package.json +++ b/backend/node/src/package.json @@ -1,15 +1,20 @@ { "name": "clipperz", "version": "0.0.0", "private": true, "scripts": { "start": "node app 2>&1 | ./node_modules/.bin/bunyan" }, "dependencies": { - "express": "3.4.4", - "async": "~0.2.9", - "bignum": "~0.6.2", - "pg": "~2.8.3", - "bunyan": "~0.22.0" + "async": "^0.9.0", + "bignum": "^0.8.0", + "body-parser": "^1.4.3", + "bunyan": "^0.23.1", + "cookie-parser": "^1.3.2", + "express": "^4.4.5", + "express-error-with-sources": "^1.3.1", + "express-session": "^1.6.1", + "morgan": "^1.1.1", + "pg": "^3.3.0" } } |