-N(NAT_address) option added for socks

This commit is contained in:
z3APA3A 2020-10-07 11:21:01 +03:00
parent d0725163d1
commit ebd7b34159
3 changed files with 8 additions and 3 deletions

View File

@ -346,6 +346,9 @@ int MODULEMAINFUNC (int argc, char** argv){
#endif #endif
} }
break; break;
case 'N':
getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv.extNat);
break;
case 'p': case 'p':
*SAPORT(&srv.intsa) = htons(atoi(argv[i]+2)); *SAPORT(&srv.intsa) = htons(atoi(argv[i]+2));
break; break;

View File

@ -173,9 +173,9 @@ void * sockschild(struct clientparam* param) {
case 3: case 3:
#ifndef NOIPV6 #ifndef NOIPV6
param->sinsl = *SAFAMILY(&param->req)==AF_INET6? param->srv->extsa6 : param->srv->extsa; param->sinsl = *SAFAMILY(&param->req)==AF_INET6? param->srv->extsa6 : (SAISNULL(&param->srv->extNat)?param->srv->extsa:param->srv->extNat);
#else #else
param->sinsl = param->srv->extsa; param->sinsl = SAISNULL(&param->srv->extNat)?param->srv->extsa:param->srv->extNat;
#endif #endif
if ((param->remsock=so._socket(SASOCK(&param->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);} if ((param->remsock=so._socket(SASOCK(&param->req), command == 2? SOCK_STREAM:SOCK_DGRAM, command == 2?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) {RETURN (11);}
param->operation = command == 2?BIND:UDPASSOC; param->operation = command == 2?BIND:UDPASSOC;
@ -461,7 +461,7 @@ struct proxydef childdef = {
1080, 1080,
0, 0,
S_SOCKS, S_SOCKS,
"" "-N(EXTERNAL_IP) External NAT address to report to client for BIND\n"
}; };
#include "proxymain.c" #include "proxymain.c"
#endif #endif

View File

@ -445,9 +445,11 @@ struct srvparam {
struct sockaddr_in6 intsa; struct sockaddr_in6 intsa;
struct sockaddr_in6 extsa6; struct sockaddr_in6 extsa6;
struct sockaddr_in6 extsa; struct sockaddr_in6 extsa;
struct sockaddr_in6 extNat;
#else #else
struct sockaddr_in intsa; struct sockaddr_in intsa;
struct sockaddr_in extsa; struct sockaddr_in extsa;
struct sockaddr_in extNat;
#endif #endif
pthread_mutex_t counter_mutex; pthread_mutex_t counter_mutex;
struct pollfd fds; struct pollfd fds;