# encoding: utf-8 require "logstash/filters/base" require "logstash/namespace" require "base62-rb" # This example filter will replace the contents of the default # message field with whatever you specify in the configuration. # # It is only intended to be used as an example. class LogStash::Filters::Kannel < LogStash::Filters::Base # Setting the config_name here is required. This is how you # configure this filter from your Logstash config. # # filter { # kannel { # message => "My message..." # } # } # config_name "kannel" # Replace the message with this value. config :message, :validate => :string, :default => "Hello World!" public def register # Add instance variables end # def register public def filter(event) if @message dec = self.get_campaign_id("RTDM aaaSd2.P.f1", "Receive SMS") # using the event.set API event.set("message", dec) # correct debugging log statement for reference # using the event.get API @logger.debug? && @logger.debug("Message is now: #{event.get("message")}") end # filter_matched should go in the last line of our successful code filter_matched(event) end # def filter public def is_printable(str) return str.match(/^[\x20-\x7E]*$/) end public def get_campaign_id(text, action) if action == "Receive SMS" if is_printable(text) if text != "ACTIM3GP" if match = text.match(/^(?[a-zA-Z0-9]+ )?(?[a-zA-Z0-9]+).*$/) keyword, base62 = match.captures return Base62.decode(base62) end end end end return 0 end end