Greenbone Vulnerability Management Libraries  22.8.0
prefs.c File Reference

Implementation of API to handle globally stored preferences. More...

#include "prefs.h"
#include "settings.h"
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Include dependency graph for prefs.c:

Go to the source code of this file.

Macros

#define G_LOG_DOMAIN   "libgvm base"
 GLib log domain. More...
 

Functions

void prefs_set (const gchar *key, const gchar *value)
 Set a string preference value via a key. More...
 
static void prefs_init (void)
 Initializes the preferences structure. If it was already initialized, remove old settings and start from scratch. More...
 
GHashTable * preferences_get (void)
 Get the pointer to the global preferences structure. Eventually this function should not be used anywhere. More...
 
const gchar * prefs_get (const gchar *key)
 Get a string preference value via a key. More...
 
int prefs_get_bool (const gchar *key)
 Get a boolean expression of a preference value via a key. More...
 
void prefs_config (const char *config)
 Apply the configs from given file as preferences. More...
 
void prefs_dump (void)
 Dump the preferences to stdout. More...
 

Variables

static GHashTable * global_prefs = NULL
 

Detailed Description

Implementation of API to handle globally stored preferences.

A global store of preferences to scanner and NVTs is handled by this module.

Definition in file prefs.c.

Macro Definition Documentation

◆ G_LOG_DOMAIN

#define G_LOG_DOMAIN   "libgvm base"

GLib log domain.

Definition at line 27 of file prefs.c.

Function Documentation

◆ preferences_get()

GHashTable* preferences_get ( void  )

Get the pointer to the global preferences structure. Eventually this function should not be used anywhere.

Returns
Pointer to the global preferences structure.

Definition at line 81 of file prefs.c.

82 {
83  if (!global_prefs)
84  prefs_init ();
85 
86  return global_prefs;
87 }

References global_prefs, and prefs_init().

Here is the call graph for this function:

◆ prefs_config()

void prefs_config ( const char *  config)

Apply the configs from given file as preferences.

Parameters
configFilename of the configuration file.

Definition at line 156 of file prefs.c.

157 {
158  settings_iterator_t settings;
159 
160  if (!global_prefs)
161  prefs_init ();
162 
163  if (!init_settings_iterator_from_file (&settings, config, "Misc"))
164  {
165  while (settings_iterator_next (&settings))
166  prefs_set (settings_iterator_name (&settings),
167  settings_iterator_value (&settings));
168 
169  cleanup_settings_iterator (&settings);
170  }
171 
172  prefs_set ("config_file", config);
173 }

References cleanup_settings_iterator(), global_prefs, init_settings_iterator_from_file(), prefs_init(), prefs_set(), settings_iterator_name(), settings_iterator_next(), and settings_iterator_value().

Here is the call graph for this function:

◆ prefs_dump()

void prefs_dump ( void  )

Dump the preferences to stdout.

Definition at line 179 of file prefs.c.

180 {
181  void *name, *value;
182  GHashTableIter iter;
183 
184  if (global_prefs)
185  {
186  g_hash_table_iter_init (&iter, global_prefs);
187  while (g_hash_table_iter_next (&iter, &name, &value))
188  {
189  printf ("%s = %s\n", (char *) name, (char *) value);
190  }
191  }
192 }

References global_prefs, and nvti::name.

◆ prefs_get()

const gchar* prefs_get ( const gchar *  key)

Get a string preference value via a key.

Parameters
keyThe identifier for the preference.
Returns
A pointer to a string with the value for the preference. NULL in case for the key no preference was found or the preference is not of type string.

Definition at line 99 of file prefs.c.

100 {
101  if (!global_prefs)
102  prefs_init ();
103 
104  return g_hash_table_lookup (global_prefs, key);
105 }

References global_prefs, and prefs_init().

Here is the call graph for this function:

◆ prefs_get_bool()

int prefs_get_bool ( const gchar *  key)

Get a boolean expression of a preference value via a key.

Parameters
keyThe identifier for the preference.
Returns
1 if the value is considered to represent "true" and 0 if the value is considered to represent "false". If the preference is of type string, value "yes" is true, anything else is false. Any other type or non-existing key is false.

