mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-23 18:45:40 +08:00
Correct wildcard hostname compare and make it case-insensitve where possible
This commit is contained in:
parent
041134007d
commit
9eac5c13a8
19
src/auth.c
19
src/auth.c
@ -377,21 +377,34 @@ int ACLmatches(struct ace* acentry, struct clientparam * param){
|
|||||||
}
|
}
|
||||||
while(i > 5 && param->hostname[i-1] == '.') param->hostname[i-1] = 0;
|
while(i > 5 && param->hostname[i-1] == '.') param->hostname[i-1] = 0;
|
||||||
for(hstentry = acentry->dstnames; hstentry; hstentry = hstentry->next){
|
for(hstentry = acentry->dstnames; hstentry; hstentry = hstentry->next){
|
||||||
|
int lname, lhost;
|
||||||
switch(hstentry->matchtype){
|
switch(hstentry->matchtype){
|
||||||
case 0:
|
case 0:
|
||||||
|
#ifndef _WIN32
|
||||||
|
if(strcasestr((char *)param->hostname, (char *)hstentry->name)) match = 1;
|
||||||
|
#else
|
||||||
if(strstr((char *)param->hostname, (char *)hstentry->name)) match = 1;
|
if(strstr((char *)param->hostname, (char *)hstentry->name)) match = 1;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if(strstr((char *)param->hostname, (char *)hstentry->name) == (char *)param->hostname) match = 1;
|
if(!strncasecmp((char *)param->hostname, (char *)hstentry->name, strlen((char *)hstentry->name)))
|
||||||
|
match = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if(strstr((char *)param->hostname, (char *)hstentry->name) == (char *)(param->hostname + i - (strlen((char *)hstentry->name)))) match = 1;
|
lname = strlen((char *)hstentry->name);
|
||||||
|
lhost = strlen((char *)param->hostname);
|
||||||
|
if(lhost > lname){
|
||||||
|
if(!strncasecmp((char *)param->hostname + (lhost - lname),
|
||||||
|
(char *)hstentry->name,
|
||||||
|
lname))
|
||||||
|
match = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if(!strcmp((char *)param->hostname, (char *)hstentry->name)) match = 1;
|
if(!strcasecmp((char *)param->hostname, (char *)hstentry->name)) match = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(match) break;
|
if(match) break;
|
||||||
|
Loading…
Reference in New Issue
Block a user