Software / code / prosody-modules
Annotate
mod_http_index/mod_http_index.lua @ 3153:e0de1fdbc80a
mod_pubsub_post/README: Describe what happens to different data types
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 27 Jun 2018 17:35:20 +0200 |
| parent | 2927:7953b7dde6e7 |
| child | 3336:4af114684e0a |
| rev | line source |
|---|---|
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local url = require"socket.url"; |
|
1825
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
2 local render = require"util.interpolation".new("%b{}", require"util.stanza".xml_escape); |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 module:depends"http"; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
|
1827
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
6 local base_template; |
|
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
7 do |
|
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
8 local template_file = module:get_option_string(module.name .. "_template", module.name .. ".html"); |
|
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
9 template_file = assert(module:load_resource(template_file)); |
|
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
10 base_template = template_file:read("*a"); |
|
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
11 template_file:close(); |
|
9376e870f0e1
mod_http_index: Move template out into a file and make it configurable
Kim Alvefur <zash@zash.se>
parents:
1826
diff
changeset
|
12 end |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 local canonical = module:http_url(nil, "/"); |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local function relative(base, link) |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 base = url.parse(base); |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 link = url.parse(link); |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 for k,v in pairs(base) do |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 if link[k] == v then |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 link[k] = nil; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 end |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 end |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 return url.build(link); |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 local function handler(event) |
|
1825
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
28 local host_items = module:get_host_items("http-provider"); |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
29 local http_apps = {} |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
30 for _, item in ipairs(host_items) do |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 if module.name ~= item._provided_by then |
|
1825
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
32 table.insert(http_apps, { |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 name = item.name; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 module = "mod_" .. item._provided_by; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 url = relative(canonical, module:http_url(item.name, item.default_path)); |
|
1825
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
36 }); |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 end |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 end |
|
2927
7953b7dde6e7
mod_http_index: Sort list of HTTP applications by name
Kim Alvefur <zash@zash.se>
parents:
1827
diff
changeset
|
39 table.sort(http_apps, function (a, b) return a.name < b.name; end); |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 event.response.headers.content_type = "text/html"; |
|
1825
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
41 return render(base_template, { |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
42 title = "HTTP Apps"; |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
43 items = http_apps; |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
44 prosody_version = prosody.version; |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
45 mod_name = module.name; |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
46 canonical = canonical; |
|
1b5c817cb642
mod_http_index: Update to use util.interpolation (makes it depend on 0.10+)
Kim Alvefur <zash@zash.se>
parents:
1573
diff
changeset
|
47 }); |
|
1573
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 end |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 module:provides("http", { |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 route = { |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 ["GET /"] = handler; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 }; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 default_path = "/"; |
|
0d8cc6971cdb
mod_http_index: Generates an index of local HTTP apps
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 }); |