Software /
code /
prosody-modules
Annotate
mod_conversejs/mod_conversejs.lua @ 6055:23c4c61a1068
mod_muc_gateway_optimize: New module to optimize muc presence to remote gateways
Some gateways are happy to receive presence for each participant
in MUCs that they are in only once, to any one of their joined JIDs.
author | Stephen Paul Weber <singpolyma@singpolyma.net> |
---|---|
date | Sun, 17 Nov 2024 22:32:52 -0500 |
parent | 5895:1c8197075d04 |
child | 6199:fe8222112cf4 |
rev | line source |
---|---|
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- mod_conversejs |
4914
f2c918fe8cf0
mod_conversejs: Bump Copyright year
Kim Alvefur <zash@zash.se>
parents:
4891
diff
changeset
|
2 -- Copyright (C) 2017-2022 Kim Alvefur |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local json_encode = require"util.json".encode; |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
5 local xml_escape = require "util.stanza".xml_escape; |
4176
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
6 local urlencode = require "util.http".urlencode; |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
7 local render = require "util.interpolation".new("%b{}", xml_escape, { json = json_encode }); |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
3329
43d0e298ddda
mod_conversejs: Explicitly depend on mod_http
Kim Alvefur <zash@zash.se>
parents:
3324
diff
changeset
|
9 module:depends"http"; |
3363
2681f74750b2
mod_conversejs: Weaken dependency on mod_bosh
Kim Alvefur <zash@zash.se>
parents:
3348
diff
changeset
|
10 |
2681f74750b2
mod_conversejs: Weaken dependency on mod_bosh
Kim Alvefur <zash@zash.se>
parents:
3348
diff
changeset
|
11 local has_bosh = pcall(function () |
2681f74750b2
mod_conversejs: Weaken dependency on mod_bosh
Kim Alvefur <zash@zash.se>
parents:
3348
diff
changeset
|
12 module:depends"bosh"; |
2681f74750b2
mod_conversejs: Weaken dependency on mod_bosh
Kim Alvefur <zash@zash.se>
parents:
3348
diff
changeset
|
13 end); |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 local has_ws = pcall(function () |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 module:depends("websocket"); |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 end); |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 |
4891
99cdc7cde150
mod_conversejs: Revert back to depending on mod_bookmarks
Kim Alvefur <zash@zash.se>
parents:
4855
diff
changeset
|
19 pcall(function () |
99cdc7cde150
mod_conversejs: Revert back to depending on mod_bookmarks
Kim Alvefur <zash@zash.se>
parents:
4855
diff
changeset
|
20 module:depends("bookmarks"); |
99cdc7cde150
mod_conversejs: Revert back to depending on mod_bookmarks
Kim Alvefur <zash@zash.se>
parents:
4855
diff
changeset
|
21 end); |
3494
4feab7e87675
mod_conversejs: Add dependency on mod_bookmarks
Kim Alvefur <zash@zash.se>
parents:
3492
diff
changeset
|
22 |
3331
d98341bca458
mod_conversejs: Allow overriding CDN URL, or script/css URLs independently
Matthew Wild <mwild1@gmail.com>
parents:
3329
diff
changeset
|
23 local cdn_url = module:get_option_string("conversejs_cdn", "https://cdn.conversejs.org"); |
d98341bca458
mod_conversejs: Allow overriding CDN URL, or script/css URLs independently
Matthew Wild <mwild1@gmail.com>
parents:
3329
diff
changeset
|
24 |
3348
f753cf4f7224
mod_conversejs: Default to latest version of Converse.js
Kim Alvefur <zash@zash.se>
parents:
3347
diff
changeset
|
25 local version = module:get_option_string("conversejs_version", ""); |
3347
823156d5885b
mod_conversejs: Strip extra slash if version is set to the empty string
Kim Alvefur <zash@zash.se>
parents:
3337
diff
changeset
|
26 if version ~= "" then version = "/" .. version end |
4147
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
27 |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
28 local serve_dist = nil; |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
29 local resources = module:get_option_path("conversejs_resources"); |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
30 if resources then |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
31 local serve; |
4976
75b6e5df65f9
various: Improve error reporting if missing file server module on 0.12
Kim Alvefur <zash@zash.se>
parents:
4914
diff
changeset
|
32 if prosody.process_type == "prosody" then |
4147
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
33 -- Prosody >= trunk / 0.12 |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
34 local http_files = require "net.http.files"; |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
35 serve = http_files.serve; |
4976
75b6e5df65f9
various: Improve error reporting if missing file server module on 0.12
Kim Alvefur <zash@zash.se>
parents:
4914
diff
changeset
|
36 else |
4147
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
37 -- Prosody <= 0.11 |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
38 serve = module:depends "http_files".serve; |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
39 end |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
40 local mime_map = module:shared("/*/http_files/mime").types or {css = "text/css"; js = "application/javascript"}; |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
41 serve_dist = serve({path = resources; mime_map = mime_map}); |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
42 |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
43 cdn_url = module:http_url(); |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
44 end |
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
45 |
3347
823156d5885b
mod_conversejs: Strip extra slash if version is set to the empty string
Kim Alvefur <zash@zash.se>
parents:
3337
diff
changeset
|
46 local js_url = module:get_option_string("conversejs_script", cdn_url..version.."/dist/converse.min.js"); |
3641 | 47 local css_url = module:get_option_string("conversejs_css", cdn_url..version.."/dist/converse.min.css"); |
3331
d98341bca458
mod_conversejs: Allow overriding CDN URL, or script/css URLs independently
Matthew Wild <mwild1@gmail.com>
parents:
3329
diff
changeset
|
48 |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
49 local html_template; |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
51 do |
4165
6b2a1c9ef6e2
mod_conversejs: Move templates into a directory for easier install
Kim Alvefur <zash@zash.se>
parents:
4153
diff
changeset
|
52 local template_filename = module:get_option_string(module.name .. "_html_template", "templates/template.html"); |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
53 local template_file, err = module:load_resource(template_filename); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
54 if template_file then |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
55 html_template, err = template_file:read("*a"); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
56 template_file:close(); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
57 end |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
58 if not html_template then |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
59 module:log("error", "Error loading HTML template: %s", err); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
60 html_template = render("<h1>mod_{module} could not read the template</h1>\ |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
61 <p>Tried to open <b>{filename}</b></p>\ |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
62 <pre>{error}</pre>", |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
63 { module = module.name, filename = template_filename, error = err }); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
64 end |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
65 end |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
66 |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
67 local js_template; |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
68 do |
4165
6b2a1c9ef6e2
mod_conversejs: Move templates into a directory for easier install
Kim Alvefur <zash@zash.se>
parents:
4153
diff
changeset
|
69 local template_filename = module:get_option_string(module.name .. "_js_template", "templates/template.js"); |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
70 local template_file, err = module:load_resource(template_filename); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
71 if template_file then |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
72 js_template, err = template_file:read("*a"); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
73 template_file:close(); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
74 end |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
75 if not js_template then |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
76 module:log("error", "Error loading JS template: %s", err); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
77 js_template = render("console.log(\"mod_{module} could not read the JS template: %s\", {error|json})", |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
78 { module = module.name, filename = template_filename, error = err }); |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
79 end |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
80 end |
3312
e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
Kim Alvefur <zash@zash.se>
parents:
3310
diff
changeset
|
81 |
5211
079ca766193b
mod_conversejs: This one weird trick updates options on reload
Kim Alvefur <zash@zash.se>
parents:
4976
diff
changeset
|
82 local function get_converse_options() |
079ca766193b
mod_conversejs: This one weird trick updates options on reload
Kim Alvefur <zash@zash.se>
parents:
4976
diff
changeset
|
83 local user_options = module:get_option("conversejs_options"); |
2919
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
84 |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
85 local allow_registration = module:get_option_boolean("allow_registration", false); |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
86 local converse_options = { |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
87 -- Auto-detected connection endpoints |
3363
2681f74750b2
mod_conversejs: Weaken dependency on mod_bosh
Kim Alvefur <zash@zash.se>
parents:
3348
diff
changeset
|
88 bosh_service_url = has_bosh and module:http_url("bosh","/http-bind") or nil; |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
89 websocket_url = has_ws and module:http_url("websocket","xmpp-websocket"):gsub("^http", "ws") or nil; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
90 -- Since we provide those, XEP-0156 based auto-discovery should not be used |
4047
36b6e3e3f9e2
mod_conversejs: Disable automatic BOSH/WS endpoint discovery
Kim Alvefur <zash@zash.se>
parents:
3737
diff
changeset
|
91 discover_connection_methods = false; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
92 -- Authentication mode to use (normal or guest login) |
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
93 authentication = module:get_option_string("authentication") == "anonymous" and "anonymous" or "login"; |
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
94 -- Host to connect to for anonymous access |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
95 jid = module.host; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
96 -- Let users login with only username |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
97 default_domain = module.host; |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
98 domain_placeholder = module.host; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
99 -- If registration is enabled |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
100 allow_registration = allow_registration; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
101 -- and if it is, which domain to register with |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
102 registration_domain = allow_registration and module.host or nil; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
103 -- Path to resources like emoji, icons, sounds |
4153
4ee2a90d3818
mod_conversejs: Generate 'assets_path' to fix locating certain resources
Kim Alvefur <zash@zash.se>
parents:
4147
diff
changeset
|
104 assets_path = cdn_url..version.."/dist/"; |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
105 -- Default most suited for use as a "normal" client |
3737
49e65a7e9415
mod_conversejs: Use the fullscreen view mode by default
Kim Alvefur <zash@zash.se>
parents:
3641
diff
changeset
|
106 view_mode = "fullscreen"; |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
107 }; |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
108 |
4209
37aa50ed79c1
mod_conversejs: Add comments about default settings
Kim Alvefur <zash@zash.se>
parents:
4176
diff
changeset
|
109 -- Let config override the above defaults |
3332
4fdd8b77da54
mod_conversejs: Variable rename for clarity (user may override options)
Matthew Wild <mwild1@gmail.com>
parents:
3331
diff
changeset
|
110 if type(user_options) == "table" then |
4fdd8b77da54
mod_conversejs: Variable rename for clarity (user may override options)
Matthew Wild <mwild1@gmail.com>
parents:
3331
diff
changeset
|
111 for k,v in pairs(user_options) do |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
112 converse_options[k] = v; |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
113 end |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
114 end |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
115 |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
116 return converse_options; |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
117 end |
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
118 |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
119 local add_tags = module:get_option_array("conversejs_tags", {}); |
3333
5be90562e14b
mod_conversejs: Allow custom tags to be inserted into the generated HTML
Matthew Wild <mwild1@gmail.com>
parents:
3332
diff
changeset
|
120 |
5895
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
121 local service_name = module:get_option_string("name", "Prosody IM and Converse.js"); |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
122 local service_short_name = module:get_option_string("short_name", "Converse"); |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
123 local service_description = module:get_option_string("description", "Messaging Freedom") |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
124 local pwa_color = module:get_option_string("pwa_color", "#397491") |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
125 |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
126 module:provides("http", { |
3337
b46bb9392efe
mod_conversejs: Set a friendly name for mod_http_index
Kim Alvefur <zash@zash.se>
parents:
3333
diff
changeset
|
127 title = "Converse.js"; |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
128 route = { |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
129 GET = function (event) |
3313
d6b922191aeb
mod_conversejs: Factor out option handling into a function for future reuse
Kim Alvefur <zash@zash.se>
parents:
3312
diff
changeset
|
130 local converse_options = get_converse_options(); |
3310
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
131 |
2919
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
132 event.response.headers.content_type = "text/html"; |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
133 return render(html_template, { |
5895
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
134 service_name = service_name; |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
135 -- note that using a relative path won’t work as this URL doesn’t end in a / |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
136 manifest_url = module:http_url().."/manifest.json", |
3598
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
137 header_scripts = { js_url }; |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
138 header_style = { css_url }; |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
139 header_tags = add_tags; |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
140 conversejs = { |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
141 options = converse_options; |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
142 startup = { script = js_template:format(json_encode(converse_options)); } |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
143 }; |
1921ae4449b8
mod_conversejs: Separate out templates into separate configurable files (breaks 0.9 compat)
Kim Alvefur <zash@zash.se>
parents:
3494
diff
changeset
|
144 }); |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
145 end; |
3314
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
146 |
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
147 ["GET /prosody-converse.js"] = function (event) |
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
148 local converse_options = get_converse_options(); |
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
149 |
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
150 event.response.headers.content_type = "application/javascript"; |
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
151 return js_template:format(json_encode(converse_options)); |
ab67f222d88b
mod_conversejs: Add an endpoint returning only initialization snippet
Kim Alvefur <zash@zash.se>
parents:
3313
diff
changeset
|
152 end; |
5895
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
153 ["GET /manifest.json"] = function (event) |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
154 -- See manifest.json in the root of Converse.js’s git repository |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
155 local data = { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
156 short_name = service_short_name, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
157 name = service_name, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
158 description = service_description, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
159 categories = {"social"}, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
160 icons = module:get_option_array("manifest_icons", { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
161 { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
162 src = cdn_url..version.."/dist/images/logo/conversejs-filled-512.png", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
163 sizes = "512x512", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
164 }, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
165 { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
166 src = cdn_url..version.."/dist/images/logo/conversejs-filled-192.png", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
167 sizes = "192x192", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
168 }, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
169 { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
170 src = cdn_url..version.."/dist/images/logo/conversejs-filled-192.svg", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
171 sizes = "192x192", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
172 }, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
173 { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
174 src = cdn_url..version.."/dist/images/logo/conversejs-filled-512.svg", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
175 sizes = "512x512", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
176 }, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
177 }), |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
178 start_url = module:http_url(), |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
179 background_color = pwa_color, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
180 display = "standalone", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
181 scope = module:http_url().."/", |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
182 theme_color = pwa_color, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
183 } |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
184 return { |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
185 headers = { content_type = "application/schema+json" }, |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
186 body = json_encode(data), |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
187 } |
1c8197075d04
mod_conversejs: Allow installation as PWA
BetaRays <BetaRays@proton.me>
parents:
5211
diff
changeset
|
188 end; |
4147
3a06dea21ea1
mod_conversejs: Enable serving resources from built-in http server
Kim Alvefur <zash@zash.se>
parents:
4047
diff
changeset
|
189 ["GET /dist/*"] = serve_dist; |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
190 } |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
191 }); |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
192 |
4176
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
193 module:provides("site-app", { |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
194 name = "Converse.js"; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
195 text = [[A free and open-source XMPP chat client in your browser]]; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
196 image = "assets/logos/converse-js.svg"; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
197 link = "https://conversejs.org/"; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
198 magic_link_format = "/register?t={invite.token}&c=converse-js"; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
199 login_link_format = module:http_url(); |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
200 platforms = { "Web" }; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
201 download = { |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
202 buttons = { |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
203 { |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
204 text = "Open web chat"; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
205 url = module:http_url(); |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
206 }; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
207 }; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
208 }; |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
209 |
0016618e0975
mod_conversejs: Automatically register as a site app (see mod_register_apps)
Matthew Wild <mwild1@gmail.com>
parents:
4165
diff
changeset
|
210 }); |