30 #include <gvm/base/prefs.h>
31 #include <gvm/util/nvticache.h>
59 ports = g_strsplit (ports_list,
", ", 0);
60 for (i = 0; ports[i] != NULL; i++)
62 int iport = atoi (ports[i]);
70 if (kb_item_get_int (kb, ports[i]) > 0)
100 if (!kb || !keys || !*keys)
103 keynames = g_strsplit (keys,
", ", 0);
106 for (i = 0; keynames[i] != NULL; i++)
108 struct kb_item *kbi =
109 kb_item_get_single (kb, keynames[i], KB_TYPE_UNSPEC);
114 *keyname = g_strdup (keynames[i]);
115 g_strfreev (keynames);
122 g_strfreev (keynames);
140 if (!kb || !keys || !*keys)
143 keynames = g_strsplit (keys,
", ", 0);
146 for (i = 0; keynames[i] != NULL; i++)
148 struct kb_item *kbi =
149 kb_item_get_single (kb, keynames[i], KB_TYPE_UNSPEC);
154 *keyname = g_strdup (keynames[i]);
156 g_strfreev (keynames);
161 g_strfreev (keynames);
178 if (!kb || !keys || !*keys)
180 keynames = g_strsplit (keys,
", ", 0);
183 for (i = 0; keynames[i] != NULL; i++)
186 char *re_str = NULL, *pos;
189 if ((pos = strstr (keynames[i],
"=")))
195 kbi = kb_item_get_single (kb, keynames[i], KB_TYPE_UNSPEC);
198 g_strfreev (keynames);
207 if (kbi->type != KB_TYPE_STR || !kbi->v_str)
209 g_strfreev (keynames);
213 if (regcomp (&re, re_str, REG_EXTENDED | REG_NOSUB | REG_ICASE))
215 g_warning (
"Couldn't compile regex %s", re_str);
216 g_strfreev (keynames);
220 if (regexec (&re, kbi->v_str, 0, NULL, 0) == REG_NOMATCH)
222 g_strfreev (keynames);
232 g_strfreev (keynames);
266 static char error[64];
267 char *errkey = NULL, *keys, *tcp, *udp;
268 const char *opti = prefs_get (
"optimization_level");
273 error[
sizeof (error) - 1] =
'\0';
274 tcp = nvti_required_ports (nvti);
277 strncpy (error,
"none of the required tcp ports are open",
282 udp = nvti_required_udp_ports (nvti);
285 strncpy (error,
"none of the required udp ports are open",
290 if (opti != NULL && (strcmp (opti,
"open_ports") == 0 || atoi (opti) == 1))
296 keys = nvti_required_keys (nvti);
299 snprintf (error,
sizeof (error),
"because the key %s is missing", errkey);
304 if (opti != NULL && (strcmp (opti,
"required_keys") == 0 || atoi (opti) == 2))
310 keys = nvti_excluded_keys (nvti);
313 snprintf (error,
sizeof (error),
"because the key %s is present", errkey);