mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-23 18:45:40 +08:00
support port number in 'nserver' / 'authnserver'
This commit is contained in:
parent
fbcdcf3d7b
commit
f347b37770
22
src/common.c
22
src/common.c
@ -221,30 +221,34 @@ int ceparseargs(const char *str){
|
||||
|
||||
#endif
|
||||
|
||||
void parsehost(int family, unsigned char *host, struct sockaddr *sa){
|
||||
int parsehost(int family, unsigned char *host, struct sockaddr *sa){
|
||||
char *sp=NULL,*se=NULL;
|
||||
unsigned short port;
|
||||
unsigned short port=0;
|
||||
int ret = 0;
|
||||
|
||||
if(!host) return 2;
|
||||
if(*host == '[') se=strchr((char *)host, ']');
|
||||
if ( (sp = strchr(se?se:(char *)host, ':')) ) *sp = 0;
|
||||
if ( (sp = strchr(se?se:(char *)host, ':')) && !strchr(sp+1, ':')) *sp = 0;
|
||||
if(se){
|
||||
*se = 0;
|
||||
}
|
||||
if(sp){
|
||||
port = atoi(sp+1);
|
||||
}
|
||||
getip46(family, host + (se!=0), (struct sockaddr *)sa);
|
||||
ret = !getip46(family, host + (se!=0), (struct sockaddr *)sa);
|
||||
if(se) *se = ']';
|
||||
if(sp) *sp = ':';
|
||||
*SAPORT(sa) = htons(port);
|
||||
if(port)*SAPORT(sa) = htons(port);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int parsehostname(char *hostname, struct clientparam *param, unsigned short port){
|
||||
char *sp=NULL,*se=NULL;
|
||||
int ret = 0;
|
||||
|
||||
if(!hostname || !*hostname)return 1;
|
||||
if(!hostname || !*hostname)return 2;
|
||||
if(*hostname == '[') se=strchr(hostname, ']');
|
||||
if ( (sp = strchr(se?se:hostname, ':')) ) *sp = 0;
|
||||
if ( (sp = strchr(se?se:hostname, ':')) && !strchr(sp+1, ':')) *sp = 0;
|
||||
if(se){
|
||||
*se = 0;
|
||||
}
|
||||
@ -255,12 +259,12 @@ int parsehostname(char *hostname, struct clientparam *param, unsigned short port
|
||||
if(sp){
|
||||
port = atoi(sp+1);
|
||||
}
|
||||
getip46(param->srv->family, param->hostname, (struct sockaddr *)¶m->req);
|
||||
ret = !getip46(param->srv->family, param->hostname, (struct sockaddr *)¶m->req);
|
||||
if(se) *se = ']';
|
||||
if(sp) *sp = ':';
|
||||
*SAPORT(¶m->req) = htons(port);
|
||||
memset(¶m->sinsr, 0, sizeof(param->sinsr));
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int parseusername(char *username, struct clientparam *param, int extpasswd){
|
||||
|
@ -563,8 +563,8 @@ static int h_nserver(int argc, unsigned char **argv){
|
||||
if(numservers < MAXNSERVERS) {
|
||||
if((str = strchr((char *)argv[1], '/')))
|
||||
*str = 0;
|
||||
if(!getip46(46, argv[1], (struct sockaddr *)&nservers[numservers].addr)) return 1;
|
||||
*SAPORT(&nservers[numservers].addr) = htons(53);
|
||||
if(parsehost(46, argv[1], (struct sockaddr *)&nservers[numservers].addr)) return 1;
|
||||
if(str) {
|
||||
nservers[numservers].usetcp = strstr(str + 1, "tcp")? 1:0;
|
||||
*str = '/';
|
||||
@ -581,7 +581,7 @@ static int h_authnserver(int argc, unsigned char **argv){
|
||||
|
||||
if((str = strchr((char *)argv[1], '/')))
|
||||
*str = 0;
|
||||
if(!getip46(46, argv[1], (struct sockaddr *)&authnserver.addr)) return 1;
|
||||
if(parsehost(46, argv[1], (struct sockaddr *)&authnserver.addr)) return 1;
|
||||
*SAPORT(&authnserver.addr) = htons(53);
|
||||
if(str) {
|
||||
authnserver.usetcp = strstr(str + 1, "tcp")? 1:0;
|
||||
|
@ -233,7 +233,7 @@ void mschap(const unsigned char *win_password,
|
||||
struct hashtable;
|
||||
void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires);
|
||||
|
||||
void parsehost(int family, unsigned char *host, struct sockaddr *sa);
|
||||
int parsehost(int family, unsigned char *host, struct sockaddr *sa);
|
||||
int parsehostname(char *hostname, struct clientparam *param, unsigned short port);
|
||||
int parseusername(char *username, struct clientparam *param, int extpasswd);
|
||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port);
|
||||
|
Loading…
Reference in New Issue
Block a user