annotate mod_conversejs/mod_conversejs.lua @ 3016:3f4e2340bfdc

mod_pubsub_post: Add support for publishing arbitrary JSON Payloads are wrapped in XEP-0335: JSON Containers
author Kim Alvefur <zash@zash.se>
date Sun, 20 May 2018 00:00:33 +0200
parents 719b76ee0578
children 48cbf6a3f112
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local template = [[
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>
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 <meta charset="utf-8">
2921
3264058ae54f mod_conversejs: Hack in support for changing the CSS if InVerse mode is enabled
Kim Alvefur <zash@zash.se>
parents: 2919
diff changeset
15 <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.conversejs.org/css/%s.min.css">
2980
ba6466fa6823 mod_conversejs: Specify a charset on script tag to prevent Browser from guessing
Kim Alvefur <zash@zash.se>
parents: 2934
diff changeset
16 <script charset="utf-8" src="https://cdn.conversejs.org/dist/converse.min.js"></script>
2664
5b97b04e9d1b mod_conversejs: Include a <body> tag in HTML
Kim Alvefur <zash@zash.se>
parents: 2658
diff changeset
17 <body><script>converse.initialize(%s);</script>
2657
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 ]]
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19
2919
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
20 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
21
2657
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 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
23 route = {
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 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
25 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
26 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
27 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
28 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
29 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
30 jid = module.host;
2933
8858cef9ed27 mod_conversejs: Pass current domain as 'default_domain'
Kim Alvefur <zash@zash.se>
parents: 2921
diff changeset
31 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
32 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
33 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
34 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
35 };
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
36
2921
3264058ae54f mod_conversejs: Hack in support for changing the CSS if InVerse mode is enabled
Kim Alvefur <zash@zash.se>
parents: 2919
diff changeset
37 local view_mode_css = "converse";
2919
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
38 if type(more_options) == "table" then
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
39 for k,v in pairs(more_options) do
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
40 converse_options[k] = v;
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
41 end
2921
3264058ae54f mod_conversejs: Hack in support for changing the CSS if InVerse mode is enabled
Kim Alvefur <zash@zash.se>
parents: 2919
diff changeset
42 if more_options.view_mode == "fullscreen" then
3264058ae54f mod_conversejs: Hack in support for changing the CSS if InVerse mode is enabled
Kim Alvefur <zash@zash.se>
parents: 2919
diff changeset
43 view_mode_css = "inverse";
3264058ae54f mod_conversejs: Hack in support for changing the CSS if InVerse mode is enabled
Kim Alvefur <zash@zash.se>
parents: 2919
diff changeset
44 end
2919
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
45 end
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
46
0ea93da47db9 mod_conversejs: Allow passing arbitrary options trough to Converse.js
Kim Alvefur <zash@zash.se>
parents: 2694
diff changeset
47 event.response.headers.content_type = "text/html";
2921
3264058ae54f mod_conversejs: Hack in support for changing the CSS if InVerse mode is enabled
Kim Alvefur <zash@zash.se>
parents: 2919
diff changeset
48 return template:format(view_mode_css, 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
49 end;
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 }
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 });
6f5c99c9f6cc mod_conversejs: Simple demo module for serving converse.js from internal http server
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52