Software /
code /
prosody-modules
Diff
mod_conversejs/README.md @ 6003:fe081789f7b5
All community modules: Unify file extention of Markdown files to .md
author | Menel <menel@snikket.de> |
---|---|
date | Tue, 22 Oct 2024 10:26:01 +0200 |
parent | 5895:1c8197075d04 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_conversejs/README.md Tue Oct 22 10:26:01 2024 +0200 @@ -0,0 +1,197 @@ +--- +summary: Simplify setup of Converse.js +depends: +- 'mod\_bosh' +- 'mod\_websocket' +provides: +- http +title: 'mod\_conversejs' +rockspec: + build: + copy_directories: + - templates +--- + +Introduction +============ + +This module simplifies setup of [Converse.js](https://conversejs.org/) +by serving it from Prosodys internal [http server][doc:http] along with +generated configuration to match the local VirtualHost. It becomes +available on an URL like `https://example.com:5281/conversejs` + +Configuration +============= + +The module uses general Prosody options for basic configuration. It +should just work after loading it. + +``` {.lua} +modules_enabled = { + -- other modules... + "conversejs"; +} +``` + +Authentication +-------------- + +[Authentication settings][doc:authentication] are used determine +whether to configure Converse.js to use `login` or `anonymous` mode. + +Connection methods +------------------ + +mod_conversejs also determines the [BOSH][doc:setting_up_bosh] and +[WebSocket][doc:websocket] URL automatically, see their respective +documentation for how to configure them. Both connection methods are +loaded automatically. + +Auto-loading of `mod_bosh` or `mod_websocket` can be prevented by adding +it to `modules_disabled` but note that at least one of them must be +allowed for Converse.js to work. + +HTTP +---- + +The module is served on Prosody's default HTTP ports at the path +`/conversejs`. More details on configuring HTTP modules in Prosody can +be found in our [HTTP documentation](http://prosody.im/doc/http). + +## Templates + +The HTML and JS can be customized either by editing the included +`template.html` and `template.js` files or configuring your own like: + +```lua +conversejs_html_template = "/path/to/my-template.html" +conversejs_js_template = "/path/to/my-template.js" +``` + +The HTML template uses Prosodys +[`util.interpolation`][doc:developers:util:interpolation] template +library while the JS template has `%s` where generated settings are +injected. + +Other +----- + +To pass [other Converse.js +options](https://conversejs.org/docs/html/configuration.html), or +override the derived settings, one can set `conversejs_options` like +this: + +``` {.lua} +conversejs_options = { + debug = true; + view_mode = "fullscreen"; +} +``` + +Note that the following options are automatically provided, and +**overriding them may cause problems**: + +- `authentication` *based on Prosody's authentication settings* +- `bosh_service_url` +- `websocket_url` +- `discover_connection_methods` *Disabled since we provide this* +- `assets_path` +- `allow_registration` *based on whether registration is enabled* +- These settings are set to the current `VirtualHost`: + - `jid` + - `default_domain` + - `domain_placeholder` + - `registration_domain` + +`mod_bosh` and/or `mod_websocket` are automatically enabled if available +and the respective endpoint is included in the generated options. + +## Loading resources + +By default the module will load the main script and CSS from +cdn.conversejs.org. For privacy or performance reasons you may want to +load the scripts from somewhere else. + +To use a local distribution or build of Converse.js set +conversejs_resources to the local path of "dist" directory: + +``` {.lua} +conversejs_resources = "/usr/src/conversejs/dist"; +``` + +To use a different web server or CDN simply use the conversejs_cdn +option: + +``` {.lua} +conversejs_cdn = "https://cdn.example.com" +``` + +To select a specific version of Converse.js, you may override the version: + +``` {.lua} +conversejs_version = "5.0.0" +``` + +Note that versions other than the default may not have been tested with this module, and may include incompatible changes. + +Finally, if you can override all of the above and just specify links directly to the CSS and JS files: + +``` {.lua} +conversejs_script = "https://example.com/my-converse.js" +conversejs_css = "https://example.com/my-converse.css" +``` + +Additional tags +--------------- + +To add additional tags to the module, such as custom CSS or scripts, you may use the conversejs_tags option: + +``` {.lua} +conversejs_tags = { + -- Load custom CSS + [[<link rel="stylesheet" href="https://example.org/css/custom.css">]]; + + -- Load libsignal-protocol.js for OMEMO support (GPLv3; be aware of licence implications) + [[<script src="https://cdn.conversejs.org/3rdparty/libsignal-protocol.min.js"></script>]]; +} +``` + +The example above uses the `[[` and `]]` syntax simply because it will not conflict with any embedded quotes. + +Custimizing the generated PWA options +------------------------------------- + +``` {.lua} +conversejs_name = "Service name" -- Also used as the web page title +conversejs_short_name = "Shorter name" +conversejs_description = "Description of the service" +conversejs_manifest_icons = { + { + src = "https://example.com/logo/512.png", + sizes = "512x512", + }, + { + src = "https://example.com/logo/192.png", + sizes = "192x192", + }, + { + src = "https://example.com/logo/192.svg", + sizes = "192x192", + }, + { + src = "https://example.com/logo/512.svg", + sizes = "512x512", + }, +} +conversejs_pwa_color = "#397491" +``` + +Compatibility +============= + + Prosody version state + ----------------- --------------- + 0.9 Does not work + 0.10 Should work + 0.11 Works + trunk Works