diff options
author | Matthew Wild <mwild1@gmail.com> | 2014-07-31 06:56:21 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2014-07-31 06:56:21 +0100 |
commit | c2dac33a79b6ee137e8894549940fb4393ef0cd5 (patch) | |
tree | aad7a8932b8bd03d895bd2713ee81c0cb7ef3f80 /core | |
parent | 5647cd22878f2872de88f7f9be6ab5d4ed5f7639 (diff) | |
download | prosody-c2dac33a79b6ee137e8894549940fb4393ef0cd5.tar.gz prosody-c2dac33a79b6ee137e8894549940fb4393ef0cd5.zip |
configmanager: nameprep VirtualHost and Component names
Diffstat (limited to 'core')
-rw-r--r-- | core/configmanager.lua | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/core/configmanager.lua b/core/configmanager.lua index d175b54b..c8aa7b9a 100644 --- a/core/configmanager.lua +++ b/core/configmanager.lua @@ -17,6 +17,9 @@ local envload = require"util.envload".envload; local deps = require"util.dependencies"; local path_sep = package.config:sub(1,1); +local have_encodings, encodings = pcall(require, "util.encodings"); +local nameprep = have_encodings and encodings.stringprep.nameprep or function (host) return host:lower(); end + module "configmanager" local parsers = {}; @@ -170,6 +173,7 @@ do rawset(env, "__currenthost", "*") -- Default is global function env.VirtualHost(name) + name = nameprep(name); if rawget(config, name) and rawget(config[name], "component_module") then error(format("Host %q clashes with previously defined %s Component %q, for services use a sub-domain like conference.%s", name, config[name].component_module:gsub("^%a+$", { component = "external", muc = "MUC"}), name, name), 0); @@ -187,6 +191,7 @@ do env.Host, env.host = env.VirtualHost, env.VirtualHost; function env.Component(name) + name = nameprep(name); if rawget(config, name) and rawget(config[name], "defined") and not rawget(config[name], "component_module") then error(format("Component %q clashes with previously defined Host %q, for services use a sub-domain like conference.%s", name, name, name), 0); |