class LogStash::Inputs::Xmpp
This input allows you to receive events over XMPP/Jabber.
This plugin can be used for accepting events from humans or applications XMPP, or you can use it for PubSub or general message passing for logstash to logstash.
Public Instance Methods
register()
click to toggle source
# File lib/logstash/inputs/xmpp.rb, line 36 def register require 'xmpp4r' # xmpp4r gem Jabber::debug = true if @debug @client = Jabber::Client.new(Jabber::JID.new(@user)) @client.connect(@host) # it is ok if host is nil @client.auth(@password.value) @client.send(Jabber::Presence.new.set_type(:available)) # load the MUC Client if we are joining rooms. require 'xmpp4r/muc/helper/simplemucclient' if @rooms && !@rooms.empty? end
run(queue)
click to toggle source
# File lib/logstash/inputs/xmpp.rb, line 50 def run(queue) if @rooms @rooms.each do |room| # handle muc messages in different rooms @muc = Jabber::MUC::SimpleMUCClient.new(@client) @muc.join(room) @muc.on_message do |time,from,body| @codec.decode(body) do |event| decorate(event) event["room"] = room event["from"] = from queue << event end end # @muc.on_message end # @rooms.each end # if @rooms @client.add_message_callback do |msg| # handle direct/private messages # accept normal msgs (skip presence updates, etc) if msg.body != nil @codec.decode(msg.body) do |event| decorate(event) # Maybe "from" should just be a hash: # { "node" => ..., "domain" => ..., "resource" => ... } event["from"] = "#{msg.from.node}@#{msg.from.domain}/#{msg.from.resource}" queue << event end end end # @client.add_message_callback sleep end