author | Waqas Hussain <waqas20@gmail.com> |
Tue, 18 Aug 2009 12:42:56 +0500 | |
changeset 1702 | 0e56819ee51b |
parent 1701 | ceab61010f87 |
child 1703 | b062ee7865fc |
permissions | -rw-r--r-- |
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
1510
diff
changeset
|
1 |
-- Prosody IM |
760
90ce865eebd8
Update copyright notices for 2009
Matthew Wild <mwild1@gmail.com>
parents:
759
diff
changeset
|
2 |
-- Copyright (C) 2008-2009 Matthew Wild |
90ce865eebd8
Update copyright notices for 2009
Matthew Wild <mwild1@gmail.com>
parents:
759
diff
changeset
|
3 |
-- Copyright (C) 2008-2009 Waqas Hussain |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
438
diff
changeset
|
4 |
-- |
758 | 5 |
-- This project is MIT/X11 licensed. Please see the |
6 |
-- COPYING file in the source package for more information. |
|
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
438
diff
changeset
|
7 |
-- |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
438
diff
changeset
|
8 |
|
1510
83b2e07e9039
mod_disco: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
9 |
local discomanager_handle = require "core.discomanager".handle; |
1701
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
10 |
local componentmanager_get_children = require "core.componentmanager".get_children; |
1510
83b2e07e9039
mod_disco: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
11 |
|
83b2e07e9039
mod_disco: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
12 |
module:add_feature("http://jabber.org/protocol/disco#info"); |
83b2e07e9039
mod_disco: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
13 |
module:add_feature("http://jabber.org/protocol/disco#items"); |
83b2e07e9039
mod_disco: Convert from Windows line endings
Matthew Wild <mwild1@gmail.com>
parents:
896
diff
changeset
|
14 |
|
1700
255935c7a915
mod_disco: Added identity server/im with name 'Prosody'
Waqas Hussain <waqas20@gmail.com>
parents:
1699
diff
changeset
|
15 |
module:add_identity("server", "im", "Prosody"); |
1699
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
16 |
local st = require "util.stanza" |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
17 |
module:hook("iq/host/http://jabber.org/protocol/disco#info:query", function(event) |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
18 |
local origin, stanza = event.origin, event.stanza; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
19 |
if stanza.attr.type ~= "get" then return; end |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
20 |
local node = stanza.tags[1].attr.node; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
21 |
if node and node ~= "" then return; end -- TODO fire event? |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
22 |
|
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
23 |
local reply = st.reply(stanza):query("http://jabber.org/protocol/disco#info"); |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
24 |
local done = {}; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
25 |
for _,identity in ipairs(module:get_host_items("identity")) do |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
26 |
local identity_s = identity.category.."\0"..identity.type; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
27 |
if not done[identity_s] then |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
28 |
reply:tag("identity", identity):up(); |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
29 |
done[identity_s] = true; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
30 |
end |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
31 |
end |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
32 |
for _,feature in ipairs(module:get_host_items("feature")) do |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
33 |
if not done[feature] then |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
34 |
reply:tag("feature", {var=feature}):up(); |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
35 |
done[feature] = true; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
36 |
end |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
37 |
end |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
38 |
origin.send(reply); |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
39 |
return true; |
53d16a28ee00
mod_disco: Handle disco#info queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1523
diff
changeset
|
40 |
end); |
1701
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
41 |
module:hook("iq/host/http://jabber.org/protocol/disco#items:query", function(event) |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
42 |
local origin, stanza = event.origin, event.stanza; |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
43 |
if stanza.attr.type ~= "get" then return; end |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
44 |
local node = stanza.tags[1].attr.node; |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
45 |
if node and node ~= "" then return; end -- TODO fire event? |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
46 |
|
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
47 |
local reply = st.reply(stanza):query("http://jabber.org/protocol/disco#items"); |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
48 |
for jid in pairs(componentmanager_get_children(module.host)) do |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
49 |
reply:tag("item", {jid = jid}):up(); |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
50 |
end |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
51 |
origin.send(reply); |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
52 |
return true; |
ceab61010f87
mod_disco: Handle disco#items queries using new APIs
Waqas Hussain <waqas20@gmail.com>
parents:
1700
diff
changeset
|
53 |
end); |