mod_http_libjs/mod_http_libjs.lua
author Kim Alvefur <zash@zash.se>
Sun, 03 Mar 2024 11:23:40 +0100
changeset 5857 97c9b76867ca
parent 4980 75b6e5df65f9
permissions -rw-r--r--
mod_log_ringbuffer: Detach event handlers on logging reload (thanks Menel) Otherwise the global event handlers accumulate, one added each time logging is reoladed, and each invocation of the signal or event triggers one dump of each created ringbuffer.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4091
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
local mime_map = module:shared("/*/http_files/mime").types or {
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
	css = "text/css",
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
	js = "application/javascript",
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
};
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     5
4099
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
     6
local serve;
4980
75b6e5df65f9 various: Improve error reporting if missing file server module on 0.12
Kim Alvefur <zash@zash.se>
parents: 4608
diff changeset
     7
if prosody.process_type == "prosody" then
4099
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
     8
	local http_files = require "net.http.files";
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
     9
	serve = http_files.serve;
4980
75b6e5df65f9 various: Improve error reporting if missing file server module on 0.12
Kim Alvefur <zash@zash.se>
parents: 4608
diff changeset
    10
else
4099
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
    11
	serve = module:depends"http_files".serve;
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
    12
end
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
    13
4091
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    14
local libjs_path = module:get_option_string("libjs_path", "/usr/share/javascript");
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
4608
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    16
do -- sanity check
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    17
	local lfs = require "lfs";
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    18
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    19
	local exists, err = lfs.attributes(libjs_path, "mode");
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    20
	if exists ~= "directory" then
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    21
		module:log("error", "Problem with 'libjs_path': %s", err or "not a directory");
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    22
	end
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    23
end
f0efbb0b0b5b mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents: 4099
diff changeset
    24
4091
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    25
module:provides("http", {
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    26
		default_path = "/share";
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    27
		route = {
4099
de2390d6bbe4 mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
    28
			["GET /*"] = serve({ path = libjs_path, mime_map = mime_map });
4091
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    29
		}
88a469b285f5 mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    30
	});