fingerprint/server/middleware/ua.js
2015-08-07 17:13:32 +02:00

50 lines
916 B
JavaScript

var UAParser = require('ua-parser-js');
var parser = new UAParser();
module.exports = function(config, mongoose) {
var Fingerprint = mongoose.model('Fingerprint');
return function userAgent(req, res, next){
var ua = req.get('user-agent');
parser.setUA(ua);
var uaParsed = _.omit(parser.getResult(), 'ua');
var headers = _.omit(req.headers, [ 'cookie', 'user-agent' ]);
if(!_.isEmpty(req.query))
var ip = req.ip;
Fingerprint.findById( req.query.id, function(err, fp) {
if(err) return next(err);
if(fp) {
if(!_.find(fp.server, { ua: ua })) {
var obj = {
ip: ip,
ua: ua,
uaParsed: uaParsed,
headers: headers
};
fp.server.push(obj);
fp.save(function(err, fp) {
if(err) console.error(err);
});
}
}
});
res.locals = {
ua: ua,
uaParsed: uaParsed,
headers: headers
};
next();
};
};