summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Sivak <msivak@redhat.com>2010-09-07 14:56:57 +0200
committerMartin Sivak <msivak@redhat.com>2010-09-07 14:56:57 +0200
commit1d4ec7084f6368c16a1f81f29c869012f2c271c8 (patch)
treeccb121f9492048a6f3e2ad30276869b58c10227a
parent7cdc5637bd39e78413ce48321abd31438a1a5bd4 (diff)
downloadfirstaidkit-1d4ec7084f6368c16a1f81f29c869012f2c271c8.tar.gz
firstaidkit-1d4ec7084f6368c16a1f81f29c869012f2c271c8.tar.xz
firstaidkit-1d4ec7084f6368c16a1f81f29c869012f2c271c8.zip
Updates to openscap api
-rw-r--r--plugins/openscap_plugin.py62
1 files changed, 47 insertions, 15 deletions
diff --git a/plugins/openscap_plugin.py b/plugins/openscap_plugin.py
index ace9c41..ce7aa4d 100644
--- a/plugins/openscap_plugin.py
+++ b/plugins/openscap_plugin.py
@@ -15,6 +15,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+from pyfirstaidkit.configuration import Config
from pyfirstaidkit.plugins import Plugin,Flow
from pyfirstaidkit.reporting import PLUGIN
from pyfirstaidkit.returns import *
@@ -55,10 +56,8 @@ class OpenSCAPPlugin(Plugin):
self._policy = None
self._xccdf_policy_model.register_output_callback(self.oscap_callback, self)
- # XXX Workaround..
- for s in self._objs["sessions"]:
- self._xccdf_policy_model.register_engine_oval(s)
-
+ self._xccdf_policy_model.register_start_callback(self.oscap_callback_start, self)
+
self._reporting.info("OpenSCAP initialized", origin = self, level = PLUGIN)
self._result=ReturnSuccess
@@ -68,6 +67,11 @@ class OpenSCAPPlugin(Plugin):
self._result=ReturnSuccess
self._policy = self._xccdf_policy_model.policies[0]
return
+
+ if not Config.operation.interactive:
+ self._result=ReturnSuccess
+ self._policy = self._xccdf_policy_model.policies[-1]
+ return
all_policies = map(lambda p: (
p.id,
@@ -100,6 +104,10 @@ class OpenSCAPPlugin(Plugin):
self._result=ReturnSuccess
def rules(self):
+ if not Config.operation.interactive:
+ self._result=ReturnSuccess
+ return
+
all_rules = self._policy.get_selects()
if len(all_rules) == 0:
self._result=ReturnSuccess
@@ -135,6 +143,10 @@ class OpenSCAPPlugin(Plugin):
self._result=ReturnSuccess
def tailoring(self):
+ if not Config.operation.interactive:
+ self._result=ReturnSuccess
+ return
+
tailor_items = self._policy.get_tailor_items()
if len(tailor_items) == 0:
self._result=ReturnSuccess
@@ -174,29 +186,49 @@ class OpenSCAPPlugin(Plugin):
return 0
else:
return 1
+
+ try:
+ Id = Msg.user1str
+ result = Msg.user2num
+ self._info[Id] = result
+ Issue = Plugin._issues.get(Id, None)
+ Issue.set(checked = (result in
+ (openscap.OSCAP.XCCDF_RESULT_FAIL,
+ openscap.OSCAP.XCCDF_RESULT_PASS)),
+ happened = (result == openscap.OSCAP.XCCDF_RESULT_FAIL),
+ fixed = False,
+ reporting = Plugin._reporting,
+ origin = Plugin,
+ level = PLUGIN)
+ except Exception, e:
+ print e
+
+ if Plugin.continuing():
+ return 0
+ else:
+ return 1
+
+
+ def oscap_callback_start(self, Msg, Plugin):
+ if Msg.user2num == openscap.OSCAP.XCCDF_RESULT_NOT_SELECTED:
+ if Plugin.continuing():
+ return 0
+ else:
+ return 1
try:
Id = Msg.user1str
+ self._info[Id] = -1
Issue = Plugin._issues.get(Id, None)
if Issue is None:
title = Msg.user3str
description = Msg.string
- result = Msg.user2num
Issue = SimpleIssue(Id, title)
Issue.set(reporting = Plugin._reporting, origin = Plugin, level = PLUGIN)
Plugin._issues[Id] = Issue
-
- Issue.set(checked = (result in
- (openscap.OSCAP.XCCDF_RESULT_FAIL,
- openscap.OSCAP.XCCDF_RESULT_PASS)),
- happened = (result == openscap.OSCAP.XCCDF_RESULT_FAIL),
- fixed = False,
- reporting = Plugin._reporting,
- origin = Plugin,
- level = PLUGIN)
+
except Exception, e:
- raise
print e
if Plugin.continuing():