dansguardian 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        data/lib/dansguardian.rb
    CHANGED
    
    | @@ -5,9 +5,10 @@ autoload :Set,    'set' | |
| 5 5 | 
             
            require 'configfiles'
         | 
| 6 6 |  | 
| 7 7 | 
             
            module DansGuardian
         | 
| 8 | 
            -
              VERSION = '0.0 | 
| 8 | 
            +
              VERSION = '0.1.0'
         | 
| 9 9 |  | 
| 10 10 | 
             
              autoload :Config,     'dansguardian/config'
         | 
| 11 11 | 
             
              autoload :Parser,     'dansguardian/parser'
         | 
| 12 | 
            +
              autoload :Updater,    'dansguardian/updater'
         | 
| 12 13 | 
             
              autoload :Inclusion,  'dansguardian/inclusion'
         | 
| 13 14 | 
             
            end
         | 
    
        data/lib/dansguardian/config.rb
    CHANGED
    
    
| @@ -10,12 +10,16 @@ module DansGuardian | |
| 10 10 | 
             
                    "FIXME: unknown parameter: value = #{s}"  
         | 
| 11 11 | 
             
                  end
         | 
| 12 12 |  | 
| 13 | 
            -
                   | 
| 13 | 
            +
                  GROUPMODE = {
         | 
| 14 14 | 
             
                    '0' => :banned,
         | 
| 15 15 | 
             
                    '1' => :filtered,
         | 
| 16 16 | 
             
                    '2' => :unfiltered
         | 
| 17 | 
            -
             | 
| 17 | 
            +
                  }
         | 
| 18 | 
            +
                  parameter :groupmode, GROUPMODE
         | 
| 19 | 
            +
                  default 	:groupmode, :filtered
         | 
| 20 | 
            +
                  
         | 
| 18 21 | 
             
                  parameter :groupname
         | 
| 22 | 
            +
                  default   :groupname, ''
         | 
