commit 662940efec1df41208eeb0c69f20f440256f4e74
Author: Yi Yang <[email protected]>
Date:   Fri Dec 24 12:01:19 2010 +0800

    Fix https repo fetching error
    
    Note: if https server requires certificate check, but client didn't
    have certificate available, mic2 will fail to access such repo, so
    for such repo, we just don't verify certificate, fixed bug #7926

diff --git a/mic/imgcreate/fs.py b/mic/imgcreate/fs.py
index f2e6a96..9d7dc26 100644
--- a/mic/imgcreate/fs.py
+++ b/mic/imgcreate/fs.py
@@ -937,6 +937,7 @@ def myurlgrab(url, filename, proxies):
     else:
         try:
             filename = g.urlgrab(url = url, filename = filename,
+                ssl_verify_host = False, ssl_verify_peer = False,
                 proxies = proxies, http_headers = (('Pragma', 'no-cache'),), 
progress_obj = TextProgress())
         except URLGrabError, e:
             raise CreatorError("URLGrabber error: %s: %s" % (e, url))
diff --git a/mic/imgcreate/misc.py b/mic/imgcreate/misc.py
index 66bce51..df223e9 100644
--- a/mic/imgcreate/misc.py
+++ b/mic/imgcreate/misc.py
@@ -27,6 +27,7 @@ import shutil
 import glob
 import xml.dom.minidom
 import hashlib
+import urlparse
 
 try:
     import sqlite3 as sqlite
@@ -355,9 +356,11 @@ def set_noproxy_list():
             _my_noproxy_list.append({"match":2,"needle":ip,"netmask":netmask})
 
 def isnoproxy(url):
-    start = url.index("://")
-    end = url.index("/", start + 3)
-    host = url[start+3:end]
+    (scheme, host, path, parm, query, frag) = urlparse.urlparse(url)
+    if '@' in host:
+        user_pass, host = host.split('@', 1)
+    if ':' in host:
+        host, port = host.split(':', 1)
     hostisip = isip(host)
     for item in _my_noproxy_list:
         if hostisip and item["match"] <= 1:
diff --git a/mic/imgcreate/pkgmanagers/yumpkgmgr.py 
b/mic/imgcreate/pkgmanagers/yumpkgmgr.py
index 06ea611..4a5e5b5 100644
--- a/mic/imgcreate/pkgmanagers/yumpkgmgr.py
+++ b/mic/imgcreate/pkgmanagers/yumpkgmgr.py
@@ -35,6 +35,15 @@ from mic.imgcreate.errors import *
 from mic.imgcreate.fs import *
 from mic.imgcreate.creator import ImageCreator
 
+class MyYumRepository(yum.yumRepo.YumRepository):
+    def __init__(self, repoid):
+        yum.yumRepo.YumRepository.__init__(self, repoid)
+        self.sslverify = False
+
+    def _setupGrab(self):
+        self.sslverify = False
+        yum.yumRepo.YumRepository._setupGrab(self)
+
 class Yum(yum.YumBase):
     def __init__(self, creator = None, recording_pkgs=None, target_arch = 
None):
         if not isinstance(creator, ImageCreator):
@@ -83,6 +92,7 @@ class Yum(yum.YumBase):
         conf += "reposdir=\n"
         conf += "failovermethod=priority\n"
         conf += "http_caching=packages\n"
+        conf += "sslverify=0\n"
 
         f = file(confpath, "w+")
         f.write(conf)
@@ -320,7 +330,8 @@ class Yum(yum.YumBase):
             option = option.replace("$arch", rpmUtils.arch.getCanonArch())
             return option
 
-        repo = yum.yumRepo.YumRepository(name)
+        repo = MyYumRepository(name)
+        repo.sslverify = False
 
         """Set proxy"""
         repo.proxy = proxy
_______________________________________________
MeeGo-distribution-tools mailing list
[email protected]
http://lists.meego.com/listinfo/meego-distribution-tools

Reply via email to