Mercurial > prosody-modules
annotate mod_archive/mod_archive.lua @ 159:9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
author | shinysky<shinysky1986(AT)gmail.com> |
---|---|
date | Sat, 29 May 2010 22:02:36 +0800 |
parents | 86c28405c5da |
children | fd8d76daad97 |
rev | line source |
---|---|
157
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
1 -- Prosody IM |
159
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
2 -- Copyright (C) 2010 Dai Zhiwei |
157
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
3 -- |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
4 -- This project is MIT/X11 licensed. Please see the |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
5 -- COPYING file in the source package for more information. |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
6 -- |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
7 |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
8 local st = require "util.stanza"; |
159
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
9 local dm = require "util.datamanager" |
157
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
10 |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
11 module:add_feature("urn:xmpp:archive"); |
159
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
12 module:add_feature("urn:xmpp:archive:auto"); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
13 module:add_feature("urn:xmpp:archive:manage"); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
14 module:add_feature("urn:xmpp:archive:manual"); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
15 module:add_feature("urn:xmpp:archive:pref"); |
157
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
16 |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
17 local function preferences_handler(event) |
159
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
18 local origin, stanza = event.origin, event.stanza; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
19 module:log("debug", "-- Enter preferences_handler()"); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
20 module:log("debug", "-- pref:\n%s", tostring(stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
21 if stanza.attr.type == "get" then |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
22 -- dm.store(origin.username, origin.host, "archive_prefs", st.preserialize(reply.tags[1])); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
23 local data = st.deserialize(dm.load(origin.username, origin.host, "archive_prefs")); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
24 if data then |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
25 origin.send(st.reply(stanza):add_child(data)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
26 else |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
27 local reply = st.reply(stanza):tag('pref', {xmlns='urn:xmpp:archive'}); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
28 reply:tag('default', {otr='concede', save='false', unset='true'}):up(); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
29 reply:tag('method', {type='auto', use='concede'}):up(); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
30 reply:tag('method', {type='local', use='concede'}):up(); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
31 reply:tag('method', {type='manual', use='concede'}):up(); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
32 reply:tag('auto', {save='false'}):up(); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
33 origin.send(reply); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
34 -- origin.send(st.reply(stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
35 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
36 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
37 elseif stanza.attr.type == "set" then |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
38 return false; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
39 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
40 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
41 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
42 local function auto_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
43 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
44 if event.stanza.attr.type == "set" then |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
45 event.origin.send(st.error_reply(event.stanza, "cancel", "feature-not-implemented")); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
46 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
47 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
48 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
49 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
50 local function chat_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
51 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
52 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
53 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
54 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
55 local function itemremove_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
56 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
57 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
58 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
59 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
60 local function list_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
61 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
62 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
63 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
64 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
65 local function modified_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
66 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
67 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
68 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
69 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
70 local function remove_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
71 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
72 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
73 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
74 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
75 local function retrieve_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
76 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
77 return true; |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
78 end |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
79 |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
80 local function save_handler(event) |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
81 module:log("debug", "-- stanza:\n%s", tostring(event.stanza)); |
157
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
82 return true; |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
83 end |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
84 |
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
85 module:hook("iq/self/urn:xmpp:archive:pref", preferences_handler); |
159
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
86 module:hook("iq/self/urn:xmpp:archive:auto", auto_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
87 module:hook("iq/self/urn:xmpp:archive:chat", chat_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
88 module:hook("iq/self/urn:xmpp:archive:itemremove", itemremove_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
89 module:hook("iq/self/urn:xmpp:archive:list", list_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
90 module:hook("iq/self/urn:xmpp:archive:modified", modified_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
91 module:hook("iq/self/urn:xmpp:archive:remove", remove_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
92 module:hook("iq/self/urn:xmpp:archive:retrieve", retrieve_handler); |
9a37898f4f7c
mod_archive: Added features: Determining Server Support & Determining Preferences
shinysky<shinysky1986(AT)gmail.com>
parents:
157
diff
changeset
|
93 module:hook("iq/self/urn:xmpp:archive:save", save_handler); |
157
86c28405c5da
initial commitment of mod_archive
shinysky<shinysky1986(AT)gmail.com>
parents:
diff
changeset
|
94 |