[gnome-continuous-yocto/gnomeostree-3.28-rocko: 3853/8267] bitbake: fetch2/wget: add Basic Auth from netrc to checkstatus()



commit aa15ff631c10228d31ab3655e4e6921088a7804b
Author: Matthew McClintock <msm-oss mcclintock net>
Date:   Fri Dec 16 03:32:42 2016 -0600

    bitbake: fetch2/wget: add Basic Auth from netrc to checkstatus()
    
    fetch2/wget uses urllib to check the status of the mirrors, wget will
    use netrc to pass login and password information however checkstatus
    will skip that.
    
    This adds netrc login and password to checkstatus so both will work the
    same.
    
    (Bitbake rev: 873e33d0479e977520106b65d149ff1799195bf6)
    
    Signed-off-by: Matthew McClintock <msm-oss mcclintock net>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/fetch2/wget.py |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/bitbake/lib/bb/fetch2/wget.py b/bitbake/lib/bb/fetch2/wget.py
index 6dfb27b..88349c9 100644
--- a/bitbake/lib/bb/fetch2/wget.py
+++ b/bitbake/lib/bb/fetch2/wget.py
@@ -305,12 +305,24 @@ class Wget(FetchMethod):
             r = urllib.request.Request(uri)
             r.get_method = lambda: "HEAD"
 
-            if ud.user:
+            def add_basic_auth(login_str, request):
+                '''Adds Basic auth to http request, pass in login:password as string'''
                 import base64
-                encodeuser = base64.b64encode(ud.user.encode('utf-8')).decode("utf-8")
+                encodeuser = base64.b64encode(login_str.encode('utf-8')).decode("utf-8")
                 authheader =  "Basic %s" % encodeuser
                 r.add_header("Authorization", authheader)
 
+            if ud.user:
+                add_basic_auth(ud.user, r)
+
+            try:
+                import netrc, urllib.parse
+                n = netrc.netrc()
+                login, unused, password = n.authenticators(urllib.parse.urlparse(uri).hostname)
+                add_basic_auth("%s:%s" % (login, password), r)
+            except (ImportError, IOError, netrc.NetrcParseError):
+                 pass
+
             opener.open(r)
         except urllib.error.URLError as e:
             if try_again:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]