summaryrefslogtreecommitdiffstats
path: root/plugins/openscap_plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/openscap_plugin.py')
-rw-r--r--plugins/openscap_plugin.py52
1 files changed, 32 insertions, 20 deletions
diff --git a/plugins/openscap_plugin.py b/plugins/openscap_plugin.py
index 30ff295..728c3c0 100644
--- a/plugins/openscap_plugin.py
+++ b/plugins/openscap_plugin.py
@@ -20,6 +20,7 @@ from pyfirstaidkit.reporting import PLUGIN
from pyfirstaidkit.returns import *
from pyfirstaidkit.issue import SimpleIssue
import openscap
+import time
class OpenSCAPPlugin(Plugin):
"""Performs security audit according to the SCAP policy"""
@@ -29,14 +30,21 @@ class OpenSCAPPlugin(Plugin):
def __init__(self, *args, **kwargs):
Plugin.__init__(self, *args, **kwargs)
+ #self._oval = "/home/msivak/Downloads/scap-rhel5-oval.xml"
self._oval = "/usr/share/openscap/scap-fedora12-oval.xml"
self._issues = {}
def prepare(self):
self._model = openscap.oval_definition_model_import(self._oval)
- self._session = openscap.oval_agent_new_session(self._model)
- self._reporting.info("OpenSCAP initialized", origin = self, level = PLUGIN)
- self._result=ReturnSuccess
+ if self._model:
+ self._session = openscap.oval_agent_new_session(self._model)
+
+ if self._model is None or self._session is None:
+ self._result=ReturnFailure
+ self._reporting.error("OpenSCAP failed to load definition", origin = self, level = PLUGIN)
+ else:
+ self._result=ReturnSuccess
+ self._reporting.info("OpenSCAP initialized", origin = self, level = PLUGIN)
def backup(self):
self._result=ReturnSuccess
@@ -44,27 +52,31 @@ class OpenSCAPPlugin(Plugin):
def restore(self):
self._result=ReturnSuccess
- def oscap_callback(Id, Result, Plugin):
- Issue = Plugin._issues.get(Id, None)
- if Issue is None:
- title = openscap.oval_definition_get_title(Plugin._model, Id)
- description = openscap.oval_definition_get_description(Plugin._model, Id)
- Issue = SimpleIssue(Id, title)
- Issue.set(reporting = Plugin._reporting, origin = Plugin, level = PLUGIN)
- Plugin._issues[Id] = Issue
+ def oscap_callback(self, Id, Result, Plugin):
+ try:
+ Issue = Plugin._issues.get(Id, None)
+ if Issue is None:
+ definition = openscap.oval_definition_model_get_definition(Plugin._model, Id)
+ title = openscap.oval_definition_get_title(definition)
+ description = openscap.oval_definition_get_description(definition)
+ Issue = SimpleIssue(Id, title)
+ Issue.set(reporting = Plugin._reporting, origin = Plugin, level = PLUGIN)
+ Plugin._issues[Id] = Issue
+
+ Issue.set(checked = (Result in (openscap.OVAL_RESULT_FALSE, openscap.OVAL_RESULT_TRUE)),
+ happened = (Result == openscap.OVAL_RESULT_FALSE),
+ fixed = False,
+ reporting = Plugin._reporting,
+ origin = Plugin,
+ level = PLUGIN)
+ except Exception, e:
+ print e
- self._issue.set(checked = (Result in (openscap.OVAL_RESULT_FALSE, openscap.OVAL_RESULT_TRUE)),
- happened = (Result == openscap.OVAL_RESULT_FALSE),
- fixed = False,
- reporting = self._reporting,
- origin = self,
- level = PLUGIN)
+ return Plugin.continuing()
def diagnose(self):
- self._result=ReturnSuccess
openscap.oval_agent_eval_system_py(self._session, self.oscap_callback, self)
-
- self._issue.set(checked = True, happened = False, reporting = self._reporting, origin = self, level = PLUGIN)
+ self._result=ReturnSuccess
def fix(self):
self._result=ReturnFailure