Mercurial > prosody-modules
annotate mod_register_apps/mod_register_apps.lua @ 4975:733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Using mod_http_files this way is deprecated. Having the base behavior in
a separate module makes it easier to have a specialized module with
coherent behavior that does not do things when not explicitly enabled.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 18 Jul 2022 13:58:27 +0200 |
parents | 0b084f63fed0 |
children | 75b6e5df65f9 |
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"); |
4975
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
3 local http_files |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
4 if not pcall(function() |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
5 -- Prosody >= 0.12 |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
6 http_files = require "net.http.files"; |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
7 end) then |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
8 -- Prosody <= 0.11 |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
9 http_files = module:depends "http_files"; |
733e5513f691
various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents:
4672
diff
changeset
|
10 end |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 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
|
13 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 name = "Conversations"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 text = [[Conversations is a Jabber/XMPP client for Android 4.0+ smartphones that has been optimized to provide a unique mobile experience.]]; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 image = "assets/logos/conversations.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 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
|
18 platforms = { "Android" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 supports_preauth_uri = true; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 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
|
21 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 buttons = { |
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 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
|
25 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
|
26 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 name = "yaxim"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 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
|
33 image = "assets/logos/yaxim.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 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
|
35 platforms = { "Android" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 supports_preauth_uri = true; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 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
|
38 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 buttons = { |
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 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
|
42 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
|
43 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 name = "Siskin IM"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 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
|
50 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
|
51 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
|
52 platforms = { "iOS" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 supports_preauth_uri = true; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 buttons = { |
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 image = "https://linkmaker.itunes.apple.com/en-us/badge-lrg.svg?releaseDate=2017-05-31&kind=iossoftware&bubble=ios_apps"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 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
|
59 target = "_blank"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 name = "Beagle IM"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 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
|
67 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
|
68 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
|
69 platforms = { "macOS" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 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
|
74 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
|
75 target = "_blank"; |
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 }; |
4178
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
79 setup = { |
bbd584cee042
mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents:
4171
diff
changeset
|
80 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
|
81 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
|
82 }; |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 name = "Dino"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 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
|
87 image = "assets/logos/dino.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 link = "https://dino.im/"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 platforms = { "Linux" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 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
|
92 buttons = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 { 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
|
94 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
95 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
96 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
98 name = "Gajim"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 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
|
100 image = "assets/logos/gajim.svg"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 link = "https://gajim.org/"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 platforms = { "Windows", "Linux" }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 download = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 buttons = { |
4111
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
105 { |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 text = "Download Gajim"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 url = "https://gajim.org/download/"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
108 target = "_blank"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
110 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 }); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 |
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
|
115 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
|
116 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
|
117 |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
118 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
|
119 local function relurl(s) |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 if s:match("^%w+://") then |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 return s; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
122 end |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 return base_url.."/"..s; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
124 end |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
125 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
126 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
|
127 |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
128 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
|
129 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
|
130 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
|
131 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
|
132 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
|
133 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 end |
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
139 end |
ae2699f1cba9
mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents:
4091
diff
changeset
|
140 |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
141 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
|
142 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
|
143 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
|
144 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
|
145 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
|
146 end |
e2db07017332
mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents:
4186
diff
changeset
|
147 end |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
148 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
|
149 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
150 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
151 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
|
152 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
|
153 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
|
154 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
155 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
156 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
157 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
|
158 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
|
159 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
|
160 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
161 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
162 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
|
163 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
|
164 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
165 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
166 -- 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
|
167 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
|
168 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
|
169 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
|
170 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
|
171 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
|
172 end |
4091
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
173 end |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
174 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
175 local mime_map = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
176 png = "image/png"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
177 svg = "image/svg+xml"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
178 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
179 |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
180 module:provides("http", { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
181 route = { |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
182 ["GET /assets/*"] = http_files and http_files.serve({ |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
183 path = module:get_directory().."/assets"; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
184 mime_map = mime_map; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
185 }); |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
186 }; |
354dc1e7977a
mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
187 }); |
4171
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
188 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
189 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
|
190 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 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
|
192 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
193 |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
194 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
|
195 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
|
196 end |
85fa8c9e992a
mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents:
4114
diff
changeset
|
197 |