diff --git a/debian/copyright b/debian/copyright index 6814a33..a24187a 100644 --- a/debian/copyright +++ b/debian/copyright @@ -19,6 +19,14 @@ Files: plugins/mod_carbons.lua Copyright: 2011 Kim Alvefur License: MIT/X11 +Files: plugins/mod_carbons_copies.lua +Copyright: 2012 Michael Holzt +License: MIT/X11 + +Files: plugins/mod_carbons_adhoc.lua +Copyright: 2012 Michael Holzt +License: MIT/X11 + Files: plugins/mod_sipwise_lastactivity.lua Copyright: 2008-2010 Matthew Wild 2008-2010 Waqas Hussain @@ -30,8 +38,11 @@ Copyright: 2013 Kim Alvefur License: MIT/X11 Files: plugins/mod_smacks.lua -Copyright: 2015 Matthew Wild - 2015 Kim Alvefur +Copyright: 2010-2015 Matthew Wild + 2010 Waqas Hussain + 2012-2015 Kim Alvefur + 2012 Thijs Alkemade + 2014 Florian Zeitz Licence: MIT/X11 Files: * diff --git a/plugins/mod_carbons_adhoc.lua b/plugins/mod_carbons_adhoc.lua new file mode 100644 index 0000000..5fa64f8 --- /dev/null +++ b/plugins/mod_carbons_adhoc.lua @@ -0,0 +1,42 @@ +-- Implement a Adhoc command which will show a user +-- the status of carbons generation in regard to his clients +-- +-- Copyright (C) 2012 Michael Holzt +-- +-- This file is MIT/X11 licensed. + +local st = require "util.stanza"; +local jid_bare = require "util.jid".bare; +local adhoc_new = module:require "adhoc".new; +local xmlns_carbons_v2 = "urn:xmpp:carbons:2"; +local xmlns_carbons_v1 = "urn:xmpp:carbons:1"; +local xmlns_carbons_v0 = "urn:xmpp:carbons:0"; + +local bare_sessions = bare_sessions; + +local function adhoc_status(self, data, state) + local result; + + local bare_jid = jid_bare(data.from); + local user_sessions = bare_sessions[bare_jid]; + + local result = ""; + + user_sessions = user_sessions and user_sessions.sessions; + for _, session in pairs(user_sessions) do + if session.full_jid then + result = result .. session.full_jid .. ": " .. + ( (session.want_carbons == xmlns_carbons_v2 and "v2" ) or + (session.want_carbons == xmlns_carbons_v1 and "v1" ) or + (session.want_carbons == xmlns_carbons_v0 and "v0" ) or + "none" ) .. "\n"; + end + end + + return { info = result, status = "completed" }; +end + +local status_desc = adhoc_new("Carbons: Get Status", + "mod_carbons_adhoc#status", adhoc_status); + +module:add_item("adhoc", status_desc); diff --git a/plugins/mod_carbons_copies.lua b/plugins/mod_carbons_copies.lua new file mode 100644 index 0000000..a798263 --- /dev/null +++ b/plugins/mod_carbons_copies.lua @@ -0,0 +1,63 @@ +-- Send carbons v0 style copies of incoming messages to clients which +-- are not (yet) capable of Message Carbons (XEP-0280). +-- +-- This extension integrates with the mod_carbons plugin in such a way +-- that a client capable of Message Carbons will not get a v0 copy. +-- +-- This extension can be enabled for all users by default by setting +-- carbons_copies_default = true. +-- +-- Alternatively or additionally setting carbons_copies_adhoc = true +-- will allow the user to enable or disable copies through Adhoc +-- commands. +-- +-- Copyright (C) 2012 Michael Holzt +-- +-- This file is MIT/X11 licensed. + +local jid_split = require "util.jid".split; +local dm_load = require "util.datamanager".load; +local dm_store = require "util.datamanager".store; +local adhoc_new = module:require "adhoc".new; +local xmlns_carbons_v0 = "urn:xmpp:carbons:0"; +local storename = "mod_carbons_copies"; + +local function toggle_copies(data, on) + local username, hostname, resource = jid_split(data.from); + dm_store(username, hostname, storename, { enabled = on }); +end + +local function adhoc_enable_copies(self, data, state) + toggle_copies(data, true); + return { info = "Copies are enabled for you now.\nPlease restart/reconnect clients.", status = "completed" }; +end + +local function adhoc_disable_copies(self, data, state) + toggle_copies(data, false); + return { info = "Copies are disabled for you now.\nPlease restart/reconnect clients.", status = "completed" }; +end + +module:hook("resource-bind", function(event) + local session = event.session; + local username, hostname, resource = jid_split(session.full_jid); + + local store = dm_load(username, hostname, storename) or + { enabled = + module:get_option_boolean("carbons_copies_default") }; + + if store.enabled then + session.want_carbons = xmlns_carbons_v0; + module:log("debug", "%s enabling copies", session.full_jid); + end +end); + +-- Adhoc-Support +if module:get_option_boolean("carbons_copies_adhoc") then + local enable_desc = adhoc_new("Carbons: Enable Copies", + "mod_carbons_copies#enable", adhoc_enable_copies); + local disable_desc = adhoc_new("Carbons: Disable Copies", + "mod_carbons_copies#disable", adhoc_disable_copies); + + module:add_item("adhoc", enable_desc); + module:add_item("adhoc", disable_desc); +end diff --git a/plugins/mod_smacks.lua b/plugins/mod_smacks.lua index 3c5daa7..71f164a 100644 --- a/plugins/mod_smacks.lua +++ b/plugins/mod_smacks.lua @@ -1,3 +1,15 @@ +-- XEP-0198: Stream Management for Prosody IM +-- +-- Copyright (C) 2010-2015 Matthew Wild +-- Copyright (C) 2010 Waqas Hussain +-- Copyright (C) 2012-2015 Kim Alvefur +-- Copyright (C) 2012 Thijs Alkemade +-- Copyright (C) 2014 Florian Zeitz +-- +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. +-- + local st = require "util.stanza"; local uuid_generate = require "util.uuid".generate;