author | Kim Alvefur <zash@zash.se> |
Sat, 27 Aug 2022 16:36:22 +0200 | |
changeset 5021 | 96e83b4a93f7 |
parent 4330 | f6fdefc5c6ac |
permissions | -rw-r--r-- |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 |
----------------------------------------------------------- |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
-- mod_roster_command: Manage rosters through prosodyctl |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
-- version 0.02 |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
----------------------------------------------------------- |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
-- Copyright (C) 2011 Matthew Wild |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 |
-- Copyright (C) 2011 Adam Nielsen |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
-- |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
-- This project is MIT/X11 licensed. Please see the |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
-- COPYING file in the source package for more information. |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 |
----------------------------------------------------------- |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
|
1951
634b42541f5b
mod_roster_command: Attempt to update for compatibility with 0.10
Kim Alvefur <zash@zash.se>
parents:
1950
diff
changeset
|
12 |
if module.host ~= "*" then |
1950
1f263aaba83e
mod_roster_command: Update link to new docs site
Kim Alvefur <zash@zash.se>
parents:
1565
diff
changeset
|
13 |
module:log("error", "Do not load this module in Prosody, for correct usage see: https://modules.prosody.im/mod_roster_command.html"); |
492
f806c8a7f985
mod_roster_command: Fix traceback and log error message when loaded into Prosody (thanks epaulin)
Matthew Wild <mwild1@gmail.com>
parents:
453
diff
changeset
|
14 |
return; |
f806c8a7f985
mod_roster_command: Fix traceback and log error message when loaded into Prosody (thanks epaulin)
Matthew Wild <mwild1@gmail.com>
parents:
453
diff
changeset
|
15 |
end |
f806c8a7f985
mod_roster_command: Fix traceback and log error message when loaded into Prosody (thanks epaulin)
Matthew Wild <mwild1@gmail.com>
parents:
453
diff
changeset
|
16 |
|
f806c8a7f985
mod_roster_command: Fix traceback and log error message when loaded into Prosody (thanks epaulin)
Matthew Wild <mwild1@gmail.com>
parents:
453
diff
changeset
|
17 |
|
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 |
-- Workaround for lack of util.startup... |
1952
2748aa8f36e0
mod_roster_command: Update workaround to perhaps work in 0.10
Kim Alvefur <zash@zash.se>
parents:
1951
diff
changeset
|
19 |
local prosody = _G.prosody; |
2748aa8f36e0
mod_roster_command: Update workaround to perhaps work in 0.10
Kim Alvefur <zash@zash.se>
parents:
1951
diff
changeset
|
20 |
local hosts = prosody.hosts; |
2748aa8f36e0
mod_roster_command: Update workaround to perhaps work in 0.10
Kim Alvefur <zash@zash.se>
parents:
1951
diff
changeset
|
21 |
prosody.bare_sessions = prosody.bare_sessions or {}; |
2748aa8f36e0
mod_roster_command: Update workaround to perhaps work in 0.10
Kim Alvefur <zash@zash.se>
parents:
1951
diff
changeset
|
22 |
_G.bare_sessions = _G.bare_sessions or prosody.bare_sessions; |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 |
|
1951
634b42541f5b
mod_roster_command: Attempt to update for compatibility with 0.10
Kim Alvefur <zash@zash.se>
parents:
1950
diff
changeset
|
24 |
local usermanager = require "core.usermanager"; |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 |
local rostermanager = require "core.rostermanager"; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 |
local storagemanager = require "core.storagemanager"; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 |
local jid = require "util.jid"; |
1951
634b42541f5b
mod_roster_command: Attempt to update for compatibility with 0.10
Kim Alvefur <zash@zash.se>
parents:
1950
diff
changeset
|
28 |
local warn = require"util.prosodyctl".show_warning; |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 |
|
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 |
-- Make a *one-way* subscription. User will see when contact is online, |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 |
-- contact will not see when user is online. |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 |
function subscribe(user_jid, contact_jid) |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 |
local user_username, user_host = jid.split(user_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 |
local contact_username, contact_host = jid.split(contact_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 |
if not hosts[user_host] then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 |
warn("The host '%s' is not configured for this server.", user_host); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 |
return; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 |
end |
1509
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
39 |
if hosts[user_host].users.name == "null" then |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
40 |
storagemanager.initialize_host(user_host); |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
41 |
usermanager.initialize_host(user_host); |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
42 |
end |
4330
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
43 |
-- Update user's roster to say subscription request is pending. Bare hosts (e.g. components) don't have rosters. |
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
44 |
if user_username ~= nil then |
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
45 |
rostermanager.set_contact_pending_out(user_username, user_host, contact_jid); |
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
46 |
end |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 |
if hosts[contact_host] then |
1509
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
48 |
if contact_host ~= user_host and hosts[contact_host].users.name == "null" then |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 |
storagemanager.initialize_host(contact_host); |
1508
f7cb287dd3c7
mod_roster_command: Also initialize usermanager
Kim Alvefur <zash@zash.se>
parents:
492
diff
changeset
|
50 |
usermanager.initialize_host(contact_host); |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 |
-- Update contact's roster to say subscription request is pending... |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 |
rostermanager.set_contact_pending_in(contact_username, contact_host, user_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 |
-- Update contact's roster to say subscription request approved... |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 |
rostermanager.subscribed(contact_username, contact_host, user_jid); |
4330
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
56 |
-- Update user's roster to say subscription request approved. Bare hosts (e.g. components) don't have rosters. |
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
57 |
if user_username ~= nil then |
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
58 |
rostermanager.process_inbound_subscription_approval(user_username, user_host, contact_jid); |
f6fdefc5c6ac
mod_roster_command: Fix subscription when the "user JID" is a bare domain.
Boris Grozev <boris@jitsi.org>
parents:
1952
diff
changeset
|
59 |
end |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 |
|
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 |
-- Make a mutual subscription between jid1 and jid2. Each JID will see |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 |
-- when the other one is online. |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 |
function subscribe_both(jid1, jid2) |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 |
subscribe(jid1, jid2); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 |
subscribe(jid2, jid1); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 |
|
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 |
-- Unsubscribes user from contact (not contact from user, if subscribed). |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 |
function unsubscribe(user_jid, contact_jid) |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 |
local user_username, user_host = jid.split(user_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 |
local contact_username, contact_host = jid.split(contact_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 |
if not hosts[user_host] then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 |
warn("The host '%s' is not configured for this server.", user_host); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 |
return; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 |
end |
1509
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
78 |
if hosts[user_host].users.name == "null" then |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
79 |
storagemanager.initialize_host(user_host); |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
80 |
usermanager.initialize_host(user_host); |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
81 |
end |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 |
-- Update user's roster to say subscription is cancelled... |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 |
rostermanager.unsubscribe(user_username, user_host, contact_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 |
if hosts[contact_host] then |
1509
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
85 |
if contact_host ~= user_host and hosts[contact_host].users.name == "null" then |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 |
storagemanager.initialize_host(contact_host); |
1508
f7cb287dd3c7
mod_roster_command: Also initialize usermanager
Kim Alvefur <zash@zash.se>
parents:
492
diff
changeset
|
87 |
usermanager.initialize_host(contact_host); |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 |
-- Update contact's roster to say subscription is cancelled... |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 |
rostermanager.unsubscribed(contact_username, contact_host, user_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 |
|
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 |
-- Cancel any subscription in either direction. |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 |
function unsubscribe_both(jid1, jid2) |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 |
unsubscribe(jid1, jid2); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 |
unsubscribe(jid2, jid1); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
98 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 |
|
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 |
-- Set the name shown and group used in the contact list |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 |
function rename(user_jid, contact_jid, contact_nick, contact_group) |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 |
local user_username, user_host = jid.split(user_jid); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 |
if not hosts[user_host] then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 |
warn("The host '%s' is not configured for this server.", user_host); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 |
return; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 |
end |
1509
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
107 |
if hosts[user_host].users.name == "null" then |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
108 |
storagemanager.initialize_host(user_host); |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
109 |
usermanager.initialize_host(user_host); |
01e37ce7532e
mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents:
1508
diff
changeset
|
110 |
end |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 |
|
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 |
-- Load user's roster and find the contact |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 |
local roster = rostermanager.load_roster(user_username, user_host); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 |
local item = roster[contact_jid]; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
115 |
if item then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
116 |
if contact_nick then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
117 |
item.name = contact_nick; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
118 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 |
if contact_group then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 |
item.groups = {}; -- Remove from all current groups |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 |
item.groups[contact_group] = true; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
122 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 |
rostermanager.save_roster(user_username, user_host, roster); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
124 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
125 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
126 |
|
1565
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
127 |
function remove(user_jid, contact_jid) |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
128 |
unsubscribe_both(user_jid, contact_jid); |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
129 |
local user_username, user_host = jid.split(user_jid); |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
130 |
local roster = rostermanager.load_roster(user_username, user_host); |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
131 |
roster[contact_jid] = nil; |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
132 |
rostermanager.save_roster(user_username, user_host, roster); |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
133 |
end |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
134 |
|
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
135 |
function module.command(arg) |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
136 |
local command = arg[1]; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
137 |
if not command then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
138 |
warn("Valid subcommands: (un)subscribe(_both) | rename"); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
139 |
return 0; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
140 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
141 |
table.remove(arg, 1); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 |
if command == "subscribe" then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 |
subscribe(arg[1], arg[2]); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
144 |
return 0; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
145 |
elseif command == "subscribe_both" then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
146 |
subscribe_both(arg[1], arg[2]); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
147 |
return 0; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
148 |
elseif command == "unsubscribe" then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
149 |
unsubscribe(arg[1], arg[2]); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
150 |
return 0; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
151 |
elseif command == "unsubscribe_both" then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
152 |
unsubscribe_both(arg[1], arg[2]); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
153 |
return 0; |
1565
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
154 |
elseif command == "remove" then |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
155 |
remove(arg[1], arg[2]); |
f9cb09d451c7
mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents:
1509
diff
changeset
|
156 |
return 0; |
453
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
157 |
elseif command == "rename" then |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
158 |
rename(arg[1], arg[2], arg[3], arg[4]); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 |
return 0; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
160 |
else |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 |
warn("Unknown command: %s", command); |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
162 |
return 1; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
163 |
end |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
164 |
return 0; |
1969310ea06a
mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
165 |
end |