Comparison

core/configmanager.lua @ 10375:3d0adbc74c39

core.configmanager: Handle nameprep validation errors
author Kim Alvefur <zash@zash.se>
date Sat, 02 Nov 2019 13:56:13 +0100
parent 10374:a83233559253
child 12083:ec21e379c145
comparison
equal deleted inserted replaced
10374:a83233559253 10375:3d0adbc74c39
139 rawset(env, "__currenthost", "*") -- Default is global 139 rawset(env, "__currenthost", "*") -- Default is global
140 function env.VirtualHost(name) 140 function env.VirtualHost(name)
141 if not name then 141 if not name then
142 error("Host must have a name", 2); 142 error("Host must have a name", 2);
143 end 143 end
144 name = nameprep(name); 144 local prepped_name = nameprep(name);
145 if not prepped_name then
146 error(format("Name of Host %q contains forbidden characters", name), 0);
147 end
148 name = prepped_name;
145 if rawget(config_table, name) and rawget(config_table[name], "component_module") then 149 if rawget(config_table, name) and rawget(config_table[name], "component_module") then
146 error(format("Host %q clashes with previously defined %s Component %q, for services use a sub-domain like conference.%s", 150 error(format("Host %q clashes with previously defined %s Component %q, for services use a sub-domain like conference.%s",
147 name, config_table[name].component_module:gsub("^%a+$", { component = "external", muc = "MUC"}), name, name), 0); 151 name, config_table[name].component_module:gsub("^%a+$", { component = "external", muc = "MUC"}), name, name), 0);
148 end 152 end
149 rawset(env, "__currenthost", name); 153 rawset(env, "__currenthost", name);
160 164
161 function env.Component(name) 165 function env.Component(name)
162 if not name then 166 if not name then
163 error("Component must have a name", 2); 167 error("Component must have a name", 2);
164 end 168 end
165 name = nameprep(name); 169 local prepped_name = nameprep(name);
170 if not prepped_name then
171 error(format("Name of Component %q contains forbidden characters", name), 0);
172 end
173 name = prepped_name;
166 if rawget(config_table, name) and rawget(config_table[name], "defined") 174 if rawget(config_table, name) and rawget(config_table[name], "defined")
167 and not rawget(config_table[name], "component_module") then 175 and not rawget(config_table[name], "component_module") then
168 error(format("Component %q clashes with previously defined Host %q, for services use a sub-domain like conference.%s", 176 error(format("Component %q clashes with previously defined Host %q, for services use a sub-domain like conference.%s",
169 name, name, name), 0); 177 name, name, name), 0);
170 end 178 end