tools/cfgdump.lua
author Kim Alvefur <zash@zash.se>
Fri, 27 May 2022 14:45:35 +0200
branch0.12
changeset 12530 252ed01896dd
parent 11574 c3896c714a83
child 13146 879a6a33c21b
permissions -rwxr-xr-x
mod_smacks: Bounce unhandled stanzas from local origin (fix #1759) Sending stanzas with a remote session as origin when the stanzas have a local JID in the from attribute trips validation in core.stanza_router, leading to warnings: > Received a stanza claiming to be from remote.example, over a stream authed for localhost.example Using module:send() uses the local host as origin, which is fine here.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
#!/usr/bin/env lua
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
-- cfgdump.lua prosody.cfg.lua [[host] option]
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
local s_format, print = string.format, print;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
local printf = function(fmt, ...) return print(s_format(fmt, ...)); end
11573
08dab7df152b tools/cfgdump: Iterate in sort order to give stable output
Kim Alvefur <zash@zash.se>
parents: 11196
diff changeset
     7
local it = require "util.iterators";
11574
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
     8
local function sort_anything(a, b)
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
     9
	local typeof_a, typeof_b = type(a), type(b);
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    10
	if typeof_a ~= typeof_b then return typeof_a < typeof_b end
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    11
	return a < b -- should work for everything in a config file
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    12
end
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    13
local serialization = require "util.serialization";
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    14
local serialize = serialization.new and serialization.new({
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    15
	unquoted = true, table_iterator = function(t) return it.sorted_pairs(t, sort_anything); end,
c3896c714a83 tools/cfgdump: Serialize individual (table) settings in stable order too
Kim Alvefur <zash@zash.se>
parents: 11573
diff changeset
    16
}) or serialization.serialize;
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
local configmanager = require"core.configmanager";
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
local startup = require "util.startup";
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
startup.set_function_metatable();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
local config_filename, onlyhost, onlyoption = ...;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
local ok, _, err = configmanager.load(config_filename or "./prosody.cfg.lua", "lua");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
assert(ok, err);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
if onlyhost then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    27
	if not onlyoption then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
		onlyhost, onlyoption = "*", onlyhost;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
	end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
	if onlyhost ~= "*" then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
		local component_module = configmanager.get(onlyhost, "component_module");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
		if component_module == "component" then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    34
			printf("Component %q", onlyhost);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    35
		elseif component_module then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
			printf("Component %q %q", onlyhost, component_module);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
		else
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
			printf("VirtualHost %q", onlyhost);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    39
		end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    40
	end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    41
	printf("%s = %s", onlyoption or "?", serialize(configmanager.get(onlyhost, onlyoption)));
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    42
	return;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    43
end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    44
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    45
local config = configmanager.getconfig();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    46
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    47
11573
08dab7df152b tools/cfgdump: Iterate in sort order to give stable output
Kim Alvefur <zash@zash.se>
parents: 11196
diff changeset
    48
for host, hostcfg in it.sorted_pairs(config) do
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    49
	local fixed = {};
11573
08dab7df152b tools/cfgdump: Iterate in sort order to give stable output
Kim Alvefur <zash@zash.se>
parents: 11196
diff changeset
    50
	for option, value in it.sorted_pairs(hostcfg) do
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    51
		fixed[option] = value;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    52
		if option:match("ports?$") or option:match("interfaces?$") then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    53
			if option:match("s$") then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    54
				if type(value) ~= "table" then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    55
					fixed[option] = { value };
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    56
				end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    57
			else
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    58
				if type(value) == "table" and #value > 1 then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    59
					fixed[option] = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    60
					fixed[option.."s"] = value;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    61
				end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    62
			end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    63
		end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    64
	end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    65
	config[host] = fixed;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    66
end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    67
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    68
local globals = config["*"]; config["*"] = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    69
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    70
local function printsection(section)
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    71
	local out, n = {}, 1;
11573
08dab7df152b tools/cfgdump: Iterate in sort order to give stable output
Kim Alvefur <zash@zash.se>
parents: 11196
diff changeset
    72
	for k,v in it.sorted_pairs(section) do
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    73
		out[n], n = s_format("%s = %s", k, serialize(v)), n + 1;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    74
	end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    75
	table.sort(out);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    76
	print(table.concat(out, "\n"));
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    77
end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    78
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    79
print("-------------- Prosody Exported Configuration File -------------");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    80
print();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    81
print("------------------------ Global section ------------------------");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    82
print();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    83
printsection(globals);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    84
print();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    85
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    86
local has_components = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    87
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    88
print("------------------------ Virtual hosts -------------------------");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    89
11573
08dab7df152b tools/cfgdump: Iterate in sort order to give stable output
Kim Alvefur <zash@zash.se>
parents: 11196
diff changeset
    90
for host, hostcfg in it.sorted_pairs(config) do
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    91
	setmetatable(hostcfg, nil);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    92
	hostcfg.defined = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    93
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    94
	if hostcfg.component_module == nil then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    95
		print();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    96
		printf("VirtualHost %q", host);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    97
		printsection(hostcfg);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    98
	else
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    99
		has_components = true
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   100
	end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   101
end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   102
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   103
print();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   104
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   105
if has_components then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   106
print("------------------------- Components ---------------------------");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   107
11573
08dab7df152b tools/cfgdump: Iterate in sort order to give stable output
Kim Alvefur <zash@zash.se>
parents: 11196
diff changeset
   108
	for host, hostcfg in it.sorted_pairs(config) do
11196
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   109
		local component_module = hostcfg.component_module;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   110
		hostcfg.component_module = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   111
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   112
		if component_module then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   113
			print();
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   114
			if component_module == "component" then
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   115
				printf("Component %q", host);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   116
			else
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   117
				printf("Component %q %q", host, component_module);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   118
				hostcfg.component_module = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   119
				hostcfg.load_global_modules = nil;
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   120
			end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   121
			printsection(hostcfg);
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   122
		end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   123
	end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   124
end
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   125
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   126
print()
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   127
print("------------------------- End of File --------------------------");
11f285a439a4 tools/cfgdump: Reads Prosody config file and pretty-prints it back out
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   128