Merge pull request #14735 from jsok/open_url-netrc
Lookup netrc for credentials in open_url
This commit is contained in:
commit
c09e085480
1 changed files with 19 additions and 3 deletions
|
@ -258,6 +258,7 @@ if not HAS_MATCH_HOSTNAME:
|
|||
|
||||
|
||||
import httplib
|
||||
import netrc
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
@ -691,6 +692,9 @@ def open_url(url, data=None, headers=None, method=None, use_proxy=True,
|
|||
if parsed[0] != 'ftp':
|
||||
username = url_username
|
||||
|
||||
if headers is None:
|
||||
headers = {}
|
||||
|
||||
if username:
|
||||
password = url_password
|
||||
netloc = parsed[1]
|
||||
|
@ -723,10 +727,19 @@ def open_url(url, data=None, headers=None, method=None, use_proxy=True,
|
|||
handlers.append(authhandler)
|
||||
|
||||
elif username and force_basic_auth:
|
||||
if headers is None:
|
||||
headers = {}
|
||||
headers["Authorization"] = basic_auth_header(username, password)
|
||||
|
||||
headers["Authorization"] = "Basic %s" % base64.b64encode("%s:%s" % (username, password))
|
||||
else:
|
||||
try:
|
||||
rc = netrc.netrc(os.environ.get('NETRC'))
|
||||
login = rc.authenticators(parsed[1])
|
||||
except IOError:
|
||||
login = None
|
||||
|
||||
if login:
|
||||
username, _, password = login
|
||||
if username and password:
|
||||
headers["Authorization"] = basic_auth_header(username, password)
|
||||
|
||||
if not use_proxy:
|
||||
proxyhandler = urllib2.ProxyHandler({})
|
||||
|
@ -791,6 +804,9 @@ def open_url(url, data=None, headers=None, method=None, use_proxy=True,
|
|||
# Module-related functions
|
||||
#
|
||||
|
||||
def basic_auth_header(username, password):
|
||||
return "Basic %s" % base64.b64encode("%s:%s" % (username, password))
|
||||
|
||||
def url_argument_spec():
|
||||
'''
|
||||
Creates an argument spec that can be used with any module
|
||||
|
|
Loading…
Reference in a new issue