[Groonga-commit] groonga/gcs [master] Accept multiple priviledged IP ranges

Back to archive index

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 



Groonga-commit メーリングリストの案内
Back to archive index