Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 1740:b37ccf9bec89
MUC: Send appropriate error to banned users on join.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Mon, 07 Sep 2009 20:27:52 +0500 |
parent | 1739:393abf245322 |
child | 1742:1483a62d69bb |
comparison
equal
deleted
inserted
replaced
1739:393abf245322 | 1740:b37ccf9bec89 |
---|---|
255 if not new_nick then | 255 if not new_nick then |
256 log("debug", "%s couldn't join due to nick conflict: %s", from, to); | 256 log("debug", "%s couldn't join due to nick conflict: %s", from, to); |
257 origin.send(st.error_reply(stanza, "cancel", "conflict"):tag("x", {xmlns = "http://jabber.org/protocol/muc"})); | 257 origin.send(st.error_reply(stanza, "cancel", "conflict"):tag("x", {xmlns = "http://jabber.org/protocol/muc"})); |
258 else | 258 else |
259 log("debug", "%s joining as %s", from, to); | 259 log("debug", "%s joining as %s", from, to); |
260 local data; | |
261 -- if not rooms:get(room) and not rooms_info:get(room) then -- new room | |
262 -- rooms_info:set(room, 'name', (jid_split(room))); | |
263 -- data = {affiliation='owner', role='moderator', jid=from, sessions={[from]=get_filtered_presence(stanza)}}; | |
264 -- end | |
265 if not next(self._affiliations) then -- new room, no owners | 260 if not next(self._affiliations) then -- new room, no owners |
266 self._affiliations[jid_bare(from)] = "owner"; | 261 self._affiliations[jid_bare(from)] = "owner"; |
267 end | 262 end |
268 if not data then -- new occupant | 263 local affiliation = self:get_affiliation(from); |
269 local affiliation = self:get_affiliation(from); | 264 local role = self:get_default_role(affiliation) |
270 data = {affiliation=affiliation, role=self:get_default_role(affiliation), jid=from, sessions={[from]=get_filtered_presence(stanza)}}; | 265 if role then -- new occupant |
266 self._occupants[to] = {affiliation=affiliation, role=role, jid=from, sessions={[from]=get_filtered_presence(stanza)}}; | |
267 self._jid_nick[from] = to; | |
268 self:send_occupant_list(from); | |
269 pr.attr.from = to; | |
270 self:broadcast_presence(pr); | |
271 self:send_history(from); | |
272 else -- banned | |
273 origin.send(st.error_reply(stanza, "auth", "forbidden"):tag("x", {xmlns = "http://jabber.org/protocol/muc"})); | |
271 end | 274 end |
272 self._occupants[to] = data; | |
273 self._jid_nick[from] = to; | |
274 self:send_occupant_list(from); | |
275 pr.attr.from = to; | |
276 self:broadcast_presence(pr); | |
277 self:send_history(from); | |
278 end | 275 end |
279 end | 276 end |
280 elseif type ~= 'result' then -- bad type | 277 elseif type ~= 'result' then -- bad type |
281 origin.send(st.error_reply(stanza, "modify", "bad-request")); -- FIXME correct error? | 278 origin.send(st.error_reply(stanza, "modify", "bad-request")); -- FIXME correct error? |
282 end | 279 end |