From 6f444b269f48dd3fa4e92d5ff8c17892558f7d63 Mon Sep 17 00:00:00 2001 From: Vratislav Podzimek Date: Mon, 6 Jul 2015 14:31:36 +0200 Subject: [PATCH 7/9] Better handle unsupported URL types (#1232631) If a URL that is not supported by the addon is given, it needs to report that as an issue instead of crashing. Unsupported URLs are either incomplete or not starting with a recognized and supported protocol type. Signed-off-by: Vratislav Podzimek --- org_fedora_oscap/gui/spokes/oscap.py | 15 +++++++++++++++ org_fedora_oscap/ks/oscap.py | 8 +++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py index 5e5a43e..46b742b 100644 --- a/org_fedora_oscap/gui/spokes/oscap.py +++ b/org_fedora_oscap/gui/spokes/oscap.py @@ -41,6 +41,8 @@ from pyanaconda.ui.communication import hubQ from pyanaconda.ui.gui.utils import gtk_action_wait, really_hide, really_show from pyanaconda.ui.gui.utils import set_treeview_selection, fire_gtk_action +from pykickstart.errors import KickstartValueError + # pylint: disable-msg=E0611 from gi.repository import Gdk @@ -287,6 +289,11 @@ class OSCAPSpoke(NormalSpoke): with self._fetch_flag_lock: self._fetching = False return + except KickstartValueError: + self._invalid_url() + with self._fetch_flag_lock: + self._fetching = False + return # pylint: disable-msg=E1101 hubQ.send_message(self.__class__.__name__, @@ -620,6 +627,14 @@ class OSCAPSpoke(NormalSpoke): self._wrong_content() @gtk_action_wait + def _invalid_url(self): + """Callback for informing user about provided URL invalidity.""" + + self._progress_label.set_markup("%s" % _("Invalid or unsupported content " + "URL, please enter a different one.")) + self._wrong_content() + + @gtk_action_wait def _data_fetch_failed(self): """Adapts the UI if fetching data from entered URL failed""" diff --git a/org_fedora_oscap/ks/oscap.py b/org_fedora_oscap/ks/oscap.py index 1b44913..d0c39b8 100644 --- a/org_fedora_oscap/ks/oscap.py +++ b/org_fedora_oscap/ks/oscap.py @@ -275,7 +275,13 @@ class OSCAPdata(AddonData): if self.content_type == "scap-security-guide": raise ValueError("Using scap-security-guide, no single content file") - parts = self.content_url.rsplit("/", 1) + rest = "/anonymous_content" + for prefix in SUPPORTED_URL_PREFIXES: + if self.content_url.startswith(prefix): + rest = self.content_url[len(prefix):] + break + + parts = rest.rsplit("/", 1) if len(parts) != 2: msg = "Unsupported url '%s' in the %s addon" % (self.content_url, self.name) -- 2.4.3