Skip to content

Commit

Permalink
Merge branch 'logzio' into postgres
Browse files Browse the repository at this point in the history
  • Loading branch information
oded leiba committed Jun 23, 2016
2 parents 03e7e62 + dbcffbd commit 92803e2
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 50 deletions.
37 changes: 33 additions & 4 deletions lib/authentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,29 @@

var jwt = require('jwt-simple')
var moment = require('moment')
var request = require('request')

var error_message = ['Not authorized', 401]

module.exports = function (secret, verify_cb, access_cb) {
var verify_fb_accsess_token = function (facebook_properties, fb_input_token, callback) {
var fb_graph_host = facebook_properties.graph_host
var fb_application_id = facebook_properties.application_id
var fb_application_secret = facebook_properties.application_secret
var fb_access_token = fb_application_id + '|' + fb_application_secret
var host = fb_graph_host + '/debug_token?access_token=' + fb_access_token + '&input_token=' + fb_input_token
request.get(host, function (err, response, body) {
if (err) return callback(err)
if (response.statusCode !== 200) return callback(body)
body = JSON.parse(body)
if (body.error) return callback(body.error)
if (!body.data) return callback('no data in body (verify_fb_accsess_token)')
if (body.data.error) return callback(body.data.error)
if (!body.data.user_id) return callback('no facebook user_id found in data')
callback(null, body.data.user_id)
})
}

module.exports = function (secret, verify_cb, access_cb, facebook_properties) {
return {
verify_token: function (req, res, next) {
var token = (req.body && req.body.token) ||
Expand All @@ -17,17 +36,27 @@ module.exports = function (secret, verify_cb, access_cb) {
req.query.token = token
try {
var decoded = jwt.decode(token, secret)
if (decoded.exp <= Date.now()) return next()
// if (decoded.exp <= Date.now()) return next()
return verify_cb(token, decoded, error_message, req, res, next)
} catch (err) {
return next()
if (!facebook_properties) return next()
// try to facebook login:
verify_fb_accsess_token(facebook_properties, token, function (err, fid) {
if (err) return next()
decoded = {
fid: fid,
type: 'session_token',
valid: true
}
return verify_cb(token, decoded, error_message, req, res, next)
})
}
},

verify_specific_user_token: function (allowedUsers) {
return function (req, res, next) {
var user = req.user
if (allowedUsers.indexOf(user.Username) === -1) req.user = null
if (!~allowedUsers.indexOf(user._id.toString())) req.user = null
return next()
}
},
Expand Down
83 changes: 47 additions & 36 deletions lib/logger.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
'use strict'

var winston = require('winston')
var mail = require('winston-mail')
var logzioWinstonTransport = require('winston-logzio')
// var mail = require('winston-mail')
var fs = require('fs')
var logentries = require('le_node')
var assert = require('assert')
Expand Down Expand Up @@ -40,12 +41,12 @@ function development_transports (myToken) {

function qa_transports (myToken) {
var temp = [
// new (winston.transports.Console)({
// level: 'warn',
// colorize: true,
// silent: false,
// timestamp: custom_time_stamp1
// }),
new (winston.transports.Console)({
level: 'silly',
colorize: true,
silent: false,
timestamp: custom_time_stamp1
})
// new (winston.transports.DailyRotateFile)({
// level: 'silly',
// filename: __dirname + '/../log/log.txt',
Expand All @@ -54,20 +55,20 @@ function qa_transports (myToken) {
// silent: false,
// timestamp: custom_time_stamp2
// }),
new (mail.Mail)({
to: 'thehobbit85@gmail.com',
level: 'warn',
silent: true,
token: myToken
// handleExceptions: true
// from: The address you want to send from. (default: winston@[server-host-name])
// host: SMTP server hostname (default: localhost)
// port: SMTP port (default: 587 or 25)
// username: User for server auth
// password: Password for server auth
// subject Subject for email (default: winston: {{level}} {{msg}})
// ssl: Use SSL (boolean or object { key, ca, cert })
})
// new (mail.Mail)({
// to: 'thehobbit85@gmail.com',
// level: 'warn',
// silent: true,
// token: myToken
// // handleExceptions: true
// // from: The address you want to send from. (default: winston@[server-host-name])
// // host: SMTP server hostname (default: localhost)
// // port: SMTP port (default: 587 or 25)
// // username: User for server auth
// // password: Password for server auth
// // subject Subject for email (default: winston: {{level}} {{msg}})
// // ssl: Use SSL (boolean or object { key, ca, cert })
// })
]
return temp
}
Expand All @@ -88,19 +89,19 @@ function production_transports (myToken) {
// silent: false,
// timestamp: custom_time_stamp2
// }),
new (mail.Mail)({
to: 'thehobbit85@gmail.com',
level: 'warn',
silent: true
// handleExceptions: true
// from: The address you want to send from. (default: winston@[server-host-name])
// host: SMTP server hostname (default: localhost)
// port: SMTP port (default: 587 or 25)
// username: User for server auth
// password: Password for server auth
// subject Subject for email (default: winston: {{level}} {{msg}})
// ssl: Use SSL (boolean or object { key, ca, cert })
})
// new (mail.Mail)({
// to: 'thehobbit85@gmail.com',
// level: 'warn',
// silent: true
// // handleExceptions: true
// // from: The address you want to send from. (default: winston@[server-host-name])
// // host: SMTP server hostname (default: localhost)
// // port: SMTP port (default: 587 or 25)
// // username: User for server auth
// // password: Password for server auth
// // subject Subject for email (default: winston: {{level}} {{msg}})
// // ssl: Use SSL (boolean or object { key, ca, cert })
// })
]
return temp
}
Expand All @@ -119,7 +120,11 @@ function defaultTransports () {

module.exports = function (settings) {
var env = settings.env || process.env.NODE_ENV
var logentries_api_ley = settings.logentries_api_ley
var logentries_api_key = settings.logentries_api_key
var logzioToken = settings.logzio_token
var logzioType = settings.logzio_type
console.log('logzioToken', logzioToken)
console.log('logzioType', logzioType)
var transports = settings.transports
var cli = settings.cli
var logger
Expand All @@ -144,7 +149,7 @@ module.exports = function (settings) {
}
}
assert(logentries)
var myToken = process.env.LOG_API_KEY || logentries_api_ley
var myToken = process.env.LOG_API_KEY || logentries_api_key
if (myToken) {
logger.add(winston.transports.Logentries, {
token: myToken,
Expand All @@ -154,6 +159,12 @@ module.exports = function (settings) {
prettyPrint: true
})
}
if (logzioToken) {
logger.add(logzioWinstonTransport, {
token: logzioToken,
type: logzioType
})
}
logger.addFilter(function (msg, meta, level) {
return '(' + process.pid + ') - ' + msg
})
Expand Down
5 changes: 5 additions & 0 deletions lib/properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@ module.exports = function (settingsDir) {
} catch (e) {
throw new Error('Can\'t find default properties')
}
console.log('properties_default = ', properties_default)

properties_default.ENV.type = environment
properties_default.JWT.jwtTokenSecret = process.env.JWTTOKENSECRET || properties_default.JWT && properties_default.JWT.jwtTokenSecret
properties_default.logentries.api_key = process.env.LOG_API_KEY || properties_default.logentries && properties_default.logentries.api_key
properties_default.logzio.token = process.env.LOGZIO_TOKEN || properties_default.logzio && properties_default.logzio.token
properties_default.logzio.type = process.env.LOGZIO_TYPE || properties_default.logzio.type
console.log('properties_default.logzio.token = ', properties_default.logzio.token)
console.log('properties_default.logzio.type = ', properties_default.logzio.type)
if (properties_default.server) {
properties_default.server.https_port = process.env.SSL_PORT || properties_default.server.https_port
properties_default.server.http_port = process.env.PORT || properties_default.server.http_port
Expand Down
15 changes: 7 additions & 8 deletions lib/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ module.exports = function (properties) {
var https_port = properties.server.https_port
var http_port = properties.server.http_port
var sockets = properties.server.sockets
var sockets_redis = properties.server.sockets_redis
var faviconDir = properties.server.favicon
var cookies_secret = properties.server.cookies_secret
var compression_level = properties.server.compression == null ? 6 : properties.server.compression
Expand Down Expand Up @@ -218,10 +217,10 @@ module.exports = function (properties) {
if (sockets === 'true') {
// Sockets Server
server.io_server = io(server.http_server)
if (sockets_redis) {
if (redis_host && redis_port) {
var redis_client_generator = redis.createClient
var pub = redis_client_generator(redis_port, redis_host)
var sub = redis_client_generator(redis_port, redis_host)
var pub = redis_client_generator(redis_port, redis_host, {return_buffers: true})
var sub = redis_client_generator(redis_port, redis_host, {return_buffers: true})
if (redis_password) {
pub.auth_pass = redis_password
sub.auth_pass = redis_password
Expand All @@ -231,11 +230,11 @@ module.exports = function (properties) {
var redis_socketio_adapter = socketio_redis(redis_socketio_options)
server.io_server.adapter(redis_socketio_adapter)

redis_socketio_adapter.pubClient.on('error', function () {
console.log('error in socket.io redis pub client')
redis_socketio_adapter.pubClient.on('error', function (err) {
console.log('error in socket.io redis pub client: ', err)
})
redis_socketio_adapter.subClient.on('error', function () {
console.log('error in socket.io redis sub client')
redis_socketio_adapter.subClient.on('error', function (err) {
console.log('error in socket.io redis sub client: ', err)
})
console.log('using websockets on redis (pub/sub) instance - ' + redis_host + ':' + redis_port)
}
Expand Down
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "casimircore",
"version": "0.8.12",
"version": "0.8.17",
"description": "The core modules for the Casimir webapp framework",
"author": {
"name": "thehobbit85",
Expand Down Expand Up @@ -81,6 +81,8 @@
"uuid": "^2.0.1",
"winston": "^1.0.1",
"winston-mail": "^0.4.0",
"sequelize": "3.22.0"
"sequelize": "3.22.0",
"winston-logzio": "^1.0.0",
"winston-mail": "^0.4.0"
}
}

0 comments on commit 92803e2

Please sign in to comment.