Software /
code /
prosody-modules
Diff
mod_pastebin/README.md @ 6211:750d64c47ec6 draft default tip
Merge
author | Trần H. Trung <xmpp:trần.h.trung@trung.fun> |
---|---|
date | Tue, 18 Mar 2025 00:31:36 +0700 |
parent | 6000:51b6a10b50d2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_pastebin/README.md Tue Mar 18 00:31:36 2025 +0700 @@ -0,0 +1,108 @@ +--- +labels: +- Stage-Stable +summary: Redirect long messages to built-in pastebin +--- + +# Introduction + +Pastebins are used very often in IM, especially in chat rooms. You have +a long log or command output which you need to send to someone over IM, +and don't want to fill their message window with it. Put it on a +pastebin site, and give them the URL instead, simple. + +Not for everyone... no matter how hard you try, people will be unaware, +or not care. They may also be too lazy to visit a pastebin. This is +where mod_pastebin comes in! + +# Details + +When someone posts to a room a "large" (the actual limit is +configurable) message, Prosody will intercept the message and convert it +to a URL pointing to a built-in pastebin server. The URLs are randomly +generated, so they can be considered for most purposes to be private, +and cannot be discovered by people who are not in the room. + +# Usage + +To set up mod_pastebin for MUC rooms it **must** be explicitly loaded, +as in the example below - it won't work when loaded globally, as that +will only load it onto normal virtual hosts. + +For example: + + Component "conference.example.com" "muc" + modules_enabled = { "pastebin" } + +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). + +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. + +# Discovery + +The line and character tresholds are advertised in +[service discovery][xep-0030] like this: + +``` {.xml} +<iq id="791d37e8-86d8-45df-adc2-9bcb17c45cb7" type="result" xml:lang="en" from="prosody@conference.prosody.im"> + <query xmlns="http://jabber.org/protocol/disco#info"> + <identity type="text" name="Prosŏdy IM Chatroom" category="conference"/> + <feature var="http://jabber.org/protocol/muc"/> + <feature var="https://modules.prosody.im/mod_pastebin"/> + <x xmlns="jabber:x:data" type="result"> + <field type="hidden" var="FORM_TYPE"> + <value>http://jabber.org/protocol/muc#roominfo</value> + </field> + <field label="Title" type="text-single" var="muc#roomconfig_roomname"> + <value>Prosŏdy IM Chatroom</value> + </field> + <!-- etc... --> + <field type="text-single" var="{https://modules.prosody.im/mod_pastebin}max_lines"> + <value>12</value> + </field> + <field type="text-single" var="{https://modules.prosody.im/mod_pastebin}max_characters"> + <value>1584</value> + </field> + </x> + </query> +</iq> +``` + +# Configuration + + Option Description + ------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + pastebin_threshold Maximum length (in characters) of a message that is allowed to skip the pastebin. (default 500 characters) + 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 + 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)