[oe-commits] [bitbake] 08/18: wget: allow basic http auth for SSTATE_MIRRORS

git at git.openembedded.org git at git.openembedded.org
Wed Aug 31 10:54:14 UTC 2016


rpurdie pushed a commit to branch master-next
in repository bitbake.

commit 80e98b3a3886391c8364c3ac793e0e0b94d1420d
Author: Stephano Cetola <stephano.cetola at linux.intel.com>
AuthorDate: Fri Aug 26 10:41:43 2016 -0700

    wget: allow basic http auth for SSTATE_MIRRORS
    
    If http basic auth creds were added to sstate mirrors like so:
    
    https://foo.com/sstate/PATH;user=foo:bar;downloadfilename=PATH
    
    The sstate mirror check would silently fail with 401 unauthorized.
    This patch allows both the check, and the wget download to succeed by
    checking for user credentials and if present adding the correct
    headers, or wget params as needed.
    
    [ YOCTO #9815 ]
    
    Signed-off-by: Stephano Cetola <stephano.cetola at linux.intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/fetch2/wget.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/lib/bb/fetch2/wget.py b/lib/bb/fetch2/wget.py
index 6b60d9b..ecb946a 100644
--- a/lib/bb/fetch2/wget.py
+++ b/lib/bb/fetch2/wget.py
@@ -108,6 +108,10 @@ class Wget(FetchMethod):
             bb.utils.mkdirhier(os.path.dirname(dldir + os.sep + ud.localfile))
             fetchcmd += " -O " + dldir + os.sep + ud.localfile
 
+        if ud.user:
+            up = ud.user.split(":")
+            fetchcmd += " --user=%s --password=%s --auth-no-challenge" % (up[0],up[1])
+
         uri = ud.url.split(";")[0]
         if os.path.exists(ud.localpath):
             # file exists, but we didnt complete it.. trying again..
@@ -300,6 +304,13 @@ class Wget(FetchMethod):
             uri = ud.url.split(";")[0]
             r = urllib.request.Request(uri)
             r.get_method = lambda: "HEAD"
+
+            if ud.user:
+                import base64
+                encodeuser = base64.b64encode(ud.user.encode('utf-8')).decode("utf-8")
+                authheader =  "Basic %s" % encodeuser
+                r.add_header("Authorization", authheader)
+
             opener.open(r)
         except urllib.error.URLError as e:
             if try_again:

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list