From e12485dc84aceb03d176e5bd4951e49975089986 Mon Sep 17 00:00:00 2001 From: Florent Date: Wed, 9 Jul 2014 11:45:39 +0200 Subject: [PATCH] Introduce local exception for SSL errors It removes the import of SSL in console applications (SSL -> socket -> base64 -> ...) --- weboob/tools/application/console.py | 5 ++--- weboob/tools/browser/browser.py | 4 ++-- weboob/tools/exceptions.py | 4 ++++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/weboob/tools/application/console.py b/weboob/tools/application/console.py index c010f53c..b70f3c9a 100644 --- a/weboob/tools/application/console.py +++ b/weboob/tools/application/console.py @@ -27,14 +27,13 @@ import subprocess import sys import os import locale -from ssl import SSLError from weboob.capabilities import UserError from weboob.capabilities.account import CapAccount, Account, AccountRegisterError from weboob.core.backendscfg import BackendAlreadyExists from weboob.core.modules import ModuleLoadError from weboob.core.repositories import ModuleInstallError -from weboob.tools.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden +from weboob.tools.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserForbidden, BrowserSSLError from weboob.tools.value import Value, ValueBool, ValueFloat, ValueInt, ValueBackendPassword from weboob.tools.misc import to_unicode from weboob.tools.ordereddict import OrderedDict @@ -545,7 +544,7 @@ class ConsoleApplication(BaseApplication): print(u'Error(%s): %s' % (backend.name, to_unicode(error)), file=sys.stderr) elif isinstance(error, MoreResultsAvailable): print(u'Hint: There are more results for backend %s' % (backend.name), file=sys.stderr) - elif isinstance(error, SSLError): + elif isinstance(error, BrowserSSLError): print(u'FATAL(%s): ' % backend.name + self.BOLD + '/!\ SERVER CERTIFICATE IS INVALID /!\\' + self.NC, file=sys.stderr) else: print(u'Bug(%s): %s' % (backend.name, to_unicode(error)), file=sys.stderr) diff --git a/weboob/tools/browser/browser.py b/weboob/tools/browser/browser.py index b0ccc432..ca575d54 100644 --- a/weboob/tools/browser/browser.py +++ b/weboob/tools/browser/browser.py @@ -49,7 +49,7 @@ from contextlib import closing from gzip import GzipFile import warnings -from weboob.tools.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserPasswordExpired, BrowserForbidden, BrowserBanned, BrowserHTTPNotFound, BrowserHTTPError, FormFieldConversionWarning +from weboob.tools.exceptions import BrowserUnavailable, BrowserIncorrectPassword, BrowserPasswordExpired, BrowserForbidden, BrowserBanned, BrowserHTTPNotFound, BrowserHTTPError, FormFieldConversionWarning, BrowserSSLError from weboob.tools.decorators import retry from weboob.tools.log import getLogger from weboob.tools.mech import ClientForm @@ -409,7 +409,7 @@ class StandardBrowser(mechanize.Browser): if isinstance(hsh, basestring): hsh = [hsh] if certhash not in hsh: - raise ssl.SSLError() + raise BrowserSSLError() def _certhash(self, domain, port=443): certs = ssl.get_server_certificate((domain, port)) diff --git a/weboob/tools/exceptions.py b/weboob/tools/exceptions.py index cc8000d8..a8221a4d 100644 --- a/weboob/tools/exceptions.py +++ b/weboob/tools/exceptions.py @@ -46,6 +46,10 @@ class BrowserHTTPError(BrowserUnavailable): pass +class BrowserSSLError(BrowserUnavailable): + pass + + class ParseError(Exception): pass