|
12 | 12 | try: |
13 | 13 | from urllib import parse |
14 | 14 | except ImportError: |
15 | | - from urlparse import urlparse as parse |
| 15 | + import urlparse as parse |
| 16 | + import urllib |
| 17 | + |
16 | 18 | from .log import logger |
17 | 19 |
|
18 | 20 |
|
@@ -123,38 +125,42 @@ def strip_secrets(qp, matcher, kwlist): |
123 | 125 | else: |
124 | 126 | query = qp |
125 | 127 |
|
126 | | - params = parse.parse_qs(query, keep_blank_values=True) |
| 128 | + params = parse.parse_qsl(query, keep_blank_values=True) |
127 | 129 | redacted = ['<redacted>'] |
128 | 130 |
|
129 | 131 | if matcher == 'equals-ignore-case': |
130 | 132 | for keyword in kwlist: |
131 | | - for key in params.keys(): |
132 | | - if key.lower() == keyword.lower(): |
133 | | - params[key] = redacted |
| 133 | + for index, kv in enumerate(params): |
| 134 | + if kv[0].lower() == keyword.lower(): |
| 135 | + params[index] = (kv[0], redacted) |
134 | 136 | elif matcher == 'equals': |
135 | 137 | for keyword in kwlist: |
136 | | - if keyword in params: |
137 | | - params[keyword] = redacted |
| 138 | + for index, kv in enumerate(params): |
| 139 | + if kv[0] == keyword: |
| 140 | + params[index] = (kv[0], redacted) |
138 | 141 | elif matcher == 'contains-ignore-case': |
139 | 142 | for keyword in kwlist: |
140 | | - for key in params.keys(): |
141 | | - if keyword.lower() in key.lower(): |
142 | | - params[key] = redacted |
| 143 | + for index, kv in enumerate(params): |
| 144 | + if keyword.lower() in kv[0].lower(): |
| 145 | + params[index] = (kv[0], redacted) |
143 | 146 | elif matcher == 'contains': |
144 | 147 | for keyword in kwlist: |
145 | | - for key in params.keys(): |
146 | | - if keyword in key: |
147 | | - params[key] = redacted |
| 148 | + for index, kv in enumerate(params): |
| 149 | + if keyword in kv[0]: |
| 150 | + params[index] = (kv[0], redacted) |
148 | 151 | elif matcher == 'regex': |
149 | 152 | for regexp in kwlist: |
150 | | - for key in params.keys(): |
151 | | - if re.match(regexp, key): |
152 | | - params[key] = redacted |
| 153 | + for index, kv in enumerate(params): |
| 154 | + if re.match(regexp, kv[0]): |
| 155 | + params[index] = (kv[0], redacted) |
153 | 156 | else: |
154 | 157 | logger.debug("strip_secrets: unknown matcher") |
155 | 158 | return qp |
156 | 159 |
|
157 | | - result = parse.urlencode(params, doseq=True) |
| 160 | + if sys.version_info < (3, 0): |
| 161 | + result = urllib.urlencode(params, doseq=True) |
| 162 | + else: |
| 163 | + result = parse.urlencode(params, doseq=True) |
158 | 164 | query = parse.unquote(result) |
159 | 165 |
|
160 | 166 | if path: |
|
0 commit comments