From c45b98d862ba441bcd1557d2619b936722b62e8c Mon Sep 17 00:00:00 2001 From: Friedrich Lindenberg Date: Fri, 12 Feb 2016 17:58:55 +0100 Subject: [PATCH] remove password from conn URLs, fixes #157 --- dataset/persistence/database.py | 4 ++-- dataset/persistence/util.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dataset/persistence/database.py b/dataset/persistence/database.py index 019348a..02ed958 100644 --- a/dataset/persistence/database.py +++ b/dataset/persistence/database.py @@ -16,7 +16,7 @@ from alembic.migration import MigrationContext from alembic.operations import Operations from dataset.persistence.table import Table -from dataset.persistence.util import ResultIter, row_type +from dataset.persistence.util import ResultIter, row_type, safe_url from dataset.util import DatasetException log = logging.getLogger(__name__) @@ -281,4 +281,4 @@ class Database(object): row_type=self.row_type) def __repr__(self): - return '' % self.url + return '' % safe_url(self.url) diff --git a/dataset/persistence/util.py b/dataset/persistence/util.py index b67a348..e73cc6d 100644 --- a/dataset/persistence/util.py +++ b/dataset/persistence/util.py @@ -1,4 +1,5 @@ from datetime import datetime +import urlparse try: from collections import OrderedDict @@ -76,3 +77,12 @@ class ResultIter(object): def __iter__(self): return self + + +def safe_url(url): + """ Remove password from printed connection URLs. """ + parsed = urlparse.urlparse(url) + if parsed.password is not None: + pwd = ':%s@' % parsed.password + url = url.replace(pwd, ':*****@') + return url