13 """ |
13 """ |
14 |
14 |
15 from i18n import _ |
15 from i18n import _ |
16 import cStringIO, errno, getpass, popen2, re, shutil, sys, tempfile, strutil |
16 import cStringIO, errno, getpass, popen2, re, shutil, sys, tempfile, strutil |
17 import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil |
17 import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil |
|
18 import re, urlparse |
18 |
19 |
19 try: |
20 try: |
20 set = set |
21 set = set |
21 frozenset = frozenset |
22 frozenset = frozenset |
22 except NameError: |
23 except NameError: |
1696 return path |
1697 return path |
1697 |
1698 |
1698 def uirepr(s): |
1699 def uirepr(s): |
1699 # Avoid double backslash in Windows path repr() |
1700 # Avoid double backslash in Windows path repr() |
1700 return repr(s).replace('\\\\', '\\') |
1701 return repr(s).replace('\\\\', '\\') |
|
1702 |
|
1703 def hidepassword(url): |
|
1704 '''replaces the password in the url string by three asterisks (***) |
|
1705 |
|
1706 >>> hidepassword('http://www.example.com/some/path#fragment') |
|
1707 'http://www.example.com/some/path#fragment' |
|
1708 >>> hidepassword('http://me@www.example.com/some/path#fragment') |
|
1709 'http://me@www.example.com/some/path#fragment' |
|
1710 >>> hidepassword('http://me:simplepw@www.example.com/path#frag') |
|
1711 'http://me:***@www.example.com/path#frag' |
|
1712 >>> hidepassword('http://me:complex:pw@www.example.com/path#frag') |
|
1713 'http://me:***@www.example.com/path#frag' |
|
1714 >>> hidepassword('/path/to/repo') |
|
1715 '/path/to/repo' |
|
1716 >>> hidepassword('relative/path/to/repo') |
|
1717 'relative/path/to/repo' |
|
1718 >>> hidepassword('c:\\\\path\\\\to\\\\repo') |
|
1719 'c:\\\\path\\\\to\\\\repo' |
|
1720 >>> hidepassword('c:/path/to/repo') |
|
1721 'c:/path/to/repo' |
|
1722 >>> hidepassword('bundle://path/to/bundle') |
|
1723 'bundle://path/to/bundle' |
|
1724 ''' |
|
1725 url_parts = list(urlparse.urlparse(url)) |
|
1726 host_with_pw_pattern = re.compile('^([^:]*):([^@]*)@(.*)$') |
|
1727 if host_with_pw_pattern.match(url_parts[1]): |
|
1728 url_parts[1] = re.sub(host_with_pw_pattern, r'\1:***@\3', |
|
1729 url_parts[1]) |
|
1730 return urlparse.urlunparse(url_parts) |
|
1731 |