Socket
Socket
Sign inDemoInstall

autohost

Package Overview
Dependencies
184
Maintainers
2
Versions
110
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.0-13 to 0.2.0-14

2

package.json
{
"name": "autohost",
"version": "0.2.0-13",
"version": "0.2.0-14",
"description": "Resource driven transport agnostic host",

@@ -5,0 +5,0 @@ "main": "src/index.js",

@@ -12,7 +12,9 @@ var should = require( 'should' ); //jshint ignore:line

};
var authProvider = require( './auth/mock.js' )( config );
var passport = require( '../src/http/passport.js' )( config, authProvider, metrics );
var middleware = require( '../src/http/middleware.js' )( config, metrics );
var http = require( '../src/http/http.js' )( config, requestor, passport, middleware, metrics );
// var authProvider = require( './auth/mock.js' )( config );
// var passport = require( '../src/http/passport.js' )( config, authProvider, metrics );
// var middleware = require( '../src/http/middleware.js' )( config, metrics );
// var http = require( '../src/http/http.js' )( config, requestor, passport, middleware, metrics );
var authProvider, passport, middleware, http;
describe( 'with http module', function() {

@@ -31,2 +33,7 @@ var middlewareHit = [],

before( function() {
authProvider = require( './auth/mock.js' )( config );
passport = require( '../src/http/passport.js' )( config, authProvider, metrics );
middleware = require( '../src/http/middleware.js' )( config, metrics );
http = require( '../src/http/http.js' )( config, requestor, passport, middleware, metrics );
authProvider.users = {};

@@ -132,5 +139,4 @@ passport.resetUserCheck();

describe( 'when authenticating with session support', function() {
var originalAuthenticate = authProvider.authenticate,
counter = 0,
codes,
var counter = 0,
codes, originalAuthenticate,
get = function() {

@@ -148,2 +154,3 @@ return when.promise( function( resolve ) {

before( function( done ) {
originalAuthenticate = authProvider.authenticate;
authProvider.authenticate = function( req, res, next ) {

@@ -175,3 +182,5 @@ counter = counter + 1;

after( http.stop );
after( function() {
http.stop();
} );
} );

@@ -12,9 +12,9 @@ var should = require( 'should' ); //jshint ignore: line

};
var authProvider = require( '../auth/mock.js' )( config );
var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
var middleware = require( '../../src/http/middleware.js' )( config, metrics );
var http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
// var authProvider = require( '../auth/mock.js' )( config );
// var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
// var middleware = require( '../../src/http/middleware.js' )( config, metrics );
// var http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
// var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
authProvider.users[ 'test' ] = { user: 'torpald' };
var authProvider, passport, middleware, http, socket;

@@ -26,2 +26,10 @@ describe( 'with failed socket.io credentials', function() {

before( function( done ) {
authProvider = require( '../auth/mock.js' )( config );
passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
middleware = require( '../../src/http/middleware.js' )( config, metrics );
http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
authProvider.users[ 'test' ] = { user: 'torpald' };
http.start();

@@ -28,0 +36,0 @@ socket.start( passport );

@@ -1,20 +0,17 @@

var should = require( 'should' ),
path = require( 'path' ),
_ = require( 'lodash' ),
requestor = require( 'request' ).defaults( { jar: false } ),
metrics = require( 'cluster-metrics' ),
debug = require( 'debug' )( 'autohost-spec:skipped-auth' ),
when = require( 'when' ),
port = 88988,
config = {
var should = require( 'should' );
var path = require( 'path' );
var _ = require( 'lodash' );
var requestor = require( 'request' ).defaults( { jar: false } );
var metrics = require( 'cluster-metrics' );
var debug = require( 'debug' )( 'autohost-spec:skipped-auth' );
var when = require( 'when' );
var port = 88988;
var config = {
port: port,
socketio: true,
websocket: true
},
authProvider = require( '../auth/mock.js' )( config ),
passport = require( '../../src/http/passport.js' )( config, authProvider, metrics ),
middleware = require( '../../src/http/middleware.js' )( config, metrics ),
http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics ),
socket = require( '../../src/websocket/socket.js' )( config, http );
};
var authProvider, passport, middleware, http, socket;
describe( 'with socketio and no users', function() {

@@ -24,2 +21,8 @@ var client;

before( function( done ) {
authProvider = require( '../auth/mock.js' )( config );
passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
middleware = require( '../../src/http/middleware.js' )( config, metrics );
http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
socket = require( '../../src/websocket/socket.js' )( config, http );
http.start();

@@ -26,0 +29,0 @@ socket.start( passport );

@@ -12,10 +12,12 @@ var should = require( 'should' ); //jshint ignore:line

};
var authProvider = require( '../auth/mock.js' )( config );
var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
var middleware = require( '../../src/http/middleware.js' )( config, metrics );
var http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
// var authProvider = require( '../auth/mock.js' )( config );
// var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
// var middleware = require( '../../src/http/middleware.js' )( config, metrics );
// var http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
// var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
authProvider.users[ 'admin' ] = { name: 'admin', password: 'admin' };
// authProvider.users[ 'admin' ] = { name: 'admin', password: 'admin' };
var authProvider, passport, middleware, http, socket;
describe( 'with websocket and valid credentials', function() {

@@ -26,2 +28,10 @@ var client,

before( function( done ) {
authProvider = require( '../auth/mock.js' )( config );
passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
middleware = require( '../../src/http/middleware.js' )( config, metrics );
http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
authProvider.users[ 'admin' ] = { name: 'admin', password: 'admin' };
http.start();

@@ -28,0 +38,0 @@ socket.start( passport );

@@ -11,10 +11,12 @@ var should = require( 'should' ); //jshint ignore:line

};
var authProvider = require( '../auth/mock.js' )( config );
var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
var middleware = require( '../../src/http/middleware.js' )( config, metrics );
var http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
// var authProvider = require( '../auth/mock.js' )( config );
// var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
// var middleware = require( '../../src/http/middleware.js' )( config, metrics );
// var http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
// var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
authProvider.users[ 'test' ] = { user: 'torpald' };
// authProvider.users[ 'test' ] = { user: 'torpald' };
var authProvider, passport, middleware, http, socket;
describe( 'with websocket and bad credentials', function() {

@@ -25,2 +27,10 @@ var socketErr,

before( function( done ) {
authProvider = require( '../auth/mock.js' )( config );
passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
middleware = require( '../../src/http/middleware.js' )( config, metrics );
http = require( '../../src/http/http.js' )( config, requestor, passport, middleware, metrics );
socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
authProvider.users[ 'test' ] = { user: 'torpald' };
http.start();

@@ -27,0 +37,0 @@ socket.start( passport );

@@ -12,9 +12,6 @@ var should = require( 'should' ); //jshint ignore:line

};
// var authProvider = require( '../auth/mock.js' )( config );
// var passport = require( '../../src/http/passport.js' )( config, authProvider, metrics );
var middleware = require( '../../src/http/middleware.js' )( config, metrics );
var http = require( '../../src/http/http.js' )( config, requestor, undefined, middleware, metrics );
var socket = require( '../../src/websocket/socket.js' )( config, http, middleware );
describe( 'with websocket', function() {
var middleware, http, socket;
describe( 'with websocket and no auth strategy', function() {
var client,

@@ -24,2 +21,6 @@ clientSocket;

before( function( done ) {
middleware = require( '../../src/http/middleware.js' )( config, metrics );
http = require( '../../src/http/http.js' )( config, requestor, undefined, middleware, metrics );
socket = require( '../../src/websocket/socket.js' )( config, http );
http.start();

@@ -36,3 +37,3 @@ socket.start();

client.on( 'connect', function( cs ) {
client.once( 'connect', function( cs ) {
clientSocket = cs;

@@ -39,0 +40,0 @@ done();

@@ -12,8 +12,9 @@ var should = require( 'should' ); //jshint ignore:line

};
var authProvider = require( './auth/mock.js' )( config );
var passport = require( '../src/http/passport.js' )( config, authProvider, metrics );
var middleware = require( '../src/http/middleware.js' )( config, metrics );
var http = require( '../src/http/http.js' )( config, requestor, passport, middleware, metrics );
var socket = require( '../src/websocket/socket.js' )( config, http, middleware );
var socketAdapter = require( '../src/websocket/adapter.js' )( config, authProvider, socket, metrics );
// var authProvider = require( './auth/mock.js' )( config );
// var passport = require( '../src/http/passport.js' )( config, authProvider, metrics );
// var middleware = require( '../src/http/middleware.js' )( config, metrics );
// var http = require( '../src/http/http.js' )( config, requestor, passport, middleware, metrics );
// var socket = require( '../src/websocket/socket.js' )( config, http, middleware );
// var socketAdapter = require( '../src/websocket/adapter.js' )( config, authProvider, socket, metrics );
var authProvider, passport, middleware, http, socket, socketAdapter;
var actionRoles = function( action, roles ) {

@@ -37,2 +38,9 @@ authProvider.actions[ action ] = { roles: roles };

before( function( done ) {
authProvider = require( './auth/mock.js' )( config );
passport = require( '../src/http/passport.js' )( config, authProvider, metrics );
middleware = require( '../src/http/middleware.js' )( config, metrics );
http = require( '../src/http/http.js' )( config, requestor, passport, middleware, metrics );
socket = require( '../src/websocket/socket.js' )( config, http, middleware );
socketAdapter = require( '../src/websocket/adapter.js' )( config, authProvider, socket, metrics );
authProvider.tokens = { 'blorp': 'userman' };

@@ -39,0 +47,0 @@ authProvider.users = {

@@ -12,6 +12,3 @@ var path = require( 'path' );

var queryparse = qs.parse;
var middleware = [];
var routes = [];
var paths = [];
var request, config, metrics, middlewareLib;
var middleware, routes, paths, request, config, metrics, middlewareLib;

@@ -74,6 +71,2 @@ var wrapper = {

if( wrapper.passport ) {
wrapper.passport.wireupPassport( wrapper );
}
// apply user-supplied middleware

@@ -142,2 +135,5 @@ _.each( middleware, function( m ) { m( wrapper.app ); } );

module.exports = function( cfg, req, pass, mw, metric ) {
middleware = [];
routes = [];
paths = [];
config = cfg;

@@ -149,5 +145,13 @@ metrics = metric;

middlewareLib = mw;
// if using an auth strategy, move cookie and session middleware before passport middleware
// to take advantage of sessions/cookies and avoid authenticating on every request
if( pass ) {
middlewareLib.useCookies( registerMiddleware );
middlewareLib.useSession( registerMiddleware );
wrapper.passport.wireupPassport( wrapper );
}
// prime middleware with defaults
middlewareLib.attach( registerMiddleware );
middlewareLib.attach( registerMiddleware, pass !== undefined );
return wrapper;
};

@@ -1,17 +0,24 @@

var bodyParser = require( 'body-parser' ),
cookies = require('cookie-parser'),
multer = require( 'multer' ),
sessionLib = require( 'express-session' ),
wrapper = {
attach: applyMiddelware
},
config, metrics, session, cookieParser;
var bodyParser = require( 'body-parser' );
var cookies = require('cookie-parser');
var sessionLib = require( 'express-session' );
var multer = require( 'multer' );
var wrapper = {
attach: applyMiddelware,
useCookies: applyCookieMiddleware,
useSession: applySessionMiddleware
};
var config, metrics, session, cookieParser;
function applyMiddelware( attach ) {
function applyCookieMiddleware( attach ) {
if( !config.noCookies ) {
attach( '/', cookieParser );
}
}
function applyMiddelware( attach, hasAuth ) {
// add a timer to track ALL requests
attach( '/', requestMetrics );
// turn on cookies unless turned off by the consumer
if( !config.noCookies ) {
attach( '/', cookieParser );
if( !hasAuth ) {
applyCookieMiddleware( attach );
}

@@ -29,5 +36,4 @@

// turn on sessions unless turned off by the consumer
if( !config.noSession ) {
attach( '/', session );
if( !hasAuth ) {
applySessionMiddleware( attach );
}

@@ -41,2 +47,9 @@

function applySessionMiddleware( attach ) {
// turn on sessions unless turned off by the consumer
if( !config.noSession ) {
attach( '/', session );
}
}
function crossOrigin( req, res, next ) {

@@ -43,0 +56,0 @@ res.header( 'Access-Control-Allow-Origin', '*' );

@@ -1,16 +0,16 @@

var _ = require( 'lodash' ),
when = require( 'when' ),
passport = require( 'passport' ),
debug = require( 'debug' )( 'autohost:passport' ),
noOp = function() { return when( true ); },
userCountCheck = noOp,
authorizationErrorCount = 'autohost.authorization.errors',
authorizationErrorRate = 'autohost.authorization.error.rate',
authenticationTimer = 'autohost.authentication.timer',
authorizationTimer = 'autohost.authorization.timer',
passportInitialize = passport.initialize(),
passportSession = passport.session(),
authProvider,
anonPaths,
metrics;
var _ = require( 'lodash' );
var when = require( 'when' );
var passport = require( 'passport' );
var debug = require( 'debug' )( 'autohost:passport' );
var noOp = function() { return when( true ); };
var userCountCheck = noOp;
var authorizationErrorCount = 'autohost.authorization.errors';
var authorizationErrorRate = 'autohost.authorization.error.rate';
var authenticationTimer = 'autohost.authentication.timer';
var authorizationTimer = 'autohost.authorization.timer';
var passportInitialize = passport.initialize();
var passportSession = passport.session();
var authProvider;
var anonPaths;
var metrics;

@@ -34,2 +34,14 @@ function addPassport( http ) {

function authConditionally( req, res, next ) {
// if previous middleware has said to skip auth OR
// a user was attached from a session, skip authenticating
if( req.skipAuth || ( req.user && req.user.name ) ) {
next();
} else {
metrics.timer( authenticationTimer ).start();
authProvider.authenticate( req, res, next );
metrics.timer( authenticationTimer ).record();
}
}
function getAuthMiddleware( uri ) {

@@ -109,14 +121,2 @@ var list = [

function authConditionally( req, res, next ) {
// if previous middleware has said to skip auth OR
// a user was attached from a session, skip authenticating
if( req.skipAuth || ( req.user && req.user.name ) ) {
next();
} else {
metrics.timer( authenticationTimer ).start();
authProvider.authenticate( req, res, next );
metrics.timer( authenticationTimer ).record();
}
}
function whenNoUsers( req, res, next ) {

@@ -123,0 +123,0 @@ userCountCheck()

@@ -67,3 +67,3 @@ var path = require( 'path' );

// API metadata
wrapper.http.middleware( '/api', function apiMetadata( req, res, next ) {
wrapper.http.middleware( '/api', function( req, res, next ) {
if( req.method === 'OPTIONS' || req.method === 'options' ) {

@@ -70,0 +70,0 @@ res.status( 200 ).send( wrapper.meta );

@@ -85,5 +85,2 @@ var _ = require( 'lodash' );

.use( '/', function( hreq, hres, next ) {
if( !authStrategy ) {
hreq.user = 'anonymous';
}
debug( 'Setting socket.io connection user to %s', hreq.user );

@@ -106,3 +103,3 @@ allowed = hreq.user;

io = socketio( http.server, { destroyUpgrade: false } );
middleware = authStrategy ? http.getAuthMiddleware() : http.getMiddleware();
middleware = http.getAuthMiddleware();
io.engine.allowRequest = authSocketIO;

@@ -109,0 +106,0 @@ io.on( 'connection', acceptSocket );

@@ -17,10 +17,10 @@ var authStrategy,

debug( 'Processing websocket connection attempt' );
var protocol = request.requestedProtocols ? request.requestedProtocols[ 0 ] : undefined;
var protocol = request.requestedProtocols[ 0 ];
var socket = request.accept( protocol, request.origin );
// grab user from request
var user = request.user || request.httpRequest.user;
socket.user = {
id: user ? user.name : 'anonymous',
name: user ? user.name : 'anonymous'
id: request.user.name,
name: request.user.name
};

@@ -115,16 +115,22 @@

response.assignSocket( request.socket );
middleware
.handle( request.httpRequest, response, function( err ) {
if( !authStrategy ) {
acceptSocketRequest( request );
}
else if( err || !request.httpRequest.user ) {
debug( 'Websocket connection rejected: authentication required' );
request.reject( 401, 'Authentication Required', { 'WWW-Authenticate': 'Basic' } );
} else {
debug( 'Websocket connection accepted as user %s', JSON.stringify( request.httpRequest.user ) );
request.user = request.httpRequest.user;
acceptSocketRequest( request );
}
} );
if( authStrategy ) {
middleware
.handle( request.httpRequest, response, function( err ) {
if( err || !request.httpRequest.user ) {
debug( 'Websocket connection rejected: authentication required' );
request.reject( 401, 'Authentication Required', { 'WWW-Authenticate': 'Basic' } );
} else {
debug( 'Websocket connection accepted as user %s', JSON.stringify( request.httpRequest.user ) );
request.user = request.httpRequest.user;
acceptSocketRequest( request );
}
} );
} else {
request.user = {
id: 'anonymous',
name: 'anonymous',
roles: []
};
acceptSocketRequest( request );
}
}

@@ -131,0 +137,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc