Software /
code /
prosody-modules
Annotate
mod_conversejs/mod_conversejs.lua @ 3312:e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
This will allow serving only the JS snippet in the future.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 10 Sep 2018 15:04:03 +0200 |
parent | 3310:908b2bc05d26 |
child | 3313:d6b922191aeb |
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 |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 -- Copyright (C) 2017 Kim Alvefur |
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; |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 module:depends"bosh"; |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 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
|
9 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
|
10 end); |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 |
3312
e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
Kim Alvefur <zash@zash.se>
parents:
3310
diff
changeset
|
12 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
|
13 <!DOCTYPE html> |
3038
48cbf6a3f112
mod_conversejs: Make HTML more well-formed
Kim Alvefur <zash@zash.se>
parents:
2998
diff
changeset
|
14 <html> |
48cbf6a3f112
mod_conversejs: Make HTML more well-formed
Kim Alvefur <zash@zash.se>
parents:
2998
diff
changeset
|
15 <head> |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 <meta charset="utf-8"> |
3309
c34f9fd632a6
mod_conversejs: Pin to version 4.0.0
Kim Alvefur <zash@zash.se>
parents:
3305
diff
changeset
|
17 <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.conversejs.org/4.0.0/css/converse.min.css"/> |
c34f9fd632a6
mod_conversejs: Pin to version 4.0.0
Kim Alvefur <zash@zash.se>
parents:
3305
diff
changeset
|
18 <script charset="utf-8" src="https://cdn.conversejs.org/4.0.0/dist/converse.min.js"></script> |
3038
48cbf6a3f112
mod_conversejs: Make HTML more well-formed
Kim Alvefur <zash@zash.se>
parents:
2998
diff
changeset
|
19 </head> |
3039
df77580be2f0
mod_conversejs: Appologise for the JavaScript
Kim Alvefur <zash@zash.se>
parents:
3038
diff
changeset
|
20 <body> |
df77580be2f0
mod_conversejs: Appologise for the JavaScript
Kim Alvefur <zash@zash.se>
parents:
3038
diff
changeset
|
21 <noscript> |
df77580be2f0
mod_conversejs: Appologise for the JavaScript
Kim Alvefur <zash@zash.se>
parents:
3038
diff
changeset
|
22 <h1>Converse.js</h1> |
df77580be2f0
mod_conversejs: Appologise for the JavaScript
Kim Alvefur <zash@zash.se>
parents:
3038
diff
changeset
|
23 <p>I'm sorry, but this XMPP client application won't work without JavaScript.</p> |
3040
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
24 <p>Perhaps you would like to try one of these clients:</p> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
25 <dl> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
26 <dt>Desktop</dt> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
27 <dd><ul> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
28 <li><a href="https://gajim.org/">Gajim</a></li> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
29 <li><a href="https://poez.io/">Poezio</a></li> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
30 <li><a href="https://swift.im/">Swift</a></li> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
31 </ul></dd> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
32 <dt>Mobile</dt> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
33 <dd><ul> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
34 <li><a href="https://github.com/siacs/Conversations">Conversations</a></li> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
35 <li><a href="https://yaxim.org/">Yaxim</a></li> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
36 </ul></dd> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
37 </dl> |
81b75086a781
mod_conversejs: Suggest some alternative cliets if JavaScript is disabled
Kim Alvefur <zash@zash.se>
parents:
3039
diff
changeset
|
38 <p><a href="https://xmpp.org/software/clients.html">More clients...</a></p> |
3039
df77580be2f0
mod_conversejs: Appologise for the JavaScript
Kim Alvefur <zash@zash.se>
parents:
3038
diff
changeset
|
39 </noscript> |
3312
e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
Kim Alvefur <zash@zash.se>
parents:
3310
diff
changeset
|
40 <script>%s</script> |
3039
df77580be2f0
mod_conversejs: Appologise for the JavaScript
Kim Alvefur <zash@zash.se>
parents:
3038
diff
changeset
|
41 </body> |
3038
48cbf6a3f112
mod_conversejs: Make HTML more well-formed
Kim Alvefur <zash@zash.se>
parents:
2998
diff
changeset
|
42 </html> |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 ]] |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 |
3312
e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
Kim Alvefur <zash@zash.se>
parents:
3310
diff
changeset
|
45 js_template = "converse.initialize(%s);"; |
e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
Kim Alvefur <zash@zash.se>
parents:
3310
diff
changeset
|
46 |
2919
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
47 local more_options = module:get_option("conversejs_options"); |
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
48 |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 module:provides("http", { |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 route = { |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 GET = function (event) |
2998
719b76ee0578
mod_conversejs: Offer the current domain if registration is enabled to skip the server selection and improve UX
Kim Alvefur <zash@zash.se>
parents:
2980
diff
changeset
|
52 local allow_registration = module:get_option_boolean("allow_registration", false); |
2919
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
53 local converse_options = { |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 bosh_service_url = module:http_url("bosh","/http-bind"); |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 websocket_url = has_ws and module:http_url("websocket","xmpp-websocket"):gsub("^http", "ws") or nil; |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 authentication = module:get_option_string("authentication") == "anonymous" and "anonymous" or "login"; |
2694
38c66b58b470
mod_conversejs: Pass host jid (needed for anonymous auth)
Kim Alvefur <zash@zash.se>
parents:
2664
diff
changeset
|
57 jid = module.host; |
2933
8858cef9ed27
mod_conversejs: Pass current domain as 'default_domain'
Kim Alvefur <zash@zash.se>
parents:
2921
diff
changeset
|
58 default_domain = module.host; |
2934
5c60df8b1a07
mod_conversejs: Pass information about if and how of account registration
Kim Alvefur <zash@zash.se>
parents:
2933
diff
changeset
|
59 domain_placeholder = module.host; |
2998
719b76ee0578
mod_conversejs: Offer the current domain if registration is enabled to skip the server selection and improve UX
Kim Alvefur <zash@zash.se>
parents:
2980
diff
changeset
|
60 allow_registration = allow_registration; |
719b76ee0578
mod_conversejs: Offer the current domain if registration is enabled to skip the server selection and improve UX
Kim Alvefur <zash@zash.se>
parents:
2980
diff
changeset
|
61 registration_domain = allow_registration and module.host or nil; |
2919
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
62 }; |
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
63 |
3310
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
64 if type(more_options) == "table" then |
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
65 for k,v in pairs(more_options) do |
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
66 converse_options[k] = v; |
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
67 end |
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
68 end |
908b2bc05d26
mod_conversejs: Restore accidentally removed configuration option handling
Kim Alvefur <zash@zash.se>
parents:
3309
diff
changeset
|
69 |
2919
0ea93da47db9
mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents:
2694
diff
changeset
|
70 event.response.headers.content_type = "text/html"; |
3312
e714be00aaad
mod_conversejs: Factor JavaScript part out of HTML
Kim Alvefur <zash@zash.se>
parents:
3310
diff
changeset
|
71 return html_template:format(js_template:format(json_encode(converse_options))); |
2657
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
72 end; |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
73 } |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
74 }); |
6f5c99c9f6cc
mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
75 |