mirror of
https://github.com/3proxy/3proxy.git
synced 2025-02-24 02:55:40 +08:00
EPSV support for ftppr
This commit is contained in:
parent
177fbb1117
commit
481b9e389f
16
src/ftppr.c
16
src/ftppr.c
@ -88,6 +88,7 @@ void * ftpprchild(struct clientparam* param) {
|
|||||||
}
|
}
|
||||||
else if (status >= 3 && (
|
else if (status >= 3 && (
|
||||||
(!strncasecmp((char *)buf, "PASV", 4) && (pasv = 1)) ||
|
(!strncasecmp((char *)buf, "PASV", 4) && (pasv = 1)) ||
|
||||||
|
(!strncasecmp((char *)buf, "EPSV", 4) && (pasv = 2)) ||
|
||||||
(!strncasecmp((char *)buf, "PORT ", 5) && !(pasv = 0))
|
(!strncasecmp((char *)buf, "PORT ", 5) && !(pasv = 0))
|
||||||
)){
|
)){
|
||||||
#ifndef WITHMAIN
|
#ifndef WITHMAIN
|
||||||
@ -125,8 +126,9 @@ void * ftpprchild(struct clientparam* param) {
|
|||||||
if(so._listen(clidatasock, 1)) {RETURN(823);}
|
if(so._listen(clidatasock, 1)) {RETURN(823);}
|
||||||
sasize = sizeof(param->sincl);
|
sasize = sizeof(param->sincl);
|
||||||
if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sincl, &sasize)){RETURN(824);}
|
if(so._getsockname(clidatasock, (struct sockaddr *)¶m->sincl, &sasize)){RETURN(824);}
|
||||||
if(*SAFAMILY(¶m->sincl) == AF_INET)
|
if(pasv == 1){
|
||||||
sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
|
if(*SAFAMILY(¶m->sincl) == AF_INET)
|
||||||
|
sprintf((char *)buf, "227 OK (%u,%u,%u,%u,%u,%u)\r\n",
|
||||||
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[0]),
|
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[0]),
|
||||||
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[1]),
|
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[1]),
|
||||||
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[2]),
|
(unsigned)(((unsigned char *)(SAADDR(¶m->sincl)))[2]),
|
||||||
@ -134,10 +136,16 @@ void * ftpprchild(struct clientparam* param) {
|
|||||||
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[0]),
|
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[0]),
|
||||||
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[1])
|
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[1])
|
||||||
);
|
);
|
||||||
else sprintf((char *)buf, "227 OK (127,0,0,1,%u,%u)\r\n",
|
else sprintf((char *)buf, "227 OK (127,0,0,1,%u,%u)\r\n",
|
||||||
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[0]),
|
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[0]),
|
||||||
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[1])
|
(unsigned)(((unsigned char *)(SAPORT(¶m->sincl)))[1])
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sprintf((char *)buf, "227 OK (|||%u|)\r\n",
|
||||||
|
(unsigned)ntohs(*SAPORT(¶m->sincl))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unsigned long b1, b2, b3, b4;
|
unsigned long b1, b2, b3, b4;
|
||||||
|
Loading…
Reference in New Issue
Block a user