Some firewalls are known to be severely broken with EPSV requests.
This enables Admin to turn it off if they need to.
follow_x_forwarded_for allow my_other_proxy
</verb>
+ <tag>ftp_epsv</tag>
+ <verb>
+ FTP Protocol extensions permit the use of a special "EPSV" command.
+
+ NATs may be able to put the connection on a "fast path" through the
+ translator using EPSV, as the EPRT command will never be used and therefore,
+ translation of the data portion of the segments will never be needed.
+
+ Turning this OFF will prevent EPSV being attempted.
+
+ WARNING: Doing so will convert Squid back to the old behavior with all
+ the related problems with external NAT devices/layers.
+
+ Requires ftp_passive to be ON (default) for any effect.
+ </verb>
+
<tag>ftp_epsv_all</tag>
<verb>
FTP Protocol extensions permit the use of a special "EPSV ALL" command.
If you have any doubts about this option do not use it.
Squid will nicely attempt all other connection methods.
- Requires ftp_passive to be ON (default)
+ Requires ftp_passive to be ON (default) for any effect.
+DOC_END
+
+NAME: ftp_epsv
+TYPE: onoff
+DEFAULT: on
+LOC: Config.Ftp.epsv
+DOC_START
+ FTP Protocol extensions permit the use of a special "EPSV" command.
+
+ NATs may be able to put the connection on a "fast path" through the
+ translator using EPSV, as the EPRT command will never be used and therefore,
+ translation of the data portion of the segments will never be needed.
+
+ Turning this OFF will prevent EPSV being attempted.
+ WARNING: Doing so will convert Squid back to the old behavior with all
+ the related problems with external NAT devices/layers.
+
+ Requires ftp_passive to be ON (default) for any effect.
DOC_END
NAME: ftp_sanitycheck
break;
default:
- if (Config.Ftp.epsv_all) {
+ if (!Config.Ftp.epsv) {
+ snprintf(cbuf, 1024, "PASV\r\n");
+ ftpState->state = SENT_PASV;
+ } else if (Config.Ftp.epsv_all) {
snprintf(cbuf, 1024, "EPSV ALL\r\n");
ftpState->state = SENT_EPSV_ALL;
/* block other non-EPSV connections being attempted */
char *anon_user;
int passive;
int epsv_all;
+ int epsv;
int sanitycheck;
int telnet;
} Ftp;