Class: WEBrickNIO::ListBlock

Inherits:
BaseBlock show all
Defined in:
lib/webricknio/block.rb

Overview

Blocks IPs that are exact match

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseBlock

inherited

Constructor Details

#initialize(options = {}) ⇒ ListBlock

Returns a new instance of ListBlock.



187
188
189
190
# File 'lib/webricknio/block.rb', line 187

def initialize(options = {})
  @block_list = options["block_list"] || java.util.concurrent.ConcurrentSkipListSet.new
  super
end

Class Method Details

.from_array(arr) ⇒ Object



192
193
194
195
196
197
198
# File 'lib/webricknio/block.rb', line 192

def self.from_array(arr)
  blocker = self.new
  arr.each do |item|
    blocker.add_ip item.to_s
  end unless arr.nil?
  blocker
end

Instance Method Details

#add_ip(ip) ⇒ Object



213
214
215
216
217
218
219
220
221
# File 'lib/webricknio/block.rb', line 213

def add_ip(ip)
  return false if ip.nil? || ip.strip.length == 0
  if valid? ip
    @block_list.add ip
    true
  else
    false
  end
end

#block_ip?(ip) ⇒ Boolean

Returns:

  • (Boolean)


200
201
202
203
204
205
206
207
# File 'lib/webricknio/block.rb', line 200

def block_ip?(ip)
  if @block_list.include? ip
    @logger.info "ip matches: ListBlock - #{ip}"
    true
  else
    false
  end
end

#to_sObject



231
232
233
# File 'lib/webricknio/block.rb', line 231

def to_s
  "ListBlock<#{object_id}>:#{@block_list.to_a}"
end

#to_yaml(opts = {}) ⇒ Object



223
224
225
226
227
228
229
# File 'lib/webricknio/block.rb', line 223

def to_yaml( opts = {} )
  YAML.quick_emit( nil, opts ) { |out|
    out.map("!IPBlockerListBlock,1234/ListBlock" ) { |map|
      map.add("block_list", @block_list.to_a)
    }
  }
end

#valid?(ip) ⇒ Boolean

Returns:

  • (Boolean)


209
210
211
# File 'lib/webricknio/block.rb', line 209

def valid?(ip)
  ip.split(".").size > 3
end