Changeset 124

Show
Ignore:
Timestamp:
11/03/06 10:13:20 (2 years ago)
Author:
ska..@waste.org
Message:

- change default protocol to drbunix
- re-add DRb acl configuration
- fix case typo in setup

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/server/lib/backgroundrb/scheduler.rb

    r123 r124  
    4545              } 
    4646              entry.job.is_a?(Proc) ? entry.job.call : entry.job.execute 
    47               p "here?" 
    4847            rescue  
    4948              BackgrounDRb::ServerLogger.log_exception('scheduler', e)  
  • trunk/server/lib/backgroundrb_server.rb

    r115 r124  
    88require 'tmpdir' 
    99require 'fileutils' 
     10require 'drb/acl' 
    1011 
    1112module BackgrounDRb 
     
    133134    options[:socket_dir] = options[:temp_dir] + '/backgroundrb.' + $$.to_s 
    134135 
     136    # Default ACL 
     137    options[:acl] ||= { 
     138      :deny => [ 
     139        'all' 
     140      ], 
     141      :allow => [ 
     142        'localhost 127.0.0.1' 
     143      ], 
     144      :order => [ 'deny' 'allow' ] 
     145    } 
     146 
    135147    # Output accumulated configuration  
    136148    if options[:list] 
    137149      puts "BackgrounDRb configuration (including cmd line arguments)" 
    138150      options.sort_by { |k| k.to_s }.each do |k| 
    139         puts ":" + k[0].to_s + ": " + k[1].to_s 
     151        if k[0] == :acl 
     152          # TODO: format acl 
     153        else 
     154          puts ":" + k[0].to_s + ": " + k[1].to_s 
     155        end 
    140156      end 
    141157      puts "" 
     
    149165    # Log server configuration 
    150166    case @cmd 
    151     when 'start', 'run' 'restart' 
     167    when 'start','run','restart' 
    152168      BackgrounDRb::ServerLogger.logger.info('server') do 
    153169        "Starting BackgrouDRb Server"  
     
    179195      FileUtils::mkdir_p(socket_dir) 
    180196 
     197      # DRb Acl 
     198      unless @backgroundrb_options[:protocol] == "drbunix" 
     199        self.setup_drb_acl 
     200      end 
     201 
    181202    when 'restart' 
    182203      puts 'restart not supported, please stop, then start' 
     
    187208    ENV['TMPDIR'] = socket_dir 
    188209 
     210  end 
     211 
     212  def setup_drb_acl 
     213 
     214    acl = [] 
     215    acl_config = @backgroundrb_options[:acl] 
     216 
     217    [:deny, :allow].each do |acl_type| 
     218      acl_config[acl_type].inject(acl) do |total, part| 
     219        part.gsub!(/,/,' ') 
     220        part.split(/\s+/).each do |sub_part| 
     221          if sub_part.is_a?(String) 
     222            total << "#{acl_type.to_s}" 
     223            total << "#{sub_part}" 
     224          end 
     225        end 
     226      end 
     227    end 
     228 
     229    # Will effectively install a DENY_ALLOW if order is not specified 
     230    case acl_config[:order] 
     231    when /\Aallow/ 
     232      order = 1 # ALLOW_DENY. 
     233    else 
     234      order = 0 # DENY_ALLOW 
     235    end 
     236 
     237    begin 
     238      drb_acl = ACL.new(acl, order) 
     239      DRb.install_acl(drb_acl) 
     240      BackgrounDRb::ServerLogger.logger.info('server') { 
     241        "Installed DRb ACL" 
     242      } 
     243    rescue => e 
     244      BackgrounDRb::ServerLogger.logger.info('server') { 
     245        "Failed to install DRb ACL" 
     246      } 
     247      BackgrounDRb::ServerLogger.log_exception('server', e) 
     248    end 
    189249  end 
    190250