annotate mod_roster_command/mod_roster_command.lua @ 2491:5fbca7de2088

mod_smacks: Send out more ack requests where needed Under some circumstances it was possible that more than "max_unacked_stanzas" where left in the outgoing stanza queue without forcing an ack. This could happen, when more stanzas entered the queue while the last ack request was still unanswered. Now the test "#queue > max_unacked_stanzas" is done upon receiving an ack as well as when sending out stanzas, which fixes this bug.
author tmolitor <thilo@eightysoft.de>
date Sun, 12 Feb 2017 19:27:50 +0100
parents 2748aa8f36e0
children f6fdefc5c6ac
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
1947
634b42541f5b mod_roster_command: Attempt to update for compatibility with 0.10
Kim Alvefur <zash@zash.se>
parents: 1946
diff changeset
12 if module.host ~= "*" then
1946
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...
1948
2748aa8f36e0 mod_roster_command: Update workaround to perhaps work in 0.10
Kim Alvefur <zash@zash.se>
parents: 1947
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: 1947
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: 1947
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: 1947
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
1947
634b42541f5b mod_roster_command: Attempt to update for compatibility with 0.10
Kim Alvefur <zash@zash.se>
parents: 1946
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";
1947
634b42541f5b mod_roster_command: Attempt to update for compatibility with 0.10
Kim Alvefur <zash@zash.se>
parents: 1946
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
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 -- Update user's roster to say subscription request is pending...
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 rostermanager.set_contact_pending_out(user_username, user_host, contact_jid);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 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
46 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
47 storagemanager.initialize_host(contact_host);
1508
f7cb287dd3c7 mod_roster_command: Also initialize usermanager
Kim Alvefur <zash@zash.se>
parents: 492
diff changeset
48 usermanager.initialize_host(contact_host);
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 -- 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
51 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
52 -- 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
53 rostermanager.subscribed(contact_username, contact_host, user_jid);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 -- Update user'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.process_inbound_subscription_approval(user_username, user_host, contact_jid);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 -- 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
60 -- when the other one is online.
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 function subscribe_both(jid1, jid2)
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 subscribe(jid1, jid2);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 subscribe(jid2, jid1);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 -- 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
67 function unsubscribe(user_jid, contact_jid)
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68 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
69 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
70 if not hosts[user_host] then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 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
72 return;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 end
1509
01e37ce7532e mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents: 1508
diff changeset
74 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
75 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
76 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
77 end
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 -- 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
79 rostermanager.unsubscribe(user_username, user_host, contact_jid);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 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
81 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
82 storagemanager.initialize_host(contact_host);
1508
f7cb287dd3c7 mod_roster_command: Also initialize usermanager
Kim Alvefur <zash@zash.se>
parents: 492
diff changeset
83 usermanager.initialize_host(contact_host);
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 -- 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
86 rostermanager.unsubscribed(contact_username, contact_host, user_jid);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 end
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
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 -- Cancel any subscription in either direction.
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 function unsubscribe_both(jid1, jid2)
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 unsubscribe(jid1, jid2);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 unsubscribe(jid2, jid1);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 -- 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
97 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
98 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
99 if not hosts[user_host] then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 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
101 return;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 end
1509
01e37ce7532e mod_roster_command: Make sure hosts are only initialized once
Kim Alvefur <zash@zash.se>
parents: 1508
diff changeset
103 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
104 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
105 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
106 end
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 -- Load user's roster and find the contact
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 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
110 local item = roster[contact_jid];
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 if item then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112 if contact_nick then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113 item.name = contact_nick;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 if contact_group then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 item.groups = {}; -- Remove from all current groups
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 item.groups[contact_group] = true;
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 rostermanager.save_roster(user_username, user_host, roster);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122
1565
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
123 function remove(user_jid, contact_jid)
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
124 unsubscribe_both(user_jid, contact_jid);
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
125 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
126 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
127 roster[contact_jid] = nil;
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
128 rostermanager.save_roster(user_username, user_host, roster);
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
129 end
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
130
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
131 function module.command(arg)
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
132 local command = arg[1];
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
133 if not command then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
134 warn("Valid subcommands: (un)subscribe(_both) | rename");
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
135 return 0;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
136 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
137 table.remove(arg, 1);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
138 if command == "subscribe" then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
139 subscribe(arg[1], arg[2]);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
140 return 0;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
141 elseif command == "subscribe_both" then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 subscribe_both(arg[1], arg[2]);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143 return 0;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
144 elseif command == "unsubscribe" then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145 unsubscribe(arg[1], arg[2]);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146 return 0;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
147 elseif command == "unsubscribe_both" then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
148 unsubscribe_both(arg[1], arg[2]);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
149 return 0;
1565
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
150 elseif command == "remove" then
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
151 remove(arg[1], arg[2]);
f9cb09d451c7 mod_roster_command: Add 'remove' command
Kim Alvefur <zash@zash.se>
parents: 1509
diff changeset
152 return 0;
453
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
153 elseif command == "rename" then
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
154 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
155 return 0;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
156 else
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
157 warn("Unknown command: %s", command);
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
158 return 1;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
159 end
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
160 return 0;
1969310ea06a mod_roster_command: Manage rosters through prosodyctl
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
161 end