class Threshold::Suppression

Attributes

comment[RW]
gid[RW]
ip[RW]
sid[RW]
track_by[RW]

Public Class Methods

new(line="") click to toggle source
# File lib/threshold/suppression.rb, line 50
def initialize(line="")
  transform(line) unless line.empty?
end

Public Instance Methods

state() click to toggle source

State does not track comments

# File lib/threshold/suppression.rb, line 75
def state
  [@gid, @sid, @track_by, @ip]
end
to_s(skip = false) click to toggle source
# File lib/threshold/suppression.rb, line 54
def to_s(skip = false)
  if self.valid?
    if track_by == nil then
      if comment?(skip)
        "suppress gen_id #{@gid}, sig_id #{@sid}#{@comment}"
      else
        "suppress gen_id #{@gid}, sig_id #{@sid}"
      end
    else
      if comment?(skip)
        "suppress gen_id #{@gid}, sig_id #{@sid}, track by_#{@track_by}, ip #{@ip} #{@comment}"
      else
        "suppress gen_id #{@gid}, sig_id #{@sid}, track by_#{@track_by}, ip #{@ip}"
      end
    end
  else
    raise InvalidSuppressionObject, 'Suppression did not validate'
  end
end

Private Instance Methods

transform(result) click to toggle source
# File lib/threshold/suppression.rb, line 81
def transform(result)
  begin
    self.gid = result["GID"].compact.first.to_i
    self.sid = result["SID"].compact.first.to_i
    if result.key?("TRACK")
      self.track_by = result["TRACK"].compact.first.split('_')[1]
    end
    if result.key?("IP")
      self.ip = result["IP"].compact.first
    end
    if result.key?("COMMENT")
      self.comment = result["COMMENT"].compact.first.strip
    end
    raise InvalidSuppressionObject unless self.valid?
  rescue
    raise InvalidSuppressionObject, 'Failed transformation from parser'
  end
end