import oscap-anaconda-addon-2.0.0-8.el9
This commit is contained in:
commit
b253cbc57f
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
SOURCES/addon-dbus-data.zip
|
||||
SOURCES/oscap-anaconda-addon-2.0.0.tar.gz
|
2
.oscap-anaconda-addon.metadata
Normal file
2
.oscap-anaconda-addon.metadata
Normal file
@ -0,0 +1,2 @@
|
||||
5645cafa41192e05989f7333db23e20bb7f35604 SOURCES/addon-dbus-data.zip
|
||||
d04955d3fcae16a86087af731e837d5ce06fe349 SOURCES/oscap-anaconda-addon-2.0.0.tar.gz
|
1526
SOURCES/lang.patch
Normal file
1526
SOURCES/lang.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,39 @@
|
||||
From 20843d815a82d10cba773f4e10e9a45c57d5e12e Mon Sep 17 00:00:00 2001
|
||||
From: Vendula Poncova <vponcova@redhat.com>
|
||||
Date: Wed, 18 Aug 2021 10:54:20 +0200
|
||||
Subject: [PATCH] Don't show the OSCAP spoke if the OSCAP DBus module is
|
||||
disabled
|
||||
|
||||
Add-ons can be disabled in the Anaconda configuration files. Without the fix,
|
||||
the OSCAP DBus module is started on demand by the OSCAP spoke even though it
|
||||
shouldn't be activated. In the future, it will result in a failure of the
|
||||
installer.
|
||||
|
||||
Related: rhbz#1994003
|
||||
---
|
||||
org_fedora_oscap/gui/spokes/oscap.py | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
index 36c8d7a..fe26076 100644
|
||||
--- a/org_fedora_oscap/gui/spokes/oscap.py
|
||||
+++ b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
@@ -36,6 +36,7 @@
|
||||
from org_fedora_oscap.structures import PolicyData
|
||||
|
||||
from pyanaconda.modules.common.constants.services import USERS
|
||||
+from pyanaconda.modules.common.util import is_module_available
|
||||
from pyanaconda.threading import threadMgr, AnacondaThread
|
||||
from pyanaconda.ui.gui.spokes import NormalSpoke
|
||||
from pyanaconda.ui.communication import hubQ
|
||||
@@ -203,6 +204,10 @@ class OSCAPSpoke(NormalSpoke):
|
||||
# as it is displayed inside the spoke as the spoke label,
|
||||
# and spoke labels are all uppercase by a convention.
|
||||
|
||||
+ @classmethod
|
||||
+ def should_run(cls, environment, data):
|
||||
+ return is_module_available(OSCAP)
|
||||
+
|
||||
# methods defined by API and helper methods #
|
||||
def __init__(self, data, storage, payload):
|
||||
"""
|
@ -0,0 +1,14 @@
|
||||
diff --git a/org_fedora_oscap/content_discovery.py b/org_fedora_oscap/content_discovery.py
|
||||
index bc14ef1..ccfe6c8 100644
|
||||
--- a/org_fedora_oscap/content_discovery.py
|
||||
+++ b/org_fedora_oscap/content_discovery.py
|
||||
@@ -225,7 +225,8 @@ def _gather_available_files(self, actually_fetched_content, dest_filename):
|
||||
if not dest_filename: # using scap-security-guide
|
||||
fpaths = [self.DEFAULT_SSG_DATA_STREAM_PATH]
|
||||
else: # Using downloaded XCCDF/OVAL/DS/tailoring
|
||||
- fpaths = glob(str(self.CONTENT_DOWNLOAD_LOCATION / "*.xml"))
|
||||
+ fpaths = pathlib.Path(self.CONTENT_DOWNLOAD_LOCATION).rglob("*")
|
||||
+ fpaths = [str(p) for p in fpaths if p.is_file()]
|
||||
else:
|
||||
dest_filename = pathlib.Path(dest_filename)
|
||||
# RPM is an archive at this phase
|
@ -0,0 +1,22 @@
|
||||
From c72b95146650b0debc36b8da546b60a9d5482ab3 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Tyc <matyc@redhat.com>
|
||||
Date: Fri, 15 Oct 2021 15:28:24 +0200
|
||||
Subject: [PATCH] Fix bad destination for the parsed content fingerprint
|
||||
|
||||
---
|
||||
org_fedora_oscap/service/kickstart.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/service/kickstart.py b/org_fedora_oscap/service/kickstart.py
|
||||
index d6f22ac..dc1a100 100644
|
||||
--- a/org_fedora_oscap/service/kickstart.py
|
||||
+++ b/org_fedora_oscap/service/kickstart.py
|
||||
@@ -140,7 +140,7 @@ def _parse_fingerprint(self, value):
|
||||
msg = "Unsupported fingerprint"
|
||||
raise KickstartValueError(msg)
|
||||
|
||||
- self.fingerprint = value
|
||||
+ self.policy_data.fingerprint = value
|
||||
|
||||
def _parse_certificates(self, value):
|
||||
self.policy_data.certificates = value
|
@ -0,0 +1,32 @@
|
||||
From 56806b88b139d62276e8522bb3daf7d4fb02df84 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Tyc <matyc@redhat.com>
|
||||
Date: Fri, 15 Oct 2021 15:05:55 +0200
|
||||
Subject: [PATCH] Represent unselected profile by an empty string
|
||||
|
||||
None can't be passed via the DBUS interface.
|
||||
---
|
||||
org_fedora_oscap/gui/spokes/oscap.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
index 4425757..36c8d7a 100644
|
||||
--- a/org_fedora_oscap/gui/spokes/oscap.py
|
||||
+++ b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
@@ -244,7 +244,7 @@ def __init__(self, data, storage, payload):
|
||||
self.__old_root_pw = None
|
||||
|
||||
# used to check if the profile was changed or not
|
||||
- self._active_profile = None
|
||||
+ self._active_profile = ""
|
||||
|
||||
# prevent multiple simultaneous data fetches
|
||||
self._fetching = False
|
||||
@@ -719,7 +719,7 @@ def _unselect_profile(self, profile_id):
|
||||
self._revert_rootpw_changes()
|
||||
self._rule_data = None
|
||||
|
||||
- self._active_profile = None
|
||||
+ self._active_profile = ""
|
||||
|
||||
@async_action_wait
|
||||
def _select_profile(self, profile_id):
|
@ -0,0 +1,29 @@
|
||||
From a306b736f144260721dfae25f0b268353d6760c5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jan=20=C4=8Cern=C3=BD?= <jcerny@redhat.com>
|
||||
Date: Thu, 25 Nov 2021 15:15:14 +0100
|
||||
Subject: [PATCH] Fix tailoring
|
||||
|
||||
Fixes an error during installation caused during tailoring
|
||||
|
||||
Addressing:
|
||||
dasbus.error.DBusError: Content evaluation and remediation with the oscap tool failed: OpenSCAP Error: Unable to open file: '/tmp/openscap_data/usr/share/xml/scap/sc_tailoring/tailoring-xccdf.xml' [/builddir/build/BUILD/openscap-1.3.5/src/source/oscap_source.c:288]
|
||||
|
||||
This is proabably a typo coming from 87509fb6ee22b6eeaa66ea4ae85ebf5abd353e14
|
||||
which is only in rhel9-branch.
|
||||
---
|
||||
org_fedora_oscap/service/oscap.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/service/oscap.py b/org_fedora_oscap/service/oscap.py
|
||||
index 4237a47..65da08b 100755
|
||||
--- a/org_fedora_oscap/service/oscap.py
|
||||
+++ b/org_fedora_oscap/service/oscap.py
|
||||
@@ -221,7 +221,7 @@ def install_with_tasks(self):
|
||||
sysroot=conf.target.system_root,
|
||||
policy_data=self.policy_data,
|
||||
target_content_path=common.get_postinst_content_path(self.policy_data),
|
||||
- target_tailoring_path=common.get_preinst_tailoring_path(self.policy_data)
|
||||
+ target_tailoring_path=common.get_postinst_tailoring_path(self.policy_data)
|
||||
)
|
||||
]
|
||||
|
460
SOURCES/oscap-anaconda-addon-2.0.1-various_bugfixes-PR_166.patch
Normal file
460
SOURCES/oscap-anaconda-addon-2.0.1-various_bugfixes-PR_166.patch
Normal file
@ -0,0 +1,460 @@
|
||||
From aeb0e2ed5a524c5d4e5b72b2b11ea74a5119d45a Mon Sep 17 00:00:00 2001
|
||||
From: Matej Tyc <matyc@redhat.com>
|
||||
Date: Mon, 2 Aug 2021 17:23:17 +0200
|
||||
Subject: [PATCH 1/3] Improve logging
|
||||
|
||||
Make all log entries identifiable easily.
|
||||
---
|
||||
org_fedora_oscap/common.py | 4 ++--
|
||||
org_fedora_oscap/content_discovery.py | 16 +++++++++++-----
|
||||
org_fedora_oscap/gui/spokes/oscap.py | 19 ++++++++++++-------
|
||||
org_fedora_oscap/rule_handling.py | 8 ++++----
|
||||
org_fedora_oscap/service/installation.py | 6 +++---
|
||||
org_fedora_oscap/service/kickstart.py | 2 +-
|
||||
org_fedora_oscap/service/oscap.py | 12 ++++++------
|
||||
7 files changed, 39 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/common.py b/org_fedora_oscap/common.py
|
||||
index a307baa..c432168 100644
|
||||
--- a/org_fedora_oscap/common.py
|
||||
+++ b/org_fedora_oscap/common.py
|
||||
@@ -564,7 +564,7 @@ def get_content_name(data):
|
||||
def get_raw_preinst_content_path(data):
|
||||
"""Path to the raw (unextracted, ...) pre-installation content file"""
|
||||
if data.content_type == "scap-security-guide":
|
||||
- log.debug("Using scap-security-guide, no single content file")
|
||||
+ log.debug("OSCAP addon: Using scap-security-guide, no single content file")
|
||||
return None
|
||||
|
||||
content_name = get_content_name(data)
|
||||
@@ -667,7 +667,7 @@ def set_packages_data(data: PackagesConfigurationData):
|
||||
payload_proxy = get_payload_proxy()
|
||||
|
||||
if payload_proxy.Type != PAYLOAD_TYPE_DNF:
|
||||
- log.debug("The payload doesn't support packages.")
|
||||
+ log.debug("OSCAP addon: The payload doesn't support packages.")
|
||||
return
|
||||
|
||||
return payload_proxy.SetPackages(
|
||||
diff --git a/org_fedora_oscap/content_discovery.py b/org_fedora_oscap/content_discovery.py
|
||||
index 894f3e1..bc14ef1 100644
|
||||
--- a/org_fedora_oscap/content_discovery.py
|
||||
+++ b/org_fedora_oscap/content_discovery.py
|
||||
@@ -98,7 +98,7 @@ def fetch_content(self, what_if_fail, ca_certs_path=""):
|
||||
def _fetch_files(self, scheme, path, destdir, ca_certs_path, what_if_fail):
|
||||
with self.activity_lock:
|
||||
if self.now_fetching_or_processing:
|
||||
- msg = "Strange, it seems that we are already fetching something."
|
||||
+ msg = "OSCAP Addon: Strange, it seems that we are already fetching something."
|
||||
log.warn(msg)
|
||||
return
|
||||
self.now_fetching_or_processing = True
|
||||
@@ -175,7 +175,7 @@ def finish_content_fetch(self, fetching_thread_name, fingerprint, report_callbac
|
||||
|
||||
def _verify_fingerprint(self, dest_filename, fingerprint=""):
|
||||
if not fingerprint:
|
||||
- log.info("No fingerprint provided, skipping integrity check")
|
||||
+ log.info("OSCAP Addon: No fingerprint provided, skipping integrity check")
|
||||
return
|
||||
|
||||
hash_obj = utils.get_hashing_algorithm(fingerprint)
|
||||
@@ -183,15 +183,19 @@ def _verify_fingerprint(self, dest_filename, fingerprint=""):
|
||||
hash_obj)
|
||||
if digest != fingerprint:
|
||||
log.error(
|
||||
+ "OSCAP Addon: "
|
||||
f"File {dest_filename} failed integrity check - assumed a "
|
||||
f"{hash_obj.name} hash and '{fingerprint}', got '{digest}'"
|
||||
)
|
||||
- msg = _(f"Integrity check of the content failed - {hash_obj.name} hash didn't match")
|
||||
+ msg = _(f"OSCAP Addon: Integrity check of the content failed - {hash_obj.name} hash didn't match")
|
||||
raise content_handling.ContentCheckError(msg)
|
||||
log.info(f"Integrity check passed using {hash_obj.name} hash")
|
||||
|
||||
def _finish_actual_fetch(self, wait_for, fingerprint, report_callback, dest_filename):
|
||||
- threadMgr.wait(wait_for)
|
||||
+ if wait_for:
|
||||
+ log.info(f"OSCAP Addon: Waiting for thread {wait_for}")
|
||||
+ threadMgr.wait(wait_for)
|
||||
+ log.info(f"OSCAP Addon: Finished waiting for thread {wait_for}")
|
||||
actually_fetched_content = wait_for is not None
|
||||
|
||||
if fingerprint and dest_filename:
|
||||
@@ -201,6 +205,7 @@ def _finish_actual_fetch(self, wait_for, fingerprint, report_callback, dest_file
|
||||
|
||||
structured_content = ObtainedContent(self.CONTENT_DOWNLOAD_LOCATION)
|
||||
content_type = self.get_content_type(str(dest_filename))
|
||||
+ log.info(f"OSCAP Addon: started to look at the content")
|
||||
if content_type in ("archive", "rpm"):
|
||||
structured_content.add_content_archive(dest_filename)
|
||||
|
||||
@@ -211,6 +216,7 @@ def _finish_actual_fetch(self, wait_for, fingerprint, report_callback, dest_file
|
||||
if fingerprint and dest_filename:
|
||||
structured_content.record_verification(dest_filename)
|
||||
|
||||
+ log.info(f"OSCAP Addon: finished looking at the content")
|
||||
return structured_content
|
||||
|
||||
def _gather_available_files(self, actually_fetched_content, dest_filename):
|
||||
@@ -232,7 +238,7 @@ def _gather_available_files(self, actually_fetched_content, dest_filename):
|
||||
)
|
||||
except common.ExtractionError as err:
|
||||
msg = f"Failed to extract the '{dest_filename}' archive: {str(err)}"
|
||||
- log.error(msg)
|
||||
+ log.error("OSCAP Addon: " + msg)
|
||||
raise err
|
||||
|
||||
elif content_type == "file":
|
||||
diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
index 76e508f..332e956 100644
|
||||
--- a/org_fedora_oscap/gui/spokes/oscap.py
|
||||
+++ b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
@@ -331,6 +331,7 @@ def initialize(self):
|
||||
|
||||
# if no content was specified and SSG is available, use it
|
||||
if not self._policy_data.content_type and common.ssg_available():
|
||||
+ log.info("OSCAP Addon: Defaulting to local content")
|
||||
self._policy_data.content_type = "scap-security-guide"
|
||||
self._policy_data.content_path = common.SSG_DIR + common.SSG_CONTENT
|
||||
|
||||
@@ -351,7 +352,7 @@ def initialize(self):
|
||||
self._fetch_data_and_initialize()
|
||||
|
||||
def _handle_error(self, exception):
|
||||
- log.error(str(exception))
|
||||
+ log.error("OSCAP Addon: " + str(exception))
|
||||
if isinstance(exception, KickstartValueError):
|
||||
self._invalid_url()
|
||||
elif isinstance(exception, common.OSCAPaddonNetworkError):
|
||||
@@ -365,7 +366,7 @@ def _handle_error(self, exception):
|
||||
elif isinstance(exception, content_handling.ContentCheckError):
|
||||
self._integrity_check_failed()
|
||||
else:
|
||||
- log.exception("Unknown exception occurred", exc_info=exception)
|
||||
+ log.exception("OSCAP Addon: Unknown exception occurred", exc_info=exception)
|
||||
self._general_content_problem()
|
||||
|
||||
def _render_selected(self, column, renderer, model, itr, user_data=None):
|
||||
@@ -385,6 +386,7 @@ def _fetch_data_and_initialize(self):
|
||||
|
||||
thread_name = None
|
||||
if self._policy_data.content_url and self._policy_data.content_type != "scap-security-guide":
|
||||
+ log.info(f"OSCAP Addon: Actually fetching content from somewhere")
|
||||
thread_name = self.content_bringer.fetch_content(
|
||||
self._handle_error, self._policy_data.certificates)
|
||||
|
||||
@@ -442,7 +444,7 @@ def update_progress_label(msg):
|
||||
msg += f" with tailoring {preinst_tailoring_path}"
|
||||
else:
|
||||
msg += " without considering tailoring"
|
||||
- log.info(msg)
|
||||
+ log.info("OSCAP Addon: " + msg)
|
||||
|
||||
self._content_handler = scap_content_handler.SCAPContentHandler(
|
||||
preinst_content_path,
|
||||
@@ -456,7 +458,7 @@ def update_progress_label(msg):
|
||||
|
||||
return
|
||||
|
||||
- log.info("OAA: Done with analysis")
|
||||
+ log.info("OSCAP Addon: Done with analysis")
|
||||
|
||||
self._ds_checklists = self._content_handler.get_data_streams_checklists()
|
||||
if self._using_ds:
|
||||
@@ -592,7 +594,7 @@ def _update_profiles_store(self):
|
||||
try:
|
||||
profiles = self._content_handler.get_profiles()
|
||||
except scap_content_handler.SCAPContentHandlerError as e:
|
||||
- log.warning(str(e))
|
||||
+ log.warning("OSCAP Addon: " + str(e))
|
||||
self._invalid_content()
|
||||
|
||||
for profile in profiles:
|
||||
@@ -736,7 +738,7 @@ def _select_profile(self, profile_id):
|
||||
ds, xccdf, common.get_preinst_tailoring_path(self._policy_data))
|
||||
except common.OSCAPaddonError as exc:
|
||||
log.error(
|
||||
- "Failed to get rules for the profile '{}': {}"
|
||||
+ "OSCAP Addon: Failed to get rules for the profile '{}': {}"
|
||||
.format(profile_id, str(exc)))
|
||||
self._set_error(
|
||||
"Failed to get rules for the profile '{}'"
|
||||
@@ -908,6 +910,7 @@ def refresh(self):
|
||||
def _refresh_ui(self):
|
||||
"""Refresh the UI elements."""
|
||||
if not self._content_defined:
|
||||
+ log.info("OSCAP Addon: Content not defined")
|
||||
# hide the control buttons
|
||||
really_hide(self._control_buttons)
|
||||
|
||||
@@ -1156,7 +1159,9 @@ def on_fetch_button_clicked(self, *args):
|
||||
with self._fetch_flag_lock:
|
||||
if self._fetching:
|
||||
# some other fetching/pre-processing running, give up
|
||||
- log.warn("Clicked the fetch button, although the GUI is in the fetching mode.")
|
||||
+ log.warn(
|
||||
+ "OSCAP Addon: "
|
||||
+ "Clicked the fetch button, although the GUI is in the fetching mode.")
|
||||
return
|
||||
|
||||
# prevent user from changing the URL in the meantime
|
||||
diff --git a/org_fedora_oscap/rule_handling.py b/org_fedora_oscap/rule_handling.py
|
||||
index c478aa0..244aac8 100644
|
||||
--- a/org_fedora_oscap/rule_handling.py
|
||||
+++ b/org_fedora_oscap/rule_handling.py
|
||||
@@ -261,7 +261,7 @@ def new_rule(self, rule):
|
||||
try:
|
||||
actions[first_word](rule)
|
||||
except (ModifiedOptionParserException, KeyError) as e:
|
||||
- log.warning("Unknown OSCAP Addon rule '{}': {}".format(rule, e))
|
||||
+ log.warning("OSCAP Addon: Unknown OSCAP Addon rule '{}': {}".format(rule, e))
|
||||
|
||||
def eval_rules(self, ksdata, storage, report_only=False):
|
||||
""":see: RuleHandler.eval_rules"""
|
||||
@@ -565,7 +565,7 @@ def eval_rules(self, ksdata, storage, report_only=False):
|
||||
# root password set
|
||||
if users_proxy.IsRootPasswordCrypted:
|
||||
msg = _("cannot check root password length (password is crypted)")
|
||||
- log.warning("cannot check root password length (password is crypted)")
|
||||
+ log.warning("OSCAP Addon: cannot check root password length (password is crypted)")
|
||||
return [RuleMessage(self.__class__,
|
||||
common.MESSAGE_TYPE_WARNING, msg)]
|
||||
elif len(users_proxy.RootPassword) < self._minlen:
|
||||
@@ -880,7 +880,7 @@ def eval_rules(self, ksdata, storage, report_only=False):
|
||||
|
||||
kdump_proxy.KdumpEnabled = self._kdump_enabled
|
||||
else:
|
||||
- log.warning("com_redhat_kdump is not installed. "
|
||||
+ log.warning("OSCAP Addon: com_redhat_kdump is not installed. "
|
||||
"Skipping kdump configuration")
|
||||
|
||||
return messages
|
||||
@@ -894,7 +894,7 @@ def revert_changes(self, ksdata, storage):
|
||||
if self._kdump_enabled is not None:
|
||||
kdump_proxy.KdumpEnabled = self._kdump_default_enabled
|
||||
else:
|
||||
- log.warning("com_redhat_kdump is not installed. "
|
||||
+ log.warning("OSCAP Addon: com_redhat_kdump is not installed. "
|
||||
"Skipping reverting kdump configuration")
|
||||
|
||||
self._kdump_enabled = None
|
||||
diff --git a/org_fedora_oscap/service/installation.py b/org_fedora_oscap/service/installation.py
|
||||
index e3a1d0f..2da8559 100644
|
||||
--- a/org_fedora_oscap/service/installation.py
|
||||
+++ b/org_fedora_oscap/service/installation.py
|
||||
@@ -28,14 +28,14 @@
|
||||
from org_fedora_oscap.content_handling import ContentCheckError
|
||||
from org_fedora_oscap import content_discovery
|
||||
|
||||
-log = logging.getLogger(__name__)
|
||||
+log = logging.getLogger("anaconda")
|
||||
|
||||
|
||||
REQUIRED_PACKAGES = ("openscap", "openscap-scanner",)
|
||||
|
||||
|
||||
def _handle_error(exception):
|
||||
- log.error("Failed to fetch and initialize SCAP content!")
|
||||
+ log.error("OSCAP Addon: Failed to fetch and initialize SCAP content!")
|
||||
|
||||
if isinstance(exception, ContentCheckError):
|
||||
msg = _("The integrity check of the security content failed.")
|
||||
@@ -87,7 +87,7 @@ def run(self):
|
||||
|
||||
content = self.content_bringer.finish_content_fetch(
|
||||
fetching_thread_name, self._policy_data.fingerprint,
|
||||
- lambda msg: log.info(msg), content_dest, _handle_error)
|
||||
+ lambda msg: log.info("OSCAP Addon: " + msg), content_dest, _handle_error)
|
||||
|
||||
if not content:
|
||||
# this shouldn't happen because error handling is supposed to
|
||||
diff --git a/org_fedora_oscap/service/kickstart.py b/org_fedora_oscap/service/kickstart.py
|
||||
index 341c6c5..d6f22ac 100644
|
||||
--- a/org_fedora_oscap/service/kickstart.py
|
||||
+++ b/org_fedora_oscap/service/kickstart.py
|
||||
@@ -25,7 +25,7 @@
|
||||
from org_fedora_oscap import common, utils
|
||||
from org_fedora_oscap.structures import PolicyData
|
||||
|
||||
-log = logging.getLogger(__name__)
|
||||
+log = logging.getLogger("anaconda")
|
||||
|
||||
__all__ = ["OSCAPKickstartSpecification"]
|
||||
|
||||
diff --git a/org_fedora_oscap/service/oscap.py b/org_fedora_oscap/service/oscap.py
|
||||
index d491060..4237a47 100755
|
||||
--- a/org_fedora_oscap/service/oscap.py
|
||||
+++ b/org_fedora_oscap/service/oscap.py
|
||||
@@ -34,7 +34,7 @@
|
||||
from org_fedora_oscap.service.oscap_interface import OSCAPInterface
|
||||
from org_fedora_oscap.structures import PolicyData
|
||||
|
||||
-log = logging.getLogger(__name__)
|
||||
+log = logging.getLogger("anaconda")
|
||||
|
||||
__all__ = ["OSCAPService"]
|
||||
|
||||
@@ -71,7 +71,7 @@ def policy_enabled(self, value):
|
||||
"""
|
||||
self._policy_enabled = value
|
||||
self.policy_enabled_changed.emit()
|
||||
- log.debug("Policy enabled is set to '%s'.", value)
|
||||
+ log.debug("OSCAP Addon: Policy enabled is set to '%s'.", value)
|
||||
|
||||
@property
|
||||
def policy_data(self):
|
||||
@@ -89,7 +89,7 @@ def policy_data(self, value):
|
||||
"""
|
||||
self._policy_data = value
|
||||
self.policy_data_changed.emit()
|
||||
- log.debug("Policy data is set to '%s'.", value)
|
||||
+ log.debug("OSCAP Addon: Policy data is set to '%s'.", value)
|
||||
|
||||
@property
|
||||
def installation_enabled(self):
|
||||
@@ -150,7 +150,7 @@ def collect_requirements(self):
|
||||
:return: a list of requirements
|
||||
"""
|
||||
if not self.installation_enabled:
|
||||
- log.debug("The installation is disabled. Skip the requirements.")
|
||||
+ log.debug("OSCAP Addon: The installation is disabled. Skip the requirements.")
|
||||
return []
|
||||
|
||||
requirements = [
|
||||
@@ -180,7 +180,7 @@ def configure_with_tasks(self):
|
||||
:return: a list of tasks
|
||||
"""
|
||||
if not self.installation_enabled:
|
||||
- log.debug("The installation is disabled. Skip the configuration.")
|
||||
+ log.debug("OSCAP Addon: The installation is disabled. Skip the configuration.")
|
||||
return []
|
||||
|
||||
tasks = [
|
||||
@@ -205,7 +205,7 @@ def install_with_tasks(self):
|
||||
:return: a list of tasks
|
||||
"""
|
||||
if not self.installation_enabled:
|
||||
- log.debug("The installation is disabled. Skip the installation.")
|
||||
+ log.debug("OSCAP Addon: The installation is disabled. Skip the installation.")
|
||||
return []
|
||||
|
||||
tasks = [
|
||||
|
||||
From b081e32012b93177167d3f7d0cc2024deb50e965 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Tyc <matyc@redhat.com>
|
||||
Date: Mon, 2 Aug 2021 17:24:15 +0200
|
||||
Subject: [PATCH 2/3] Save addon data when using local content
|
||||
|
||||
Addon loads its data from the shared storage upon refresh,
|
||||
which caused it to overwrite clicking on the "use SSG content" button.
|
||||
|
||||
Now the data is saved after clicking that button, and convenience
|
||||
load/save methods were introduced.
|
||||
---
|
||||
org_fedora_oscap/gui/spokes/oscap.py | 27 +++++++++++++++------------
|
||||
1 file changed, 15 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
index 332e956..4425757 100644
|
||||
--- a/org_fedora_oscap/gui/spokes/oscap.py
|
||||
+++ b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
@@ -232,11 +232,8 @@ def __init__(self, data, storage, payload):
|
||||
# the proxy to OSCAP DBus module
|
||||
self._oscap_module = OSCAP.get_proxy()
|
||||
|
||||
- # the security policy data
|
||||
- self._policy_enabled = self._oscap_module.PolicyEnabled
|
||||
- self._policy_data = PolicyData.from_structure(
|
||||
- self._oscap_module.PolicyData
|
||||
- )
|
||||
+ self._policy_data = PolicyData()
|
||||
+ self._load_policy_data()
|
||||
|
||||
# used for changing profiles
|
||||
self._rule_data = None
|
||||
@@ -334,6 +331,7 @@ def initialize(self):
|
||||
log.info("OSCAP Addon: Defaulting to local content")
|
||||
self._policy_data.content_type = "scap-security-guide"
|
||||
self._policy_data.content_path = common.SSG_DIR + common.SSG_CONTENT
|
||||
+ self._save_policy_data()
|
||||
|
||||
if not self._content_defined:
|
||||
# nothing more to be done now, the spoke is ready
|
||||
@@ -351,6 +349,16 @@ def initialize(self):
|
||||
# else fetch data
|
||||
self._fetch_data_and_initialize()
|
||||
|
||||
+ def _save_policy_data(self):
|
||||
+ self._oscap_module.PolicyData = PolicyData.to_structure(self._policy_data)
|
||||
+ self._oscap_module.PolicyEnabled = self._policy_enabled
|
||||
+
|
||||
+ def _load_policy_data(self):
|
||||
+ self._policy_data.update_from(PolicyData.from_structure(
|
||||
+ self._oscap_module.PolicyData
|
||||
+ ))
|
||||
+ self._policy_enabled = self._oscap_module.PolicyEnabled
|
||||
+
|
||||
def _handle_error(self, exception):
|
||||
log.error("OSCAP Addon: " + str(exception))
|
||||
if isinstance(exception, KickstartValueError):
|
||||
@@ -897,13 +905,7 @@ def refresh(self):
|
||||
:see: pyanaconda.ui.common.UIObject.refresh
|
||||
|
||||
"""
|
||||
- # update the security policy data
|
||||
- self._policy_enabled = self._oscap_module.PolicyEnabled
|
||||
- fresh_data = PolicyData.from_structure(
|
||||
- self._oscap_module.PolicyData
|
||||
- )
|
||||
-
|
||||
- self._policy_data.update_from(fresh_data)
|
||||
+ self._load_policy_data()
|
||||
# update the UI elements
|
||||
self._refresh_ui()
|
||||
|
||||
@@ -1202,4 +1204,5 @@ def on_change_content_clicked(self, *args):
|
||||
|
||||
def on_use_ssg_clicked(self, *args):
|
||||
self.content_bringer.use_system_content()
|
||||
+ self._save_policy_data()
|
||||
self._fetch_data_and_initialize()
|
||||
|
||||
From fee170f54aeb9f649ab891781532012a7b069f8f Mon Sep 17 00:00:00 2001
|
||||
From: Matej Tyc <matyc@redhat.com>
|
||||
Date: Tue, 3 Aug 2021 11:01:59 +0200
|
||||
Subject: [PATCH 3/3] Refactor content identification
|
||||
|
||||
Don't use the multiprocessing pool - it sometimes creates probems during
|
||||
its initialization:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1989434
|
||||
---
|
||||
org_fedora_oscap/content_handling.py | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/content_handling.py b/org_fedora_oscap/content_handling.py
|
||||
index f2af22f..65d5a28 100644
|
||||
--- a/org_fedora_oscap/content_handling.py
|
||||
+++ b/org_fedora_oscap/content_handling.py
|
||||
@@ -111,9 +111,8 @@ def parse_HTML_from_content(content):
|
||||
|
||||
|
||||
def identify_files(fpaths):
|
||||
- with multiprocessing.Pool(os.cpu_count()) as p:
|
||||
- labels = p.map(get_doc_type, fpaths)
|
||||
- return {path: label for (path, label) in zip(fpaths, labels)}
|
||||
+ result = {path: get_doc_type(path) for path in fpaths}
|
||||
+ return result
|
||||
|
||||
|
||||
def get_doc_type(file_path):
|
||||
@@ -131,7 +130,9 @@ def get_doc_type(file_path):
|
||||
except UnicodeDecodeError:
|
||||
# 'oscap info' supplied weird output, which happens when it tries
|
||||
# to explain why it can't examine e.g. a JPG.
|
||||
- return None
|
||||
+ pass
|
||||
+ except Exception as e:
|
||||
+ log.warning(f"OSCAP addon: Unexpected error when looking at {file_path}: {str(e)}")
|
||||
log.info("OSCAP addon: Identified {file_path} as {content_type}"
|
||||
.format(file_path=file_path, content_type=content_type))
|
||||
return content_type
|
52
SOURCES/oscap-anaconda-addon-2.1.0-unified_help-PR_192.patch
Normal file
52
SOURCES/oscap-anaconda-addon-2.1.0-unified_help-PR_192.patch
Normal file
@ -0,0 +1,52 @@
|
||||
From 3d7a943969d542392134f55078eadb0793b094dc Mon Sep 17 00:00:00 2001
|
||||
From: Vendula Poncova <vponcova@redhat.com>
|
||||
Date: Wed, 22 Sep 2021 17:52:03 +0200
|
||||
Subject: [PATCH 1/2] Specify a unique screen id
|
||||
|
||||
All spokes and hubs should provide a unique id.
|
||||
---
|
||||
org_fedora_oscap/gui/spokes/oscap.py | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
index fe26076..44c7ced 100644
|
||||
--- a/org_fedora_oscap/gui/spokes/oscap.py
|
||||
+++ b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
@@ -204,6 +204,11 @@ class OSCAPSpoke(NormalSpoke):
|
||||
# as it is displayed inside the spoke as the spoke label,
|
||||
# and spoke labels are all uppercase by a convention.
|
||||
|
||||
+ @staticmethod
|
||||
+ def get_screen_id():
|
||||
+ """Return a unique id of this UI screen."""
|
||||
+ return "security-policy-selection"
|
||||
+
|
||||
@classmethod
|
||||
def should_run(cls, environment, data):
|
||||
return is_module_available(OSCAP)
|
||||
|
||||
From ae9fdc9e6e189db215aeb39f2881311e5281587b Mon Sep 17 00:00:00 2001
|
||||
From: Vendula Poncova <vponcova@redhat.com>
|
||||
Date: Wed, 22 Sep 2021 17:52:51 +0200
|
||||
Subject: [PATCH 2/2] Remove the help_id attribute
|
||||
|
||||
The help_id attribute is no longer used. Specify a screen id
|
||||
or redefine the help handler to provide the built-in help.
|
||||
---
|
||||
org_fedora_oscap/gui/spokes/oscap.py | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/org_fedora_oscap/gui/spokes/oscap.py b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
index 44c7ced..6d0aa5c 100644
|
||||
--- a/org_fedora_oscap/gui/spokes/oscap.py
|
||||
+++ b/org_fedora_oscap/gui/spokes/oscap.py
|
||||
@@ -185,9 +185,6 @@ class OSCAPSpoke(NormalSpoke):
|
||||
# name of the .glade file in the same directory as this source
|
||||
uiFile = "oscap.glade"
|
||||
|
||||
- # id of the help content for this spoke
|
||||
- help_id = "SecurityPolicySpoke"
|
||||
-
|
||||
# domain of oscap-anaconda-addon translations
|
||||
translationDomain = "oscap-anaconda-addon"
|
||||
|
273
SPECS/oscap-anaconda-addon.spec
Normal file
273
SPECS/oscap-anaconda-addon.spec
Normal file
@ -0,0 +1,273 @@
|
||||
%if 0%{?rhel} == 8
|
||||
%define anaconda_core_version 33
|
||||
%endif
|
||||
%if 0%{?rhel} == 9
|
||||
%define anaconda_core_version 34
|
||||
%endif
|
||||
%if 0%{?fedora}
|
||||
%define anaconda_core_version %{fedora}
|
||||
%endif
|
||||
|
||||
Name: oscap-anaconda-addon
|
||||
Version: 2.0.0
|
||||
Release: 8%{?dist}
|
||||
Summary: Anaconda addon integrating OpenSCAP to the installation process
|
||||
|
||||
License: GPLv2+
|
||||
URL: https://github.com/OpenSCAP/oscap-anaconda-addon
|
||||
|
||||
Source0: https://github.com/OpenSCAP/oscap-anaconda-addon/releases/download/r%{version}/%{name}-%{version}.tar.gz
|
||||
# TODO: Remove when the fixed upstream release contains dbus service data
|
||||
Source1: addon-dbus-data.zip
|
||||
|
||||
Patch1: lang.patch
|
||||
Patch2: oscap-anaconda-addon-2.0.1-various_bugfixes-PR_166.patch
|
||||
Patch3: oscap-anaconda-addon-2.0.1-fix_archive_handling-PR_170.patch
|
||||
Patch4: oscap-anaconda-addon-2.0.1-fix_no_hardening-PR_176.patch
|
||||
Patch5: oscap-anaconda-addon-2.0.1-fix_fingerprint-PR_177.patch
|
||||
Patch6: oscap-anaconda-addon-2.0.1-rhel9_tailoring_fix-PR_180.patch
|
||||
Patch7: oscap-anaconda-addon-1.2.2-dbus_show_integration-PR_182.patch
|
||||
Patch8: oscap-anaconda-addon-2.1.0-unified_help-PR_192.patch
|
||||
|
||||
BuildArch: noarch
|
||||
BuildRequires: make
|
||||
BuildRequires: gettext
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-pycurl
|
||||
BuildRequires: openscap openscap-utils openscap-python3
|
||||
BuildRequires: anaconda-core >= %{anaconda_core_version}
|
||||
Requires: anaconda-core >= %{anaconda_core_version}
|
||||
Requires: python3-pycurl
|
||||
Requires: python3-kickstart
|
||||
Requires: openscap openscap-utils openscap-python3
|
||||
Requires: scap-security-guide
|
||||
|
||||
%description
|
||||
This is an addon that integrates OpenSCAP utilities with the Anaconda installer
|
||||
and allows installation of systems following restrictions given by a SCAP
|
||||
content.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
unzip %{_sourcedir}/addon-dbus-data.zip
|
||||
|
||||
%build
|
||||
|
||||
%check
|
||||
|
||||
%install
|
||||
make install DESTDIR=%{buildroot}
|
||||
%find_lang %{name}
|
||||
|
||||
%files -f %{name}.lang
|
||||
%{_datadir}/anaconda/addons/org_fedora_oscap
|
||||
%{_datadir}/anaconda/dbus/confs/org.fedoraproject.Anaconda.Addons.OSCAP.conf
|
||||
%{_datadir}/anaconda/dbus/services/org.fedoraproject.Anaconda.Addons.OSCAP.service
|
||||
|
||||
%doc COPYING ChangeLog README.md
|
||||
|
||||
%changelog
|
||||
* Mon Jan 24 2022 Matej Tyc <matyc@redhat.com> - 2.0.0-8
|
||||
- Introduce unified help support
|
||||
Resolves: rhbz#2043512
|
||||
- Update translations
|
||||
Resolves: rhbz#2017374
|
||||
|
||||
* Mon Dec 13 2021 Matej Tyc <matyc@redhat.com> - 2.0.0-7
|
||||
- Don't show the OSCAP spoke if the OSCAP DBus module is disabled
|
||||
Resolves: rhbz#2018954
|
||||
|
||||
* Thu Nov 25 2021 Matej Tyc <matyc@redhat.com> - 2.0.0-6
|
||||
- Fix handling of tailoring in RHEL9
|
||||
Resolves: rhbz#1996129
|
||||
|
||||
* Wed Nov 10 2021 Matej Tyc <matyc@redhat.com> - 2.0.0-5
|
||||
- Fix handling of content archives
|
||||
Resolves: rhbz#1996129
|
||||
- Fix handling of content fingerprint
|
||||
Resolves: rhbz#1993065
|
||||
- Fix crash when a previously selected hardening has been cancelled
|
||||
Resolves: rhbz#2014108
|
||||
- Pull latest translations
|
||||
|
||||
* Fri Aug 20 2021 Matej Tyc <matyc@redhat.com> - 2.0.0-4
|
||||
- Update translations
|
||||
Resolves: rhbz#1962112
|
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.0.0-3
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
||||
* Tue Aug 03 2021 Matej Tyc <matyc@redhat.com> - 2.0.0-2
|
||||
- Fix issues with locally installed content and labelling of discovered content.
|
||||
- Resolves: rhbz#1989434
|
||||
|
||||
* Fri Jul 02 2021 Matej Tyc <matyc@redhat.com> - 2.0.0-1
|
||||
- Rebase to the 2.0.0 upstream release.
|
||||
- Remove the cpio dependency which is not needed any more.
|
||||
|
||||
* Wed Jun 23 2021 Jan Černý <jcerny@redhat.com> - 1.0-11
|
||||
- Rebuild after test config change in test.yml
|
||||
|
||||
* Mon Jun 14 2021 Matej Tyc <matyc@redhat.com> - 1.0-10
|
||||
- Unified the spec file with the Fedora one.
|
||||
- Removed unwanted dependencies.
|
||||
- nose is not needed for a long time.
|
||||
- mock has been moved into the Python standard library, so it is also not needed.
|
||||
|
||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.0-9
|
||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Mon Aug 12 2019 Matěj Týč <matyc@redhat.com> - 1.0-5
|
||||
- Disabled execution of tests, as they are not meant to be executed in the build environment.
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Tue Jul 03 2018 Matěj Týč <matyc@redhat.com> - 1.0-1
|
||||
- Rebased to upstream version 1.0
|
||||
- Python3 support, anaconda 28 support.
|
||||
|
||||
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.7-7
|
||||
- Escape macros in %%changelog
|
||||
|
||||
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.7-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.7-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.7-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.7-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.7-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Wed Jan 07 2015 Vratislav Podzimek <vpodzime@redhat.com> - 0.7-1
|
||||
- Adapt to changes in Anaconda
|
||||
- Define name of the spoke window
|
||||
- Set fetching flag to False when extraction error happens
|
||||
- Remove code that was pushed to the anaconda's sources
|
||||
|
||||
* Fri Feb 28 2014 Vratislav Podzimek <vpodzime@redhat.com> - 0.6-2
|
||||
- Rebuild with building issues fixed
|
||||
|
||||
* Fri Feb 28 2014 Vratislav Podzimek <vpodzime@redhat.com> - 0.6-1
|
||||
- Getting status needs to run in the main thread
|
||||
- Grab focus for the URL entry after switching notebook page
|
||||
- Clear rule data when unselecting profile
|
||||
- Update message as part of the initialization
|
||||
- Add BuildRequires: gettext
|
||||
- Include translations in the tarball and RPM
|
||||
|
||||
* Fri Feb 28 2014 Vratislav Podzimek <vpodzime@redhat.com> - 0.5-1
|
||||
- Allow users to change content
|
||||
- Show and hide control buttons properly
|
||||
- Fix sensitivity of the URL entry and fetch button
|
||||
- Add the button allowing users to use SSG content if available
|
||||
- Fix listing python sources when creating potfile and regenerate it
|
||||
- Omit the %%addon section from kickstart in dry-run mode
|
||||
- Implement the dry-run mode in the GUI (trac#2)
|
||||
- Add UI elements for content changing and dry-run mode
|
||||
- Check content_defined instead of content_url in the GUI code
|
||||
- First select the profile, then update the message store
|
||||
- Remove unused import
|
||||
- Ignore some more temporary/backup files
|
||||
- If no content is specified and SSG is available, use it
|
||||
- New special content type -- SCAP Security Guide
|
||||
- Fix name of the property used when doing fingerprint check
|
||||
- Get rid of an unused variable
|
||||
- Fix data fetch locking to work properly with kickstart installations
|
||||
- Use 'anonymous:' if no username and password is given for FTP
|
||||
- Initial version of the translations template file
|
||||
- First steps to dry-run mode
|
||||
- Fix main notebook tabs
|
||||
- Make translations work
|
||||
- Manipulation with the i18n related files
|
||||
- If no profile is given, default to default
|
||||
- Ignore updates.img and its auxiliary directory
|
||||
- Catch only fetching errors from the fetching thread
|
||||
- Do not allow multiple simultaneous fetches/initializations
|
||||
- Prevent user from changing the URL while we try to fetch from it
|
||||
- Add support for the Default profile
|
||||
- Support FTP as a content source (#1050980)
|
||||
- React properly on archive extraction failure
|
||||
- Refactor the code pre-processing the fetched content
|
||||
- Unify exceptions from archive extraction
|
||||
- Make pylint check mandatory to pass
|
||||
- Support for hash based content integrity checking
|
||||
|
||||
* Tue Jan 14 2014 Vratislav Podzimek <vpodzime@redhat.com> - 0.4-1
|
||||
- Beware of running Gtk actions from a non-main thread
|
||||
- Fix path to the tailoring file when getting rules
|
||||
- A git hook for running tests when pushing
|
||||
- Inform user if no profile is selected
|
||||
- Visually mark the selected profile
|
||||
- Better UX with content URL entry and progress label
|
||||
- React on invalid content properly (#1032846)
|
||||
- Stop spinner when data fetching is finished
|
||||
- Make the data fetching thread non-fatal (#1049989)
|
||||
- Exit code 2 from the oscap tool is not an error for us (#1050913)
|
||||
- Be ready to work with archives/RPMs containing data streams
|
||||
- Add unit tests for the keep_type_map function
|
||||
- Add support for namedtuples to keep_type_map
|
||||
- Add target for running pylint check
|
||||
- Add target for running just unittests
|
||||
- On the way to tailoring
|
||||
- Tests for kickstart XCCDF tailoring handling
|
||||
- Kickstart support for XCCDF tailoring
|
||||
- Check session validity also when using XCCDF benchmark
|
||||
|
||||
* Tue Dec 10 2013 Vratislav Podzimek <vpodzime@redhat.com> - 0.3-1
|
||||
- Implement and use our own better function for joining paths
|
||||
- The content entry should have focus if there is no content
|
||||
- RPM is just a weird archive in the pre-installation phase
|
||||
- Ignore RPM files as well
|
||||
- Adapt tests to dir constants now ending with "/"
|
||||
- CpioArchive cannot be created from a piped output
|
||||
- Fix namespace definitions in the testing XCCDF file
|
||||
- Prevent putting None into xccdf_session_is_sds
|
||||
- Fix the __all__ variable in the common module
|
||||
- Strip content dir prefix when setting xccdf/cpe paths
|
||||
- Inform user we now support archive URLs as well
|
||||
- Ignore various file types in the git repository
|
||||
- Try to find content files in the fetched archive or RPM
|
||||
- Run pylint -E as part of the test target
|
||||
- Return list of extracted files/directories when extracting archive
|
||||
- Do not try to search for empty file paths in archives
|
||||
- Properly set the content type based on the URL's suffix
|
||||
- Switch profiles on double-click
|
||||
- Hook urlEntry's activate signal to fetchButton click
|
||||
- Save the spoke's glade file with a new Glade
|
||||
- The addon now requires the python-cpio package
|
||||
- Use really_hide for the UI elements for datastream-id and xccdf-id
|
||||
- Support for RPM content in the GUI spoke
|
||||
- RPM content support for kickstart processing
|
||||
- Add property for the raw post-installation content path
|
||||
- Make content type case insensitive
|
||||
- Rest of the code needed for RPM extraction
|
||||
- Actually look for the file path in entry names
|
||||
- Basic stuff needed for the RPM content support
|
||||
- Run tests in paralel
|
||||
- Specify files in a better way in spec
|
||||
|
||||
* Mon Oct 21 2013 Vratislav Podzimek <vpodzime@redhat.com> - 0.2-1
|
||||
- Initial RPM for the oscap-anaconda-addon
|
Loading…
Reference in New Issue
Block a user