@logger.info'Received message from <%s> to <%s>'%[msg.from.to_s,msg.to.to_s]
@logger.debugmsg.to_s
ifmsg.to==@component.jidthenself.process_command(msg.from,msg.first_element_text('body'));return;end# treat message as internal command if received as transport jid
if@sessions.key?msg.from.bare.to_sthenself.request_tz(msg.from)ifnot@sessions[msg.from.bare.to_s].tz_set?;@sessions[msg.from.bare.to_s].process_outgoing_msg(msg.to.to_s.split('@')[0].to_i,msg.first_element_text('body'));return;end#if @sessions.key? msg.from.bare.to_s and @sessions[msg.from.bare.to_s].online? # queue message for processing session is active for jid from
if@sessions.key?msg.from.bare.to_sthen
# self.request_tz(msg.from) if not @sessions[msg.from.bare.to_s].tz_set?
ifprsnc.type==:subscribethenreply=prsnc.answer(false);reply.type=:subscribed;@component.send(reply);end# send "subscribed" reply to "subscribe" presence
ifprsnc.to==@component.jidand@sessions.key?prsnc.from.bare.to_sandprsnc.type==:unavailablethen@sessions[prsnc.from.bare.to_s].disconnect();self.presence(prsnc.from,nil,:subscribe);return;end# go offline when received offline presence from jabber user
ifprsnc.to==@component.jidand@sessions.key?prsnc.from.bare.to_sthenself.request_tz(prsnc.from);@sessions[prsnc.from.bare.to_s].connect()||@sessions[prsnc.from.bare.to_s].sync_status();return;end# connect if we have session