Annotate

mod_group_bookmarks/mod_group_bookmarks.lua @ 6305:1c62edeb9147

mod_pastebin: Update Readme diff --git a/mod_pastebin/README.md b/mod_pastebin/README.md --- a/mod_pastebin/README.md +++ b/mod_pastebin/README.md @@ -37,12 +37,14 @@ For example: Pastes will be available by default at `http://<your-prosody>:5280/pastebin/` by default. -In Prosody 0.9 and later this can be changed with [HTTP -settings](https://prosody.im/doc/http). +Ports and path can be changed with [HTTP +settings](https://prosody.im/doc/http), for example like: -In 0.8 and older this can be changed with `pastebin_ports` (see below), -or you can forward another external URL from your web server to Prosody, -use `pastebin_url` to set that URL. +``` {.lua} + http_paths = { + pastebin = "/$host-paste"; + } +``` # Discovery @@ -82,27 +84,16 @@ The line and character tresholds are adv pastebin_line_threshold The maximum number of lines a message may have before it is sent to the pastebin. (default 4 lines) pastebin_trigger A string of characters (e.g. "!paste ") which if detected at the start of a message, always sends the message to the pastebin, regardless of length. (default: not set) pastebin_expire_after Number of hours after which to expire (remove) a paste, defaults to 24. Set to 0 to store pastes permanently on disk. - pastebin_ports List of ports to run the HTTP server on, same format as mod_httpserver's http_ports[^1] - pastebin_url Base URL to display for pastebin links, must end with / and redirect to Prosody's built-in HTTP server[^2] # Compatibility - ------ ------- - trunk Works + ------ --------------------- + trunk Works as of 25-06-13 + 13 Works 0.12 Works - 0.11 Works - 0.10 Works - 0.9 Works - 0.8 Works - ------ ------- + ------ --------------------- # Todo - Maximum paste length - Web interface to submit pastes? - -[^1]: As of Prosody 0.9, `pastebin_ports` is replaced by `http_ports`, - see [Prosody HTTP server documentation](https://prosody.im/doc/http) - -[^2]: See also - [http_external_url](https://prosody.im/doc/http#external_url)
author Menel <menel@snikket.de>
date Fri, 13 Jun 2025 11:39:58 +0200
parent 3266:ebd78514bbec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 -- Prosody IM
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
3262
0ccdd3f31435 mod_group_bookmarks: Add my copyright.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3261
diff changeset
4 -- Copyright (C) 2018 Emmanuel Gil Peyrot
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 679
diff changeset
5 --
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 -- This project is MIT/X11 licensed. Please see the
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 -- COPYING file in the source package for more information.
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 --
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 local st = require "util.stanza"
3259
6824a1f3d8c0 mod_group_bookmarks: Remove duplicated requires.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
11 local dm_load = require "util.datamanager".load
3266
ebd78514bbec mod_group_bookmarks: Remove unused requires.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3262
diff changeset
12 local jid_prep = require "util.jid".prep;
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 local rooms;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local members;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 local bookmarks_file;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 module:add_feature("jabber:iq:private");
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
3266
ebd78514bbec mod_group_bookmarks: Remove unused requires.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3262
diff changeset
21 local function inject_bookmarks(username, host, data)
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 local jid = username.."@"..host;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 data:reset();
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if members[jid] then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 for _, room in ipairs(members[jid]) do
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 data:tag("conference", {
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 name = room;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 jid = room;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 autojoin = "1";
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 });
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 local nick = rooms[room][jid];
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 if nick then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 data:tag("nick"):text(nick):up();
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 data:up();
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 return data;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40
3260
9bb317400c4c mod_group_bookmarks: Use iq-get event instead of checking for stanza.attr.type == "get".
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3259
diff changeset
41 module:hook("iq-get/self/jabber:iq:private:query", function(event)
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 local origin, stanza = event.origin, event.stanza;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 local query = stanza.tags[1];
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 if #query.tags == 1 then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 local tag = query.tags[1];
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 local key = tag.name..":"..tag.attr.xmlns;
3261
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
47 if key ~= "storage:storage:bookmarks" then
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
48 return;
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
49 end
3259
6824a1f3d8c0 mod_group_bookmarks: Remove duplicated requires.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
50 local data, err = dm_load(origin.username, origin.host, "private");
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 if err then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 origin.send(st.error_reply(stanza, "wait", "internal-server-error"));
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 return true;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 end
3260
9bb317400c4c mod_group_bookmarks: Use iq-get event instead of checking for stanza.attr.type == "get".
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3259
diff changeset
55 local data = data and data[key];
3261
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
56 if not data then
3260
9bb317400c4c mod_group_bookmarks: Use iq-get event instead of checking for stanza.attr.type == "get".
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3259
diff changeset
57 data = st.stanza("storage", { xmlns = "storage:bookmarks" });
9bb317400c4c mod_group_bookmarks: Use iq-get event instead of checking for stanza.attr.type == "get".
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3259
diff changeset
58 end
3261
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
59 data = st.deserialize(data);
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
60 data = inject_bookmarks(origin.username, origin.host, data);
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
61 origin.send(st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"})
c2b1f64aaf97 mod_group_bookmarks: Return early when the key is not bookmarks.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3260
diff changeset
62 :add_child(data));
3260
9bb317400c4c mod_group_bookmarks: Use iq-get event instead of checking for stanza.attr.type == "get".
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3259
diff changeset
63 return true;
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 end, 1);
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
67 function module.load()
679
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
68 bookmarks_file = module:get_option_string("group_bookmarks_file");
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
69
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70 rooms = { default = {} };
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 members = { };
679
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
72
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
73 if not bookmarks_file then
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
74 module:log("error", "Please specify group_bookmarks_file in your configuration");
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
75 return;
dcddd9195098 mod_group_bookmarks: Log error when group_bookmarks_file not specified
Matthew Wild <mwild1@gmail.com>
parents: 290
diff changeset
76 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 679
diff changeset
77
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 local curr_room;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 for line in io.lines(bookmarks_file) do
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 if line:match("^%s*%[.-%]%s*$") then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 curr_room = line:match("^%s*%[(.-)%]%s*$");
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 if curr_room:match("^%+") then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 curr_room = curr_room:gsub("^%+", "");
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 if not members[false] then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 members[false] = {};
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 members[false][#members[false]+1] = curr_room; -- Is a public group
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 module:log("debug", "New group: %s", tostring(curr_room));
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 rooms[curr_room] = rooms[curr_room] or {};
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 elseif curr_room then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 -- Add JID
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 local entryjid, name = line:match("([^=]*)=?(.*)");
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 module:log("debug", "entryjid = '%s', name = '%s'", entryjid, name);
3266
ebd78514bbec mod_group_bookmarks: Remove unused requires.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3262
diff changeset
95 local jid = jid_prep(entryjid:match("%S+"));
289
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 if jid then
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 module:log("debug", "New member of %s: %s", tostring(curr_room), tostring(jid));
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 rooms[curr_room][jid] = name or false;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 members[jid] = members[jid] or {};
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 members[jid][#members[jid]+1] = curr_room;
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 end
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 module:log("info", "Group bookmarks loaded successfully");
415034fd38c2 mod_group_bookmarks: Module to inject room bookmarks to user private XML stores
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105 end