[Yum-devel] [UG] [PATCH] grabber.py: add an option to disable extended passive mode when grabbing from ftp servers

Jacob Kjaergaard jacob.kjaergaard at prevas.dk
Tue Aug 6 06:39:44 UTC 2013


this feature lets curl fallback to passive mode and may be useful when
fetching from broken ftp servers. It may also help to circumvent
some strict firewalls on some domains.
---
 urlgrabber/grabber.py |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index 0d67b1f..8955bc3 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -305,6 +305,14 @@ GENERAL ARGUMENTS (kwargs)
     actually measured to the default speed, with default
     period of 30 days.
 
+  ftp_disable_epsv = False
+  
+    False,True
+
+    This options disables Extended Passive Mode which is used to 
+    circumvent some buggy ftp servers.
+
+    It may also be used to get past strict firewall on some domains.
 
 RETRY RELATED ARGUMENTS
 
@@ -973,6 +981,7 @@ class URLGrabberOptions:
         self.timedhosts = None
         self.half_life = 30*24*60*60 # 30 days
         self.default_speed = 1e6 # 1 MBit
+        self.ftp_disable_epsv = False
         
     def __repr__(self):
         return self.format()
@@ -1412,6 +1421,10 @@ class PyCurlFileObject(object):
         if opts.data:
             self.curl_obj.setopt(pycurl.POST, True)
             self.curl_obj.setopt(pycurl.POSTFIELDS, _to_utf8(opts.data))
+
+        # ftp
+        if opts.ftp_disable_epsv == True:
+            self.curl_obj.setopt(pycurl.FTP_USE_EPSV, False)
             
         # our url
         self.curl_obj.setopt(pycurl.URL, self.url)
@@ -2036,6 +2049,7 @@ class _ExternalDownloader:
         'ssl_key_pass',
         'ssl_verify_peer', 'ssl_verify_host',
         'size', 'max_header_size', 'ip_resolve',
+        'ftp_disable_epsv'
     )
 
     def start(self, opts):
-- 
1.7.9.5



More information about the Yum-devel mailing list