Mercurial > prosody-hg
comparison core/configmanager.lua @ 6326:a3b9496673ee
Merge 0.9->0.10
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 31 Jul 2014 07:11:54 +0100 |
| parents | 5af7fe1014db 5926f01e5cd2 |
| children | 29d5875ae38d |
comparison
equal
deleted
inserted
replaced
| 6320:17344d25a0f6 | 6326:a3b9496673ee |
|---|---|
| 16 local envload = require"util.envload".envload; | 16 local envload = require"util.envload".envload; |
| 17 local deps = require"util.dependencies"; | 17 local deps = require"util.dependencies"; |
| 18 local resolve_relative_path = require"util.paths".resolve_relative_path; | 18 local resolve_relative_path = require"util.paths".resolve_relative_path; |
| 19 local glob_to_pattern = require"util.paths".glob_to_pattern; | 19 local glob_to_pattern = require"util.paths".glob_to_pattern; |
| 20 local path_sep = package.config:sub(1,1); | 20 local path_sep = package.config:sub(1,1); |
| 21 | |
| 22 local have_encodings, encodings = pcall(require, "util.encodings"); | |
| 23 local nameprep = have_encodings and encodings.stringprep.nameprep or function (host) return host:lower(); end | |
| 21 | 24 |
| 22 module "configmanager" | 25 module "configmanager" |
| 23 | 26 |
| 24 _M.resolve_relative_path = resolve_relative_path; -- COMPAT | 27 _M.resolve_relative_path = resolve_relative_path; -- COMPAT |
| 25 | 28 |
| 137 end | 140 end |
| 138 }); | 141 }); |
| 139 | 142 |
| 140 rawset(env, "__currenthost", "*") -- Default is global | 143 rawset(env, "__currenthost", "*") -- Default is global |
| 141 function env.VirtualHost(name) | 144 function env.VirtualHost(name) |
| 145 name = nameprep(name); | |
| 142 if rawget(config, name) and rawget(config[name], "component_module") then | 146 if rawget(config, name) and rawget(config[name], "component_module") then |
| 143 error(format("Host %q clashes with previously defined %s Component %q, for services use a sub-domain like conference.%s", | 147 error(format("Host %q clashes with previously defined %s Component %q, for services use a sub-domain like conference.%s", |
| 144 name, config[name].component_module:gsub("^%a+$", { component = "external", muc = "MUC"}), name, name), 0); | 148 name, config[name].component_module:gsub("^%a+$", { component = "external", muc = "MUC"}), name, name), 0); |
| 145 end | 149 end |
| 146 rawset(env, "__currenthost", name); | 150 rawset(env, "__currenthost", name); |
| 154 end; | 158 end; |
| 155 end | 159 end |
| 156 env.Host, env.host = env.VirtualHost, env.VirtualHost; | 160 env.Host, env.host = env.VirtualHost, env.VirtualHost; |
| 157 | 161 |
| 158 function env.Component(name) | 162 function env.Component(name) |
| 163 name = nameprep(name); | |
| 159 if rawget(config, name) and rawget(config[name], "defined") and not rawget(config[name], "component_module") then | 164 if rawget(config, name) and rawget(config[name], "defined") and not rawget(config[name], "component_module") then |
| 160 error(format("Component %q clashes with previously defined Host %q, for services use a sub-domain like conference.%s", | 165 error(format("Component %q clashes with previously defined Host %q, for services use a sub-domain like conference.%s", |
| 161 name, name, name), 0); | 166 name, name, name), 0); |
| 162 end | 167 end |
| 163 set(config, name, "component_module", "component"); | 168 set(config, name, "component_module", "component"); |