| 19 23 |  | 
| 20 24 | 
             
                  [
         | 
| 21 25 | 
             
                    :bannedphraselist,
         | 
| @@ -140,7 +140,7 @@ module DansGuardian | |
| 140 140 | 
             
                  parameter   :maxuploadsize do |str|
         | 
| 141 141 | 
             
                    case str
         | 
| 142 142 | 
             
                    when '-1'
         | 
| 143 | 
            -
                       | 
| 143 | 
            +
                      -1 # should be easily interpreted as 'unlimited'          
         | 
| 144 144 | 
             
                    else
         | 
| 145 145 | 
             
                      str.to_i * 1024
         | 
| 146 146 | 
             
                    end
         | 
| @@ -213,13 +213,7 @@ module DansGuardian | |
| 213 213 | 
             
                    parameter par,                          :to_i
         | 
| 214 214 | 
             
                  end
         | 
| 215 215 |  | 
| 216 | 
            -
                  parameter   :maxips  | 
| 217 | 
            -
                    if str == '0'
         | 
| 218 | 
            -
                      INFINITY
         | 
| 219 | 
            -
                    else
         | 
| 220 | 
            -
                      str.to_i
         | 
| 221 | 
            -
                    end
         | 
| 222 | 
            -
                  end
         | 
| 216 | 
            +
                  parameter   :maxips,                      :to_i # 0 = unlimited
         | 
| 223 217 |  | 
| 224 218 | 
             
                  [:ipcfilename, :urlipcfilename, :ipipcfilename, :pidfilename].each do |p|
         | 
| 225 219 | 
             
                    parameter p
         | 
| @@ -0,0 +1,79 @@ | |
| 1 | 
            +
            autoload :Tempfile,   'tempfile'
         | 
| 2 | 
            +
            autoload :FileUtils,  'fileutils'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module DansGuardian
         | 
| 5 | 
            +
              module Updater
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def self.update!(file, data)
         | 
| 8 | 
            +
                  tmp = Tempfile.new 'ruby_dansguardian_updater'
         | 
| 9 | 
            +
                  update file, data do |line|
         | 
| 10 | 
            +
                    tmp.puts line
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                  tmp.close
         | 
| 13 | 
            +
                  FileUtils.cp tmp.path, file
         | 
| 14 | 
            +
                  tmp.unlink
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def self.update(io_or_file, data)
         | 
| 18 | 
            +
                  if io_or_file.is_a? IO
         | 
| 19 | 
            +
                    io = io_or_file
         | 
| 20 | 
            +
                  else
         | 
| 21 | 
            +
                    io = File.open io_or_file
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  already_written = [] 
         | 
| 25 | 
            +
                  io.each_line do |line|
         | 
| 26 | 
            +
                    line.strip!
         | 
| 27 | 
            +
                    case line
         | 
| 28 | 
            +
                    # even replace commented lines
         | 
| 29 | 
            +
                    when /^(#\s*)?([^=\s#]+)\s*=\s*([^=\s#']*)/  
         | 
| 30 | 
            +
                      key = $2
         | 
| 31 | 
            +
                      value = $3
         | 
| 32 | 
            +
                    when /^(#\s*)?[\s#]*([^=\s#]+)\s*=\s*'(.*)'/ 
         | 
| 33 | 
            +
                      key = $2
         | 
| 34 | 
            +
                      value = $3.gsub(/\\'/, "'")
         | 
| 35 | 
            +
                    else
         | 
| 36 | 
            +
                      yield line # not a key/val line: leave untouched
         | 
| 37 | 
            +
                      next
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                    # At this point, it is actually a key/value line
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    next if 
         | 
| 43 | 
            +
                        already_written.include?(key)         or 
         | 
| 44 | 
            +
                        already_written.include?(key.to_sym)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    new_value = ( data[key] || data[key.to_sym] )
         | 
| 47 | 
            +
                    if new_value
         | 
| 48 | 
            +
                      if new_value.respond_to? :each # multiple values
         | 
| 49 | 
            +
                        new_value.each do |val|
         | 
| 50 | 
            +
                          yield "#{key} = #{val}"
         | 
| 51 | 
            +
                        end
         | 
| 52 | 
            +
                      else
         | 
| 53 | 
            +
                        yield "#{key} = #{new_value}"
         | 
| 54 | 
            +
                      end
         | 
| 55 | 
            +
                      already_written << key
         | 
| 56 | 
            +
                      # next # "optimized out"
         | 
| 57 | 
            +
                    else # not a key/val pair to edit: leave untouched
         | 
| 58 | 
            +
                      yield line
         | 
| 59 | 
            +
                      # next # "optimized out"
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  to_be_written = 
         | 
| 64 | 
            +
                      data.keys.map{|k| k.to_sym} - already_written.map{|k| k.to_sym}
         | 
| 65 | 
            +
                  if to_be_written.length > 0
         | 
| 66 | 
            +
                    yield ""
         | 
| 67 | 
            +
                    yield "# Added by ::#{self} :"
         | 
| 68 | 
            +
                    to_be_written.each do |k|
         | 
| 69 | 
            +
                      yield "#{k} = #{data[k] || data[k.to_s]}" 
         | 
| 70 | 
            +
                    end
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  io.close unless io_or_file.is_a? IO
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
            end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
             | 
    
        metadata
    CHANGED
    
    | @@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version | |
| 4 4 | 
             
              prerelease: false
         | 
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 | 
            +
              - 1
         | 
| 7 8 | 
             
              - 0
         | 
| 8 | 
            -
               | 
| 9 | 
            -
              version: 0.0.2
         | 
| 9 | 
            +
              version: 0.1.0
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Guido De Rosa
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2011-02- | 
| 17 | 
            +
            date: 2011-02-07 00:00:00 +00:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -50,6 +50,7 @@ files: | |
| 50 50 | 
             
            - lib/dansguardian/config.rb
         | 
| 51 51 | 
             
            - lib/dansguardian/inclusion.rb
         | 
| 52 52 | 
             
            - lib/dansguardian/parser.rb
         | 
| 53 | 
            +
            - lib/dansguardian/updater.rb
         | 
| 53 54 | 
             
            has_rdoc: true
         | 
| 54 55 | 
             
            homepage: http://github.com/gderosa/dansguardian.rb
         | 
| 55 56 | 
             
            licenses: []
         |