ftp: allow disabling EPSV mode

This commit is contained in:
Jon Fautley 2019-10-10 18:07:48 +01:00 committed by Nick Craig-Wood
parent a4d572d004
commit 5d33236050

View File

@ -65,6 +65,11 @@ func init() {
Help: "Do not verify the TLS certificate of the server", Help: "Do not verify the TLS certificate of the server",
Default: false, Default: false,
Advanced: true, Advanced: true,
}, {
Name: "disable_epsv",
Help: "Disable using EPSV even if server advertises support",
Default: false,
Advanced: true,
}, },
}, },
}) })
@ -79,6 +84,7 @@ type Options struct {
TLS bool `config:"tls"` TLS bool `config:"tls"`
Concurrency int `config:"concurrency"` Concurrency int `config:"concurrency"`
SkipVerifyTLSCert bool `config:"no_check_certificate"` SkipVerifyTLSCert bool `config:"no_check_certificate"`
DisableEPSV bool `config:"disable_epsv"`
} }
// Fs represents a remote FTP server // Fs represents a remote FTP server
@ -144,6 +150,9 @@ func (f *Fs) ftpConnection() (*ftp.ServerConn, error) {
} }
ftpConfig = append(ftpConfig, ftp.DialWithTLS(tlsConfig)) ftpConfig = append(ftpConfig, ftp.DialWithTLS(tlsConfig))
} }
if f.opt.DisableEPSV {
ftpConfig = append(ftpConfig, ftp.DialWithDisabledEPSV(true))
}
c, err := ftp.Dial(f.dialAddr, ftpConfig...) c, err := ftp.Dial(f.dialAddr, ftpConfig...)
if err != nil { if err != nil {
fs.Errorf(f, "Error while Dialing %s: %s", f.dialAddr, err) fs.Errorf(f, "Error while Dialing %s: %s", f.dialAddr, err)