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