Properly parse urls for ssh-keyscan use

Previously, the get_fqdn() function in known_hosts.py only worked
with urls that started with git@, and ignored any urls that started
with a normal schema type (ie. http:// or ssh://). This patch corrects
that by using urlparse to parse the hostname portion out of urls that
have a proper schema.

Fixes #7474
This commit is contained in:
James Cammarata 2014-06-12 16:16:42 -05:00
parent ac349dce96
commit 3fb3e7e6dc

View file

@ -27,6 +27,7 @@
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import hmac
import urlparse
try:
from hashlib import sha1
@ -56,7 +57,8 @@ def get_fqdn(repo_url):
""" chop the hostname out of a giturl """
result = None
if "@" in repo_url and not repo_url.startswith("http"):
if "@" in repo_url and "://" not in repo_url:
# most likely a git@ or ssh+git@ type URL
repo_url = repo_url.split("@", 1)[1]
if ":" in repo_url:
repo_url = repo_url.split(":")[0]
@ -64,6 +66,11 @@ def get_fqdn(repo_url):
elif "/" in repo_url:
repo_url = repo_url.split("/")[0]
result = repo_url
elif "://" in repo_url:
# this should be something we can parse with urlparse
parts = urlparse.urlparse(repo_url)
if parts[1] != '':
result = parts[1]
return result