Username and password support in proxy auth.

This commit is contained in:
Arun Prakash Jana 2016-11-18 22:06:09 +05:30
parent 1aee1232f7
commit 94bd49aa37
No known key found for this signature in database
GPG Key ID: A75979F35C080412
3 changed files with 21 additions and 6 deletions

View File

@ -239,7 +239,9 @@ Shell completion scripts for Bash, Fish and Zsh can be found in respective subdi
- --stag : search bookmarks by a tag, or show all tags alphabetically (if no arguments). - --stag : search bookmarks by a tag, or show all tags alphabetically (if no arguments).
- Search results are indexed serially. This index is different from actual database index of a bookmark record which is shown in bold within `[]` after the URL. - Search results are indexed serially. This index is different from actual database index of a bookmark record which is shown in bold within `[]` after the URL.
- **Encryption** is optional and manual. AES256 algorithm is used. To use encryption, the database file should be unlocked (-k) before using buku and locked (-l) afterwards. Between these 2 operations, the database file lies unencrypted on the disk, and NOT in memory. Also, note that the database file is *unencrypted on creation*. - **Encryption** is optional and manual. AES256 algorithm is used. To use encryption, the database file should be unlocked (-k) before using buku and locked (-l) afterwards. Between these 2 operations, the database file lies unencrypted on the disk, and NOT in memory. Also, note that the database file is *unencrypted on creation*.
- **Proxy** support: environment variable *https_proxy*, if defined, is used to tunnel data for both http and https connections. The supported format is `http[s]://proxyhost:proxyport/`. - **Proxy** support: environment variable *https_proxy*, if defined, is used to tunnel data for both http and https connections. The supported format is:
http[s]://[username:password@]proxyhost:proxyport/
## GUI integration ## GUI integration

2
buku.1
View File

@ -228,7 +228,7 @@ Overrides the default browser. Ref:
.BI https_proxy .BI https_proxy
If defined, will be used to access http and https resources through the configured proxy. Supported format: If defined, will be used to access http and https resources through the configured proxy. Supported format:
http[s]://proxyhost:proxyport/ http[s]://[username:password@]proxyhost:proxyport/
.SH EXAMPLES .SH EXAMPLES
.PP .PP

21
buku.py
View File

@ -1498,11 +1498,20 @@ def get_PoolManager():
:return: ProxyManager if https_proxy is defined, else PoolManager. :return: ProxyManager if https_proxy is defined, else PoolManager.
''' '''
https_proxy = os.environ.get('https_proxy') proxy = os.environ.get('https_proxy')
print(https_proxy)
if https_proxy: if proxy:
return urllib3.ProxyManager(https_proxy) headers = None
url = urlparse(proxy)
# Strip username and password and create header, if present
if url.username:
proxy = proxy.replace(url.username + ':' + url.password + '@', '')
headers = urllib3.util.make_headers(
basic_auth=url.username + ':' + url.password
)
logger.debug('proxy: [%s]' % proxy)
return urllib3.ProxyManager(proxy, headers=headers)
return urllib3.PoolManager() return urllib3.PoolManager()
@ -1914,6 +1923,10 @@ def open_in_browser(url):
url = url.replace('%22', '\"') url = url.replace('%22', '\"')
if not urlparse(url).scheme: if not urlparse(url).scheme:
# Prefix with 'http://' is no scheme
# Otherwise, opening in browser fails anyway
# We expect http to https redirection
# will happen for https-only websites
logger.error('scheme missing in URI, trying http') logger.error('scheme missing in URI, trying http')
url = '%s%s' % ('http://', url) url = '%s%s' % ('http://', url)