Express ip filter for specific routes?

Yeah, it's possible. You could do something like:

app.get('/test', function(req, res){
    var trustedIps = ['123.123.123.123'];
    var requestIP = req.connection.remoteAddress;
    if(trustedIps.indexOf(requestIP) >= 0) {
        // do stuff
    } else {
        // handle unallowed ip
    }
})

You may need to make sure that requestIP is correctly formatted though.


Warning: package express-ipfilter is now deprecated.

You can chain middlewares (and ipFilter is a middleware). There are 2 ways to do this:

var express = require('express'),
    ipfilter = require('express-ipfilter').IpFilter;

var ips = ['::ffff:127.0.0.1'];
var testers = ['1.2.3.4'];
var app = express();

app.get('/test', ipfilter(testers, {mode: 'allow'}), function(req, res) {
    res.send('test');
});


// the ipfilter only applies to the routes below  
app.get('/', ipfilter(ips, {mode: 'allow'}), function(req, res) {
    res.send('Hello World');
});

app.listen(3000);

Or qualify the use of the middleware:

var express = require('express'),
    ipfilter = require('express-ipfilter').IpFilter;

var ips = ['::ffff:127.0.0.1'];
var testers = ['1.2.3.4'];
var app = express();

app.use('/test', ipfilter(testers, {})); // the ipfilter only applies to the routes below    

app.get('/test', function(req, res) {
    res.send('test');
});

app.use('/', ipfilter(ips, {})); // the ipfilter only applies to the routes below

app.get('/', function(req, res) {
    res.send('Hello World');
});

app.listen(3000);