Philipp Hörist pushed to branch master at gajim / gajim
Commits:
d0fb8c5b by mjk at 2022-11-30T21:58:07+00:00
fix: Preview: Handle multiple simultaneous certificate verification errors
- - - - -
3 changed files:
- gajim/common/helpers.py
- gajim/common/modules/httpupload.py
- gajim/common/preview.py
Changes:
=====================================
gajim/common/helpers.py
=====================================
@@ -1277,11 +1277,9 @@ def is_retraction_allowed(self_contact:
types.GroupchatParticipant,
return self_contact.affiliation >= contact.affiliation
-def get_tls_error_phrase(tls_error: Gio.TlsCertificateFlags) -> str:
- phrase = GIO_TLS_ERRORS.get(tls_error)
- if phrase is None:
- return GIO_TLS_ERRORS[Gio.TlsCertificateFlags.GENERIC_ERROR]
- return phrase
+def get_tls_error_phrases(tls_errors: set[Gio.TlsCertificateFlags]
+ ) -> list[str]:
+ return [GIO_TLS_ERRORS[err] for err in tls_errors]
class Observable:
=====================================
gajim/common/modules/httpupload.py
=====================================
@@ -46,7 +46,7 @@
from gajim.common.events import HTTPUploadError
from gajim.common.events import HTTPUploadStarted
from gajim.common.i18n import _
-from gajim.common.helpers import get_tls_error_phrase
+from gajim.common.helpers import get_tls_error_phrases
from gajim.common.helpers import get_account_proxy
from gajim.common.const import FTState
from gajim.common.filetransfer import FileTransfer
@@ -318,16 +318,14 @@ def _check_certificate(self,
self._session.cancel_message(message, Soup.Status.CANCELLED)
return
- tls_errors = convert_tls_error_flags(tls_errors)
- if app.cert_store.verify(tls_certificate, tls_errors):
+ tls_error_set = convert_tls_error_flags(tls_errors)
+ if app.cert_store.verify(tls_certificate, tls_error_set):
return
- phrase = ''
- for error in tls_errors:
- phrase = get_tls_error_phrase(error)
- self._log.warning('TLS verification failed: %s', phrase)
-
- transfer.set_error('tls-verification-failed', phrase)
+ phrases = get_tls_error_phrases(tls_error_set)
+ self._log.warning(
+ 'TLS verification failed: %s (0x%02x)', phrases, tls_errors)
+ transfer.set_error('tls-verification-failed', phrases[0])
self._session.cancel_message(message, Soup.Status.CANCELLED)
def _on_finish(self,
=====================================
gajim/common/preview.py
=====================================
@@ -25,6 +25,7 @@
from gi.repository import Gio
from gi.repository import GLib
from gi.repository import Soup
+from nbxmpp.util import convert_tls_error_flags
from gajim.common import app
from gajim.common import configpaths
@@ -32,7 +33,7 @@
from gajim.common.helpers import AdditionalDataDict
from gajim.common.helpers import load_file_async
from gajim.common.helpers import write_file_async
-from gajim.common.helpers import get_tls_error_phrase
+from gajim.common.helpers import get_tls_error_phrases
from gajim.common.helpers import get_account_proxy
from gajim.common.i18n import _
from gajim.common.preview_helpers import aes_decrypt
@@ -442,11 +443,12 @@ def _check_certificate(self,
return
if tls_errors:
- phrase = get_tls_error_phrase(tls_errors)
- log.warning('TLS verification failed: %s', phrase)
+ phrases =
get_tls_error_phrases(convert_tls_error_flags(tls_errors))
+ log.warning(
+ 'TLS verification failed: %s (0x%02x)', phrases, tls_errors)
session = self._get_session(preview.account)
session.cancel_message(message, Soup.Status.CANCELLED)
- preview.info_message = _('TLS verification failed: %s') % phrase
+ preview.info_message = _('TLS verification failed: %s') %
phrases[0]
preview.update_widget()
def _on_content_sniffed(self,
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/d0fb8c5b47620d3d2831ecb529ef4225858c7e27
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/d0fb8c5b47620d3d2831ecb529ef4225858c7e27
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits