mirror of
https://github.com/3proxy/3proxy.git
synced 2026-08-28 04:14:51 +00:00
-Ne / -Ni options added to specify external / internal NAT address
This commit is contained in:
parent
840dd5dbdf
commit
0c8be907e9
6 changed files with 78 additions and 30 deletions
|
|
@ -427,7 +427,9 @@ int MODULEMAINFUNC (int argc, char** argv){
|
|||
}
|
||||
break;
|
||||
case 'N':
|
||||
getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv.extNat);
|
||||
if(argv[i][3] == 'e') getip46(46, (unsigned char *)argv[i]+3, (struct sockaddr *)&srv.extNat);
|
||||
else if(argv[i][3] == 'i') getip46(46, (unsigned char *)argv[i]+3, (struct sockaddr *)&srv.intNat);
|
||||
else getip46(46, (unsigned char *)argv[i]+2, (struct sockaddr *)&srv.extNat);
|
||||
break;
|
||||
case 'p':
|
||||
*SAPORT(&srv.intsa) = htons(atoi(argv[i]+2));
|
||||
|
|
|
|||
20
src/socks.c
20
src/socks.c
|
|
@ -274,7 +274,21 @@ CLEANRET:
|
|||
|
||||
sasize = sizeof(sin);
|
||||
if(command != 3 && param->remsock != INVALID_SOCKET) param->srv->so._getsockname(param->sostate, param->remsock, (struct sockaddr *)&sin, &sasize);
|
||||
else param->srv->so._getsockname(param->sostate, param->clisock, (struct sockaddr *)&sin, &sasize);
|
||||
if(!SAISNULL(¶m->srv->extNat)){
|
||||
uint16_t port;
|
||||
port = *SAPORT(&sin);
|
||||
sin = param->srv->extNat;
|
||||
*SAPORT(&sin) = port;
|
||||
}
|
||||
else {
|
||||
param->srv->so._getsockname(param->sostate, param->clisock, (struct sockaddr *)&sin, &sasize);
|
||||
if(!SAISNULL(¶m->srv->intNat)){
|
||||
uint16_t port;
|
||||
port = *SAPORT(&sin);
|
||||
sin = param->srv->intNat;
|
||||
*SAPORT(&sin) = port;
|
||||
}
|
||||
}
|
||||
#if SOCKSTRACE > 0
|
||||
myinet_ntop(*SAFAMILY(&sin), &sin, tracebuf, SASIZE(&sin));
|
||||
fprintf(stderr, "Sending confirmation to client with code %d for %s with %s:%hu\n",
|
||||
|
|
@ -518,7 +532,9 @@ struct proxydef childdef = {
|
|||
1080,
|
||||
0,
|
||||
S_SOCKS,
|
||||
"-N(EXTERNAL_IP) External NAT address to report to client for BIND\n"
|
||||
"-Ne(EXTERNAL_IP) External NAT address (between 3proxy and destination server) to report to client for CONNECT / BIND\n"
|
||||
"-Ni(INTERNAL_IP) Internal NAT address (between client and 3proxy) to report to client for UDPASSOC\n"
|
||||
"NAT is required to map IP-to-IP without port translation\n"
|
||||
};
|
||||
#include "proxymain.c"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -515,10 +515,12 @@ struct srvparam {
|
|||
struct sockaddr_in6 extsa6;
|
||||
struct sockaddr_in6 extsa;
|
||||
struct sockaddr_in6 extNat;
|
||||
struct sockaddr_in6 intNat;
|
||||
#else
|
||||
struct sockaddr_in intsa;
|
||||
struct sockaddr_in extsa;
|
||||
struct sockaddr_in extNat;
|
||||
struct sockaddr_in intNat;
|
||||
#endif
|
||||
pthread_mutex_t counter_mutex;
|
||||
struct pollfd fds;
|
||||
|
|
|
|||
|
|
@ -9,4 +9,6 @@
|
|||
#define MINOR3PROXY 5
|
||||
#define SUBMINOR3PROXY 0
|
||||
#define RELEASE3PROXY "3proxy-0.9.5(" BUILDDATE ")\0"
|
||||
#ifndef YEAR3PROXY
|
||||
#define YEAR3PROXY "2026"
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue