null+****@clear*****
null+****@clear*****
2012年 8月 2日 (木) 18:36:47 JST
SHIMODA Hiroshi 2012-08-02 18:36:47 +0900 (Thu, 02 Aug 2012) New Revision: 62858e60abcd004a98ca0102c026be7dc1696386 https://github.com/groonga/gcs/commit/62858e60abcd004a98ca0102c026be7dc1696386 Log: Accept multiple priviledged IP ranges Modified files: bin/gcs lib/api/2011-02-01/configuration.js Modified: bin/gcs (+6 -5) =================================================================== --- bin/gcs 2012-08-02 18:28:50 +0900 (69a5591) +++ bin/gcs 2012-08-02 18:36:47 +0900 (58967b6) @@ -4,7 +4,7 @@ var gcsServer = require(__dirname + '/../lib/server'); var program = require('commander'); var defaultDatabasePath = process.env.HOME + '/.gcs/database/gcs'; -var defaultPrivilegedRange = '127.0.0.0/8'; +var defaultPrivilegedRanges = '127.0.0.0/8'; program .version(require('../package').version) @@ -18,16 +18,17 @@ program String, defaultDatabasePath) .option('--privilege <ip range>', - 'IP range for privileged clients [' + defaultPrivilegedRange + ']', + 'list of IP ranges for privileged client '+ + '[' + defaultPrivilegedRanges + ']', String, - defaultPrivilegedRange) + defaultPrivilegedRanges) .parse(process.argv); var server; server = gcsServer.createServer({ - databasePath: program.databasePath, - privilegedRange: program.privilege + databasePath: program.databasePath, + privilegedRanges: program.privilege }); server.listen(program.port, function() { Modified: lib/api/2011-02-01/configuration.js (+5 -2) =================================================================== --- lib/api/2011-02-01/configuration.js 2012-08-02 18:28:50 +0900 (b43821b) +++ lib/api/2011-02-01/configuration.js 2012-08-02 18:36:47 +0900 (cc33477) @@ -330,14 +330,17 @@ function getClientIp(request) { exports.createHandler = function(context, config) { - var privilegedRange = config && config.privilegedRange; + var privilegedRanges = config && config.privilegedRanges; + privilegedRanges = privilegedRanges.split(/[,\| ]/); return function(request, response, next) { var message, body; // GCS specific behaviour: prevent to access this API from specific IP // range. if (privilegedRange) { - if (!ipv4.isInRange(getClientIp(request), privilegedRange)) { + if (!privilegedRanges.some(function(privilegedRange) { + return ipv4.isInRange(getClientIp(request), privilegedRange); + })) { message = 'Permission denied.'; body = createCommonErrorResponse('InvalidClientIpRange', message); response.contentType('application/xml'); -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...Download