Mercurial > prosody-modules
annotate mod_register_apps/mod_register_apps.lua @ 6299:5cf5ee23b361
mod_voipms: New Module to send and receive SMS/MMS via VoIP.ms APIs.
diff --git a/mod_voipms/README.md b/mod_voipms/README.md
new file mode 100644
--- /dev/null
+++ b/mod_voipms/README.md
@@ -0,0 +1,51 @@
+---
+labels:
+- 'Stage-Alpha'
+- 'Type-Web'
+summary: Send and receive SMS/MMS via VoIP.ms APIs.
+rockspec:
+ build:
+ modules:
+ mod_voipms: mod_voipms.lua
+...
+
+Introduction
+============
+
+This is a Prosody module to map JIDs to DIDs on VoIP.ms and support sending/receiving SMS/MMS.
+
+Configuration
+=============
+
+| option | type | default |
+|-----------------------|--------|---------|
+| voipms\_api\_username | string | nil |
+| voipms\_api\_password | string | nil |
+| voipms\_query\_key | string | nil |
+| voipms\_jid\_map | table | nil |
+```
+VirtualHost "sms.example.com"
+modules_enabled = {
+ "voipms";
+}
+voipms_api_username = john@example.com -- E-mail registered with VoIP.ms
+voipms_api_password = abcd1234 -- API password configured in VoIP.ms
+voipms_query_key = some_query_key -- query param 'key' part of your URL callback
+voipms_jid_map = {
+ ["your_jid@your_domain.com"] = "+1234567890"
+}
+```
+
+HTTP
+====
+
+The module is served on Prosody's default HTTP ports at the path /voipms. More details on configuring HTTP modules in Prosody can be found in the HTTP documentation.
+
+VoIP.ms Webhook URL
+===================
+
+This module receives the VoIP.ms Webhook URL (POST) at the /voipms endpoint. It uses the sendSMS/sendMMS GET methods against the VoIP.ms APIs. This is an example webhook to use in VoIP.ms:
+
+```
+https://sms.example.com/voipms?key=some_query_key
+```
diff --git a/mod_voipms/mod_voipms.lua b/mod_voipms/mod_voipms.lua
new file mode 100644
--- /dev/null
+++ b/mod_voipms/mod_voipms.lua
@@ -0,0 +1,166 @@
+local http = require "net.http"
+local json = require "util.json"
+local st = require "util.stanza"
+
+local api_username = module:get_option_string("voipms_api_username")
+local api_password = module:get_option_string("voipms_api_password")
+local query_key = module:get_option("voipms_query_key")
+local jid_map = module:get_option("voipms_jid_map") or {}
+local rest_endpoint = "https://voip.ms/api/v1/rest.php"
+
+if not api_username or not api_password or not query_key then
+ module:log("error", "Missing required config values (voipms_api_username, voipms_api_password, voipms_query_key)")
+ return
+end
+
+module:depends("http")
+
+local function normalize_number(num)
+ if not num then return nil end
+ if num:sub(1, 1) ~= "+" then
+ return "+1" .. num
+ end
+ return num
+end
+
+local function extract_query_key(event)
+ return (event.request.url.query or ""):match("key=([^&]+)")
+end
+
+module:provides("http", {
+ route = {
+ ["POST"] = function(event)
+ local req = event.request
+ local body = req.body or ""
+
+ if extract_query_key(event) ~= query_key then
+ module:log("warn", "Unauthorized webhook: missing or invalid key")
+ return { status_code = 403 }
+ end
+
+ local json_payload, err = json.decode(body)
+ if not json_payload then
+ module:log("warn", "Invalid JSON: %s", err or "unknown error")
+ return { status_code = 400 }
+ end
+
+ local payload = json_payload.data and json_payload.data.payload
+ if not payload then
+ module:log("warn", "Missing payload in JSON")
+ return { status_code = 400 }
+ end
+
+ local from = payload.from and payload.from.phone_number
+ local to_list = payload.to or {}
+ local to = #to_list > 0 and to_list[1].phone_number or nil
+
+ if not from or not to then
+ module:log("warn", "Missing phone numbers (from: %s, to: %s)", tostring(from), tostring(to))
+ return { status_code = 400 }
+ end
+
+ local normalized_to = normalize_number(to)
+ local target_jid = nil
+
+ for jid, did in pairs(jid_map) do
+ if normalize_number(did) == normalized_to then
+ target_jid = jid
+ break
+ end
+ end
+
+ if not target_jid then
+ module:log("warn", "No JID mapping for DID %s", normalized_to)
+ return { status_code = 404 }
+ end
+
+ local normalized_from = normalize_number(from)
+ local message_text = payload.text or ""
+
+ local message = st.message({
+ from = normalized_from .. "@" .. module.host,
+ to = target_jid,
+ type = "chat"
+ }):tag("body"):text(message_text):up()
+
+ if payload.media and #payload.media > 0 then
+ for _, media_item in ipairs(payload.media) do
+ if media_item.url then
+ message_text = message_text .. "\n" .. media_item.url
+ message:tag("x", { xmlns = "jabber:x:oob" })
+ :tag("url"):text(media_item.url):up():up()
+ end
+ end
+ end
+
+ module:send(message)
+ module:log("info", "Delivered SMS from %s to %s", normalized_from, target_jid)
+
+ return { status_code = 204 }
+ end
+ }
+})
+
+module:hook("message/bare", function(event)
+ local stanza = event.stanza
+ if stanza.attr.type ~= "chat" then return end
+
+ local from_jid = stanza.attr.from
+ local to_jid = stanza.attr.to
+ local body = stanza:get_child_text("body")
+ if not body or body == "" then return end
+
+ local from_number = jid_map[from_jid]
+ if not from_number then
+ module:log("warn", "No DID mapping for JID %s", from_jid)
+ return
+ end
+
+ local to_number = to_jid:match("^([^@]+)")
+ if not to_number then
+ module:log("warn", "Malformed JID in message.to: %s", to_jid)
+ return
+ end
+
+ to_number = normalize_number(to_number)
+
+ local media_urls = {}
+ for line in body:gmatch("[^\r\n]+") do
+ if line:match("^https?://") then
+ table.insert(media_urls, line)
+ end
+ end
+
+ local method = (#media_urls > 0) and "sendMMS" or "sendSMS"
+ local query = {
+ api_username = api_username,
+ api_password = api_password,
+ method = method,
+ did = from_number,
+ dst = to_number,
+ message = body
+ }
+
+ if method == "sendMMS" then
+ for i, url in ipairs(media_urls) do
+ query["media_url[" .. (i - 1) .. "]"] = url
+ end
+ end
+
+ local query_str = http.formencode(query)
+
+ http.request(rest_endpoint .. "?" .. query_str, {
+ method = "GET";
+ }, function(response_body, code)
+ if code == 200 then
+ local resp, err = json.decode(response_body)
+ if not resp or resp.status ~= "success" then
+ module:log("error", "Failed to send %s: %s", method, err or (resp and resp.status) or "unknown")
+ else
+ module:log("info", "Sent %s from %s to %s", method, from_number, to_number)
+ end
+ else
+ module:log("error", "HTTP error sending %s: code %s", method, tostring(code))
+ end
+ end)
+end)
| author | Chaz <menel@snikket.de> |
|---|---|
| date | Mon, 21 Jul 2025 23:57:37 +0200 |
| parents | 8c98b1dd1ad3 |
| children | 653ac8702509 |
| rev | line source |
|---|---|
|
4186
aba0470ed725
mod_register_apps: Ignore the long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents:
4178
diff
changeset
|
1 -- luacheck: ignore 631 |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 module:depends("http"); |
|
6198
8c98b1dd1ad3
mod_register_apps: Remove compatibility with 0.11
Link Mauve <linkmauve@linkmauve.fr>
parents:
6068
diff
changeset
|
3 local http_files = require "net.http.files"; |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local app_config = module:get_option("site_apps", { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 name = "Conversations"; |
|
5927
07f32bf41303
mod_register_apps: Update Conversations Android version
Kim Alvefur <zash@zash.se>
parents:
5717
diff
changeset
|
8 text = [[Conversations is a Jabber/XMPP client for Android 6.0+ smartphones that has been optimized to provide a unique mobile experience.]]; |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 image = "assets/logos/conversations.svg"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 link = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 platforms = { "Android" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 supports_preauth_uri = true; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 magic_link_format = "{app.link!}&referrer={invite.uri}"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 download = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 buttons = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 url = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 name = "yaxim"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 text = [[A lean Jabber/XMPP client for Android. It aims at usability, low overhead and security, and works on low-end Android devices starting with Android 4.0.]]; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 image = "assets/logos/yaxim.svg"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 link = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 platforms = { "Android" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 supports_preauth_uri = true; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 magic_link_format = "{app.link!}&referrer={invite.uri}"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 download = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 buttons = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 url = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 name = "Siskin IM"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 text = [[A lightweight and powerful XMPP client for iPhone and iPad. It provides an easy way to talk and share moments with your friends.]]; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 image = "assets/logos/siskin-im.png"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 link = "https://apps.apple.com/us/app/siskin-im/id1153516838"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 platforms = { "iOS" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 supports_preauth_uri = true; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 download = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 buttons = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 { |
|
6068
fe380764032d
mod_register_apps: Fix iOS download button image URLs
Robby Stokoe <robbystk@protonmail.com>
parents:
5927
diff
changeset
|
50 image = "https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/en-us?releaseDate=1245024000"; |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 url = "https://apps.apple.com/us/app/siskin-im/id1153516838"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 target = "_blank"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 name = "Beagle IM"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 text = [[Beagle IM by Tigase, Inc. is a lightweight and powerful XMPP client for macOS.]]; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 image = "assets/logos/beagle-im.png"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 link = "https://apps.apple.com/us/app/beagle-im/id1445349494"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 platforms = { "macOS" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 download = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 buttons = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 text = "Download from Mac App Store"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 url = "https://apps.apple.com/us/app/beagle-im/id1445349494"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 target = "_blank"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 }; |
|
4178
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
72 setup = { |
|
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
73 text = [[Launch Beagle IM, and select 'Yes' to add a new account. Click the '+' |
|
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
74 button under the empty account list and then enter your credentials.]]; |
|
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
75 }; |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 name = "Dino"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 text = [[A modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.]]; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 image = "assets/logos/dino.svg"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 link = "https://dino.im/"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 platforms = { "Linux" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 download = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 text = "Click the button to open the Dino website where you can download and install it on your PC."; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 buttons = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 { text = "Download Dino for Linux", url = "https://dino.im/#download", target="_blank" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 name = "Gajim"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 text = [[A fully-featured desktop chat client for Windows and Linux.]]; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 image = "assets/logos/gajim.svg"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 link = "https://gajim.org/"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 platforms = { "Windows", "Linux" }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 download = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 buttons = { |
|
4111
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
98 { |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 text = "Download Gajim"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 url = "https://gajim.org/download/"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 target = "_blank"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 }; |
|
5014
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
106 { |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
107 name = "Monal"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
108 text = [[A modern open-source chat client for iPhone and iPad. It is easy to use and has a clean user interface.]]; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
109 image = "assets/logos/monal.svg"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
110 link = "https://monal-im.org/"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
111 platforms = { "iOS" }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
112 supports_preauth_uri = true; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
113 download = { |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
114 buttons = { |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
115 { |
|
6068
fe380764032d
mod_register_apps: Fix iOS download button image URLs
Robby Stokoe <robbystk@protonmail.com>
parents:
5927
diff
changeset
|
116 image = "https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/en-us?releaseDate=1245024000"; |
|
5014
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
117 url = "https://apps.apple.com/app/id317711500"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
118 target = "_blank"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
119 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
120 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
121 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
122 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
123 { |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
124 name = "Monal"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
125 text = [[A modern open-source chat client for Mac. It is easy to use and has a clean user interface.]]; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
126 image = "assets/logos/monal.svg"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
127 link = "https://monal-im.org/"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
128 platforms = { "macOS" }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
129 supports_preauth_uri = true; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
130 download = { |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
131 buttons = { |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
132 { |
|
6068
fe380764032d
mod_register_apps: Fix iOS download button image URLs
Robby Stokoe <robbystk@protonmail.com>
parents:
5927
diff
changeset
|
133 image = "https://toolbox.marketingtools.apple.com/api/v2/badges/download-on-the-app-store/black/en-us?releaseDate=1245024000"; |
|
5014
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
134 url = "https://apps.apple.com/app/id1637078500"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
135 target = "_blank"; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
136 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
137 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
138 }; |
|
eb3f99d0e72d
mod_register_apps: add monal iOS and macOS versions
tmolitor <thilo@eightysoft.de>
parents:
4976
diff
changeset
|
139 }; |
|
5717
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
140 { |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
141 name = "Renga"; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
142 text = [[XMPP client for Haiku]]; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
143 image = "assets/logos/renga.svg"; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
144 link = "https://pulkomandy.tk/projects/renga"; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
145 platforms = { "Haiku" }; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
146 download = { |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
147 buttons = { |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
148 { text = "Download Renga for Haiku", url = "https://depot.haiku-os.org/#!/pkg/renga?bcguid=bc233-PQIA", target="_blank" }; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
149 }; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
150 }; |
|
e06af1403a60
mod_register_apps: Add Renga to the list of supported clients
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5178
diff
changeset
|
151 }; |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
152 }); |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
153 |
|
4113
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
154 local show_apps = module:get_option_set("site_apps_show"); |
|
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
155 local hide_apps = module:get_option_set("site_apps_hide"); |
|
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
156 |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
157 local base_url = module.http_url and module:http_url(); |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
158 local function relurl(s) |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 if s:match("^%w+://") then |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
160 return s; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 end |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
162 return base_url.."/"..s; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
163 end |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
164 |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
165 local site_apps = module:shared("apps"); |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
166 |
|
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
167 local function add_app(app_info, source) |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
168 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower(); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
169 if (not show_apps or show_apps:contains(app_id)) |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
170 and not (hide_apps and hide_apps:contains(app_id)) |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
171 and not site_apps[app_id] then |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
172 app_info.id = app_id; |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
173 app_info.image = relurl(app_info.image); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
174 site_apps[app_id] = app_info; |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
175 app_info._source = source; |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
176 table.insert(site_apps, app_info); |
|
4111
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
177 end |
|
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
178 end |
|
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
179 |
|
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
180 local function remove_app(app_info) |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
181 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower(); |
|
4187
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
182 for i = #site_apps, 1, -1 do |
|
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
183 if site_apps[i].id == app_id then |
|
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
184 table.remove(site_apps, i); |
|
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
185 end |
|
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
186 end |
|
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
187 site_apps[app_id] = nil; |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
188 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
189 |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
190 local function add_config_apps() |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
191 for _, app_info in ipairs(app_config) do |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
192 add_app(app_info, module.name); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
193 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
194 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
195 |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
196 local function module_app_added(event) |
|
4630
635907a5d2c8
mod_register_apps: Reduce yellow yelling in log message
Kim Alvefur <zash@zash.se>
parents:
4187
diff
changeset
|
197 module:log("info", "Adding %s", event.item.name) |
|
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
198 add_app(event.item, module.name); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
199 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
200 |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
201 local function module_app_removed(event) |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
202 remove_app(event.item); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
203 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
204 |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
205 -- Remove all apps added by this module |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
206 local function remove_all_apps() |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
207 for k, v in pairs(site_apps) do |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
208 if v._source == module.name then |
|
4672
0b084f63fed0
mod_register_apps: Fix removal on unload (thanks ibikk)
Kim Alvefur <zash@zash.se>
parents:
4630
diff
changeset
|
209 remove_app(v); |
|
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
210 end |
|
4113
c85af57e82e0
mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents:
4111
diff
changeset
|
211 end |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
212 end |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
213 |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
214 local mime_map = { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
215 png = "image/png"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
216 svg = "image/svg+xml"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
217 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
218 |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
219 module:provides("http", { |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
220 route = { |
|
6198
8c98b1dd1ad3
mod_register_apps: Remove compatibility with 0.11
Link Mauve <linkmauve@linkmauve.fr>
parents:
6068
diff
changeset
|
221 ["GET /assets/*"] = http_files.serve({ |
|
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
222 path = module:get_directory().."/assets"; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
223 mime_map = mime_map; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
224 }); |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
225 }; |
|
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
226 }); |
|
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
227 |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
228 function module.load() |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
229 add_config_apps(); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
230 module:handle_items("site-app-provider", module_app_added, module_app_removed, true); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
231 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
232 |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
233 function module.unload() |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
234 remove_all_apps(); |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
235 end |
|
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
236 |
