diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5a9de4c1..c5a62a7f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [20.8.1] (unreleased)
+###
+- Improve logging for unsatisfied vts dependencies[#336](https://github.com/greenbone/ospd-openvas/pull/336)
### Fixed
- Fix nvticache name when for stable version from sources. [#317](https://github.com/greenbone/ospd-openvas/pull/317)
diff --git a/ospd_openvas/daemon.py b/ospd_openvas/daemon.py
index 72f5fa50..02453bfd 100644
--- a/ospd_openvas/daemon.py
+++ b/ospd_openvas/daemon.py
@@ -359,6 +359,8 @@
},
}
+VT_BASE_OID = "1.3.6.1.4.1.25623."
+
def safe_int(value: str) -> Optional[int]:
"""Convert a string into an integer and return None in case of errors
@@ -717,9 +719,9 @@ def get_dependencies_vt_as_xml_str(
vt_deps_xml = Element('dependencies')
for dep in vt_dependencies:
_vt_dep = Element('dependency')
- try:
+ if VT_BASE_OID in dep:
_vt_dep.set('vt_id', dep)
- except (ValueError, TypeError):
+ else:
logger.error(
'Not possible to add dependency %s for VT %s', dep, vt_id
)
diff --git a/ospd_openvas/vthelper.py b/ospd_openvas/vthelper.py
index 29c03d3d..b752dd4d 100644
--- a/ospd_openvas/vthelper.py
+++ b/ospd_openvas/vthelper.py
@@ -46,8 +46,12 @@ def get_single_vt(self, vt_id: str, oids=None) -> Optional[Dict[str, any]]:
if 'dependencies' in custom:
deps = custom.pop('dependencies')
deps_list = deps.split(', ')
- for dep in deps_list:
- vt_dependencies.append(oids.get(dep))
+ for dep_name in deps_list:
+ dep_oid = oids.get(dep_name)
+ if dep_oid:
+ vt_dependencies.append(dep_oid)
+ else:
+ vt_dependencies.append(dep_name)
else:
vt_dependencies = None
diff --git a/tests/test_daemon.py b/tests/test_daemon.py
index dc3cd880..a29f67b1 100644
--- a/tests/test_daemon.py
+++ b/tests/test_daemon.py
@@ -461,10 +461,26 @@ def test_get_dependencies_xml(self):
out = (
''
- ''
+ ''
+ ''
''
)
- dep = ['1.2.3.4', '4.3.2.1']
+ dep = ['1.3.6.1.4.1.25623.1.2.3.4', '1.3.6.1.4.1.25623.4.3.2.1']
+ res = w.get_dependencies_vt_as_xml_str(
+ '1.3.6.1.4.1.25623.1.0.100061', dep
+ )
+
+ self.assertEqual(res, out)
+
+ def test_get_dependencies_xml_missing_dep(self):
+ w = DummyDaemon()
+
+ out = (
+ ''
+ ''
+ ''
+ )
+ dep = ['1.3.6.1.4.1.25623.1.2.3.4', 'file_name.nasl']
res = w.get_dependencies_vt_as_xml_str(
'1.3.6.1.4.1.25623.1.0.100061', dep
)
@@ -686,7 +702,9 @@ def test_feed_is_outdated_none(
@patch('ospd_openvas.daemon.Path.exists')
@patch('ospd_openvas.daemon.Path.open')
def test_feed_is_outdated_true(
- self, mock_path_open: MagicMock, mock_path_exists: MagicMock,
+ self,
+ mock_path_open: MagicMock,
+ mock_path_exists: MagicMock,
):
read_data = 'PLUGIN_SET = "1235";'
@@ -709,7 +727,9 @@ def test_feed_is_outdated_true(
@patch('ospd_openvas.daemon.Path.exists')
@patch('ospd_openvas.daemon.Path.open')
def test_feed_is_outdated_false(
- self, mock_path_open: MagicMock, mock_path_exists: MagicMock,
+ self,
+ mock_path_open: MagicMock,
+ mock_path_exists: MagicMock,
):
mock_path_exists.return_value = True
@@ -807,7 +827,8 @@ def test_get_openvas_result_dead_hosts(self, MockDBClass):
w.report_openvas_results(MockDBClass, '123-456', 'localhost')
w.scan_collection.set_amount_dead_hosts.assert_called_with(
- '123-456', total_dead=4,
+ '123-456',
+ total_dead=4,
)
@patch('ospd_openvas.daemon.ScanDB')