[Kimchi-devel] [PATCH 3/3] Handles http redirection when checking url path

Jose Ricardo Ziviani joserz at linux.vnet.ibm.com
Thu Sep 10 19:23:28 UTC 2015


Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
---
 src/kimchi/utils.py | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
index baf2d62..0906903 100644
--- a/src/kimchi/utils.py
+++ b/src/kimchi/utils.py
@@ -40,6 +40,7 @@ from kimchi.config import paths, PluginPaths
 from kimchi.exception import InvalidParameter, TimeoutExpired
 
 
+MAX_REDIRECTION_ALLOWED = 5
 kimchi_log = cherrypy.log.error_log
 task_id = 0
 
@@ -140,7 +141,9 @@ def import_module(module_name):
     return __import__(module_name, globals(), locals(), [''])
 
 
-def check_url_path(path):
+def check_url_path(path, redirected=0):
+    if redirected > MAX_REDIRECTION_ALLOWED:
+        return False
     try:
         code = ''
         parse_result = urlparse(path)
@@ -156,9 +159,16 @@ def check_url_path(path):
             conn = HTTPConnection(server_name, timeout=15)
             # Don't try to get the whole file:
             conn.request('HEAD', path)
-            code = conn.getresponse().status
+            response = conn.getresponse()
+            code = response.status
             conn.close()
-        if code != 200:
+        if code == 200:
+            return True
+        elif code == 301 or code == 302:
+            for header in response.getheaders():
+                if header[0] == 'location':
+                    return check_url_path(header[1], redirected+1)
+        else:
             return False
     except (urllib2.URLError, HTTPException, IOError, ValueError):
         return False
-- 
1.9.1




More information about the Kimchi-devel mailing list