Introduce local exception for SSL errors
It removes the import of SSL in console applications (SSL -> socket -> base64 -> ...)
This commit is contained in:
parent
b8453fb0a8
commit
e12485dc84
3 changed files with 8 additions and 5 deletions
|
|
@ -27,14 +27,13 @@ import subprocess
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import locale
|
import locale
|
||||||
from ssl import SSLError
|
|
||||||
|
|
||||||
from weboob.capabilities import UserError
|
from weboob.capabilities import UserError
|
||||||
from weboob.capabilities.account import CapAccount, Account, AccountRegisterError
|
from weboob.capabilities.account import CapAccount, Account, AccountRegisterError
|
||||||
from weboob.core.backendscfg import BackendAlreadyExists
|
from weboob.core.backendscfg import BackendAlreadyExists
|
||||||
from weboob.core.modules import ModuleLoadError
|
from weboob.core.modules import ModuleLoadError
|
||||||
from weboob.core.repositories import ModuleInstallError
|
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.value import Value, ValueBool, ValueFloat, ValueInt, ValueBackendPassword
|
||||||
from weboob.tools.misc import to_unicode
|
from weboob.tools.misc import to_unicode
|
||||||
from weboob.tools.ordereddict import OrderedDict
|
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)
|
print(u'Error(%s): %s' % (backend.name, to_unicode(error)), file=sys.stderr)
|
||||||
elif isinstance(error, MoreResultsAvailable):
|
elif isinstance(error, MoreResultsAvailable):
|
||||||
print(u'Hint: There are more results for backend %s' % (backend.name), file=sys.stderr)
|
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)
|
print(u'FATAL(%s): ' % backend.name + self.BOLD + '/!\ SERVER CERTIFICATE IS INVALID /!\\' + self.NC, file=sys.stderr)
|
||||||
else:
|
else:
|
||||||
print(u'Bug(%s): %s' % (backend.name, to_unicode(error)), file=sys.stderr)
|
print(u'Bug(%s): %s' % (backend.name, to_unicode(error)), file=sys.stderr)
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ from contextlib import closing
|
||||||
from gzip import GzipFile
|
from gzip import GzipFile
|
||||||
import warnings
|
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.decorators import retry
|
||||||
from weboob.tools.log import getLogger
|
from weboob.tools.log import getLogger
|
||||||
from weboob.tools.mech import ClientForm
|
from weboob.tools.mech import ClientForm
|
||||||
|
|
@ -409,7 +409,7 @@ class StandardBrowser(mechanize.Browser):
|
||||||
if isinstance(hsh, basestring):
|
if isinstance(hsh, basestring):
|
||||||
hsh = [hsh]
|
hsh = [hsh]
|
||||||
if certhash not in hsh:
|
if certhash not in hsh:
|
||||||
raise ssl.SSLError()
|
raise BrowserSSLError()
|
||||||
|
|
||||||
def _certhash(self, domain, port=443):
|
def _certhash(self, domain, port=443):
|
||||||
certs = ssl.get_server_certificate((domain, port))
|
certs = ssl.get_server_certificate((domain, port))
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,10 @@ class BrowserHTTPError(BrowserUnavailable):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class BrowserSSLError(BrowserUnavailable):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ParseError(Exception):
|
class ParseError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue