mirror of
				https://github.com/3proxy/3proxy.git
				synced 2025-11-04 07:42:39 +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
 | 
					#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;
 | 
						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(*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){
 | 
						if(se){
 | 
				
			||||||
		*se = 0;
 | 
							*se = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if(sp){
 | 
						if(sp){
 | 
				
			||||||
		port = atoi(sp+1);
 | 
							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(se) *se = ']';
 | 
				
			||||||
	if(sp) *sp = ':';
 | 
						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){
 | 
					int parsehostname(char *hostname, struct clientparam *param, unsigned short port){
 | 
				
			||||||
	char *sp=NULL,*se=NULL;
 | 
						char *sp=NULL,*se=NULL;
 | 
				
			||||||
 | 
						int ret = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!hostname || !*hostname)return 1;
 | 
						if(!hostname || !*hostname)return 2;
 | 
				
			||||||
	if(*hostname == '[') se=strchr(hostname, ']');
 | 
						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){
 | 
						if(se){
 | 
				
			||||||
		*se = 0;
 | 
							*se = 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -255,12 +259,12 @@ int parsehostname(char *hostname, struct clientparam *param, unsigned short port
 | 
				
			|||||||
	if(sp){
 | 
						if(sp){
 | 
				
			||||||
		port = atoi(sp+1);
 | 
							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(se) *se = ']';
 | 
				
			||||||
	if(sp) *sp = ':';
 | 
						if(sp) *sp = ':';
 | 
				
			||||||
	*SAPORT(¶m->req) = htons(port);
 | 
						*SAPORT(¶m->req) = htons(port);
 | 
				
			||||||
	memset(¶m->sinsr, 0, sizeof(param->sinsr));
 | 
						memset(¶m->sinsr, 0, sizeof(param->sinsr));
 | 
				
			||||||
	return 0;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int parseusername(char *username, struct clientparam *param, int extpasswd){
 | 
					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(numservers < MAXNSERVERS) {
 | 
				
			||||||
		if((str = strchr((char *)argv[1], '/')))
 | 
							if((str = strchr((char *)argv[1], '/')))
 | 
				
			||||||
			*str = 0;
 | 
								*str = 0;
 | 
				
			||||||
		if(!getip46(46, argv[1], (struct sockaddr *)&nservers[numservers].addr)) return 1;
 | 
					 | 
				
			||||||
		*SAPORT(&nservers[numservers].addr) = htons(53);
 | 
							*SAPORT(&nservers[numservers].addr) = htons(53);
 | 
				
			||||||
 | 
							if(parsehost(46, argv[1], (struct sockaddr *)&nservers[numservers].addr)) return 1;
 | 
				
			||||||
		if(str) {
 | 
							if(str) {
 | 
				
			||||||
			nservers[numservers].usetcp = strstr(str + 1, "tcp")? 1:0;
 | 
								nservers[numservers].usetcp = strstr(str + 1, "tcp")? 1:0;
 | 
				
			||||||
			*str = '/';
 | 
								*str = '/';
 | 
				
			||||||
@ -581,7 +581,7 @@ static int h_authnserver(int argc, unsigned char **argv){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if((str = strchr((char *)argv[1], '/')))
 | 
						if((str = strchr((char *)argv[1], '/')))
 | 
				
			||||||
		*str = 0;
 | 
							*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);
 | 
						*SAPORT(&authnserver.addr) = htons(53);
 | 
				
			||||||
	if(str) {
 | 
						if(str) {
 | 
				
			||||||
		authnserver.usetcp = strstr(str + 1, "tcp")? 1:0;
 | 
							authnserver.usetcp = strstr(str + 1, "tcp")? 1:0;
 | 
				
			||||||
 | 
				
			|||||||
@ -233,7 +233,7 @@ void mschap(const unsigned char *win_password,
 | 
				
			|||||||
struct hashtable;
 | 
					struct hashtable;
 | 
				
			||||||
void hashadd(struct hashtable *ht, const unsigned char* name, unsigned char* value, time_t expires);
 | 
					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 parsehostname(char *hostname, struct clientparam *param, unsigned short port);
 | 
				
			||||||
int parseusername(char *username, struct clientparam *param, int extpasswd);
 | 
					int parseusername(char *username, struct clientparam *param, int extpasswd);
 | 
				
			||||||
int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port);
 | 
					int parseconnusername(char *username, struct clientparam *param, int extpasswd, unsigned short port);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user