Mercurial > prosody-modules
annotate mod_discodot/mod_discodot.lua @ 4668:ede9682c2022
mod_external_services: Factor out public function for converting to XML
Along with the previous commit, allows building the XML thing yourself,
should you wish to send it yourself or use it in a different context than
an iq reply.
API change: The 'reply' is removed from the event.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 30 Aug 2021 20:19:15 +0200 |
parents | 253df0798996 |
children |
rev | line source |
---|---|
4577
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 local cm = require("core.configmanager"); |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local function format_host(host, conf) |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 if host == "*" then |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 return "Global" |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local component_module = conf["component_module"]; |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 if type(component_module) == "string" then |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 if component_module == "component" then |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 return string.format("Component %q", host) |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 else |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 return string.format("Component %q %q", host, component_module) |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 else |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 return string.format("VirtualHost %q", host) |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 function module.command(arg) |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 local config = cm.getconfig(); |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 print("digraph \"prosody\" {") |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 for host, conf in pairs(config) do |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 print(string.format("%q [label=%q]", host, format_host(host, conf))); |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 local parent = host:match("%.(.*)"); |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 if parent and rawget(config, parent) then |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 print(string.format("%q -> %q", parent, host)); |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 local disco_items = conf["disco_items"] |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 if type(disco_items) == "table" then |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 for _, pair in ipairs(disco_items) do |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 print(string.format("%q -> %q", host, pair[1])); |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 end |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 print("}") |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 return 0 |
253df0798996
mod_discodot: Print a graph of service discovery
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 end |