diff options
| -rw-r--r-- | git_config.py | 9 | ||||
| -rw-r--r-- | project.py | 11 | ||||
| -rw-r--r-- | subcmds/upload.py | 7 |
3 files changed, 20 insertions, 7 deletions
diff --git a/git_config.py b/git_config.py index 8c247394..8f666e6d 100644 --- a/git_config.py +++ b/git_config.py | |||
| @@ -20,6 +20,7 @@ import errno | |||
| 20 | import json | 20 | import json |
| 21 | import os | 21 | import os |
| 22 | import re | 22 | import re |
| 23 | import ssl | ||
| 23 | import subprocess | 24 | import subprocess |
| 24 | import sys | 25 | import sys |
| 25 | try: | 26 | try: |
| @@ -612,7 +613,7 @@ class Remote(object): | |||
| 612 | connectionUrl = self._InsteadOf() | 613 | connectionUrl = self._InsteadOf() |
| 613 | return _preconnect(connectionUrl) | 614 | return _preconnect(connectionUrl) |
| 614 | 615 | ||
| 615 | def ReviewUrl(self, userEmail): | 616 | def ReviewUrl(self, userEmail, validate_certs): |
| 616 | if self._review_url is None: | 617 | if self._review_url is None: |
| 617 | if self.review is None: | 618 | if self.review is None: |
| 618 | return None | 619 | return None |
| @@ -645,7 +646,11 @@ class Remote(object): | |||
| 645 | else: | 646 | else: |
| 646 | try: | 647 | try: |
| 647 | info_url = u + 'ssh_info' | 648 | info_url = u + 'ssh_info' |
| 648 | info = urllib.request.urlopen(info_url).read() | 649 | if not validate_certs: |
| 650 | context = ssl._create_unverified_context() | ||
| 651 | info = urllib.request.urlopen(info_url, context=context).read() | ||
| 652 | else: | ||
| 653 | info = urllib.request.urlopen(info_url).read() | ||
| 649 | if info == 'NOT_AVAILABLE' or '<' in info: | 654 | if info == 'NOT_AVAILABLE' or '<' in info: |
| 650 | # If `info` contains '<', we assume the server gave us some sort | 655 | # If `info` contains '<', we assume the server gave us some sort |
| 651 | # of HTML response back, like maybe a login page. | 656 | # of HTML response back, like maybe a login page. |
| @@ -179,14 +179,16 @@ class ReviewableBranch(object): | |||
| 179 | draft=False, | 179 | draft=False, |
| 180 | private=False, | 180 | private=False, |
| 181 | wip=False, | 181 | wip=False, |
| 182 | dest_branch=None): | 182 | dest_branch=None, |
| 183 | validate_certs=True): | ||
| 183 | self.project.UploadForReview(self.name, | 184 | self.project.UploadForReview(self.name, |
| 184 | people, | 185 | people, |
| 185 | auto_topic=auto_topic, | 186 | auto_topic=auto_topic, |
| 186 | draft=draft, | 187 | draft=draft, |
| 187 | private=private, | 188 | private=private, |
| 188 | wip=wip, | 189 | wip=wip, |
| 189 | dest_branch=dest_branch) | 190 | dest_branch=dest_branch, |
| 191 | validate_certs=validate_certs) | ||
| 190 | 192 | ||
| 191 | def GetPublishedRefs(self): | 193 | def GetPublishedRefs(self): |
| 192 | refs = {} | 194 | refs = {} |
| @@ -1114,7 +1116,8 @@ class Project(object): | |||
| 1114 | draft=False, | 1116 | draft=False, |
| 1115 | private=False, | 1117 | private=False, |
| 1116 | wip=False, | 1118 | wip=False, |
| 1117 | dest_branch=None): | 1119 | dest_branch=None, |
| 1120 | validate_certs=True): | ||
| 1118 | """Uploads the named branch for code review. | 1121 | """Uploads the named branch for code review. |
| 1119 | """ | 1122 | """ |
| 1120 | if branch is None: | 1123 | if branch is None: |
| @@ -1139,7 +1142,7 @@ class Project(object): | |||
| 1139 | branch.remote.projectname = self.name | 1142 | branch.remote.projectname = self.name |
| 1140 | branch.remote.Save() | 1143 | branch.remote.Save() |
| 1141 | 1144 | ||
| 1142 | url = branch.remote.ReviewUrl(self.UserEmail) | 1145 | url = branch.remote.ReviewUrl(self.UserEmail, validate_certs) |
| 1143 | if url is None: | 1146 | if url is None: |
| 1144 | raise UploadError('review not configured') | 1147 | raise UploadError('review not configured') |
| 1145 | cmd = ['push'] | 1148 | cmd = ['push'] |
diff --git a/subcmds/upload.py b/subcmds/upload.py index 61b18bc2..60feff7a 100644 --- a/subcmds/upload.py +++ b/subcmds/upload.py | |||
| @@ -181,6 +181,9 @@ Gerrit Code Review: http://code.google.com/p/gerrit/ | |||
| 181 | # Never run upload hooks, but upload anyway (AKA bypass hooks). | 181 | # Never run upload hooks, but upload anyway (AKA bypass hooks). |
| 182 | # - no-verify=True, verify=True: | 182 | # - no-verify=True, verify=True: |
| 183 | # Invalid | 183 | # Invalid |
| 184 | p.add_option('--no-cert-checks', | ||
| 185 | dest='validate_certs', action='store_false', default=True, | ||
| 186 | help='Disable verifying ssl certs (unsafe).') | ||
| 184 | p.add_option('--no-verify', | 187 | p.add_option('--no-verify', |
| 185 | dest='bypass_hooks', action='store_true', | 188 | dest='bypass_hooks', action='store_true', |
| 186 | help='Do not run the upload hook.') | 189 | help='Do not run the upload hook.') |
| @@ -389,7 +392,9 @@ Gerrit Code Review: http://code.google.com/p/gerrit/ | |||
| 389 | draft=opt.draft, | 392 | draft=opt.draft, |
| 390 | private=opt.private, | 393 | private=opt.private, |
| 391 | wip=opt.wip, | 394 | wip=opt.wip, |
| 392 | dest_branch=destination) | 395 | dest_branch=destination, |
| 396 | validate_certs=opt.validate_certs) | ||
| 397 | |||
| 393 | branch.uploaded = True | 398 | branch.uploaded = True |
| 394 | except UploadError as e: | 399 | except UploadError as e: |
| 395 | branch.error = e | 400 | branch.error = e |
