Roxen.git
/
server
/
base_server
/
module.pike
version
»
Context lines:
10
20
40
80
file
none
3
Roxen.git/server/base_server/module.pike:278:
* Parse and return a parsed version of the security levels for this module * */ array query_seclevels() { string sl, sec; array patterns=({ });
-
if(catch(query("_seclevels")))
+
if(catch(query("_seclevels")))
{
return patterns;
-
+
}
foreach(replace(query("_seclevels"),({" ","\t","\\\n"}),({"","",""}))/"\n",sl) { if(!strlen(sl) || sl[0]=='#') continue;
-
+
+
// sl = lower_case(sl); // Lower case? /grubba
string type, value; if(sscanf(sl, "%s=%s", type, value)==2) { value = replace(value, ({ "?", ".", "*" }), ({ ".", "\.", ".*" }));
-
switch(type)
+
switch(
lower_case(
type)
)
{ case "allowip": patterns += ({ ({ MOD_ALLOW, Regexp(value)->match, }) }); break; case "denyip": patterns += ({ ({ MOD_DENY, Regexp(value)->match, }) }); break; case "allowuser": array(string) users = (value/"," - ({""})); int i; for(i=0; i < sizeof(users); i++) {
-
if (users[i] == "any") {
+
if (
lower_case(
users[i]
)
== "any") {
if(this->register_module()[0] & MODULE_PROXY) patterns += ({ ({ MOD_PROXY_USER, lambda(){ return 1; } }) }); else patterns += ({ ({ MOD_USER, lambda(){ return 1; } }) }); break; } else { users[i & 0x0f] = "(^"+users[i]+"$)"; } if ((i & 0x0f) == 0x0f) { value = users[0..0x0f]*"|";
Roxen.git/server/base_server/module.pike:331:
} if (i & 0x0f) { value = users[0..(i-1)&0x0f]*"|"; if(this->register_module()[0] & MODULE_PROXY) { patterns += ({ ({ MOD_PROXY_USER, Regexp(value)->match, }) }); } else { patterns += ({ ({ MOD_USER, Regexp(value)->match, }) }); } } break;
+
default:
+
perror("Unknown Security:Patterns directive\n");
+
break;
}
-
+
} else {
+
perror("Unknown Security:Patterns directive\n");
} } return patterns; } mixed stat_file(string f, object id){} mixed find_dir(string f, object id){} mixed real_file(string f, object id){}