Definition at line 119 of file prefs.c.

120 {
121  gchar *str;
122 
123  if (!global_prefs)
124  prefs_init ();
125 
126  str = g_hash_table_lookup (global_prefs, key);
127  if (str && !strcmp (str, "yes"))
128  return 1;
129 
130  return 0;
131 }

References global_prefs, and prefs_init().

Here is the call graph for this function:

◆ prefs_init()

static void prefs_init ( void  )
static

Initializes the preferences structure. If it was already initialized, remove old settings and start from scratch.

Definition at line 40 of file prefs.c.

41 {
42  if (global_prefs)
43  g_hash_table_destroy (global_prefs);
44 
45  global_prefs =
46  g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
47  prefs_set ("cgi_path", "/cgi-bin:/scripts");
48  prefs_set ("checks_read_timeout", "5");
49  prefs_set ("unscanned_closed", "yes");
50  prefs_set ("unscanned_closed_udp", "yes");
51  prefs_set ("timeout_retry", "3");
52  prefs_set ("expand_vhosts", "yes");
53  prefs_set ("test_empty_vhost", "no");
54  prefs_set ("open_sock_max_attempts", "5");
55  prefs_set ("time_between_request", "0");
56  prefs_set ("nasl_no_signature_check", "yes");
57  prefs_set ("max_hosts", "30");
58  prefs_set ("max_checks", "10");
59  prefs_set ("log_whole_attack", "no");
60  prefs_set ("log_plugins_name_at_load", "no");
61  prefs_set ("optimize_test", "yes");
62  prefs_set ("non_simult_ports", "139, 445, 3389, Services/irc");
63  prefs_set ("safe_checks", "yes");
64  prefs_set ("auto_enable_dependencies", "yes");
65  prefs_set ("drop_privileges", "no");
66  prefs_set ("report_host_details", "yes");
67  prefs_set ("vendor_version", "\0");
68  prefs_set ("test_alive_hosts_only", "yes");
69  prefs_set ("test_alive_wait_timeout", "3");
70  prefs_set ("debug_tls", "0");
71  prefs_set ("allow_simultaneous_ips", "yes");
72 }

References global_prefs, and prefs_set().

Referenced by preferences_get(), prefs_config(), prefs_get(), prefs_get_bool(), and prefs_set().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prefs_set()

void prefs_set ( const gchar *  key,
const gchar *  value 
)

Set a string preference value via a key.

Parameters
keyThe identifier for the preference. A copy of this will be created if necessary.
valueThe value to set. A copy of this will be created.

Definition at line 142 of file prefs.c.

143 {
144  if (!global_prefs)
145  prefs_init ();
146 
147  g_hash_table_insert (global_prefs, g_strdup (key), g_strdup (value));
148 }

References global_prefs, and prefs_init().

Referenced by prefs_config(), and prefs_init().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ global_prefs

GHashTable* global_prefs = NULL
static
prefs_init
static void prefs_init(void)
Initializes the preferences structure. If it was already initialized, remove old settings and start f...
Definition: prefs.c:40
settings_iterator_t
Struct holding options to iterate over a GKeyFile.
Definition: settings.h:36
init_settings_iterator_from_file
int init_settings_iterator_from_file(settings_iterator_t *iterator, const gchar *filename, const gchar *group)
Initialise a settings iterator from a file.
Definition: settings.c:98
prefs_set
void prefs_set(const gchar *, const gchar *)
Set a string preference value via a key.
Definition: prefs.c:142
settings_iterator_value
const gchar * settings_iterator_value(settings_iterator_t *iterator)
Get the value from a settings iterator.
Definition: settings.c:179
cleanup_settings_iterator
void cleanup_settings_iterator(settings_iterator_t *iterator)
Cleanup a settings iterator.
Definition: settings.c:136
global_prefs
static GHashTable * global_prefs
Definition: prefs.c:29
settings_iterator_name
const gchar * settings_iterator_name(settings_iterator_t *iterator)
Get the name from a settings iterator.
Definition: settings.c:166
settings_iterator_next
gboolean settings_iterator_next(settings_iterator_t *iterator)
Increment an iterator.
Definition: settings.c:150