Socket
Socket
Sign inDemoInstall

web-app-runner

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

web-app-runner - npm Package Compare versions

Comparing version 0.90.18 to 0.90.19

test/fixtures/TestDataset.js

22

examples/ipfilter-server.js
#!/usr/bin/env node
var opts = {
var opts = {
port:3001,
whiteList:[
'10.1.10.10'
],
blackList:[
'127.9.9.9',
'10.1.10.144'
],
acceptUnknownVisitor:true
},
ip:{
whiteList:[
'10.1.10.10'
],
blackList:[
'127.9.9.9',
'10.1.10.144'
],
acceptUnknownVisitor:true
}
},
runner = require( '../lib/WebAppRunner' ).createInstance( opts );

@@ -15,0 +17,0 @@

@@ -17,7 +17,18 @@ /**

rejectThrottleTime = options.rejectThrottleTime || 5000,
rejectPage = options.rejectPage,
acceptUnknownVisitor = dash.isBoolean( options.acceptUnknownVisitor ) ? options.acceptUnknownVisitor : true,
whiteList = options.whiteList,
blackList = options.blackList;
rejectPage,
acceptUnknownVisitor = true,
whiteList,
blackList;
if (options.ip) {
whiteList = options.ip.whiteList;
blackList = options.ip.blackList;
if (dash.isBoolean( options.acceptUnknownVisitor )) {
acceptUnknownVisitor = options.ip.acceptUnknownVisitor;
}
rejectPage = options.ip.rejectPage;
}
this.authorize = function(request, response, next) {

@@ -77,6 +88,4 @@ var visitor = request.visitor;

this.isWhiteList = function(visitor) {
if (whiteList) {
var idx = whiteList.indexOf( visitor.ip );
log.info('ip: ', visitor.ip, ', idx: ', idx);
return (idx >= 0);
if (whiteList && visitor.ip) {
return findMatch( visitor.ip, whiteList );
}

@@ -94,4 +103,4 @@

this.isBlackList = function(visitor) {
if (blackList) {
return blackList.indexOf( visitor.ip ) >= 0;
if (blackList && visitor.ip) {
return findMatch( visitor.ip, blackList );
}

@@ -102,2 +111,14 @@

var findMatch = function(ip, list) {
var match = false;
list.forEach(function(rx) {
if (ip.match( rx )) {
match = true;
}
});
return match;
};
/**

@@ -129,2 +150,11 @@ * reject this request with a very slow non-error response...

this.__protected = function() {
return {
whiteList:whiteList,
blackList:blackList,
acceptUnknownVisitor:acceptUnknownVisitor,
rejectPage:rejectPage
};
};
// constructor validations

@@ -131,0 +161,0 @@ if (!log) throw new Error('socket server must be constructed with a log');

{
"name": "web-app-runner",
"version": "0.90.18",
"version": "0.90.19",
"description": "A simple HTTP application server that accepts or rejects connections based on authenticated attributes including ip, user agent, etc. The server can be used stand alone or as middleware for connect or express.",

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

@@ -29,3 +29,4 @@ # Web App Runner

var configFile = __dirname + '/config.json',
// IP & agent white/black lists defined in config
var configFile = __dirname + '/config.js',
logfile = process.env.HOME + '/logs/web-app.log',

@@ -38,4 +39,2 @@ log = require('simple-node-logger').createRollingFileLogger( logfile ),

home:'./',
whiteListFile:__dirname + '/whitelist.json',
blackListFile:__dirname + '/blacklist.json',
runAsDaemon:true,

@@ -65,7 +64,8 @@ clustered:true

whiteList:[
'127.0.0.1',
'173.13.151.[1-127]'
/^127\.0\.0\.1/,
/^173\.13\.151\.1/
],
blackList:[
'193.144.151.180'
/^193\.144\.151\.1/,
/^193\.144\.151\.2/
],

@@ -79,3 +79,3 @@ acceptUnkownVisitor:true

Or better yet, define the white and black lists in files and set the refresh rate. This way, the lists are refreshed when the lists change.
Or better yet, define the white and black lists in the config file and set the refresh rate. This way, the lists are refreshed when they change.

@@ -89,12 +89,12 @@ ### Agent Filter

whiteList:[
'chrome/[23][0-9]',
'msie 1[0-1]',
'safari/[7-8]',
'safari/534'
/chrome/[23][0-9]/,
/msie 1[0-1]/,
/safari/[7-8]/,
/safari/534/
],
blackList:[
'msie [2-9]',
'safari/[2-5]
'chrome/2[0-6]'
'chrome/1[0-9]'
/msie [2-9]/,
/safari/[2-5]/
/chrome/2[0-6]/
/chrome/1[0-9]/
],

@@ -118,2 +118,2 @@ acceptUnkownAgent:true,

- - -
<p><small><em>Copyright © 2014, rain city software | Version 0.90.18</em></small></p>
<p><small><em>Copyright © 2014, rain city software | Version 0.90.19</em></small></p>

@@ -10,2 +10,3 @@ /**

log = require('simple-node-logger' ).createSimpleLogger(),
Dataset = require('./fixtures/TestDataset' ),
IPFilter = require('../lib/IPFilter');

@@ -16,3 +17,9 @@

var createOptions = function() {
var createOptions,
dataset = new Dataset();
// suppress the log statements
log.setLevel('fatal');
createOptions = function() {
var opts = {};

@@ -22,2 +29,4 @@

opts.ip = dataset.createIPOptions();
return opts;

@@ -33,3 +42,4 @@ };

'isBlackList',
'reject'
'reject',
'__protected'
];

@@ -40,2 +50,6 @@

filter.should.be.instanceof( IPFilter );
filter.__protected().whiteList.length.should.equal( 2 );
filter.__protected().blackList.length.should.equal( 3 );
filter.__protected().acceptUnknownVisitor.should.equal( true );
});

@@ -53,5 +67,71 @@

describe('authorize', function() {
it('should authorize a known ip address');
it('should reject a known ip address');
var filter = new IPFilter( createOptions() );
it('should authorize a known ip address', function(done) {
var request = {},
response = {},
next;
request.visitor = dataset.getAuthorizedVisitor();
next = function() {
done();
};
filter.authorize( request, response, next );
});
it('should reject a known ip address', function(done) {
var request = {},
response = {},
next;
request.visitor = dataset.getRejectedVisitor();
next = function() {
throw new Error('should reject ip: ' + request.visitor.ip);
};
filter.reject = function(request, response) {
done();
};
filter.authorize( request, response, next );
});
});
describe('isWhiteList', function() {
var filter = new IPFilter( createOptions() );
it('should return true for a known good ip', function() {
var visitor = dataset.getAuthorizedVisitor();
filter.isWhiteList( visitor ).should.equal( true );
});
it('should return false for an unrecognized ip', function() {
var visitor = dataset.getAuthorizedVisitor();
visitor.ip = '255.255.255.255';
filter.isWhiteList( visitor ).should.equal( false );
});
});
describe('isBlackList', function() {
var filter = new IPFilter( createOptions() );
it('should return true for a known reject ip', function() {
var visitor = dataset.getRejectedVisitor();
filter.isBlackList( visitor ).should.equal( true );
});
it('should return false for an ip not in the black list', function() {
var visitor = dataset.getRejectedVisitor();
visitor.ip = '127.0.0.1';
filter.isBlackList( visitor ).should.equal( false );
});
});
});
SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc