From 37f74ba3e474fc5a2cb19f3d29f2d850ac21cf22 Mon Sep 17 00:00:00 2001 From: norly Date: Thu, 14 Jul 2016 00:37:21 +0200 Subject: [PATCH] Let Google Hangouts contacts appear offline --- plugins/mod_presence.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plugins/mod_presence.lua b/plugins/mod_presence.lua index 6d039d83..de1ea533 100644 --- a/plugins/mod_presence.lua +++ b/plugins/mod_presence.lua @@ -300,6 +300,19 @@ module:hook("presence/bare", function(data) if t ~= nil and t ~= "unavailable" and t ~= "error" then -- check for subscriptions and probes sent to bare JID return handle_inbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); end + + local from_resource = string.gsub(stanza.attr.from, "^[^/]*/", "", 1); + if from_resource ~= stanza.attr.from then + if string.match(from_resource, "^Messaging%x%x%x%x%x%x%x%x?%x?") + or string.match(from_resource, "^messaging%-smgmailw%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-AChromeExtensionw%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-TalkGadgetw%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-lcsw_hangouts%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-lcsw_hangouts_%x%x%x%x%x%x%x%x") then + log("debug", "Voiding presence from: "..stanza.attr.from); + stanza.attr.type = "unavailable"; + end + end local user = bare_sessions[to]; if user then @@ -325,6 +338,19 @@ module:hook("presence/full", function(data) return handle_inbound_presence_subscriptions_and_probes(origin, stanza, jid_bare(stanza.attr.from), jid_bare(stanza.attr.to)); end + local from_resource = string.gsub(stanza.attr.from, "^[^/]*/", "", 1); + if from_resource ~= stanza.attr.from then + if string.match(from_resource, "^Messaging%x%x%x%x%x%x%x%x?%x?") + or string.match(from_resource, "^messaging%-smgmailw%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-AChromeExtensionw%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-TalkGadgetw%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-lcsw_hangouts%x%x%x%x%x%x%x%x") + or string.match(from_resource, "^messaging%-lcsw_hangouts_%x%x%x%x%x%x%x%x") then + log("debug", "Voiding presence from: "..stanza.attr.from); + stanza.attr.type = "unavailable"; + end + end + local session = full_sessions[stanza.attr.to]; if session then -- TODO fire post processing event -- 2.30.2