OpenVAS Manager  7.0.3~git
manage.h File Reference
#include "iterator.h"
#include <stdio.h>
#include <glib.h>
#include <gnutls/gnutls.h>
#include <openvas/misc/openvas_auth.h>
#include <openvas/base/array.h>
#include <openvas/base/credentials.h>
#include <openvas/base/nvti.h>
#include <openvas/base/openvas_networking.h>
#include <openvas/osp/osp.h>
#include <openvas/misc/openvas_server.h>
Include dependency graph for manage.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  name_value_t
 Name value pair. More...
 
struct  command_t
 A command. More...
 
struct  port_t
 A port. More...
 
struct  message_t
 The record of a message. More...
 
struct  get_data_t
 Command data for a get command. More...
 
struct  severity_data_t
 
struct  create_report_result_t
 A CREATE_REPORT result. More...
 
struct  host_detail_t
 A host detail for create_report. More...
 
struct  preference_t
 An NVT preference. More...
 
struct  nvt_selector_t
 An NVT selector. More...
 
struct  report_type_iterator_t
 A system report type iterator. More...
 
struct  create_report_format_param_t
 Struct for defining a report format param. More...
 
struct  file_iterator_t
 A report format file iterator. More...
 
struct  keyword
 Keyword. More...
 
struct  sort_data_t
 

Macros

#define ALL_LOG_LEVELS
 Flag with all Glib log levels. More...
 
#define g_info(...)
 Defines g_info for glib versions older than 2.40. More...
 
#define AUTO_DELETE_KEEP_MIN   2
 
#define AUTO_DELETE_KEEP_MAX   1200
 
#define ALERT_MESSAGE_INCLUDE
 Default format string for alert email, when including report. More...
 
#define SECINFO_ALERT_MESSAGE_INCLUDE
 Default format string for SecInfo alert email, when including report. More...
 
#define ALERT_MESSAGE_ATTACH
 Default format string for alert email, when attaching report. More...
 
#define SECINFO_ALERT_MESSAGE_ATTACH
 Default format string for SecInfo alert email, when attaching report. More...
 
#define LSC_FAMILY_LIST
 SQL list of LSC families. More...
 
#define OVAS_MANAGE_REPORT_ID_LENGTH   UUID_LEN_STR
 
#define APPLY_OVERRIDES_DEFAULT   0
 Default apply_overrides setting. More...
 
#define QOD_DEFAULT   75
 Default quality of detection percentage. More...
 
#define MIN_QOD_DEFAULT   70
 Default min quality of detection percentage for filters. More...
 
#define MANAGE_ABSOLUTE_MAX_IPS_PER_TARGET   70000
 Absolute maximum number of IPs per target. More...
 
#define MANAGE_MAX_HOSTS   4095
 Default maximum number of hosts a target may specify. More...
 
#define MANAGE_USER_MAX_HOSTS   16777216
 Default maximum number of hosts a user host access may specify. More...
 
#define NVT_SELECTOR_TYPE_ALL   0
 NVT selector type for "all" rule. More...
 
#define NVT_SELECTOR_TYPE_FAMILY   1
 NVT selector type for "family" rule. More...
 
#define NVT_SELECTOR_TYPE_NVT   2
 NVT selector type for "NVT" rule. More...
 
#define NVT_SELECTOR_TYPE_ANY   999
 Special NVT selector type for selecting all types in interfaces. More...
 
#define SCHEDULE_PERIOD   10
 Seconds between calls to manage_schedule. More...
 
#define SCHEDULE_TIMEOUT_MIN_SECS   20
 Minimum schedule timeout seconds. This value must be greater than SCHEDULE_PERIOD. More...
 
#define SCHEDULE_TIMEOUT_DEFAULT   60
 Default for schedule_timeout in minutes. More...
 
#define NVT_FEED   1
 
#define SCAP_FEED   2
 
#define CERT_FEED   3
 

Typedefs

typedef enum scanner_type scanner_type_t
 Scanner types. More...
 
typedef long long int agent_t
 
typedef long long int config_t
 
typedef long long int credential_t
 
typedef long long int alert_t
 
typedef long long int filter_t
 
typedef long long int group_t
 
typedef long long int host_t
 
typedef long long int tag_t
 
typedef long long int target_t
 
typedef long long int task_t
 
typedef long long int result_t
 
typedef long long int report_t
 
typedef long long int report_host_t
 
typedef long long int report_format_t
 
typedef long long int report_format_param_t
 
typedef long long int role_t
 
typedef long long int note_t
 
typedef long long int nvt_t
 
typedef long long int override_t
 
typedef long long int permission_t
 
typedef long long int port_list_t
 
typedef long long int port_range_t
 
typedef long long int schedule_t
 
typedef long long int scanner_t
 
typedef long long int setting_t
 
typedef long long int user_t
 
typedef struct keyword keyword_t
 Keyword type. More...
 

Enumerations

enum  task_status_t {
  TASK_STATUS_DELETE_REQUESTED = 0, TASK_STATUS_DONE = 1, TASK_STATUS_NEW = 2, TASK_STATUS_REQUESTED = 3,
  TASK_STATUS_RUNNING = 4, TASK_STATUS_STOP_REQUESTED = 10, TASK_STATUS_STOP_WAITING = 11, TASK_STATUS_STOPPED = 12,
  TASK_STATUS_INTERNAL_ERROR = 13, TASK_STATUS_DELETE_ULTIMATE_REQUESTED = 14, TASK_STATUS_STOP_REQUESTED_GIVEUP = 15, TASK_STATUS_DELETE_WAITING = 16,
  TASK_STATUS_DELETE_ULTIMATE_WAITING = 17
}
 Task statuses, also used as scan/report statuses. More...
 
enum  alive_test_t {
  ALIVE_TEST_TCP_ACK_SERVICE = 1, ALIVE_TEST_ICMP = 2, ALIVE_TEST_ARP = 4, ALIVE_TEST_CONSIDER_ALIVE = 8,
  ALIVE_TEST_TCP_SYN_SERVICE = 16
}
 Alive tests. More...
 
enum  scanner_type {
  SCANNER_TYPE_NONE = 0, SCANNER_TYPE_OSP, SCANNER_TYPE_OPENVAS, SCANNER_TYPE_CVE,
  SCANNER_TYPE_OMP, SCANNER_TYPE_MAX
}
 Scanner types. More...
 
enum  event_t { EVENT_ERROR, EVENT_TASK_RUN_STATUS_CHANGED, EVENT_NEW_SECINFO, EVENT_UPDATED_SECINFO }
 Types of task events. More...
 
enum  alert_method_t {
  ALERT_METHOD_ERROR, ALERT_METHOD_EMAIL, ALERT_METHOD_HTTP_GET, ALERT_METHOD_SOURCEFIRE,
  ALERT_METHOD_START_TASK, ALERT_METHOD_SYSLOG, ALERT_METHOD_VERINICE, ALERT_METHOD_SEND,
  ALERT_METHOD_SCP, ALERT_METHOD_SNMP, ALERT_METHOD_SMB, ALERT_METHOD_TIPPINGPOINT
}
 Types of alerts. More...
 
enum  alert_condition_t {
  ALERT_CONDITION_ERROR, ALERT_CONDITION_ALWAYS, ALERT_CONDITION_SEVERITY_AT_LEAST, ALERT_CONDITION_SEVERITY_CHANGED,
  ALERT_CONDITION_FILTER_COUNT_AT_LEAST, ALERT_CONDITION_FILTER_COUNT_CHANGED
}
 Types of alert conditions. More...
 
enum  report_format_param_type_t {
  REPORT_FORMAT_PARAM_TYPE_BOOLEAN = 0, REPORT_FORMAT_PARAM_TYPE_INTEGER = 1, REPORT_FORMAT_PARAM_TYPE_SELECTION = 2, REPORT_FORMAT_PARAM_TYPE_STRING = 3,
  REPORT_FORMAT_PARAM_TYPE_TEXT = 4, REPORT_FORMAT_PARAM_TYPE_REPORT_FORMAT_LIST = 5, REPORT_FORMAT_PARAM_TYPE_ERROR = 100
}
 Report format param types. More...
 
enum  keyword_type_t { KEYWORD_TYPE_UNKNOWN, KEYWORD_TYPE_INTEGER, KEYWORD_TYPE_DOUBLE, KEYWORD_TYPE_STRING }
 Keyword type. More...
 
enum  keyword_relation_t {
  KEYWORD_RELATION_APPROX, KEYWORD_RELATION_COLUMN_ABOVE, KEYWORD_RELATION_COLUMN_APPROX, KEYWORD_RELATION_COLUMN_EQUAL,
  KEYWORD_RELATION_COLUMN_BELOW, KEYWORD_RELATION_COLUMN_REGEXP
}
 Comparison returns. More...
 

Functions

int init_manage (GSList *, int, const gchar *, int, int, int, int, void(*)(), int(*)(openvas_connection_t *, gchar *), int)
 Initialize the manage library. More...
 
int init_manage_helper (GSList *, const gchar *, int, void(*)())
 Initialize the manage library for a helper program. More...
 
void init_manage_process (int, const gchar *)
 Initialize the manage library for a process. More...
 
void cleanup_manage_process (gboolean)
 Cleanup the manage library. More...
 
void manage_cleanup_process_error (int)
 Cleanup as immediately as possible. More...
 
void manage_reset_currents ()
 Cleanup as immediately as possible. More...
 
gchar * truncate_certificate (const gchar *)
 Truncate a certificate, removing extra data. More...
 
gchar * truncate_private_key (const gchar *)
 Truncate a private key, removing extra data. More...
 
int get_certificate_info (const gchar *, time_t *, time_t *, gchar **, gchar **)
 Gathers info from a certificate. More...
 
gchar * certificate_iso_time (time_t)
 Converts a certificate time to an ISO time string. More...
 
const gchar * certificate_time_status (time_t, time_t)
 Tests the activation and expiration time of a certificate. More...
 
int authenticate (credentials_t *)
 Authenticate credentials. More...
 
int manage_backup_db (const gchar *)
 Backup the database to a file. More...
 
int manage_db_supported_version ()
 Return the database version supported by this manager. More...
 
int manage_db_version ()
 Return the database version of the actual database. More...
 
int manage_scap_db_supported_version ()
 Return the database version supported by this manager. More...
 
int manage_scap_db_version ()
 Return the database version of the actual database. More...
 
int manage_cert_db_supported_version ()
 Return the database version supported by this manager. More...
 
int manage_cert_db_version ()
 Return the database version of the actual database. More...
 
char * port_name_formatted (const char *)
 Returns formatted port number, protocol and iana name from. More...
 
void set_db_version (int version)
 Set the database version of the actual database. More...
 
char * manage_port_name (int, const char *)
 Returns associated name for a tcp/ip port. More...
 
int manage_migrate (GSList *, const gchar *)
 Migrate database to version supported by this manager. More...
 
int manage_encrypt_all_credentials (GSList *, const gchar *)
 Encrypt or re-encrypt all credentials. More...
 
int manage_decrypt_all_credentials (GSList *, const gchar *)
 Decrypt all credentials. More...
 
void manage_session_set_timezone (const char *)
 Setup session timezone. More...
 
void manage_transaction_start ()
 
void manage_transaction_stop (gboolean)
 
void get_data_reset (get_data_t *)
 Reset command data. More...
 
resource_t get_iterator_resource (iterator_t *)
 
const char * get_iterator_uuid (iterator_t *)
 
const char * get_iterator_name (iterator_t *)
 
const char * get_iterator_comment (iterator_t *)
 
const char * get_iterator_creation_time (iterator_t *)
 
const char * get_iterator_modification_time (iterator_t *)
 
const char * get_iterator_owner_name (iterator_t *)
 
user_t get_iterator_owner (iterator_t *)
 
int manage_resource_name (const char *, const char *, char **)
 Get the name of a resource. More...
 
int manage_trash_resource_name (const char *, const char *, char **)
 Get the name of a trashcan resource. More...
 
int resource_count (const char *, const get_data_t *)
 Return number of resources of a certain type for current user. More...
 
int resource_id_exists (const char *, const char *)
 Test whether a resource of the given type and unique ID exists. More...
 
int trash_id_exists (const char *, const char *)
 Test Whether a resource of the given type and ID exists in the trash. More...
 
gboolean find_resource (const char *, const char *, resource_t *)
 Find a resource given a UUID. More...
 
const char * type_name_plural (const char *)
 Return the plural name of a resource type. More...
 
const char * type_name (const char *)
 Return the name of a resource type. More...
 
int type_is_scap (const char *)
 Check if a type is a SCAP type. More...
 
int manage_check_alerts (GSList *, const gchar *)
 Check if any SecInfo alerts are due. More...
 
int create_alert (const char *, const char *, const char *, event_t, GPtrArray *, alert_condition_t, GPtrArray *, alert_method_t, GPtrArray *, alert_t *)
 Create an alert. More...
 
int copy_alert (const char *, const char *, const char *, alert_t *)
 Create an alert from an existing alert. More...
 
int modify_alert (const char *, const char *, const char *, const char *, event_t, GPtrArray *, alert_condition_t, GPtrArray *, alert_method_t, GPtrArray *)
 Modify an alert. More...
 
int delete_alert (const char *, int)
 Delete an alert. More...
 
char * alert_uuid (alert_t)
 Return the UUID of an alert. More...
 
gboolean find_alert_with_permission (const char *, alert_t *, const char *)
 Find a alert for a specific permission, given a UUID. More...
 
int manage_alert (const char *, const char *, event_t, const void *, gchar **)
 Escalate an alert with task and event data. More...
 
int manage_test_alert (const char *, gchar **)
 Test an alert. More...
 
int alert_in_use (alert_t)
 Return whether a alert is in use by a task. More...
 
int trash_alert_in_use (alert_t)
 Return whether a trashcan alert is in use by a task. More...
 
int alert_writable (alert_t)
 Return whether a alert is writable. More...
 
int trash_alert_writable (alert_t)
 Return whether a trashcan alert is writable. More...
 
int alert_count (const get_data_t *)
 Count the number of alerts. More...
 
int init_alert_iterator (iterator_t *, const get_data_t *)
 Initialise an alert iterator, including observed alerts. More...
 
int alert_iterator_event (iterator_t *)
 Return the event from an alert iterator. More...
 
int alert_iterator_condition (iterator_t *)
 Return the condition from an alert iterator. More...
 
int alert_iterator_method (iterator_t *)
 Return the method from an alert iterator. More...
 
char * alert_iterator_filter_uuid (iterator_t *)
 Return the filter UUID from an alert iterator. More...
 
char * alert_iterator_filter_name (iterator_t *)
 Return the filter name from an alert iterator. More...
 
int alert_iterator_filter_trash (iterator_t *)
 Return the location of an alert iterator filter. More...
 
int alert_iterator_filter_readable (iterator_t *)
 Return the filter readable state from an alert iterator. More...
 
const char * alert_condition_name (alert_condition_t)
 Get the name of an alert condition. More...
 
gchar * alert_condition_description (alert_condition_t, alert_t)
 Get a description of an alert condition. More...
 
const char * event_name (event_t)
 Get the name of an alert event. More...
 
gchar * event_description (event_t, const void *, const char *)
 Get a description of an alert event. More...
 
const char * alert_method_name (alert_method_t)
 Get the name of an alert method. More...
 
alert_condition_t alert_condition_from_name (const char *)
 Get an alert condition from a name. More...
 
event_t event_from_name (const char *)
 Get an event from a name. More...
 
alert_method_t alert_method_from_name (const char *)
 Get an alert method from a name. More...
 
void init_alert_data_iterator (iterator_t *, alert_t, int, const char *)
 Initialise an alert data iterator. More...
 
const char * alert_data_iterator_name (iterator_t *)
 Return the name from an alert data iterator. More...
 
const char * alert_data_iterator_data (iterator_t *)
 Return the data from an alert data iterator. More...
 
void init_alert_task_iterator (iterator_t *, alert_t, int)
 Initialise an alert task iterator. More...
 
const char * alert_task_iterator_name (iterator_t *)
 Return the name from an alert task iterator. More...
 
const char * alert_task_iterator_uuid (iterator_t *)
 Return the uuid from an alert task iterator. More...
 
int alert_task_iterator_readable (iterator_t *)
 Get the read permission status from a GET iterator. More...
 
void init_task_alert_iterator (iterator_t *, task_t, event_t event)
 Initialise a task alert iterator. More...
 
alert_t task_alert_iterator_alert (iterator_t *)
 Get the alert from a task alert iterator. More...
 
const char * task_alert_iterator_uuid (iterator_t *)
 
const char * task_alert_iterator_name (iterator_t *)
 
unsigned int task_count (const get_data_t *)
 Return the number of tasks associated with the current user. More...
 
int init_task_iterator (iterator_t *, const get_data_t *)
 Initialise a task iterator. More...
 
task_status_t task_iterator_run_status (iterator_t *)
 Get the run status from a task iterator. More...
 
const char * task_iterator_run_status_name (iterator_t *)
 Get the run status name from a task iterator. More...
 
int task_iterator_total_reports (iterator_t *)
 Get the number of reports of a task iterator. More...
 
int task_iterator_finished_reports (iterator_t *)
 Get the number of reports of a task iterator. More...
 
const char * task_iterator_first_report (iterator_t *)
 Get the first report UUID from a task iterator. More...
 
const char * task_iterator_last_report (iterator_t *)
 Get the last report UUID from a task iterator. More...
 
report_t task_iterator_current_report (iterator_t *)
 Return the current report of a task. More...
 
const char * task_iterator_hosts_ordering (iterator_t *)
 Get the hosts ordering value from a task iterator. More...
 
scanner_t task_iterator_scanner (iterator_t *)
 Get the UUID of task scanner from a task iterator. More...
 
unsigned int task_id (task_t)
 Return the identifier of a task. More...
 
int task_uuid (task_t, char **)
 Return the UUID of a task. More...
 
int task_in_trash (task_t)
 Return whether a task is in the trashcan. More...
 
int task_in_use (task_t)
 Return whether a task is in use by a task. More...
 
int trash_task_in_use (task_t)
 Return whether a trashcan task is referenced by a task. More...
 
int task_writable (task_t)
 Return whether a task is writable. More...
 
int task_alterable (task_t)
 Return whether a task is an Alterable Task. More...
 
int trash_task_writable (task_t)
 Return whether a trashcan task is writable. More...
 
int task_average_scan_duration (task_t)
 Get the average duration of all finished reports of a task. More...
 
char * task_owner_name (task_t)
 Return the name of the owner of a task. More...
 
char * task_name (task_t)
 Return the name of a task. More...
 
char * task_comment (task_t)
 Return the comment of a task. More...
 
char * task_hosts_ordering (task_t)
 Return the hosts ordering of a task. More...
 
scanner_t task_scanner (task_t)
 Return the scanner of a task. More...
 
int task_scanner_in_trash (task_t)
 Return whether the scanner of a task is in the trashcan. More...
 
config_t task_config (task_t)
 Return the config of a task. More...
 
char * task_config_uuid (task_t)
 Return the UUID of the config of a task. More...
 
char * task_config_name (task_t)
 Return the name of the config of a task. More...
 
int task_config_in_trash (task_t)
 Return whether the config of a task is in the trashcan. More...
 
void set_task_config (task_t, config_t)
 Set the config of a task. More...
 
target_t task_target (task_t)
 Return the target of a task. More...
 
int task_target_in_trash (task_t)
 Return whether the target of a task is in the trashcan. More...
 
void set_task_target (task_t, target_t)
 Set the target of a task. More...
 
void set_task_hosts_ordering (task_t, const char *)
 Set the hosts ordering of a task. More...
 
void set_task_scanner (task_t, scanner_t)
 Set the scanner of a task. More...
 
char * task_description (task_t)
 
void set_task_description (task_t, char *, gsize)
 
task_status_t task_run_status (task_t)
 Return the run state of a task. More...
 
void set_task_run_status (task_t, task_status_t)
 Set the run state of a task. More...
 
int task_result_count (task_t, int)
 Return number of results in a task. More...
 
report_t task_running_report (task_t)
 Return the running report of a task. More...
 
int task_upload_progress (task_t)
 Return the upload progress of a task. More...
 
void set_task_start_time (task_t, char *)
 Set the start time of a task. More...
 
void set_task_start_time_epoch (task_t, int)
 Set the start time of a task. More...
 
void set_task_start_time_otp (task_t, char *)
 Set the start time of a task. More...
 
void set_task_end_time (task_t task, char *time)
 
void set_task_end_time_epoch (task_t, time_t)
 
void add_task_alert (task_t, alert_t)
 Add an alert to a task. More...
 
int set_task_alerts (task_t, array_t *, gchar **)
 Set the alerts on a task, removing any previous alerts. More...
 
void set_task_alterable (task_t, int)
 Set the alterable state of a task. More...
 
int set_task_groups (task_t, array_t *, gchar **)
 Set observer groups on a task, removing any previous groups. More...
 
int set_task_schedule (task_t, schedule_t, int)
 Set the schedule of a task. More...
 
int set_task_schedule_periods (const gchar *, int)
 Set the schedule periods of a task, given a UUID. More...
 
int set_task_schedule_periods_id (task_t, int)
 Set the schedule periods of a task, given an ID. More...
 
unsigned int task_report_count (task_t)
 
int task_last_report (task_t, report_t *)
 Get the report from the most recently completed invocation of task. More...
 
const char * task_iterator_trend_counts (iterator_t *, int, int, int, double, int, int, int, double)
 
const char * task_trend (task_t, int, int)
 
int task_schedule_periods (task_t)
 Get the number of times the period schedule should run on the task. More...
 
int task_schedule_periods_uuid (const gchar *)
 Set the next time a scheduled task will be due. More...
 
schedule_t task_schedule (task_t)
 Return the schedule of a task. More...
 
schedule_t task_schedule_uuid (const gchar *)
 Return the schedule of a task. More...
 
int task_schedule_in_trash (task_t)
 Get whether the task schedule is in the trash. More...
 
time_t task_schedule_next_time_uuid (const gchar *)
 Set the next time a scheduled task will be due. More...
 
int task_schedule_next_time (task_t)
 Get next time a scheduled task will run, following schedule timezone. More...
 
char * task_severity (task_t, int, int, int)
 Return the severity score of a task, taking overrides into account. More...
 
double task_severity_double (task_t, int, int, int)
 Return the severity score of a task, taking overrides into account. More...
 
int task_debugs_size (task_t)
 
int task_holes_size (task_t)
 
int task_infos_size (task_t)
 
int task_logs_size (task_t)
 
int task_warnings_size (task_t)
 
int task_false_positive_size (task_t)
 
void free_tasks ()
 
task_t make_task (char *, char *, int, int)
 
void make_task_complete (const char *)
 
int copy_task (const char *, const char *, const char *, int, task_t *)
 
int load_tasks ()
 
int save_tasks ()
 
gboolean find_task (const char *id, task_t *)
 
gboolean find_task_with_permission (const char *, task_t *, const char *)
 
gboolean find_trash_task_with_permission (const char *, task_t *, const char *)
 
void reset_task (task_t)
 
int set_task_parameter (task_t, const char *, char *)
 
char * task_observers (task_t)
 Return the observers of a task. More...
 
int set_task_observers (task_t, const gchar *)
 Set the observers of a task. More...
 
int request_delete_task_uuid (const char *, int)
 
int request_delete_task (task_t *)
 
int delete_task (task_t, int)
 
int cleanup_schedule_times ()
 
int delete_task_lock (task_t, int)
 
void append_to_task_comment (task_t, const char *, int)
 
void append_to_task_name (task_t, const char *, int)
 
void add_task_description_line (task_t, const char *, size_t)
 
void set_scan_ports (report_t, const char *, unsigned int, unsigned int)
 
void append_task_open_port (task_t task, const char *, const char *)
 
void manage_task_update_file (task_t, const char *, const void *)
 
int manage_task_remove_file (task_t, const char *)
 
void init_config_file_iterator (iterator_t *, const char *, const char *)
 
const char * config_file_iterator_content (iterator_t *)
 
int config_file_iterator_length (iterator_t *)
 
void init_config_task_iterator (iterator_t *, config_t, int)
 
const char * config_task_iterator_name (iterator_t *)
 
const char * config_task_iterator_uuid (iterator_t *)
 
int config_task_iterator_readable (iterator_t *)
 
int severity_in_level (double, const char *)
 Check whether a severity falls within a threat level. More...
 
int severity_matches_ov (double, double)
 Check whether a severity matches an override's severity. More...
 
const char * severity_to_level (double, int)
 Get the threat level matching a severity score. More...
 
const char * severity_to_type (double)
 Get the message type matching a severity score. More...
 
int severity_data_index (double)
 Convert a severity value into an index in the counts array. More...
 
double severity_data_value (int)
 Convert an index in the counts array to a severity value. More...
 
void init_severity_data (severity_data_t *)
 Initialize a severity data structure. More...
 
void cleanup_severity_data (severity_data_t *)
 Clean up a severity data structure. More...
 
void severity_data_add (severity_data_t *, double)
 Add a severity occurrence to the counts of a severity_data_t. More...
 
void severity_data_add_count (severity_data_t *, double, int)
 Add a multiple severity occurrences to the counts of a severity_data_t. More...
 
int severity_data_range_count (const severity_data_t *, double, double)
 Calculate the total of severity counts in a range. More...
 
void severity_data_level_counts (const severity_data_t *, const gchar *, int *, int *, int *, int *, int *, int *, int *)
 Count the occurrences of severities in the levels. More...
 
const char * run_status_name (task_status_t)
 Get the name of a run status. More...
 
int start_task (const char *, char **)
 Start a task. More...
 
int stop_task (const char *)
 Initiate stopping a task. More...
 
int resume_task (const char *, char **)
 Resume a task. More...
 
int move_task (const char *, const char *)
 Reassign a task to another slave. More...
 
void cleanup_iterator (iterator_t *)
 Cleanup an iterator. More...
 
gboolean next (iterator_t *)
 Increment an iterator. More...
 
int user_may (const char *)
 
int user_can_everything (const char *)
 
int user_can_super_everyone (const char *)
 
int user_has_super (const char *, user_t)
 
gboolean find_result_with_permission (const char *, result_t *, const char *)
 
int result_uuid (result_t, char **)
 
int result_detection_reference (result_t, char **, char **, char **, char **, char **)
 
void reports_clear_count_cache (int)
 
void reports_clear_count_cache_for_override (override_t, int)
 
void reports_build_count_cache (int, int *)
 
void init_report_counts_build_iterator (iterator_t *, report_t, int, int, const char *)
 
int report_counts_build_iterator_min_qod (iterator_t *)
 
int report_counts_build_iterator_override (iterator_t *)
 
user_t report_counts_build_iterator_user (iterator_t *)
 
void report_cache_counts (report_t, int, int, const char *)
 
void report_clear_count_cache (report_t, int, int, const char *)
 
double report_severity (report_t, int, int)
 
int report_host_count (report_t)
 
int report_result_host_count (report_t, int)
 
gboolean find_report_with_permission (const char *, report_t *, const char *)
 
report_t make_report (task_t, const char *, task_status_t)
 
int qod_from_type (const char *)
 
char * nvt_severity (const char *, const char *)
 
result_t make_result (task_t, const char *, const char *, const char *, const char *, const char *)
 
result_t make_osp_result (task_t, const char *, const char *, const char *, const char *, const char *, const char *, int)
 
result_t make_cve_result (task_t, const char *, const char *, double, const char *)
 
void host_detail_free (host_detail_t *)
 
void insert_report_host_detail (report_t, const char *, const char *, const char *, const char *, const char *, const char *)
 
int manage_report_host_detail (report_t, const char *, const char *)
 
void hosts_set_identifiers ()
 
void hosts_set_max_severity (report_t, int *, int *)
 
void hosts_set_details (report_t report)
 
void clear_duration_schedules (task_t)
 
void update_duration_schedule_periods (task_t)
 
int create_report (array_t *, const char *, const char *, const char *, const char *, const char *, const char *, array_t *, array_t *, array_t *, char **)
 
void report_add_result (report_t, result_t)
 
char * report_uuid (report_t)
 
void report_set_slave_uuid (report_t, const gchar *)
 
void report_set_slave_name (report_t, const gchar *)
 
void report_set_slave_host (report_t, const gchar *)
 
void report_set_slave_port (report_t, int)
 
void report_set_slave_username (report_t, const gchar *)
 
void report_set_slave_password (report_t, const gchar *)
 
void report_set_source_iface (report_t, const gchar *)
 
int task_last_stopped_report (task_t, report_t *)
 Get the report from the most recently stopped invocation of task. More...
 
gchar * task_second_last_report_id (task_t)
 Get report ID from second most recently completed invocation of task. More...
 
gchar * report_path_task_uuid (gchar *)
 
gboolean report_task (report_t, task_t *)
 
int report_scan_run_status (report_t, int *)
 
int report_slave_progress (report_t)
 
char * report_slave_task_uuid (report_t)
 
int report_scan_result_count (report_t, const char *, const char *, int, const char *, const char *, int, int, int *)
 
int report_counts (const char *, int *, int *, int *, int *, int *, int *, double *, int, int, int)
 
int report_counts_id (report_t, int *, int *, int *, int *, int *, int *, double *, const get_data_t *, const char *)
 
int report_counts_id_no_filt (report_t, int *, int *, int *, int *, int *, int *, double *, const get_data_t *, const char *)
 
gchar * report_results_filter_term (int, int, int, int, int)
 Create a basic filter term to get report results. More...
 
get_data_treport_results_get_data (int, int, int, int, int)
 Create a new basic get_data_t struct to get report results. More...
 
char * scan_start_time (report_t)
 
int scan_start_time_epoch (report_t)
 
char * scan_start_time_uuid (const char *)
 
char * scan_end_time_uuid (const char *)
 
void set_scan_start_time (report_t, const char *)
 
void set_scan_start_time_otp (report_t, const char *)
 
void set_scan_start_time_epoch (report_t, time_t)
 
char * scan_end_time (report_t)
 
void set_scan_end_time (report_t, const char *)
 
void set_scan_end_time_otp (report_t, const char *)
 
void set_scan_end_time_epoch (report_t, time_t)
 
void set_scan_host_start_time (report_t, const char *, const char *)
 
void set_scan_host_start_time_otp (report_t, const char *, const char *)
 
int scan_host_end_time (report_t, const char *)
 
void set_scan_host_end_time (report_t, const char *, const char *)
 
void set_scan_host_end_time_otp (report_t, const char *, const char *)
 
int report_timestamp (const char *, gchar **)
 
int modify_report (const char *, const char *)
 
int delete_report (const char *, int)
 
int report_count (const get_data_t *)
 
int init_report_iterator (iterator_t *, const get_data_t *)
 
void init_report_iterator_task (iterator_t *, task_t)
 
void init_report_errors_iterator (iterator_t *, report_t)
 
const char * report_iterator_uuid (iterator_t *)
 
int result_count (const get_data_t *, report_t, const char *)
 
int init_result_get_iterator (iterator_t *, const get_data_t *, report_t, const char *, const gchar *)
 
gboolean next_report (iterator_t *, report_t *)
 
result_t result_iterator_result (iterator_t *)
 
const char * result_iterator_host (iterator_t *)
 
const char * result_iterator_port (iterator_t *)
 
const char * result_iterator_nvt_oid (iterator_t *)
 
const char * result_iterator_nvt_name (iterator_t *)
 
const char * result_iterator_nvt_family (iterator_t *)
 
const char * result_iterator_nvt_cvss_base (iterator_t *)
 
const char * result_iterator_nvt_cve (iterator_t *)
 
const char * result_iterator_nvt_bid (iterator_t *)
 
const char * result_iterator_nvt_xref (iterator_t *)
 
const char * result_iterator_nvt_tag (iterator_t *)
 
const char * result_iterator_type (iterator_t *)
 
const char * result_iterator_original_type (iterator_t *)
 
const char * result_iterator_descr (iterator_t *)
 
task_t result_iterator_task (iterator_t *)
 
report_t result_iterator_report (iterator_t *)
 
const char * result_iterator_scan_nvt_version (iterator_t *)
 
const char * result_iterator_original_severity (iterator_t *)
 
const char * result_iterator_severity (iterator_t *)
 
double result_iterator_severity_double (iterator_t *)
 
const char * result_iterator_original_level (iterator_t *)
 
const char * result_iterator_level (iterator_t *)
 
const char * result_iterator_qod (iterator_t *)
 
const char * result_iterator_qod_type (iterator_t *)
 
const char * result_iterator_date (iterator_t *)
 
void init_report_host_iterator (iterator_t *, report_t, const char *, report_host_t)
 
const char * host_iterator_host (iterator_t *)
 
const char * host_iterator_start_time (iterator_t *)
 
const char * host_iterator_end_time (iterator_t *)
 
int host_iterator_current_port (iterator_t *)
 
int host_iterator_max_port (iterator_t *)
 
int collate_message_type (void *data, int, const void *, int, const void *)
 Collate two message type strings. More...
 
void trim_partial_report (report_t)
 
int report_progress (report_t, task_t, gchar **)
 
gchar * manage_report (report_t, const get_data_t *, report_format_t, int, int, const char *, gsize *, gchar **, gchar **, gchar **, gchar **, gchar **)
 
int manage_send_report (report_t, report_t, report_format_t, const get_data_t *, int, int, int, int, gboolean(*)(const char *, int(*)(const char *, void *), void *), int(*)(const char *, void *), void *, const char *, const char *, const char *, int, const char *, const char *, int, int, const gchar *)
 
gchar * app_location (report_host_t, const gchar *)
 
void init_host_prognosis_iterator (iterator_t *, report_host_t, int, int, const char *, const char *, int, const char *)
 
double prognosis_iterator_cvss_double (iterator_t *)
 
const char * prognosis_iterator_cpe (iterator_t *)
 
const char * prognosis_iterator_cve (iterator_t *)
 
const char * prognosis_iterator_description (iterator_t *)
 
int manage_max_hosts ()
 
void manage_filter_controls (const gchar *, int *, int *, gchar **, int *)
 Get info from a filter. More...
 
void manage_report_filter_controls (const gchar *, int *, int *, gchar **, int *, int *, gchar **, gchar **, gchar **, gchar **, int *, int *, int *, int *, int *, gchar **)
 Get info from a filter for report. More...
 
gchar * manage_clean_filter (const gchar *)
 Clean a filter. More...
 
gchar * manage_clean_filter_remove (const gchar *, const gchar *)
 Clean a filter, removing a keyword in the process. More...
 
int manage_count_hosts (const char *, const char *)
 
gboolean find_target_with_permission (const char *, target_t *, const char *)
 
int create_target (const char *, const char *, const char *, const char *, const char *, const char *, const char *, credential_t, const char *, credential_t, credential_t, credential_t, const char *, const char *, const char *, int, target_t *)
 
int copy_target (const char *, const char *, const char *, target_t *)
 
int modify_target (const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int delete_target (const char *, int)
 
int target_count (const get_data_t *)
 
void init_user_target_iterator (iterator_t *, target_t)
 
void init_target_iterator_one (iterator_t *, target_t)
 
int init_target_iterator (iterator_t *, const get_data_t *)
 
const char * target_iterator_hosts (iterator_t *)
 
const char * target_iterator_exclude_hosts (iterator_t *)
 
const char * target_iterator_reverse_lookup_only (iterator_t *)
 
const char * target_iterator_reverse_lookup_unify (iterator_t *)
 
const char * target_iterator_comment (iterator_t *)
 
int target_iterator_ssh_credential (iterator_t *)
 
const char * target_iterator_ssh_port (iterator_t *)
 
int target_iterator_smb_credential (iterator_t *)
 
int target_iterator_esxi_credential (iterator_t *)
 
int target_iterator_snmp_credential (iterator_t *)
 
int target_iterator_ssh_trash (iterator_t *)
 
int target_iterator_smb_trash (iterator_t *)
 
int target_iterator_esxi_trash (iterator_t *)
 
int target_iterator_snmp_trash (iterator_t *)
 
const char * target_iterator_port_list_uuid (iterator_t *)
 
const char * target_iterator_port_list_name (iterator_t *)
 
int target_iterator_port_list_trash (iterator_t *)
 
const char * target_iterator_alive_tests (iterator_t *)
 
char * target_uuid (target_t)
 
char * trash_target_uuid (target_t)
 
char * target_name (target_t)
 
char * trash_target_name (target_t)
 
int trash_target_readable (target_t)
 
char * target_hosts (target_t)
 
char * target_exclude_hosts (target_t)
 
char * target_reverse_lookup_only (target_t)
 
char * target_reverse_lookup_unify (target_t)
 
char * target_port_range (target_t)
 
char * target_ssh_port (target_t)
 
char * trash_target_hosts (target_t)
 
char * trash_target_exclude_hosts (target_t)
 
int target_in_use (target_t)
 
int trash_target_in_use (target_t)
 
int target_writable (target_t)
 
int trash_target_writable (target_t)
 
char * target_ssh_credential_name (const char *)
 
void init_target_task_iterator (iterator_t *, target_t)
 
const char * target_task_iterator_name (iterator_t *)
 
const char * target_task_iterator_uuid (iterator_t *)
 
int target_task_iterator_readable (iterator_t *)
 
credential_t target_credential (target_t, const char *)
 
credential_t trash_target_credential (target_t, const char *)
 
int trash_target_credential_location (target_t, const char *)
 
int target_login_port (target_t, const char *)
 
int trash_target_login_port (target_t, const char *)
 
int create_config (const char *, const char *, const array_t *, const array_t *, const char *, config_t *, char **)
 
int create_config_from_scanner (const char *, const char *, const char *, char **)
 
int copy_config (const char *, const char *, const char *, config_t *)
 
int delete_config (const char *, int)
 
int sync_config (const char *)
 
gboolean find_config_with_permission (const char *, config_t *, const char *)
 
gboolean find_config (const char *, config_t *)
 
char * config_uuid (config_t)
 
int config_type (config_t)
 
scanner_t config_scanner (config_t)
 
char * config_nvt_timeout (config_t, const char *)
 
void init_user_config_iterator (iterator_t *, config_t, int, int, const char *)
 
int init_config_iterator (iterator_t *, const get_data_t *)
 
const char * config_iterator_nvt_selector (iterator_t *)
 
int config_iterator_nvt_count (iterator_t *)
 
int config_iterator_family_count (iterator_t *)
 
int config_iterator_nvts_growing (iterator_t *)
 
int config_iterator_type (iterator_t *)
 
int config_iterator_families_growing (iterator_t *)
 
char * config_nvt_selector (config_t)
 
int config_in_use (config_t)
 
int config_writable (config_t)
 
int config_count (const get_data_t *)
 
int trash_config_in_use (config_t)
 
int trash_config_writable (config_t)
 
int trash_config_readable_uuid (const gchar *)
 
int config_families_growing (config_t)
 
int config_nvts_growing (config_t)
 
int create_task_check_config_scanner (config_t, scanner_t)
 
int modify_task_check_config_scanner (task_t, const char *, const char *)
 
int manage_set_config_preference (config_t, const char *, const char *, const char *)
 
void init_preference_iterator (iterator_t *, config_t)
 
const char * preference_iterator_name (iterator_t *)
 
const char * preference_iterator_value (iterator_t *)
 
const char * preference_iterator_type (iterator_t *)
 
const char * preference_iterator_default (iterator_t *)
 
const char * preference_iterator_hr_name (iterator_t *)
 
int manage_set_config (config_t, const char *, const char *, const char *)
 
int manage_set_config_nvts (config_t, const char *, GPtrArray *)
 
int manage_set_config_families (config_t, GPtrArray *, GPtrArray *, GPtrArray *, int)
 
void init_config_timeout_iterator (iterator_t *, config_t)
 
const char * config_timeout_iterator_oid (iterator_t *)
 
const char * config_timeout_iterator_nvt_name (iterator_t *)
 
const char * config_timeout_iterator_value (iterator_t *)
 
char * manage_nvt_name (nvt_t)
 
char * nvt_oid (const char *)
 
char * nvts_feed_version ()
 
void set_nvts_feed_version (const char *)
 
nvt_t make_nvt_from_nvti (const nvti_t *, int)
 
gboolean find_nvt (const char *, nvt_t *)
 
int init_nvt_info_iterator (iterator_t *, get_data_t *, const char *)
 
int nvt_info_count (const get_data_t *)
 
void init_nvt_iterator (iterator_t *, nvt_t, config_t, const char *, const char *, int, const char *)
 
void init_cve_nvt_iterator (iterator_t *, const char *, int, const char *)
 
const char * nvt_iterator_oid (iterator_t *)
 
const char * nvt_iterator_version (iterator_t *)
 
const char * nvt_iterator_name (iterator_t *)
 
const char * nvt_iterator_description (iterator_t *)
 
const char * nvt_iterator_copyright (iterator_t *)
 
const char * nvt_iterator_cve (iterator_t *)
 
const char * nvt_iterator_bid (iterator_t *)
 
const char * nvt_iterator_xref (iterator_t *)
 
const char * nvt_iterator_tag (iterator_t *)
 
int nvt_iterator_category (iterator_t *)
 
const char * nvt_iterator_family (iterator_t *)
 
const char * nvt_iterator_cvss_base (iterator_t *)
 
const char * nvt_iterator_qod (iterator_t *)
 
const char * nvt_iterator_qod_type (iterator_t *iterator)
 
const char * nvt_iterator_solution_type (iterator_t *)
 
int family_nvt_count (const char *)
 
void manage_complete_nvt_cache_update (GList *, GList *, int)
 
void init_family_iterator (iterator_t *, int, const char *, int)
 
const char * family_iterator_name (iterator_t *)
 
int nvt_selector_family_growing (const char *, const char *, int)
 
int nvt_selector_family_count (const char *, int)
 
int nvt_selector_nvt_count (const char *, const char *, int)
 
void init_nvt_selector_iterator (iterator_t *, const char *, config_t, int)
 
const char * nvt_selector_iterator_nvt (iterator_t *)
 
const char * nvt_selector_iterator_name (iterator_t *)
 
int nvt_selector_iterator_include (iterator_t *)
 
int nvt_selector_iterator_type (iterator_t *)
 
void manage_nvt_preference_add (const char *, const char *, int)
 
void manage_nvt_preferences_enable ()
 
void init_nvt_preference_iterator (iterator_t *, const char *)
 
const char * nvt_preference_iterator_name (iterator_t *)
 
const char * nvt_preference_iterator_value (iterator_t *)
 
char * nvt_preference_iterator_config_value (iterator_t *, config_t)
 
char * nvt_preference_iterator_real_name (iterator_t *)
 
char * nvt_preference_iterator_type (iterator_t *)
 
char * nvt_preference_iterator_nvt (iterator_t *)
 
int nvt_preference_count (const char *)
 
gchar * get_nvti_xml (iterator_t *, int, int, int, const char *, config_t, int)
 Create and return XML description for an NVT. More...
 
char * task_preference_value (task_t, const char *)
 
int set_task_preferences (task_t, array_t *)
 
void init_task_group_iterator (iterator_t *, task_t)
 Initialise a task group iterator. More...
 
const char * task_group_iterator_name (iterator_t *)
 
const char * task_group_iterator_uuid (iterator_t *)
 
void init_task_role_iterator (iterator_t *, task_t)
 Initialise a task role iterator. More...
 
const char * task_role_iterator_name (iterator_t *)
 
const char * task_role_iterator_uuid (iterator_t *)
 
gboolean find_credential_with_permission (const char *, credential_t *, const char *)
 
int create_credential (const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, credential_t *)
 
int copy_credential (const char *, const char *, const char *, credential_t *)
 
int modify_credential (const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int delete_credential (const char *, int)
 
int credential_count (const get_data_t *)
 
void set_credential_name (credential_t, const char *)
 
void set_credential_comment (credential_t, const char *)
 
int set_credential_data (credential_t, const char *, const char *)
 
void set_credential_login (credential_t, const char *)
 
void set_credential_certificate (credential_t, const char *)
 
void set_credential_auth_algorithm (credential_t, const char *)
 
void set_credential_privacy_algorithm (credential_t, const char *)
 
void set_credential_password (credential_t, const char *)
 
void set_credential_private_key (credential_t, const char *, const char *)
 
void set_credential_snmp_secret (credential_t, const char *, const char *, const char *)
 
void init_credential_iterator_one (iterator_t *, credential_t)
 
int init_credential_iterator (iterator_t *, const get_data_t *)
 
const char * credential_iterator_login (iterator_t *)
 
const char * credential_iterator_auth_algorithm (iterator_t *)
 
const char * credential_iterator_privacy_algorithm (iterator_t *)
 
const char * credential_iterator_password (iterator_t *)
 
const char * credential_iterator_community (iterator_t *)
 
const char * credential_iterator_privacy_password (iterator_t *)
 
const char * credential_iterator_private_key (iterator_t *)
 
const char * credential_iterator_type (iterator_t *)
 
int credential_iterator_allow_insecure (iterator_t *)
 
const char * credential_full_type (const char *)
 Get the written-out name of an LSC Credential type. More...
 
char * credential_iterator_rpm (iterator_t *)
 
char * credential_iterator_deb (iterator_t *)
 
char * credential_iterator_exe (iterator_t *)
 
const char * credential_iterator_certificate (iterator_t *)
 
char * credential_uuid (credential_t)
 
char * trash_credential_uuid (credential_t)
 
char * credential_name (credential_t)
 
char * trash_credential_name (credential_t)
 
char * credential_type (credential_t)
 
void init_credential_target_iterator (iterator_t *, credential_t, int)
 
const char * credential_target_iterator_uuid (iterator_t *)
 
const char * credential_target_iterator_name (iterator_t *)
 
int credential_target_iterator_readable (iterator_t *)
 
void init_credential_scanner_iterator (iterator_t *, credential_t, int)
 
const char * credential_scanner_iterator_uuid (iterator_t *)
 
const char * credential_scanner_iterator_name (iterator_t *)
 
int credential_scanner_iterator_readable (iterator_t *)
 
int trash_credential_in_use (credential_t)
 
int credential_in_use (credential_t)
 
int trash_credential_writable (credential_t)
 
int credential_writable (credential_t)
 
int trash_credential_readable (credential_t)
 
gchar * credential_value (credential_t, const char *)
 
gchar * credential_encrypted_value (credential_t, const char *)
 
int create_agent (const char *, const char *, const char *, const char *, const char *, const char *, const char *, agent_t *)
 
int copy_agent (const char *, const char *, const char *, agent_t *)
 
int modify_agent (const char *, const char *, const char *)
 
int delete_agent (const char *, int)
 
int agent_in_use (agent_t)
 
int trash_agent_in_use (agent_t)
 
int trash_agent_writable (agent_t)
 
int agent_writable (agent_t)
 
int verify_agent (const char *)
 
char * agent_uuid (agent_t)
 
int agent_count (const get_data_t *)
 
int init_agent_iterator (iterator_t *, const get_data_t *)
 
const char * agent_iterator_installer (iterator_t *)
 
gsize agent_iterator_installer_size (iterator_t *)
 
const char * agent_iterator_installer_64 (iterator_t *)
 
const char * agent_iterator_installer_filename (iterator_t *)
 
const char * agent_iterator_installer_signature_64 (iterator_t *)
 
const char * agent_iterator_trust (iterator_t *)
 
time_t agent_iterator_trust_time (iterator_t *)
 
const char * agent_iterator_howto_install (iterator_t *)
 
const char * agent_iterator_howto_use (iterator_t *)
 
char * result_host_asset_id (const char *, result_t)
 
char * host_uuid (resource_t)
 
host_t host_notice (const char *, const char *, const char *, const char *, const char *, int, int)
 
void init_host_identifier_iterator (iterator_t *, host_t, int, const char *)
 
const char * host_identifier_iterator_value (iterator_t *)
 
const char * host_identifier_iterator_source_type (iterator_t *)
 
const char * host_identifier_iterator_source_id (iterator_t *)
 
const char * host_identifier_iterator_source_data (iterator_t *)
 
int host_identifier_iterator_source_orphan (iterator_t *)
 
const char * host_identifier_iterator_os_id (iterator_t *)
 
const char * host_identifier_iterator_os_title (iterator_t *)
 
int init_asset_host_iterator (iterator_t *, const get_data_t *)
 
int asset_iterator_writable (iterator_t *)
 
int asset_iterator_in_use (iterator_t *)
 
const char * asset_host_iterator_severity (iterator_t *)
 
int asset_host_count (const get_data_t *)
 
int init_asset_os_iterator (iterator_t *, const get_data_t *)
 
const char * asset_os_iterator_title (iterator_t *)
 
int asset_os_iterator_installs (iterator_t *)
 
const char * asset_os_iterator_latest_severity (iterator_t *)
 
const char * asset_os_iterator_highest_severity (iterator_t *)
 
const char * asset_os_iterator_average_severity (iterator_t *)
 
int asset_os_count (const get_data_t *)
 
int total_asset_count (const get_data_t *)
 
void init_os_host_iterator (iterator_t *, resource_t)
 
const char * os_host_iterator_severity (iterator_t *)
 
void init_host_detail_iterator (iterator_t *, resource_t)
 
const char * host_detail_iterator_name (iterator_t *)
 
const char * host_detail_iterator_value (iterator_t *)
 
const char * host_detail_iterator_source_type (iterator_t *)
 
const char * host_detail_iterator_source_id (iterator_t *)
 
int modify_asset (const char *, const char *)
 
int delete_asset (const char *, const char *, int)
 
int create_asset_report (const char *, const char *)
 
int create_asset_host (const char *, const char *, resource_t *)
 
gboolean find_note_with_permission (const char *, note_t *, const char *)
 
int create_note (const char *, const char *, const char *, const char *, const char *, const char *, const char *, task_t, result_t, note_t *)
 
int copy_note (const char *, note_t *)
 
int delete_note (const char *, int)
 
int note_uuid (note_t, char **)
 
int modify_note (note_t, const char *, const char *, const char *, const char *, const char *, const char *, task_t, result_t)
 
int note_count (const get_data_t *, nvt_t, result_t, task_t)
 
int init_note_iterator (iterator_t *, const get_data_t *, nvt_t, result_t, task_t)
 
const char * note_iterator_nvt_oid (iterator_t *)
 
time_t note_iterator_creation_time (iterator_t *)
 
time_t note_iterator_modification_time (iterator_t *)
 
const char * note_iterator_text (iterator_t *)
 
const char * note_iterator_hosts (iterator_t *)
 
const char * note_iterator_port (iterator_t *)
 
const char * note_iterator_threat (iterator_t *)
 
task_t note_iterator_task (iterator_t *)
 
result_t note_iterator_result (iterator_t *)
 
time_t note_iterator_end_time (iterator_t *)
 
int note_iterator_active (iterator_t *)
 
const char * note_iterator_nvt_name (iterator_t *)
 
const char * note_iterator_nvt_type (iterator_t *)
 
const char * note_iterator_severity (iterator_t *)
 
gboolean find_override_with_permission (const char *, override_t *, const char *)
 
int create_override (const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, task_t, result_t, override_t *)
 
int override_uuid (override_t, char **)
 
int copy_override (const char *, override_t *)
 
int delete_override (const char *, int)
 
int modify_override (override_t, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, task_t, result_t)
 
int override_count (const get_data_t *, nvt_t, result_t, task_t)
 
int init_override_iterator (iterator_t *, const get_data_t *, nvt_t, result_t, task_t)
 
const char * override_iterator_nvt_oid (iterator_t *)
 
time_t override_iterator_creation_time (iterator_t *)
 
time_t override_iterator_modification_time (iterator_t *)
 
const char * override_iterator_text (iterator_t *)
 
const char * override_iterator_hosts (iterator_t *)
 
const char * override_iterator_port (iterator_t *)
 
const char * override_iterator_threat (iterator_t *)
 
const char * override_iterator_new_threat (iterator_t *)
 
task_t override_iterator_task (iterator_t *)
 
result_t override_iterator_result (iterator_t *)
 
time_t override_iterator_end_time (iterator_t *)
 
int override_iterator_active (iterator_t *)
 
const char * override_iterator_nvt_name (iterator_t *)
 
const char * override_iterator_nvt_type (iterator_t *)
 
const char * override_iterator_severity (iterator_t *)
 
const char * override_iterator_new_severity (iterator_t *)
 
int acknowledge_bye ()
 Acknowledge a scanner BYE. More...
 
int acknowledge_feed_version_info ()
 Acknowledge scanner PLUGINS_FEED_VERSION message,. More...
 
int manage_check_current_task ()
 Handle state changes to current task made by other processes. More...
 
int init_system_report_type_iterator (report_type_iterator_t *, const char *, const char *)
 Initialise a system report type iterator. More...
 
void cleanup_report_type_iterator (report_type_iterator_t *)
 Cleanup a report type iterator. More...
 
gboolean next_report_type (report_type_iterator_t *)
 Increment a report type iterator. More...
 
const char * report_type_iterator_name (report_type_iterator_t *)
 Return the name from a report type iterator. More...
 
const char * report_type_iterator_title (report_type_iterator_t *)
 Return the title from a report type iterator. More...
 
int manage_system_report (const char *, const char *, const char *, const char *, const char *, char **)
 Get a system report. More...
 
int manage_create_scanner (GSList *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int manage_modify_scanner (GSList *, const gchar *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int manage_delete_scanner (GSList *, const gchar *, const gchar *)
 
int manage_verify_scanner (GSList *, const gchar *, const gchar *)
 
int manage_get_scanners (GSList *, const gchar *)
 
gboolean find_scanner (const char *, scanner_t *)
 
int create_scanner (const char *, const char *, const char *, const char *, const char *, scanner_t *, const char *, const char *)
 
int copy_scanner (const char *, const char *, const char *, scanner_t *)
 
int modify_scanner (const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int delete_scanner (const char *, int)
 
gboolean find_scanner_with_permission (const char *, scanner_t *, const char *)
 
int scanner_in_use (scanner_t)
 
int trash_scanner_readable (scanner_t)
 
int trash_scanner_in_use (scanner_t)
 
int trash_scanner_writable (scanner_t)
 
int scanner_writable (scanner_t)
 
char * scanner_uuid (scanner_t)
 
const char * scanner_uuid_default ()
 
char * scanner_host (scanner_t)
 
int scanner_port (scanner_t)
 
int scanner_type (scanner_t)
 
char * scanner_ca_pub (scanner_t)
 
char * scanner_key_pub (scanner_t)
 
char * scanner_key_priv (scanner_t)
 
char * scanner_login (scanner_t)
 
char * scanner_password (scanner_t)
 
int scanner_count (const get_data_t *)
 
int init_scanner_iterator (iterator_t *, const get_data_t *)
 
const char * scanner_iterator_host (iterator_t *)
 
int scanner_iterator_port (iterator_t *)
 
int scanner_iterator_type (iterator_t *)
 
const char * scanner_iterator_credential_name (iterator_t *)
 
credential_t scanner_iterator_credential (iterator_t *)
 
int scanner_iterator_credential_trash (iterator_t *)
 
const char * scanner_iterator_ca_pub (iterator_t *)
 
const char * scanner_iterator_key_pub (iterator_t *)
 
const char * scanner_iterator_key_priv (iterator_t *)
 
void init_scanner_task_iterator (iterator_t *, scanner_t)
 
const char * scanner_task_iterator_uuid (iterator_t *)
 
const char * scanner_task_iterator_name (iterator_t *)
 
int scanner_task_iterator_readable (iterator_t *)
 
char * scanner_name (scanner_t)
 
int osp_get_version_from_iterator (iterator_t *, char **, char **, char **, char **, char **, char **)
 
int osp_get_details_from_iterator (iterator_t *, char **, GSList **)
 
osp_connection_t * osp_scanner_connect (scanner_t)
 
int verify_scanner (const char *, char **)
 
gboolean find_schedule_with_permission (const char *, schedule_t *, const char *)
 
int create_schedule (const char *, const char *, time_t, time_t, time_t, time_t, const char *, schedule_t *)
 
int copy_schedule (const char *, const char *, const char *, schedule_t *)
 
int delete_schedule (const char *, int)
 
void manage_auth_allow_all (int)
 Ensure that any subsequent authentications succeed. More...
 
gchar * get_scheduled_user_uuid ()
 Access UUID of user that scheduled the current task. More...
 
void set_scheduled_user_uuid (gchar *uuid)
 Set UUID of user that scheduled the current task. More...
 
int manage_schedule (int(*)(openvas_connection_t *, gchar *), gboolean, sigset_t *)
 Schedule any actions that are due. More...
 
char * schedule_uuid (schedule_t)
 
char * schedule_name (schedule_t)
 
int schedule_duration (schedule_t)
 
int schedule_period (schedule_t)
 
int schedule_info (schedule_t, time_t *, time_t *, int *, int *, int *)
 
int init_schedule_iterator (iterator_t *, const get_data_t *)
 
time_t schedule_iterator_first_time (iterator_t *)
 
time_t schedule_iterator_next_time (iterator_t *)
 
time_t schedule_iterator_period (iterator_t *)
 
time_t schedule_iterator_period_months (iterator_t *)
 
time_t schedule_iterator_duration (iterator_t *)
 
const char * schedule_iterator_timezone (iterator_t *)
 
time_t schedule_iterator_initial_offset (iterator_t *)
 
int trash_schedule_in_use (schedule_t)
 
int schedule_in_use (schedule_t)
 
int trash_schedule_writable (schedule_t)
 
int trash_schedule_readable (schedule_t)
 
int schedule_writable (schedule_t)
 
int schedule_count (const get_data_t *)
 
void init_schedule_task_iterator (iterator_t *, schedule_t)
 
const char * schedule_task_iterator_uuid (iterator_t *)
 
const char * schedule_task_iterator_name (iterator_t *)
 
int schedule_task_iterator_readable (iterator_t *)
 
int modify_schedule (const char *, const char *, const char *, time_t, time_t, time_t, time_t, const char *)
 
int get_schedule_timeout ()
 Get the current schedule timeout. More...
 
void set_schedule_timeout (int)
 Set the schedule timeout. More...
 
gboolean find_report_format_with_permission (const char *, report_format_t *, const char *)
 
gboolean lookup_report_format (const char *, report_format_t *)
 
int create_report_format (const char *, const char *, const char *, const char *, const char *, const char *, int, array_t *, array_t *, array_t *, const char *, report_format_t *)
 
int copy_report_format (const char *, const char *, report_format_t *)
 
int modify_report_format (const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int delete_report_format (const char *, int)
 
int verify_report_format (const char *)
 
char * report_format_uuid (report_format_t)
 
char * report_format_owner_uuid (report_format_t)
 
void set_report_format_active (report_format_t, int)
 
char * report_format_name (report_format_t)
 
char * report_format_content_type (report_format_t)
 
char * report_format_extension (report_format_t)
 
void set_report_format_name (report_format_t, const char *)
 
void set_report_format_summary (report_format_t, const char *)
 
int set_report_format_param (report_format_t, const char *, const char *)
 
int report_format_global (report_format_t)
 
int trash_report_format_global (report_format_t)
 
int report_format_predefined (report_format_t)
 
int report_format_active (report_format_t)
 
int report_format_trust (report_format_t)
 
int report_format_in_use (report_format_t)
 
int trash_report_format_in_use (report_format_t)
 
int trash_report_format_writable (report_format_t)
 
int report_format_writable (report_format_t)
 
int report_format_count (const get_data_t *)
 
int init_report_format_iterator (iterator_t *, const get_data_t *)
 
const char * report_format_iterator_extension (iterator_t *)
 
const char * report_format_iterator_content_type (iterator_t *)
 
const char * report_format_iterator_description (iterator_t *)
 
int report_format_iterator_active (iterator_t *)
 
const char * report_format_iterator_signature (iterator_t *)
 
const char * report_format_iterator_trust (iterator_t *)
 
const char * report_format_iterator_summary (iterator_t *)
 
time_t report_format_iterator_trust_time (iterator_t *)
 
void init_report_format_alert_iterator (iterator_t *, report_format_t)
 
const char * report_format_alert_iterator_name (iterator_t *)
 
const char * report_format_alert_iterator_uuid (iterator_t *)
 
int report_format_alert_iterator_readable (iterator_t *)
 
int init_report_format_file_iterator (file_iterator_t *, report_format_t)
 Initialise a report format file iterator. More...
 
void cleanup_file_iterator (file_iterator_t *)
 Cleanup a report type iterator. More...
 
gboolean next_file (file_iterator_t *)
 Increment a report type iterator. More...
 
const char * file_iterator_name (file_iterator_t *)
 Return the name from a file iterator. More...
 
gchar * file_iterator_content_64 (file_iterator_t *)
 Return the file contents from a file iterator. More...
 
const char * report_format_param_type_name (report_format_param_type_t)
 Get the name of a report format param type. More...
 
report_format_param_type_t report_format_param_type_from_name (const char *)
 Get a report format param type from a name. More...
 
void init_report_format_param_iterator (iterator_t *, report_format_t, int, int, const char *)
 
report_format_param_t report_format_param_iterator_param (iterator_t *)
 
const char * report_format_param_iterator_name (iterator_t *)
 
const char * report_format_param_iterator_value (iterator_t *)
 
const char * report_format_param_iterator_type_name (iterator_t *)
 
report_format_param_type_t report_format_param_iterator_type (iterator_t *)
 
long long int report_format_param_iterator_type_min (iterator_t *)
 
long long int report_format_param_iterator_type_max (iterator_t *)
 
const char * report_format_param_iterator_fallback (iterator_t *)
 
const char * report_format_param_iterator_type_regex (iterator_t *)
 
void init_param_option_iterator (iterator_t *, report_format_param_t, int, const char *)
 
const char * param_option_iterator_value (iterator_t *)
 
int init_group_iterator (iterator_t *, const get_data_t *)
 
int copy_group (const char *, const char *, const char *, group_t *)
 
int create_group (const char *, const char *, const char *, int, group_t *)
 
int delete_group (const char *, int)
 
char * group_uuid (group_t)
 
gchar * group_users (group_t)
 
int trash_group_in_use (group_t)
 
int group_in_use (group_t)
 
int trash_group_writable (group_t)
 
int group_writable (group_t)
 
int group_count (const get_data_t *)
 
int modify_group (const char *, const char *, const char *, const char *)
 
int create_permission (const char *, const char *, const char *, const char *, const char *, const char *, permission_t *)
 
int copy_permission (const char *, const char *, permission_t *)
 
char * permission_uuid (permission_t)
 
char * permission_name (permission_t)
 
int permission_is_admin (const char *)
 
int permission_in_use (permission_t)
 
int trash_permission_in_use (permission_t)
 
int permission_writable (permission_t)
 
int trash_permission_writable (permission_t)
 
int permission_count (const get_data_t *)
 
int init_permission_iterator (iterator_t *, const get_data_t *)
 
const char * permission_iterator_resource_type (iterator_t *)
 
const char * permission_iterator_resource_uuid (iterator_t *)
 
const char * permission_iterator_resource_name (iterator_t *)
 
int permission_iterator_resource_in_trash (iterator_t *)
 
int permission_iterator_resource_orphan (iterator_t *)
 
int permission_iterator_resource_readable (iterator_t *)
 
const char * permission_iterator_subject_type (iterator_t *)
 
const char * permission_iterator_subject_uuid (iterator_t *)
 
const char * permission_iterator_subject_name (iterator_t *)
 
int permission_iterator_subject_in_trash (iterator_t *)
 
int permission_iterator_subject_readable (iterator_t *)
 
int delete_permission (const char *, int)
 
int modify_permission (const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
gboolean find_port_list (const char *, port_list_t *)
 
gboolean find_port_list_with_permission (const char *, port_list_t *, const char *)
 
gboolean find_port_range (const char *, port_list_t *)
 
int create_port_list (const char *, const char *, const char *, const char *, array_t *, port_list_t *)
 
int copy_port_list (const char *, const char *, const char *, port_list_t *)
 
int modify_port_list (const char *, const char *, const char *)
 
int create_port_range (const char *, const char *, const char *, const char *, const char *, port_range_t *)
 
int delete_port_list (const char *, int)
 
int delete_port_range (const char *, int)
 
int port_list_count (const get_data_t *)
 
int init_port_list_iterator (iterator_t *, const get_data_t *)
 
int port_list_iterator_count_all (iterator_t *)
 
int port_list_iterator_count_tcp (iterator_t *)
 
int port_list_iterator_count_udp (iterator_t *)
 
char * port_list_uuid (port_list_t)
 
char * port_range_uuid (port_range_t)
 
int port_list_is_predefined (port_list_t)
 
int port_list_in_use (port_list_t)
 
int trash_port_list_in_use (port_list_t)
 
int trash_port_list_writable (port_list_t)
 
int port_list_writable (port_list_t)
 
int trash_port_list_readable_uuid (const gchar *)
 
void init_port_range_iterator (iterator_t *, port_range_t, int, int, const char *)
 
const char * port_range_iterator_uuid (iterator_t *)
 
const char * port_range_iterator_comment (iterator_t *)
 
const char * port_range_iterator_start (iterator_t *)
 
const char * port_range_iterator_end (iterator_t *)
 
const char * port_range_iterator_type (iterator_t *)
 
port_protocol_t port_range_iterator_type_int (iterator_t *iterator)
 
void init_port_list_target_iterator (iterator_t *, port_list_t, int)
 
const char * port_list_target_iterator_uuid (iterator_t *)
 
const char * port_list_target_iterator_name (iterator_t *)
 
int port_list_target_iterator_readable (iterator_t *)
 
int init_role_iterator (iterator_t *, const get_data_t *)
 
int copy_role (const char *, const char *, const char *, role_t *)
 
int create_role (const char *, const char *, const char *, role_t *)
 
int delete_role (const char *, int)
 
char * role_uuid (role_t)
 
gchar * role_users (role_t)
 
int trash_role_in_use (role_t)
 
int role_in_use (role_t)
 
int trash_role_writable (role_t)
 
int role_writable (role_t)
 
int role_count (const get_data_t *)
 
int modify_role (const char *, const char *, const char *, const char *)
 
const char * keyword_relation_symbol (keyword_relation_t)
 Get the symbol of a keyword relation. More...
 
void filter_free (array_t *)
 Free a split filter. More...
 
array_t * split_filter (const gchar *)
 Split the filter term into parts. More...
 
int buffer_get_filter_xml (GString *, const char *, const get_data_t *, const char *, const char *)
 
gboolean find_filter (const char *, filter_t *)
 
gboolean find_filter_with_permission (const char *, filter_t *, const char *)
 
char * filter_uuid (filter_t)
 
char * trash_filter_uuid (filter_t)
 
char * filter_name (filter_t)
 
char * trash_filter_name (filter_t)
 
gchar * filter_term (const char *)
 
gchar * filter_term_value (const char *, const char *)
 
int create_filter (const char *, const char *, const char *, const char *, int, filter_t *)
 
int copy_filter (const char *, const char *, const char *, filter_t *)
 
int delete_filter (const char *, int)
 
int trash_filter_in_use (filter_t)
 
int filter_in_use (filter_t)
 
int trash_filter_writable (filter_t)
 
int filter_writable (filter_t)
 
int filter_count (const get_data_t *)
 
int init_filter_iterator (iterator_t *, const get_data_t *)
 
const char * filter_iterator_type (iterator_t *)
 
const char * filter_iterator_term (iterator_t *)
 
void init_filter_alert_iterator (iterator_t *, filter_t)
 
const char * filter_alert_iterator_name (iterator_t *)
 
const char * filter_alert_iterator_uuid (iterator_t *)
 
int filter_alert_iterator_readable (iterator_t *)
 
int modify_filter (const char *, const char *, const char *, const char *, const char *)
 
int manage_schema (gchar *, gchar **, gsize *, gchar **, gchar **)
 
int manage_restore (const char *)
 
int manage_empty_trashcan ()
 
void parse_tags (const char *, gchar **, gchar **)
 Split up the tags received from the scanner. More...
 
int manage_read_info (gchar *, gchar *, gchar *, gchar **)
 Read raw information. More...
 
int info_name_count (const gchar *, const gchar *)
 
int manage_scap_loaded ()
 Check whether SCAP is available. More...
 
const char * manage_scap_update_time ()
 GET SCAP update time, as a string. More...
 
void init_cpe_cve_iterator (iterator_t *, const char *, int, const char *)
 
int init_cpe_info_iterator (iterator_t *, get_data_t *, const char *)
 
int cpe_info_count (const get_data_t *get)
 
const char * cpe_info_iterator_title (iterator_t *)
 
const char * cpe_info_iterator_status (iterator_t *)
 
const char * cpe_info_iterator_max_cvss (iterator_t *)
 
const char * cpe_info_iterator_deprecated_by_id (iterator_t *)
 
const char * cpe_info_iterator_cve_refs (iterator_t *)
 
const char * cpe_info_iterator_nvd_id (iterator_t *)
 
const char * cve_iterator_name (iterator_t *)
 
const char * cve_iterator_cvss (iterator_t *)
 
const char * cve_info_iterator_cvss (iterator_t *)
 
const char * cve_info_iterator_vector (iterator_t *)
 
const char * cve_info_iterator_complexity (iterator_t *)
 
const char * cve_info_iterator_authentication (iterator_t *)
 
const char * cve_info_iterator_confidentiality_impact (iterator_t *)
 
const char * cve_info_iterator_integrity_impact (iterator_t *)
 
const char * cve_info_iterator_availability_impact (iterator_t *)
 
const char * cve_info_iterator_description (iterator_t *)
 
const char * cve_info_iterator_products (iterator_t *)
 
int init_cve_info_iterator (iterator_t *, get_data_t *, const char *)
 
int cve_info_count (const get_data_t *get)
 
gchar * cve_cvss_base (const gchar *)
 
int init_ovaldef_info_iterator (iterator_t *, get_data_t *, const char *)
 
int ovaldef_info_count (const get_data_t *get)
 
const char * ovaldef_info_iterator_version (iterator_t *)
 
const char * ovaldef_info_iterator_deprecated (iterator_t *)
 
const char * ovaldef_info_iterator_class (iterator_t *)
 
const char * ovaldef_info_iterator_title (iterator_t *)
 
const char * ovaldef_info_iterator_description (iterator_t *)
 
const char * ovaldef_info_iterator_file (iterator_t *)
 
const char * ovaldef_info_iterator_status (iterator_t *)
 
const char * ovaldef_info_iterator_max_cvss (iterator_t *)
 
const char * ovaldef_info_iterator_cve_refs (iterator_t *)
 
char * ovaldef_severity (const char *)
 
char * ovaldef_version (const char *)
 
char * ovaldef_uuid (const char *, const char *)
 
char * ovaldef_cves (const char *)
 
int manage_cert_loaded ()
 Check whether CERT is available. More...
 
int init_cert_bund_adv_info_iterator (iterator_t *, get_data_t *, const char *)
 
int cert_bund_adv_info_count (const get_data_t *get)
 
const char * cert_bund_adv_info_iterator_title (iterator_t *)
 
const char * cert_bund_adv_info_iterator_summary (iterator_t *)
 
const char * cert_bund_adv_info_iterator_cve_refs (iterator_t *)
 
const char * cert_bund_adv_info_iterator_max_cvss (iterator_t *)
 
void init_cve_cert_bund_adv_iterator (iterator_t *, const char *, int, const char *)
 
void init_nvt_cert_bund_adv_iterator (iterator_t *, const char *, int, const char *)
 
int init_dfn_cert_adv_info_iterator (iterator_t *, get_data_t *, const char *)
 
int dfn_cert_adv_info_count (const get_data_t *get)
 
const char * dfn_cert_adv_info_iterator_title (iterator_t *)
 
const char * dfn_cert_adv_info_iterator_summary (iterator_t *)
 
const char * dfn_cert_adv_info_iterator_cve_refs (iterator_t *)
 
const char * dfn_cert_adv_info_iterator_max_cvss (iterator_t *)
 
void init_cve_dfn_cert_adv_iterator (iterator_t *, const char *, int, const char *)
 
void init_nvt_dfn_cert_adv_iterator (iterator_t *, const char *, int, const char *)
 
int all_info_count (const get_data_t *)
 
int total_info_count (const get_data_t *, int)
 
int init_all_info_iterator (iterator_t *, get_data_t *, const char *)
 
const char * all_info_iterator_type (iterator_t *)
 
const char * all_info_iterator_extra (iterator_t *)
 
const char * all_info_iterator_severity (iterator_t *)
 
void init_ovaldi_file_iterator (iterator_t *)
 
const char * ovaldi_file_iterator_name (iterator_t *)
 
int manage_max_rows (int)
 
int setting_count (const char *)
 
int setting_is_default_ca_cert (const gchar *)
 
char * setting_filter (const char *)
 
const char * setting_severity ()
 
double setting_default_severity_dbl ()
 
int setting_dynamic_severity_int ()
 
char * setting_timezone ()
 
int setting_auto_cache_rebuild_int ()
 
void init_setting_iterator (iterator_t *, const char *, const char *, int, int, int, const char *)
 
const char * setting_iterator_uuid (iterator_t *)
 
const char * setting_iterator_name (iterator_t *)
 
const char * setting_iterator_comment (iterator_t *)
 
const char * setting_iterator_value (iterator_t *)
 
int setting_value_int (const char *, int *)
 
int modify_setting (const gchar *, const gchar *, const gchar *, gchar **)
 
int manage_modify_setting (GSList *, const gchar *, const gchar *, const gchar *, const char *)
 
char * manage_default_ca_cert ()
 
gboolean find_user_by_name_with_permission (const char *, user_t *, const char *)
 
int manage_create_user (GSList *, const gchar *, const gchar *, const gchar *, const gchar *)
 
int manage_delete_user (GSList *, const gchar *, const gchar *, const gchar *)
 
int manage_get_users (GSList *, const gchar *, const gchar *)
 
report_host_t manage_report_host_add (report_t, const char *, time_t, time_t)
 
int report_host_dead (report_host_t)
 
int report_host_result_count (report_host_t)
 
int report_host_noticeable (report_t, const gchar *)
 
void report_host_set_end_time (report_host_t, time_t)
 
gchar * host_routes_xml (host_t)
 
int manage_set_password (GSList *, const gchar *, const gchar *, const gchar *)
 
gchar * manage_user_hash (const gchar *)
 Get user hash. More...
 
gchar * manage_user_uuid (const gchar *, auth_method_t)
 
int manage_user_exists (const gchar *, auth_method_t)
 
int manage_scanner_set (const char *)
 Set the address of scanner to connect to. More...
 
int manage_scanner_set_default ()
 Set the default scanner as the scanner to connect to. More...
 
int copy_user (const char *, const char *, const char *, user_t *)
 
gchar * keyfile_to_auth_conf_settings_xml (const gchar *)
 
int init_user_iterator (iterator_t *, const get_data_t *)
 
const char * user_iterator_role (iterator_t *)
 
const char * user_iterator_method (iterator_t *)
 
const char * user_iterator_hosts (iterator_t *)
 
int user_iterator_hosts_allow (iterator_t *)
 
const char * user_iterator_ifaces (iterator_t *)
 
int user_iterator_ifaces_allow (iterator_t *)
 
void init_user_group_iterator (iterator_t *, user_t)
 
const char * user_group_iterator_uuid (iterator_t *)
 
const char * user_group_iterator_name (iterator_t *)
 
int user_group_iterator_readable (iterator_t *)
 
void init_user_role_iterator (iterator_t *, user_t)
 
const char * user_role_iterator_uuid (iterator_t *)
 
const char * user_role_iterator_name (iterator_t *)
 
int user_role_iterator_readable (iterator_t *)
 
int create_user (const gchar *, const gchar *, const gchar *, int, const gchar *, int, const array_t *, array_t *, gchar **, array_t *, gchar **, gchar **, user_t *, int)
 
int delete_user (const char *, const char *, int, int, const char *, const char *)
 
int modify_user (const gchar *, gchar **, const gchar *, const gchar *, const gchar *, int, const gchar *, int, const array_t *, array_t *, gchar **, array_t *, gchar **, gchar **)
 
int user_is_admin (const char *)
 
int user_is_super_admin (const char *)
 Check whether a user is a Super Admin. More...
 
int user_is_observer (const char *)
 
int user_is_user (const char *)
 
int user_in_use (user_t)
 
int trash_user_in_use (user_t)
 
int user_writable (user_t)
 
int trash_user_writable (user_t)
 
int user_count (const get_data_t *)
 
gchar * user_name (const char *)
 
char * user_uuid (user_t)
 
gchar * user_ifaces (const char *)
 
int user_ifaces_allow (const char *)
 
gchar * user_hosts (const char *)
 
int user_hosts_allow (const char *)
 
void manage_get_ldap_info (int *, gchar **, gchar **, int *, gchar **)
 
void manage_set_ldap_info (int, gchar *, gchar *, int, gchar *)
 
void manage_get_radius_info (int *, char **, char **)
 
void manage_set_radius_info (int, gchar *, gchar *)
 
char * tag_uuid (target_t)
 
int copy_tag (const char *, const char *, const char *, tag_t *)
 
int create_tag (const char *, const char *, const char *, const char *, const char *, const char *, tag_t *)
 
int delete_tag (const char *, int)
 
int modify_tag (const char *, const char *, const char *, const char *, const char *, const char *, const char *)
 
int init_tag_iterator (iterator_t *, const get_data_t *)
 
int tag_count (const get_data_t *get)
 
const char * tag_iterator_resource_type (iterator_t *)
 
const char * tag_iterator_resource_uuid (iterator_t *)
 
int tag_iterator_resource_location (iterator_t *)
 
int tag_iterator_active (iterator_t *)
 
const char * tag_iterator_value (iterator_t *)
 
const char * tag_iterator_resource_name (iterator_t *)
 
int tag_iterator_resource_readable (iterator_t *)
 
int tag_iterator_orphan (iterator_t *)
 
int init_tag_name_iterator (iterator_t *, const get_data_t *)
 
const char * tag_name_iterator_name (iterator_t *)
 
int user_resources_in_use (user_t, const char *, int(*)(resource_t), const char *, int(*)(resource_t))
 
int init_resource_tag_iterator (iterator_t *, const char *, resource_t, int, const char *, int)
 
const char * resource_tag_iterator_uuid (iterator_t *)
 
const char * resource_tag_iterator_name (iterator_t *)
 
const char * resource_tag_iterator_value (iterator_t *)
 
const char * resource_tag_iterator_comment (iterator_t *)
 
int resource_tag_count (const char *, resource_t, int)
 
int tag_in_use (tag_t)
 
int trash_tag_in_use (tag_t)
 
int tag_writable (tag_t)
 
int trash_tag_writable (tag_t)
 
void sort_data_free (sort_data_t *)
 
int init_aggregate_iterator (iterator_t *, const char *, const get_data_t *, int, GArray *, const char *, const char *, GArray *, GArray *, int, int, const char *, const char *)
 Initialise a GET_AGGREGATES iterator, including observed resources. More...
 
int aggregate_iterator_count (iterator_t *)
 Get the count from an aggregate iterator. More...
 
double aggregate_iterator_min (iterator_t *, int)
 Get the minimum from an aggregate iterator. More...
 
double aggregate_iterator_max (iterator_t *, int)
 Get the maximum from an aggregate iterator. More...
 
double aggregate_iterator_mean (iterator_t *, int)
 Get the mean from an aggregate iterator. More...
 
double aggregate_iterator_sum (iterator_t *, int)
 Get the sum from a statistics iterator. More...
 
const char * aggregate_iterator_text (iterator_t *, int, int)
 Get the value of a text column from an aggregate iterator. More...
 
const char * aggregate_iterator_value (iterator_t *)
 Get the value of the group column from a statistics iterator. More...
 
const char * aggregate_iterator_subgroup_value (iterator_t *)
 Get the value of the subgroup column from an aggregate iterator. More...
 
int openvas_sync_feed (const gchar *, const gchar *, int)
 
int openvas_migrate_secinfo (const gchar *, int)
 
int openvas_current_sync (const gchar *, gchar **, gchar **)
 
gboolean openvas_sync_script_perform_selftest (const gchar *, gchar **)
 
gboolean openvas_get_sync_script_identification (const gchar *, gchar **, int)
 
gboolean openvas_get_sync_script_description (const gchar *, gchar **)
 
gboolean openvas_get_sync_script_feed_version (const gchar *, gchar **)
 
int manage_run_wizard (const gchar *, int(*)(void *, gchar *, gchar **), void *, array_t *, int, const char *, gchar **, gchar **, gchar **)
 
char * iso_time (time_t *)
 Create an ISO time from seconds since epoch. More...
 
char * iso_time_tz (time_t *, const char *, const char **)
 Create an ISO time from seconds since epoch, given a timezone. More...
 
gchar * xsl_transform (gchar *, gchar *, gchar **, gchar **)
 Run xsltproc in an external process. More...
 
int valid_db_resource_type (const char *)
 Check whether a resource type table name is valid. More...
 
int column_is_timestamp (const char *)
 
char * type_columns (const char *, int)
 
const char ** type_filter_columns (const char *, int)
 
char * type_trash_columns (const char *, int)
 
gchar * type_opts_table (const char *, int, int, int)
 
gchar * type_table (const char *, int)
 
gboolean manage_migrate_needs_timezone (GSList *, const gchar *)
 Check whether the migration needs the real timezone. More...
 
int manage_optimize (GSList *, const gchar *, const gchar *)
 
int get_termination_signal ()
 
int sql_cancel ()
 

Variables

command_t omp_commands []
 The OMP command list. More...
 
credentials_t current_credentials
 Current credentials during any OMP command. More...
 
short scanner_active
 
task_t current_scanner_task
 The task currently running on the scanner. More...
 
report_t current_report
 The report of the current task. More...
 

Macro Definition Documentation

◆ ALERT_MESSAGE_ATTACH

#define ALERT_MESSAGE_ATTACH
Value:
"Task '$n': $e\n" \
"\n" \
"After the event $e,\n" \
"the following condition was met: $c\n" \
"\n" \
"This email escalation is configured to attach report format '$r'.\n" \
"Full details and other report formats are available on the scan engine.\n" \
"\n" \
"$t" \
"\n" \
"Note:\n" \
"This email was sent to you as a configured security scan escalation.\n" \
"Please contact your local system administrator if you think you\n" \
"should not have received it.\n"

Default format string for alert email, when attaching report.

Definition at line 433 of file manage.h.

◆ ALERT_MESSAGE_INCLUDE

#define ALERT_MESSAGE_INCLUDE
Value:
"Task '$n': $e\n" \
"\n" \
"After the event $e,\n" \
"the following condition was met: $c\n" \
"\n" \
"This email escalation is configured to apply report format '$r'.\n" \
"Full details and other report formats are available on the scan engine.\n" \
"\n" \
"$t" \
"\n" \
"$i" \
"\n" \
"\n" \
"Note:\n" \
"This email was sent to you as a configured security scan escalation.\n" \
"Please contact your local system administrator if you think you\n" \
"should not have received it.\n"

Default format string for alert email, when including report.

Definition at line 389 of file manage.h.

◆ ALL_LOG_LEVELS

#define ALL_LOG_LEVELS
Value:
(G_LOG_LEVEL_MASK \
| G_LOG_FLAG_FATAL \
| G_LOG_FLAG_RECURSION)

Flag with all Glib log levels.

Definition at line 47 of file manage.h.

◆ APPLY_OVERRIDES_DEFAULT

#define APPLY_OVERRIDES_DEFAULT   0

Default apply_overrides setting.

Definition at line 1100 of file manage.h.

◆ AUTO_DELETE_KEEP_MAX

#define AUTO_DELETE_KEEP_MAX   1200

Definition at line 243 of file manage.h.

◆ AUTO_DELETE_KEEP_MIN

#define AUTO_DELETE_KEEP_MIN   2

Definition at line 238 of file manage.h.

◆ CERT_FEED

#define CERT_FEED   3

Definition at line 4143 of file manage.h.

◆ g_info

#define g_info (   ...)
Value:
g_log (G_LOG_DOMAIN, \
G_LOG_LEVEL_INFO, \
__VA_ARGS__)
#define G_LOG_DOMAIN
GLib log domain.
Definition: lsc_crypt.c:41

Defines g_info for glib versions older than 2.40.

Definition at line 55 of file manage.h.

Referenced by migrate_171_to_172().

◆ LSC_FAMILY_LIST

#define LSC_FAMILY_LIST
Value:
"'AIX Local Security Checks'," \
" 'CentOS Local Security Checks'," \
" 'Debian Local Security Checks'," \
" 'Fedora Local Security Checks'," \
" 'FreeBSD Local Security Checks'," \
" 'Gentoo Local Security Checks'," \
" 'HP-UX Local Security Checks'," \
" 'Mac OS X Local Security Checks'," \
" 'Mandrake Local Security Checks'," \
" 'Red Hat Local Security Checks'," \
" 'Solaris Local Security Checks'," \
" 'SuSE Local Security Checks'," \
" 'Ubuntu Local Security Checks'," \
" 'Windows : Microsoft Bulletins'," \
" 'Privilege escalation'"

SQL list of LSC families.

Definition at line 1065 of file manage.h.

Referenced by create_tables().

◆ MANAGE_ABSOLUTE_MAX_IPS_PER_TARGET

#define MANAGE_ABSOLUTE_MAX_IPS_PER_TARGET   70000

Absolute maximum number of IPs per target.

The number of 70000 is chosen to cover "192.168.0.0-192.168.255.255".

Definition at line 1531 of file manage.h.

◆ MANAGE_MAX_HOSTS

#define MANAGE_MAX_HOSTS   4095

Default maximum number of hosts a target may specify.

Definition at line 1536 of file manage.h.

◆ MANAGE_USER_MAX_HOSTS

#define MANAGE_USER_MAX_HOSTS   16777216

Default maximum number of hosts a user host access may specify.

Definition at line 1541 of file manage.h.

◆ MIN_QOD_DEFAULT

#define MIN_QOD_DEFAULT   70

◆ NVT_FEED

#define NVT_FEED   1

Definition at line 4141 of file manage.h.

◆ NVT_SELECTOR_TYPE_ALL

#define NVT_SELECTOR_TYPE_ALL   0

NVT selector type for "all" rule.

Definition at line 1991 of file manage.h.

◆ NVT_SELECTOR_TYPE_ANY

#define NVT_SELECTOR_TYPE_ANY   999

Special NVT selector type for selecting all types in interfaces.

Definition at line 2006 of file manage.h.

◆ NVT_SELECTOR_TYPE_FAMILY

#define NVT_SELECTOR_TYPE_FAMILY   1

NVT selector type for "family" rule.

Definition at line 1996 of file manage.h.

Referenced by make_config_discovery().

◆ NVT_SELECTOR_TYPE_NVT

#define NVT_SELECTOR_TYPE_NVT   2

◆ OVAS_MANAGE_REPORT_ID_LENGTH

#define OVAS_MANAGE_REPORT_ID_LENGTH   UUID_LEN_STR
Todo:
How is this documented?

Definition at line 1095 of file manage.h.

◆ QOD_DEFAULT

#define QOD_DEFAULT   75

Default quality of detection percentage.

Definition at line 1105 of file manage.h.

Referenced by migrate_142_to_143(), and migrate_143_to_144().

◆ SCAP_FEED

#define SCAP_FEED   2

Definition at line 4142 of file manage.h.

◆ SCHEDULE_PERIOD

#define SCHEDULE_PERIOD   10

Seconds between calls to manage_schedule.

Definition at line 2792 of file manage.h.

◆ SCHEDULE_TIMEOUT_DEFAULT

#define SCHEDULE_TIMEOUT_DEFAULT   60

Default for schedule_timeout in minutes.

Definition at line 2803 of file manage.h.

◆ SCHEDULE_TIMEOUT_MIN_SECS

#define SCHEDULE_TIMEOUT_MIN_SECS   20

Minimum schedule timeout seconds. This value must be greater than SCHEDULE_PERIOD.

Definition at line 2798 of file manage.h.

◆ SECINFO_ALERT_MESSAGE_ATTACH

#define SECINFO_ALERT_MESSAGE_ATTACH
Value:
"Task '$n': $e\n" \
"\n" \
"After the event $e,\n" \
"the following condition was met: $c\n" \
"\n" \
"This email escalation is configured to attach report format '$r'.\n" \
"Full details and other report formats are available on the scan engine.\n" \
"\n" \
"$t" \
"\n" \
"Note:\n" \
"This email was sent to you as a configured security scan escalation.\n" \
"Please contact your local system administrator if you think you\n" \
"should not have received it.\n"

Default format string for SecInfo alert email, when attaching report.

Definition at line 452 of file manage.h.

◆ SECINFO_ALERT_MESSAGE_INCLUDE

#define SECINFO_ALERT_MESSAGE_INCLUDE
Value:
"Task '$n': $e\n" \
"\n" \
"After the event $e,\n" \
"the following condition was met: $c\n" \
"\n" \
"This email escalation is configured to apply report format '$r'.\n" \
"Full details and other report formats are available on the scan engine.\n" \
"\n" \
"$t" \
"\n" \
"$i" \
"\n" \
"\n" \
"Note:\n" \
"This email was sent to you as a configured security scan escalation.\n" \
"Please contact your local system administrator if you think you\n" \
"should not have received it.\n"

Default format string for SecInfo alert email, when including report.

Definition at line 411 of file manage.h.

Typedef Documentation

◆ agent_t

typedef long long int agent_t

Definition at line 277 of file manage.h.

◆ alert_t

typedef long long int alert_t

Definition at line 280 of file manage.h.

◆ config_t

typedef long long int config_t

Definition at line 278 of file manage.h.

◆ credential_t

typedef long long int credential_t

Definition at line 279 of file manage.h.

◆ filter_t

typedef long long int filter_t

Definition at line 281 of file manage.h.

◆ group_t

typedef long long int group_t

Definition at line 282 of file manage.h.

◆ host_t

typedef long long int host_t

Definition at line 283 of file manage.h.

◆ keyword_t

typedef struct keyword keyword_t

Keyword type.

Definition at line 3443 of file manage.h.

◆ note_t

typedef long long int note_t

Definition at line 293 of file manage.h.

◆ nvt_t

typedef long long int nvt_t

Definition at line 294 of file manage.h.

◆ override_t

typedef long long int override_t

Definition at line 295 of file manage.h.

◆ permission_t

typedef long long int permission_t

Definition at line 296 of file manage.h.

◆ port_list_t

typedef long long int port_list_t

Definition at line 297 of file manage.h.

◆ port_range_t

typedef long long int port_range_t

Definition at line 298 of file manage.h.

◆ report_format_param_t

typedef long long int report_format_param_t

Definition at line 291 of file manage.h.

◆ report_format_t

typedef long long int report_format_t

Definition at line 290 of file manage.h.

◆ report_host_t

typedef long long int report_host_t

Definition at line 289 of file manage.h.

◆ report_t

typedef long long int report_t

Definition at line 288 of file manage.h.

◆ result_t

typedef long long int result_t

Definition at line 287 of file manage.h.

◆ role_t

typedef long long int role_t

Definition at line 292 of file manage.h.

◆ scanner_t

typedef long long int scanner_t

Definition at line 300 of file manage.h.

◆ scanner_type_t

Scanner types.

These numbers are used in the database, so if the number associated with any symbol changes then a migrator must be added to update existing data.

◆ schedule_t

typedef long long int schedule_t

Definition at line 299 of file manage.h.

◆ setting_t

typedef long long int setting_t

Definition at line 301 of file manage.h.

◆ tag_t

typedef long long int tag_t

Definition at line 284 of file manage.h.

◆ target_t

typedef long long int target_t

Definition at line 285 of file manage.h.

◆ task_t

typedef long long int task_t

Definition at line 286 of file manage.h.

◆ user_t

typedef long long int user_t

Definition at line 302 of file manage.h.

Enumeration Type Documentation

◆ alert_condition_t

Types of alert conditions.

Enumerator
ALERT_CONDITION_ERROR 
ALERT_CONDITION_ALWAYS 
ALERT_CONDITION_SEVERITY_AT_LEAST 
ALERT_CONDITION_SEVERITY_CHANGED 
ALERT_CONDITION_FILTER_COUNT_AT_LEAST 
ALERT_CONDITION_FILTER_COUNT_CHANGED 

Definition at line 501 of file manage.h.

◆ alert_method_t

Types of alerts.

Enumerator
ALERT_METHOD_ERROR 
ALERT_METHOD_EMAIL 
ALERT_METHOD_HTTP_GET 
ALERT_METHOD_SOURCEFIRE 
ALERT_METHOD_START_TASK 
ALERT_METHOD_SYSLOG 
ALERT_METHOD_VERINICE 
ALERT_METHOD_SEND 
ALERT_METHOD_SCP 
ALERT_METHOD_SNMP 
ALERT_METHOD_SMB 
ALERT_METHOD_TIPPINGPOINT 

Definition at line 482 of file manage.h.

◆ alive_test_t

Alive tests.

These numbers are used in the database, so if the number associated with any symbol changes then a migrator must be added to update existing data.

Enumerator
ALIVE_TEST_TCP_ACK_SERVICE 
ALIVE_TEST_ICMP 
ALIVE_TEST_ARP 
ALIVE_TEST_CONSIDER_ALIVE 
ALIVE_TEST_TCP_SYN_SERVICE 

Definition at line 252 of file manage.h.

◆ event_t

enum event_t

Types of task events.

Enumerator
EVENT_ERROR 
EVENT_TASK_RUN_STATUS_CHANGED 
EVENT_NEW_SECINFO 
EVENT_UPDATED_SECINFO 

Definition at line 471 of file manage.h.

◆ keyword_relation_t

Comparison returns.

Enumerator
KEYWORD_RELATION_APPROX 
KEYWORD_RELATION_COLUMN_ABOVE 
KEYWORD_RELATION_COLUMN_APPROX 
KEYWORD_RELATION_COLUMN_EQUAL 
KEYWORD_RELATION_COLUMN_BELOW 
KEYWORD_RELATION_COLUMN_REGEXP 

Definition at line 3415 of file manage.h.

◆ keyword_type_t

Keyword type.

Enumerator
KEYWORD_TYPE_UNKNOWN 
KEYWORD_TYPE_INTEGER 
KEYWORD_TYPE_DOUBLE 
KEYWORD_TYPE_STRING 

Definition at line 3404 of file manage.h.

◆ report_format_param_type_t

Report format param types.

These numbers are used in the database, so if the number associated with any symbol changes then a migrator must be added to update existing data.

Enumerator
REPORT_FORMAT_PARAM_TYPE_BOOLEAN 
REPORT_FORMAT_PARAM_TYPE_INTEGER 
REPORT_FORMAT_PARAM_TYPE_SELECTION 
REPORT_FORMAT_PARAM_TYPE_STRING 
REPORT_FORMAT_PARAM_TYPE_TEXT 
REPORT_FORMAT_PARAM_TYPE_REPORT_FORMAT_LIST 
REPORT_FORMAT_PARAM_TYPE_ERROR 

Definition at line 3079 of file manage.h.

◆ scanner_type

Scanner types.

These numbers are used in the database, so if the number associated with any symbol changes then a migrator must be added to update existing data.

Enumerator
SCANNER_TYPE_NONE 
SCANNER_TYPE_OSP 
SCANNER_TYPE_OPENVAS 
SCANNER_TYPE_CVE 
SCANNER_TYPE_OMP 
SCANNER_TYPE_MAX 

Definition at line 267 of file manage.h.

◆ task_status_t

Task statuses, also used as scan/report statuses.

These numbers are used in the database, so if the number associated with any symbol changes then a migrator must be added to update existing data.

Enumerator
TASK_STATUS_DELETE_REQUESTED 
TASK_STATUS_DONE 
TASK_STATUS_NEW 
TASK_STATUS_REQUESTED 
TASK_STATUS_RUNNING 
TASK_STATUS_STOP_REQUESTED 
TASK_STATUS_STOP_WAITING 
TASK_STATUS_STOPPED 
TASK_STATUS_INTERNAL_ERROR 
TASK_STATUS_DELETE_ULTIMATE_REQUESTED 
TASK_STATUS_STOP_REQUESTED_GIVEUP 
TASK_STATUS_DELETE_WAITING 
TASK_STATUS_DELETE_ULTIMATE_WAITING 

Definition at line 218 of file manage.h.

Function Documentation

◆ acknowledge_bye()

int acknowledge_bye ( )

Acknowledge a scanner BYE.

Returns
0 on success, -1 if out of space in scanner output buffer.

Definition at line 5705 of file manage.c.

References send_to_server().

5706 {
5707  if (send_to_server ("CLIENT <|> BYE <|> ACK\n"))
5708  return -1;
5709  return 0;
5710 }
int send_to_server(const char *msg)
Send a message to the server.
Here is the call graph for this function:

◆ acknowledge_feed_version_info()

int acknowledge_feed_version_info ( )

Acknowledge scanner PLUGINS_FEED_VERSION message,.

requesting all plugin info.

Returns
0 on success, -1 if out of space in scanner output buffer.

Definition at line 5719 of file manage.c.

References send_to_server().

5720 {
5721  if (send_to_server ("CLIENT <|> COMPLETE_LIST <|> CLIENT\n"))
5722  return -1;
5723  return 0;
5724 }
int send_to_server(const char *msg)
Send a message to the server.
Here is the call graph for this function:

◆ add_task_alert()

void add_task_alert ( task_t  task,
alert_t  alert 
)

Add an alert to a task.

Parameters
[in]taskTask.
[in]alertAlert.

Definition at line 18656 of file manage_sql.c.

References LOCATION_TABLE, and sql().

18657 {
18658  sql ("INSERT INTO task_alerts (task, alert, alert_location)"
18659  " VALUES (%llu, %llu, " G_STRINGIFY (LOCATION_TABLE) ");",
18660  task,
18661  alert);
18662 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
Here is the call graph for this function:

◆ add_task_description_line()

void add_task_description_line ( task_t  ,
const char *  ,
size_t   
)

◆ agent_count()

int agent_count ( const get_data_t )

◆ agent_in_use()

int agent_in_use ( agent_t  )

◆ agent_iterator_howto_install()

const char* agent_iterator_howto_install ( iterator_t )

◆ agent_iterator_howto_use()

const char* agent_iterator_howto_use ( iterator_t )

◆ agent_iterator_installer()

const char* agent_iterator_installer ( iterator_t )

◆ agent_iterator_installer_64()

const char* agent_iterator_installer_64 ( iterator_t )

◆ agent_iterator_installer_filename()

const char* agent_iterator_installer_filename ( iterator_t )

◆ agent_iterator_installer_signature_64()

const char* agent_iterator_installer_signature_64 ( iterator_t )

◆ agent_iterator_installer_size()

gsize agent_iterator_installer_size ( iterator_t )

◆ agent_iterator_trust()

const char* agent_iterator_trust ( iterator_t )

◆ agent_iterator_trust_time()

time_t agent_iterator_trust_time ( iterator_t )

◆ agent_uuid()

char* agent_uuid ( agent_t  )

◆ agent_writable()

int agent_writable ( agent_t  )

◆ aggregate_iterator_count()

int aggregate_iterator_count ( iterator_t iterator)

Get the count from an aggregate iterator.

Parameters
[in]iteratorIterator.
Returns
The count of resources in the current group.

Definition at line 5923 of file manage_sql.c.

References sql_column_int(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

5924 {
5925  return sql_column_int (iterator->stmt, 0);
5926 }
A generic SQL iterator.
Definition: iterator.h:52
int sql_column_int(sql_stmt_t *, int)
Return a column as an integer from a prepared statement.
Definition: sql_pg.c:906
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_max()

double aggregate_iterator_max ( iterator_t iterator,
int  data_column_index 
)

Get the maximum from an aggregate iterator.

Parameters
[in]iteratorIterator.
[in]data_column_indexIndex of the data column to get max of.
Returns
The maximum value in the current group.

Definition at line 5953 of file manage_sql.c.

References AGGREGATE_ITERATOR_N_STATS, AGGREGATE_ITERATOR_OFFSET, sql_column_double(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

5954 {
5955  return sql_column_double (iterator->stmt,
5957  + data_column_index * AGGREGATE_ITERATOR_N_STATS);
5958 }
double sql_column_double(sql_stmt_t *, int)
Return a column as a double from a prepared statement.
Definition: sql_pg.c:868
A generic SQL iterator.
Definition: iterator.h:52
#define AGGREGATE_ITERATOR_OFFSET
Definition: manage_sql.c:5912
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
#define AGGREGATE_ITERATOR_N_STATS
Definition: manage_sql.c:5913
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_mean()

double aggregate_iterator_mean ( iterator_t iterator,
int  data_column_index 
)

Get the mean from an aggregate iterator.

Parameters
[in]iteratorIterator.
[in]data_column_indexIndex of the data column to get mean of.
Returns
The mean value in the current group.

Definition at line 5969 of file manage_sql.c.

References AGGREGATE_ITERATOR_N_STATS, AGGREGATE_ITERATOR_OFFSET, sql_column_double(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

5970 {
5971  return sql_column_double (iterator->stmt,
5973  + data_column_index * AGGREGATE_ITERATOR_N_STATS);
5974 }
double sql_column_double(sql_stmt_t *, int)
Return a column as a double from a prepared statement.
Definition: sql_pg.c:868
A generic SQL iterator.
Definition: iterator.h:52
#define AGGREGATE_ITERATOR_OFFSET
Definition: manage_sql.c:5912
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
#define AGGREGATE_ITERATOR_N_STATS
Definition: manage_sql.c:5913
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_min()

double aggregate_iterator_min ( iterator_t iterator,
int  data_column_index 
)

Get the minimum from an aggregate iterator.

Parameters
[in]iteratorIterator.
[in]data_column_indexIndex of the data column to get min of.
Returns
The minimum value in the current group.

Definition at line 5937 of file manage_sql.c.

References AGGREGATE_ITERATOR_N_STATS, AGGREGATE_ITERATOR_OFFSET, sql_column_double(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

5938 {
5939  return sql_column_double (iterator->stmt,
5941  + data_column_index * AGGREGATE_ITERATOR_N_STATS);
5942 }
double sql_column_double(sql_stmt_t *, int)
Return a column as a double from a prepared statement.
Definition: sql_pg.c:868
A generic SQL iterator.
Definition: iterator.h:52
#define AGGREGATE_ITERATOR_OFFSET
Definition: manage_sql.c:5912
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
#define AGGREGATE_ITERATOR_N_STATS
Definition: manage_sql.c:5913
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_subgroup_value()

const char* aggregate_iterator_subgroup_value ( iterator_t iterator)

Get the value of the subgroup column from an aggregate iterator.

Parameters
[in]iteratorIterator.
Returns
The value, or NULL if iteration is complete. Freed by cleanup_iterator.

Definition at line 6042 of file manage_sql.c.

References iterator::done, sql_column_text(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

6043 {
6044  const char *ret;
6045  if (iterator->done) return NULL;
6046  ret = (const char*) sql_column_text (iterator->stmt, 2);
6047  return ret;
6048 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * sql_column_text(sql_stmt_t *, int)
Return a column as text from a prepared statement.
Definition: sql_pg.c:887
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_sum()

double aggregate_iterator_sum ( iterator_t iterator,
int  data_column_index 
)

Get the sum from a statistics iterator.

Parameters
[in]iteratorIterator.
[in]data_column_indexIndex of the data column to get sum of.
Returns
The sum of values in the current group.

Definition at line 5985 of file manage_sql.c.

References AGGREGATE_ITERATOR_N_STATS, AGGREGATE_ITERATOR_OFFSET, sql_column_double(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

5986 {
5987  return sql_column_double (iterator->stmt,
5989  + data_column_index * AGGREGATE_ITERATOR_N_STATS);
5990 }
double sql_column_double(sql_stmt_t *, int)
Return a column as a double from a prepared statement.
Definition: sql_pg.c:868
A generic SQL iterator.
Definition: iterator.h:52
#define AGGREGATE_ITERATOR_OFFSET
Definition: manage_sql.c:5912
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
#define AGGREGATE_ITERATOR_N_STATS
Definition: manage_sql.c:5913
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_text()

const char* aggregate_iterator_text ( iterator_t iterator,
int  text_column_index,
int  data_columns 
)

Get the value of a text column from an aggregate iterator.

Parameters
[in]iteratorIterator.
[in]text_column_indexIndex of the text column to get.
[in]data_columnsNumber of data columns.
Returns
The value, or NULL if iteration is complete. Freed by cleanup_iterator.

Definition at line 6003 of file manage_sql.c.

References AGGREGATE_ITERATOR_N_STATS, AGGREGATE_ITERATOR_OFFSET, iterator::done, sql_column_text(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

6005 {
6006  const char *ret;
6007  if (iterator->done) return NULL;
6008  ret = (const char*) sql_column_text (iterator->stmt,
6010  + (data_columns
6012  + text_column_index);
6013  return ret;
6014 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define AGGREGATE_ITERATOR_OFFSET
Definition: manage_sql.c:5912
const char * sql_column_text(sql_stmt_t *, int)
Return a column as text from a prepared statement.
Definition: sql_pg.c:887
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
#define AGGREGATE_ITERATOR_N_STATS
Definition: manage_sql.c:5913
Here is the call graph for this function:
Here is the caller graph for this function:

◆ aggregate_iterator_value()

const char* aggregate_iterator_value ( iterator_t iterator)

Get the value of the group column from a statistics iterator.

Parameters
[in]iteratorIterator.
Returns
The value, or NULL if iteration is complete. Freed by cleanup_iterator.

Definition at line 6025 of file manage_sql.c.

References iterator::done, sql_column_text(), and iterator::stmt.

Referenced by buffer_aggregate_xml().

6026 {
6027  const char *ret;
6028  if (iterator->done) return NULL;
6029  ret = (const char*) sql_column_text (iterator->stmt, 1);
6030  return ret;
6031 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * sql_column_text(sql_stmt_t *, int)
Return a column as text from a prepared statement.
Definition: sql_pg.c:887
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
Here is the call graph for this function:
Here is the caller graph for this function:

◆ alert_condition_description()

gchar* alert_condition_description ( alert_condition_t  condition,
alert_t  alert 
)

Get a description of an alert condition.

Parameters
[in]conditionCondition.
[in]alertAlert.
Returns
Freshly allocated description of condition.

Definition at line 1063 of file manage.c.

References ALERT_CONDITION_ALWAYS, ALERT_CONDITION_FILTER_COUNT_AT_LEAST, ALERT_CONDITION_FILTER_COUNT_CHANGED, ALERT_CONDITION_SEVERITY_AT_LEAST, ALERT_CONDITION_SEVERITY_CHANGED, and alert_data().

1065 {
1066  switch (condition)
1067  {
1069  return g_strdup ("Always");
1071  {
1072  char *level;
1073  gchar *ret;
1074 
1075  level = alert_data (alert, "condition", "severity");
1076  ret = g_strdup_printf ("Filter count at least %s",
1077  level ? level : "0");
1078  free (level);
1079  return ret;
1080  }
1082  return g_strdup ("Filter count changed");
1084  {
1085  char *level = alert_data (alert, "condition", "severity");
1086  gchar *ret = g_strdup_printf ("Task severity is at least '%s'",
1087  level);
1088  free (level);
1089  return ret;
1090  }
1092  {
1093  char *direction;
1094  direction = alert_data (alert, "condition", "direction");
1095  gchar *ret = g_strdup_printf ("Task severity %s", direction);
1096  free (direction);
1097  return ret;
1098  }
1099  default:
1100  return g_strdup ("Internal Error");
1101  }
1102 }
char * alert_data(alert_t alert, const char *type, const char *name)
Return data associated with an alert.
Definition: manage_sql.c:8810
Here is the call graph for this function:

◆ alert_condition_from_name()

alert_condition_t alert_condition_from_name ( const char *  name)

Get an alert condition from a name.

Parameters
[in]nameCondition name.
Returns
The condition.

Definition at line 1173 of file manage.c.

References ALERT_CONDITION_ALWAYS, ALERT_CONDITION_ERROR, ALERT_CONDITION_FILTER_COUNT_AT_LEAST, ALERT_CONDITION_FILTER_COUNT_CHANGED, ALERT_CONDITION_SEVERITY_AT_LEAST, and ALERT_CONDITION_SEVERITY_CHANGED.

1174 {
1175  if (strcasecmp (name, "Always") == 0)
1176  return ALERT_CONDITION_ALWAYS;
1177  if (strcasecmp (name, "Filter count at least") == 0)
1179  if (strcasecmp (name, "Filter count changed") == 0)
1181  if (strcasecmp (name, "Severity at least") == 0)
1183  if (strcasecmp (name, "Severity changed") == 0)
1185  return ALERT_CONDITION_ERROR;
1186 }

◆ alert_condition_name()

const char* alert_condition_name ( alert_condition_t  condition)

Get the name of an alert condition.

Parameters
[in]conditionCondition.
Returns
The name of the condition (for example, "Always").

Definition at line 1016 of file manage.c.

References ALERT_CONDITION_ALWAYS, ALERT_CONDITION_FILTER_COUNT_AT_LEAST, ALERT_CONDITION_FILTER_COUNT_CHANGED, ALERT_CONDITION_SEVERITY_AT_LEAST, and ALERT_CONDITION_SEVERITY_CHANGED.

1017 {
1018  switch (condition)
1019  {
1021  return "Always";
1023  return "Filter count at least";
1025  return "Filter count changed";
1027  return "Severity at least";
1029  return "Severity changed";
1030  default:
1031  return "Internal Error";
1032  }
1033 }

◆ alert_count()

int alert_count ( const get_data_t get)

Count the number of alerts.

Parameters
[in]getGET params.
Returns
Total number of alerts filtered set.

Definition at line 8489 of file manage_sql.c.

References ALERT_ITERATOR_COLUMNS, ALERT_ITERATOR_FILTER_COLUMNS, and ALERT_ITERATOR_TRASH_COLUMNS.

8490 {
8491  static const char *filter_columns[] = ALERT_ITERATOR_FILTER_COLUMNS;
8492  static column_t columns[] = ALERT_ITERATOR_COLUMNS;
8493  static column_t trash_columns[] = ALERT_ITERATOR_TRASH_COLUMNS;
8494  return count ("alert", get, columns, trash_columns, filter_columns, 0, 0, 0,
8495  TRUE);
8496 }
Iterator column.
Definition: manage_sql.c:1512
#define ALERT_ITERATOR_FILTER_COLUMNS
Filter columns for alert iterator.
Definition: manage_sql.c:8449
#define ALERT_ITERATOR_TRASH_COLUMNS
Alert iterator columns for trash case.
Definition: manage_sql.c:8470
#define ALERT_ITERATOR_COLUMNS
Alert iterator columns.
Definition: manage_sql.c:8456

◆ alert_data_iterator_data()

const char* alert_data_iterator_data ( iterator_t iterator)

Return the data from an alert data iterator.

Parameters
[in]iteratorIterator.
Returns
Data of the alert data or NULL if iteration is complete.

Definition at line 8792 of file manage_sql.c.

References iterator::done, and iterator_string().

8793 {
8794  const char *ret;
8795  if (iterator->done) return NULL;
8796  ret = iterator_string (iterator, 1);
8797  return ret;
8798 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
Here is the call graph for this function:

◆ alert_data_iterator_name()

const char* alert_data_iterator_name ( iterator_t iterator)

Return the name from an alert data iterator.

Parameters
[in]iteratorIterator.
Returns
Name of the alert data or NULL if iteration is complete.

Definition at line 8775 of file manage_sql.c.

References iterator::done, and iterator_string().

8776 {
8777  const char *ret;
8778  if (iterator->done) return NULL;
8779  ret = iterator_string (iterator, 0);
8780  return ret;
8781 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
Here is the call graph for this function:

◆ alert_in_use()

int alert_in_use ( alert_t  alert)

Return whether a alert is in use by a task.

Parameters
[in]alertAlert.
Returns
1 if in use, else 0.

Definition at line 8506 of file manage_sql.c.

References sql_int().

8507 {
8508  return !!sql_int ("SELECT count (*) FROM task_alerts WHERE alert = %llu;",
8509  alert);
8510 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ alert_iterator_condition()

int alert_iterator_condition ( iterator_t iterator)

Return the condition from an alert iterator.

Parameters
[in]iteratorIterator.
Returns
Condition of the alert or NULL if iteration is complete.

Definition at line 8606 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_int().

8607 {
8608  int ret;
8609  if (iterator->done) return -1;
8611  return ret;
8612 }
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ alert_iterator_event()

int alert_iterator_event ( iterator_t iterator)

Return the event from an alert iterator.

Parameters
[in]iteratorIterator.
Returns
Event of the alert or NULL if iteration is complete.

Definition at line 8590 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_int().

8591 {
8592  int ret;
8593  if (iterator->done) return -1;
8595  return ret;
8596 }
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ alert_iterator_filter_name()

char* alert_iterator_filter_name ( iterator_t iterator)

Return the filter name from an alert iterator.

Parameters
[in]iteratorIterator.
Returns
Name of filter of the alert or NULL if iteration is complete.

Definition at line 8677 of file manage_sql.c.

References alert_iterator_filter(), iterator::done, filter_name(), GET_ITERATOR_COLUMN_COUNT, iterator_int(), LOCATION_TABLE, and trash_filter_name().

8678 {
8679  filter_t filter;
8680 
8681  if (iterator->done) return NULL;
8682 
8683  filter = alert_iterator_filter (iterator);
8684  if (filter)
8685  {
8687  == LOCATION_TABLE)
8688  return filter_name (filter);
8689  return trash_filter_name (filter);
8690  }
8691  return NULL;
8692 }
long long int filter_t
Definition: manage.h:281
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
char * trash_filter_name(filter_t)
filter_t alert_iterator_filter(iterator_t *iterator)
Return the filter from an alert iterator.
Definition: manage_sql.c:8638
char * filter_name(filter_t)
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ alert_iterator_filter_readable()

int alert_iterator_filter_readable ( iterator_t iterator)

Return the filter readable state from an alert iterator.

Parameters
[in]iteratorIterator.
Returns
Whether filter is readable.

Definition at line 8720 of file manage_sql.c.

References acl_user_has_access_uuid(), alert_iterator_filter(), alert_iterator_filter_uuid(), iterator::done, GET_ITERATOR_COLUMN_COUNT, iterator_int(), and LOCATION_TRASH.

8721 {
8722  filter_t filter;
8723 
8724  if (iterator->done) return 0;
8725 
8726  filter = alert_iterator_filter (iterator);
8727  if (filter)
8728  {
8729  char *uuid;
8731  if (uuid)
8732  {
8733  int readable;
8734  readable = acl_user_has_access_uuid
8735  ("filter", uuid, "get_filters",
8737  == LOCATION_TRASH);
8738  free (uuid);
8739  return readable;
8740  }
8741  }
8742  return 0;
8743 }
long long int filter_t
Definition: manage.h:281
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
int acl_user_has_access_uuid(const char *type, const char *uuid, const char *permission, int trash)
Test whether the user may access a resource.
Definition: manage_acl.c:758
gboolean done
End flag.
Definition: iterator.h:55
char * alert_iterator_filter_uuid(iterator_t *iterator)
Return the filter UUID from an alert iterator.
Definition: manage_sql.c:8652
filter_t alert_iterator_filter(iterator_t *iterator)
Return the filter from an alert iterator.
Definition: manage_sql.c:8638
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ alert_iterator_filter_trash()

int alert_iterator_filter_trash ( iterator_t iterator)

Return the location of an alert iterator filter.

Parameters
[in]iteratorIterator.
Returns
0 in table, 1 in trash.

Definition at line 8702 of file manage_sql.c.

References alert_iterator_filter(), iterator::done, GET_ITERATOR_COLUMN_COUNT, iterator_int(), and LOCATION_TRASH.

8703 {
8704  if (iterator->done) return 0;
8707  == LOCATION_TRASH))
8708  return 1;
8709  return 0;
8710 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
filter_t alert_iterator_filter(iterator_t *iterator)
Return the filter from an alert iterator.
Definition: manage_sql.c:8638
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ alert_iterator_filter_uuid()

char* alert_iterator_filter_uuid ( iterator_t iterator)

Return the filter UUID from an alert iterator.

Parameters
[in]iteratorIterator.
Returns
UUID of filter of the alert or NULL if iteration is complete.

Definition at line 8652 of file manage_sql.c.

References alert_iterator_filter(), iterator::done, filter_uuid(), GET_ITERATOR_COLUMN_COUNT, iterator_int(), LOCATION_TABLE, and trash_filter_uuid().

Referenced by alert_iterator_filter_readable().

8653 {
8654  filter_t filter;
8655 
8656  if (iterator->done) return NULL;
8657 
8658  filter = alert_iterator_filter (iterator);
8659  if (filter)
8660  {
8662  == LOCATION_TABLE)
8663  return filter_uuid (filter);
8664  return trash_filter_uuid (filter);
8665  }
8666  return NULL;
8667 }
long long int filter_t
Definition: manage.h:281
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
char * filter_uuid(filter_t)
filter_t alert_iterator_filter(iterator_t *iterator)
Return the filter from an alert iterator.
Definition: manage_sql.c:8638
char * trash_filter_uuid(filter_t)
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:
Here is the caller graph for this function:

◆ alert_iterator_method()

int alert_iterator_method ( iterator_t iterator)

Return the method from an alert iterator.

Parameters
[in]iteratorIterator.
Returns
Method of the alert or NULL if iteration is complete.

Definition at line 8622 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_int().

8623 {
8624  int ret;
8625  if (iterator->done) return -1;
8627  return ret;
8628 }
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ alert_method_from_name()

alert_method_t alert_method_from_name ( const char *  name)

Get an alert method from a name.

Parameters
[in]nameMethod name.
Returns
The method.

Definition at line 1215 of file manage.c.

References ALERT_METHOD_EMAIL, ALERT_METHOD_ERROR, ALERT_METHOD_HTTP_GET, ALERT_METHOD_SCP, ALERT_METHOD_SEND, ALERT_METHOD_SMB, ALERT_METHOD_SNMP, ALERT_METHOD_SOURCEFIRE, ALERT_METHOD_START_TASK, ALERT_METHOD_SYSLOG, ALERT_METHOD_TIPPINGPOINT, and ALERT_METHOD_VERINICE.

1216 {
1217  if (strcasecmp (name, "Email") == 0)
1218  return ALERT_METHOD_EMAIL;
1219  if (strcasecmp (name, "HTTP Get") == 0)
1220  return ALERT_METHOD_HTTP_GET;
1221  if (strcasecmp (name, "SCP") == 0)
1222  return ALERT_METHOD_SCP;
1223  if (strcasecmp (name, "Send") == 0)
1224  return ALERT_METHOD_SEND;
1225  if (strcasecmp (name, "SMB") == 0)
1226  return ALERT_METHOD_SMB;
1227  if (strcasecmp (name, "SNMP") == 0)
1228  return ALERT_METHOD_SNMP;
1229  if (strcasecmp (name, "Sourcefire Connector") == 0)
1230  return ALERT_METHOD_SOURCEFIRE;
1231  if (strcasecmp (name, "Start Task") == 0)
1232  return ALERT_METHOD_START_TASK;
1233  if (strcasecmp (name, "Syslog") == 0)
1234  return ALERT_METHOD_SYSLOG;
1235  if (strcasecmp (name, "TippingPoint SMS") == 0)
1237  if (strcasecmp (name, "verinice Connector") == 0)
1238  return ALERT_METHOD_VERINICE;
1239  return ALERT_METHOD_ERROR;
1240 }

◆ alert_method_name()

const char* alert_method_name ( alert_method_t  method)

Get the name of an alert method.

Parameters
[in]methodMethod.
Returns
The name of the method (for example, "Email" or "SNMP").

Definition at line 1146 of file manage.c.

References ALERT_METHOD_EMAIL, ALERT_METHOD_HTTP_GET, ALERT_METHOD_SCP, ALERT_METHOD_SEND, ALERT_METHOD_SMB, ALERT_METHOD_SNMP, ALERT_METHOD_SOURCEFIRE, ALERT_METHOD_START_TASK, ALERT_METHOD_SYSLOG, ALERT_METHOD_TIPPINGPOINT, and ALERT_METHOD_VERINICE.

1147 {
1148  switch (method)
1149  {
1150  case ALERT_METHOD_EMAIL: return "Email";
1151  case ALERT_METHOD_HTTP_GET: return "HTTP Get";
1152  case ALERT_METHOD_SCP: return "SCP";
1153  case ALERT_METHOD_SEND: return "Send";
1154  case ALERT_METHOD_SMB: return "SMB";
1155  case ALERT_METHOD_SNMP: return "SNMP";
1156  case ALERT_METHOD_SOURCEFIRE: return "Sourcefire Connector";
1157  case ALERT_METHOD_START_TASK: return "Start Task";
1158  case ALERT_METHOD_SYSLOG: return "Syslog";
1159  case ALERT_METHOD_TIPPINGPOINT:return "TippingPoint SMS";
1160  case ALERT_METHOD_VERINICE: return "verinice Connector";
1161  default: return "Internal Error";
1162  }
1163 }

◆ alert_task_iterator_name()

const char* alert_task_iterator_name ( iterator_t iterator)

Return the name from an alert task iterator.

Parameters
[in]iteratorIterator.
Returns
Name of the task or NULL if iteration is complete.

Definition at line 13627 of file manage_sql.c.

References iterator::done, and iterator_string().

13628 {
13629  const char *ret;
13630  if (iterator->done) return NULL;
13631  ret = iterator_string (iterator, 0);
13632  return ret;
13633 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
Here is the call graph for this function:

◆ alert_task_iterator_readable()

int alert_task_iterator_readable ( iterator_t iterator)

Get the read permission status from a GET iterator.

Parameters
[in]iteratorIterator.
Returns
1 if may read, else 0.

Definition at line 13659 of file manage_sql.c.

References iterator::done, and iterator_int().

13660 {
13661  if (iterator->done) return 0;
13662  return iterator_int (iterator, 2);
13663 }
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
Here is the call graph for this function:

◆ alert_task_iterator_uuid()

const char* alert_task_iterator_uuid ( iterator_t iterator)

Return the uuid from an alert task iterator.

Parameters
[in]iteratorIterator.
Returns
UUID of the task or NULL if iteration is complete.

Definition at line 13643 of file manage_sql.c.

References iterator::done, and iterator_string().

13644 {
13645  const char *ret;
13646  if (iterator->done) return NULL;
13647  ret = iterator_string (iterator, 1);
13648  return ret;
13649 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
Here is the call graph for this function:

◆ alert_uuid()

char* alert_uuid ( alert_t  alert)

Return the UUID of an alert.

Parameters
[in]alertAlert.
Returns
UUID of alert.

Definition at line 8348 of file manage_sql.c.

References sql_string().

8349 {
8350  return sql_string ("SELECT uuid FROM alerts WHERE id = %llu;",
8351  alert);
8352 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ alert_writable()

int alert_writable ( alert_t  alert)

Return whether a alert is writable.

Parameters
[in]alertAlert.
Returns
1 if writable, else 0.

Definition at line 8536 of file manage_sql.c.

8537 {
8538  return 1;
8539 }

◆ all_info_count()

int all_info_count ( const get_data_t )

◆ all_info_iterator_extra()

const char* all_info_iterator_extra ( iterator_t )

◆ all_info_iterator_severity()

const char* all_info_iterator_severity ( iterator_t )

◆ all_info_iterator_type()

const char* all_info_iterator_type ( iterator_t )

◆ app_location()

gchar* app_location ( report_host_t  ,
const gchar *   
)

◆ append_task_open_port()

void append_task_open_port ( task_t  task,
const char *  ,
const char *   
)

◆ append_to_task_comment()

void append_to_task_comment ( task_t  ,
const char *  ,
int   
)

◆ append_to_task_name()

void append_to_task_name ( task_t  ,
const char *  ,
int   
)

◆ asset_host_count()

int asset_host_count ( const get_data_t )

◆ asset_host_iterator_severity()

const char* asset_host_iterator_severity ( iterator_t )

◆ asset_iterator_in_use()

int asset_iterator_in_use ( iterator_t )

◆ asset_iterator_writable()

int asset_iterator_writable ( iterator_t )

◆ asset_os_count()

int asset_os_count ( const get_data_t )

◆ asset_os_iterator_average_severity()

const char* asset_os_iterator_average_severity ( iterator_t )

◆ asset_os_iterator_highest_severity()

const char* asset_os_iterator_highest_severity ( iterator_t )

◆ asset_os_iterator_installs()

int asset_os_iterator_installs ( iterator_t )

◆ asset_os_iterator_latest_severity()

const char* asset_os_iterator_latest_severity ( iterator_t )

◆ asset_os_iterator_title()

const char * asset_os_iterator_title ( iterator_t )

◆ authenticate()

int authenticate ( credentials_t *  credentials)

Authenticate credentials.

Parameters
[in]credentialsCredentials.
Returns
0 authentication success, 1 authentication failure, 99 permission denied, -1 error.

Definition at line 17631 of file manage_sql.c.

References authenticate_allow_all, and get_scheduled_user_uuid().

17632 {
17633  if (credentials->username && credentials->password)
17634  {
17635  int fail;
17636  auth_method_t auth_method;
17637 
17639  {
17640  /* This flag is set when Manager makes a connection to itself, for
17641  * scheduled tasks and alerts. Take the stored uuid
17642  * to be able to tell apart locally authenticated vs remotely
17643  * authenticated users (in order to fetch the correct rules). */
17644  credentials->uuid = get_scheduled_user_uuid ();
17645  if (*credentials->uuid)
17646  {
17647  if (credentials_setup (credentials))
17648  return 99;
17649 
17650  manage_session_init (credentials->uuid);
17651  return 0;
17652  }
17653  return -1;
17654  }
17655 
17656  fail = authenticate_any_method (credentials->username,
17657  credentials->password,
17658  &auth_method);
17659  if (fail == 0)
17660  {
17661  gchar *quoted_name, *quoted_method;
17662 
17663  /* Authentication succeeded. */
17664 
17665  user_ensure_in_db (credentials->username,
17666  auth_method_name (auth_method));
17667 
17668  quoted_name = sql_quote (credentials->username);
17669  quoted_method = sql_quote (auth_method_name (auth_method));
17670  credentials->uuid = sql_string ("SELECT uuid FROM users"
17671  " WHERE name = '%s'"
17672  " AND method = '%s';",
17673  quoted_name,
17674  quoted_method);
17675  g_free (quoted_name);
17676  g_free (quoted_method);
17677 
17678  if (credentials_setup (credentials))
17679  {
17680  free (credentials->uuid);
17681  credentials->uuid = NULL;
17682  credentials->role = NULL;
17683  return 99;
17684  }
17685 
17686  manage_session_init (credentials->uuid);
17687 
17688  return 0;
17689  }
17690  return fail;
17691  }
17692  return 1;
17693 }
int authenticate_allow_all
Flag to force authentication to succeed.
Definition: manage_sql.c:120
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
void manage_session_init(const char *uuid)
Setup session.
Definition: manage_pg.c:46
int authenticate_any_method(const gchar *username, const gchar *password, auth_method_t *auth_method)
Authenticate, trying any method.
Definition: manage_sql.c:17566
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
int user_ensure_in_db(const gchar *, const gchar *)
Ensure the user exists in the database.
Definition: manage_sql.c:17309
gchar * get_scheduled_user_uuid()
Access UUID of user that scheduled the current task.
Definition: manage.c:6451
Here is the call graph for this function:

◆ buffer_get_filter_xml()

int buffer_get_filter_xml ( GString *  ,
const char *  ,
const get_data_t ,
const char *  ,
const char *   
)

◆ cert_bund_adv_info_count()

int cert_bund_adv_info_count ( const get_data_t get)

◆ cert_bund_adv_info_iterator_cve_refs()

const char* cert_bund_adv_info_iterator_cve_refs ( iterator_t )

◆ cert_bund_adv_info_iterator_max_cvss()

const char* cert_bund_adv_info_iterator_max_cvss ( iterator_t )

◆ cert_bund_adv_info_iterator_summary()

const char* cert_bund_adv_info_iterator_summary ( iterator_t )

◆ cert_bund_adv_info_iterator_title()

const char* cert_bund_adv_info_iterator_title ( iterator_t )

◆ certificate_iso_time()

gchar* certificate_iso_time ( time_t  time)

Converts a certificate time to an ISO time string.

Parameters
[in]timeThe time as a time_t.
Returns
Newly allocated string.

Definition at line 352 of file manage.c.

References iso_time().

353 {
354  if (time == 0)
355  return (g_strdup ("unlimited"));
356  else if (time == -1)
357  return (g_strdup ("unknown"));
358  else
359  return (g_strdup (iso_time (&time)));
360 }
char * iso_time(time_t *)
Create an ISO time from seconds since epoch.
Definition: manage_sql.c:1138
Here is the call graph for this function:

◆ certificate_time_status()

const gchar* certificate_time_status ( time_t  activates,
time_t  expires 
)

Tests the activation and expiration time of a certificate.

Parameters
[in]activatesActivation time.
[in]expiresExpiration time.
Returns
Static status string.

Definition at line 371 of file manage.c.

372 {
373  time_t now;
374  time (&now);
375 
376  if (activates == -1 || expires == -1)
377  return "unknown";
378  else if (activates > now)
379  return "inactive";
380  else if (expires != 0 && expires < now)
381  return "expired";
382  else
383  return "valid";
384 }

◆ cleanup_file_iterator()

void cleanup_file_iterator ( file_iterator_t iterator)

Cleanup a report type iterator.

Parameters
[in]iteratorIterator.

Definition at line 7143 of file manage.c.

7144 {
7145  array_free (iterator->start);
7146  g_free (iterator->dir_name);
7147 }
A generic SQL iterator.
Definition: iterator.h:52

◆ cleanup_iterator()

void cleanup_iterator ( iterator_t iterator)

Cleanup an iterator.

Parameters
[in]iteratorIterator.

Definition at line 664 of file sql.c.

References iterator::crypt_ctx, lsc_crypt_release(), iterator::prepared, sql_finalize(), and iterator::stmt.

665 {
666  if (iterator == NULL)
667  {
668  g_warning ("%s: null iterator pointer.\n", __FUNCTION__);
669  return;
670  }
671 
672  if (iterator->prepared == 0)
674  if (iterator->crypt_ctx)
675  {
677  iterator->crypt_ctx = NULL;
678  }
679 }
A generic SQL iterator.
Definition: iterator.h:52
lsc_crypt_ctx_t crypt_ctx
Encryption context.
Definition: iterator.h:57
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
int prepared
Prepared flag.
Definition: iterator.h:56
void lsc_crypt_release(lsc_crypt_ctx_t ctx)
Release an LSC encryption context.
Definition: lsc_crypt.c:528
void sql_finalize(sql_stmt_t *)
Free a prepared statement.
Definition: sql_pg.c:824
Here is the call graph for this function:

◆ cleanup_manage_process()

void cleanup_manage_process ( gboolean  cleanup)

Cleanup the manage library.

Optionally put any running task in the stopped state and close the database.

Parameters
[in]cleanupIf TRUE perform all cleanup operations, else only those required at the start of a forked process.

Definition at line 17128 of file manage_sql.c.

Referenced by manage_option_cleanup(), and reinit_manage_process().

17129 {
17130  if (sql_is_open ())
17131  {
17132  if (cleanup)
17133  {
17137  sql_close ();
17138  }
17139  else
17140  sql_close_fork ();
17141  }
17142 }
void sql_close_fork()
Close the database in a forked process.
Definition: sql_pg.c:373
int sql_is_open()
Check whether the database is open.
Definition: sql_pg.c:201
task_t current_scanner_task
The task currently running on the scanner.
Definition: manage.c:998
void cleanup_prognosis_iterator()
void sql_close()
Close the database.
Definition: sql_pg.c:363
void set_task_run_status(task_t task, task_status_t status)
Set the run state of a task.
Definition: manage_sql.c:18307
Here is the caller graph for this function:

◆ cleanup_report_type_iterator()

void cleanup_report_type_iterator ( report_type_iterator_t iterator)

Cleanup a report type iterator.

Parameters
[in]iteratorIterator.

Definition at line 6066 of file manage.c.

6067 {
6068  g_strfreev (iterator->start);
6069 }
A generic SQL iterator.
Definition: iterator.h:52

◆ cleanup_schedule_times()

int cleanup_schedule_times ( )

◆ cleanup_severity_data()

void cleanup_severity_data ( severity_data_t data)

Clean up a severity data structure.

Parameters
[in]dataThe data structure to initialize.

Definition at line 848 of file manage.c.

References severity_data_t::counts.

849 {
850  g_free (data->counts);
851 }
int * counts
Definition: manage.h:988

◆ clear_duration_schedules()

void clear_duration_schedules ( task_t  )

Referenced by manage_schedule().

Here is the caller graph for this function:

◆ collate_message_type()

int collate_message_type ( void *  data,
int  one_len,
const void *  arg_one,
int  two_len,
const void *  arg_two 
)

Collate two message type strings.

A lower threat is considered less than a higher threat, so Medium is less than High.

Parameters
[in]dataDummy for callback.
[in]one_lenLength of first string.
[in]arg_oneFirst string.
[in]two_lenLength of second string.
[in]arg_twoSecond string.
Returns
-1, 0 or 1 if first is less than, equal to or greater than second.

Definition at line 6638 of file manage_sql.c.

6641 {
6642  const char* one = (const char*) arg_one;
6643  const char* two = (const char*) arg_two;
6644 
6645  if (strncmp (one, "Security Hole", one_len) == 0)
6646  {
6647  if (strncmp (two, "Security Hole", two_len) == 0)
6648  return 0;
6649  return 1;
6650  }
6651  if (strncmp (two, "Security Hole", two_len) == 0) return -1;
6652 
6653  if (strncmp (one, "Security Warning", one_len) == 0)
6654  {
6655  if (strncmp (two, "Security Warning", two_len) == 0)
6656  return 0;
6657  return 1;
6658  }
6659  if (strncmp (two, "Security Warning", two_len) == 0) return -1;
6660 
6661  if (strncmp (one, "Security Note", one_len) == 0)
6662  {
6663  if (strncmp (two, "Security Note", two_len) == 0)
6664  return 0;
6665  return 1;
6666  }
6667  if (strncmp (two, "Security Note", two_len) == 0) return -1;
6668 
6669  if (strncmp (one, "Log Message", one_len) == 0)
6670  {
6671  if (strncmp (two, "Log Message", two_len) == 0)
6672  return 0;
6673  return 1;
6674  }
6675  if (strncmp (two, "Log Message", two_len) == 0) return -1;
6676 
6677  if (strncmp (one, "Debug Message", one_len) == 0)
6678  {
6679  if (strncmp (two, "Debug Message", two_len) == 0)
6680  return 0;
6681  return 1;
6682  }
6683  if (strncmp (two, "Debug Message", two_len) == 0) return -1;
6684 
6685  if (strncmp (one, "Error Message", one_len) == 0)
6686  {
6687  if (strncmp (two, "Error Message", two_len) == 0)
6688  return 0;
6689  return 1;
6690  }
6691  if (strncmp (two, "Error Message", two_len) == 0) return -1;
6692 
6693  return strncmp (one, two, MIN (one_len, two_len));
6694 }

◆ column_is_timestamp()

int column_is_timestamp ( const char *  )

Referenced by buffer_aggregate_xml().

Here is the caller graph for this function:

◆ config_count()

int config_count ( const get_data_t )

◆ config_families_growing()

int config_families_growing ( config_t  )

◆ config_file_iterator_content()

const char* config_file_iterator_content ( iterator_t )

◆ config_file_iterator_length()

int config_file_iterator_length ( iterator_t )

◆ config_in_use()

int config_in_use ( config_t  )

◆ config_iterator_families_growing()

int config_iterator_families_growing ( iterator_t )

◆ config_iterator_family_count()

int config_iterator_family_count ( iterator_t )

◆ config_iterator_nvt_count()

int config_iterator_nvt_count ( iterator_t )

◆ config_iterator_nvt_selector()

const char* config_iterator_nvt_selector ( iterator_t )

◆ config_iterator_nvts_growing()

int config_iterator_nvts_growing ( iterator_t )

◆ config_iterator_type()

int config_iterator_type ( iterator_t )

◆ config_nvt_selector()

char* config_nvt_selector ( config_t  )

◆ config_nvt_timeout()

char* config_nvt_timeout ( config_t  ,
const char *   
)

◆ config_nvts_growing()

int config_nvts_growing ( config_t  )

◆ config_scanner()

scanner_t config_scanner ( config_t  )

◆ config_task_iterator_name()

const char* config_task_iterator_name ( iterator_t )

◆ config_task_iterator_readable()

int config_task_iterator_readable ( iterator_t )

◆ config_task_iterator_uuid()

const char* config_task_iterator_uuid ( iterator_t )

◆ config_timeout_iterator_nvt_name()

const char* config_timeout_iterator_nvt_name ( iterator_t )

◆ config_timeout_iterator_oid()

const char* config_timeout_iterator_oid ( iterator_t )

◆ config_timeout_iterator_value()

const char* config_timeout_iterator_value ( iterator_t )

◆ config_type()

int config_type ( config_t  )

Referenced by stop_task().

Here is the caller graph for this function:

◆ config_uuid()

char* config_uuid ( config_t  )

◆ config_writable()

int config_writable ( config_t  )

◆ copy_agent()

int copy_agent ( const char *  ,
const char *  ,
const char *  ,
agent_t  
)

◆ copy_alert()

int copy_alert ( const char *  name,
const char *  comment,
const char *  alert_id,
alert_t new_alert 
)

Create an alert from an existing alert.

Parameters
[in]nameName of new alert. NULL to copy from existing.
[in]commentComment on new alert. NULL to copy from existing.
[in]alert_idUUID of existing alert.
[out]new_alertNew alert.
Returns
0 success, 1 alert exists already, 2 failed to find existing alert, 99 permission denied, -1 error.

Definition at line 7814 of file manage_sql.c.

References current_credentials, and sql_begin_immediate().

7816 {
7817  int ret;
7818  alert_t new, old;
7819 
7820  assert (current_credentials.uuid);
7821 
7822  if (alert_id == NULL)
7823  return -1;
7824 
7826 
7827  ret = copy_resource_lock ("alert", name, comment, alert_id,
7828  "event, condition, method, filter",
7829  1, &new, &old);
7830  if (ret)
7831  {
7832  sql_rollback ();
7833  return ret;
7834  }
7835 
7836  /* Copy the alert condition data */
7837  sql ("INSERT INTO alert_condition_data (alert, name, data)"
7838  " SELECT %llu, name, data FROM alert_condition_data"
7839  " WHERE alert = %llu;",
7840  new,
7841  old);
7842 
7843  /* Copy the alert event data */
7844  sql ("INSERT INTO alert_event_data (alert, name, data)"
7845  " SELECT %llu, name, data FROM alert_event_data"
7846  " WHERE alert = %llu;",
7847  new,
7848  old);
7849 
7850  /* Copy the alert method data */
7851  sql ("INSERT INTO alert_method_data (alert, name, data)"
7852  " SELECT %llu, name, data FROM alert_method_data"
7853  " WHERE alert = %llu;",
7854  new,
7855  old);
7856 
7857  sql_commit ();
7858  if (new_alert) *new_alert = new;
7859  return 0;
7860 }
long long int alert_t
Definition: manage.h:280
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
void sql_begin_immediate()
Begin an immediate transaction.
Definition: sql_pg.c:627
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649
Here is the call graph for this function:

◆ copy_config()

int copy_config ( const char *  ,
const char *  ,
const char *  ,
config_t  
)

◆ copy_credential()

int copy_credential ( const char *  ,
const char *  ,
const char *  ,
credential_t  
)

◆ copy_filter()

int copy_filter ( const char *  ,
const char *  ,
const char *  ,
filter_t  
)

◆ copy_group()

int copy_group ( const char *  ,
const char *  ,
const char *  ,
group_t  
)

◆ copy_note()

int copy_note ( const char *  ,
note_t  
)

◆ copy_override()

int copy_override ( const char *  ,
override_t  
)

◆ copy_permission()

int copy_permission ( const char *  ,
const char *  ,
permission_t  
)

◆ copy_port_list()

int copy_port_list ( const char *  ,
const char *  ,
const char *  ,
port_list_t  
)

◆ copy_report_format()

int copy_report_format ( const char *  ,
const char *  ,
report_format_t  
)

◆ copy_role()

int copy_role ( const char *  ,
const char *  ,
const char *  ,
role_t  
)

◆ copy_scanner()

int copy_scanner ( const char *  ,
const char *  ,
const char *  ,
scanner_t  
)

◆ copy_schedule()

int copy_schedule ( const char *  ,
const char *  ,
const char *  ,
schedule_t  
)

◆ copy_tag()

int copy_tag ( const char *  ,
const char *  ,
const char *  ,
tag_t  
)

◆ copy_target()

int copy_target ( const char *  ,
const char *  ,
const char *  ,
target_t  
)

◆ copy_task()

int copy_task ( const char *  ,
const char *  ,
const char *  ,
int  ,
task_t  
)

◆ copy_user()

int copy_user ( const char *  ,
const char *  ,
const char *  ,
user_t  
)

◆ cpe_info_count()

int cpe_info_count ( const get_data_t get)

◆ cpe_info_iterator_cve_refs()

const char* cpe_info_iterator_cve_refs ( iterator_t )

◆ cpe_info_iterator_deprecated_by_id()

const char* cpe_info_iterator_deprecated_by_id ( iterator_t )

◆ cpe_info_iterator_max_cvss()

const char* cpe_info_iterator_max_cvss ( iterator_t )

◆ cpe_info_iterator_nvd_id()

const char* cpe_info_iterator_nvd_id ( iterator_t )

◆ cpe_info_iterator_status()

const char* cpe_info_iterator_status ( iterator_t )

◆ cpe_info_iterator_title()

const char* cpe_info_iterator_title ( iterator_t )

◆ create_agent()

int create_agent ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
agent_t  
)

◆ create_alert()

int create_alert ( const char *  name,
const char *  comment,
const char *  filter_id,
event_t  event,
GPtrArray *  event_data,
alert_condition_t  condition,
GPtrArray *  condition_data,
alert_method_t  method,
GPtrArray *  method_data,
alert_t alert 
)

Create an alert.

Parameters
[in]nameName of alert.
[in]commentComment on alert.
[in]filter_idFilter.
[in]eventType of event.
[in]event_dataType-specific event data.
[in]conditionEvent condition.
[in]condition_dataCondition-specific data.
[in]methodEscalation method.
[in]method_dataData for escalation method.
[out]alertCreated alert on success.
Returns
0 success, 1 escalation exists already, 2 validation of email failed, 3 failed to find filter, 4 type must be "result" if specified, 5 unexpected condition data name, 6 syntax error in condition data, 7 email subject too long, 8 email message too long, 9 failed to find filter for condition, 12 error in Send host, 13 error in Send port, 14 failed to find report format for Send method, 15 error in SCP host, 17 failed to find report format for SCP method, 18 error in SCP credential, 19 error in SCP path, 20 method does not match event, 21 condition does not match event, 31 unexpected event data name, 32 syntax error in event data, 40 invalid SMB credential , 41 invalid SMB share path, 42 invalid SMB file path, 50 invalid TippingPoint credential, 51 invalid TippingPoint hostname, 52 invalid TippingPoint certificate, 53 invalid TippingPoint TLS workaround setting. 99 permission denied, -1 error.

Definition at line 7545 of file manage_sql.c.

7550 {
7551  int index, ret;
7552  gchar *item, *quoted_comment;
7553  gchar *quoted_name;
7554  filter_t filter;
7555 
7556  assert (current_credentials.uuid);
7557 
7559 
7560  if (acl_user_may ("create_alert") == 0)
7561  {
7562  sql_rollback ();
7563  return 99;
7564  }
7565 
7566  ret = check_alert_params (event, condition, method);
7567  if (ret)
7568  {
7569  sql_rollback ();
7570  return ret;
7571  }
7572 
7573  filter = 0;
7574  if (event != EVENT_NEW_SECINFO && event != EVENT_UPDATED_SECINFO && filter_id
7575  && strcmp (filter_id, "0"))
7576  {
7577  char *type;
7578 
7579  if (find_filter_with_permission (filter_id, &filter, "get_filters"))
7580  {
7581  sql_rollback ();
7582  return -1;
7583  }
7584 
7585  if (filter == 0)
7586  {
7587  sql_rollback ();
7588  return 3;
7589  }
7590 
7591  /* Filter type must be result if specified. */
7592 
7593  type = sql_string ("SELECT type FROM filters WHERE id = %llu;",
7594  filter);
7595  if (type && strcasecmp (type, "result"))
7596  {
7597  free (type);
7598  sql_rollback ();
7599  return 4;
7600  }
7601  free (type);
7602  }
7603 
7604  if (resource_with_name_exists (name, "alert", 0))
7605  {
7606  sql_rollback ();
7607  return 1;
7608  }
7609  quoted_name = sql_quote (name);
7610  quoted_comment = sql_quote (comment ?: "");
7611 
7612  sql ("INSERT INTO alerts (uuid, owner, name, comment, event, condition,"
7613  " method, filter, creation_time, modification_time)"
7614  " VALUES (make_uuid (),"
7615  " (SELECT id FROM users WHERE users.uuid = '%s'),"
7616  " '%s', '%s', %i, %i, %i, %llu, m_now (), m_now ());",
7617  current_credentials.uuid,
7618  quoted_name,
7619  quoted_comment,
7620  event,
7621  condition,
7622  method,
7623  filter);
7624 
7625  g_free (quoted_comment);
7626  g_free (quoted_name);
7627 
7628  *alert = sql_last_insert_id ();
7629 
7630  index = 0;
7631  while ((item = (gchar*) g_ptr_array_index (condition_data, index++)))
7632  {
7633  int validation_result;
7634  gchar *name = sql_quote (item);
7635  gchar *data = sql_quote (item + strlen (item) + 1);
7636 
7637  validation_result = validate_alert_condition_data (name, data, condition);
7638 
7639  if (validation_result)
7640  {
7641  g_free (name);
7642  g_free (data);
7643  sql_rollback ();
7644 
7645  switch (validation_result)
7646  {
7647  case 1:
7648  return 5;
7649  case 2:
7650  return 6;
7651  case 3:
7652  return 9;
7653  default:
7654  return -1;
7655  }
7656  }
7657 
7658  sql ("INSERT INTO alert_condition_data (alert, name, data)"
7659  " VALUES (%llu, '%s', '%s');",
7660  *alert,
7661  name,
7662  data);
7663  g_free (name);
7664  g_free (data);
7665  }
7666 
7667  index = 0;
7668  while ((item = (gchar*) g_ptr_array_index (event_data, index++)))
7669  {
7670  int validation_result;
7671  gchar *name = sql_quote (item);
7672  gchar *data = sql_quote (item + strlen (item) + 1);
7673 
7674  validation_result = validate_alert_event_data (name, data, event);
7675 
7676  if (validation_result)
7677  {
7678  g_free (name);
7679  g_free (data);
7680  sql_rollback ();
7681 
7682  switch (validation_result)
7683  {
7684  case 1:
7685  return 31;
7686  case 2:
7687  return 32;
7688  default:
7689  return -1;
7690  }
7691  }
7692 
7693  sql ("INSERT INTO alert_event_data (alert, name, data)"
7694  " VALUES (%llu, '%s', '%s');",
7695  *alert,
7696  name,
7697  data);
7698  g_free (name);
7699  g_free (data);
7700  }
7701 
7702  index = 0;
7703  while ((item = (gchar*) g_ptr_array_index (method_data, index++)))
7704  {
7705  int ret;
7706  gchar *name, *data;
7707 
7708  name = sql_quote (item);
7709  data = sql_quote (item + strlen (item) + 1);
7710 
7711  if (method == ALERT_METHOD_EMAIL
7712  && strcmp (name, "to_address") == 0
7713  && validate_email_list (data))
7714  {
7715  g_free (name);
7716  g_free (data);
7717  sql_rollback ();
7718  return 2;
7719  }
7720 
7721  if (method == ALERT_METHOD_EMAIL
7722  && strcmp (name, "from_address") == 0
7723  && validate_email (data))
7724  {
7725  g_free (name);
7726  g_free (data);
7727  sql_rollback ();
7728  return 2;
7729  }
7730 
7731  if (method == ALERT_METHOD_EMAIL
7732  && strcmp (name, "subject") == 0
7733  && strlen (data) > 80)
7734  {
7735  g_free (name);
7736  g_free (data);
7737  sql_rollback ();
7738  return 7;
7739  }
7740 
7741  if (method == ALERT_METHOD_EMAIL
7742  && strcmp (name, "message") == 0
7743  && strlen (data) > max_email_message_length)
7744  {
7745  g_free (name);
7746  g_free (data);
7747  sql_rollback ();
7748  return 8;
7749  }
7750 
7751  ret = validate_scp_data (method, name, &data);
7752  if (ret)
7753  {
7754  g_free (name);
7755  g_free (data);
7756  sql_rollback ();
7757  return ret;
7758  }
7759 
7760  ret = validate_send_data (method, name, &data);
7761  if (ret)
7762  {
7763  g_free (name);
7764  g_free (data);
7765  sql_rollback ();
7766  return ret;
7767  }
7768 
7769  ret = validate_smb_data (method, name, &data);
7770  if (ret)
7771  {
7772  g_free (name);
7773  g_free (data);
7774  sql_rollback ();
7775  return ret;
7776  }
7777 
7778  ret = validate_tippingpoint_data (method, name, &data);
7779  if (ret)
7780  {
7781  g_free (name);
7782  g_free (data);
7783  sql_rollback ();
7784  return ret;
7785  }
7786 
7787  sql ("INSERT INTO alert_method_data (alert, name, data)"
7788  " VALUES (%llu, '%s', '%s');",
7789  *alert,
7790  name,
7791  data);
7792  g_free (name);
7793  g_free (data);
7794  }
7795 
7796  sql_commit ();
7797 
7798  return 0;
7799 }
long long int filter_t
Definition: manage.h:281
int validate_send_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the Send method.
Definition: manage_sql.c:7304
int validate_scp_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the SCP method.
Definition: manage_sql.c:7222
resource_t sql_last_insert_id()
Get the ID of the last inserted row.
Definition: sql_pg.c:395
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
int validate_smb_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the Send method.
Definition: manage_sql.c:7368
gboolean find_filter_with_permission(const char *, filter_t *, const char *)
void sql_begin_immediate()
Begin an immediate transaction.
Definition: sql_pg.c:627
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
int validate_tippingpoint_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the TippingPoint method.
Definition: manage_sql.c:7435
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649

◆ create_asset_host()

int create_asset_host ( const char *  ,
const char *  ,
resource_t  
)

◆ create_asset_report()

int create_asset_report ( const char *  ,
const char *   
)

◆ create_config()

int create_config ( const char *  ,
const char *  ,
const array_t *  ,
const array_t *  ,
const char *  ,
config_t ,
char **   
)

◆ create_config_from_scanner()

int create_config_from_scanner ( const char *  ,
const char *  ,
const char *  ,
char **   
)

◆ create_credential()

int create_credential ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
credential_t  
)

◆ create_filter()

int create_filter ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
int  ,
filter_t  
)

◆ create_group()

int create_group ( const char *  ,
const char *  ,
const char *  ,
int  ,
group_t  
)

◆ create_note()

int create_note ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
task_t  ,
result_t  ,
note_t  
)

◆ create_override()

int create_override ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
task_t  ,
result_t  ,
override_t  
)

◆ create_permission()

int create_permission ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
permission_t  
)

◆ create_port_list()

int create_port_list ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
array_t *  ,
port_list_t  
)

◆ create_port_range()

int create_port_range ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
port_range_t  
)

◆ create_report()

int create_report ( array_t *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
array_t *  ,
array_t *  ,
array_t *  ,
char **   
)

◆ create_report_format()

int create_report_format ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
int  ,
array_t *  ,
array_t *  ,
array_t *  ,
const char *  ,
report_format_t  
)

◆ create_role()

int create_role ( const char *  ,
const char *  ,
const char *  ,
role_t  
)

◆ create_scanner()

int create_scanner ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
scanner_t ,
const char *  ,
const char *   
)

◆ create_schedule()

int create_schedule ( const char *  ,
const char *  ,
time_t  ,
time_t  ,
time_t  ,
time_t  ,
const char *  ,
schedule_t  
)

◆ create_tag()

int create_tag ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
tag_t  
)

◆ create_target()

int create_target ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
credential_t  ,
const char *  ,
credential_t  ,
credential_t  ,
credential_t  ,
const char *  ,
const char *  ,
const char *  ,
int  ,
target_t  
)

◆ create_task_check_config_scanner()

int create_task_check_config_scanner ( config_t  ,
scanner_t   
)

◆ create_user()

int create_user ( const gchar *  ,
const gchar *  ,
const gchar *  ,
int  ,
const gchar *  ,
int  ,
const array_t *  ,
array_t *  ,
gchar **  ,
array_t *  ,
gchar **  ,
gchar **  ,
user_t ,
int   
)

◆ credential_count()

int credential_count ( const get_data_t )

◆ credential_encrypted_value()

gchar* credential_encrypted_value ( credential_t  ,
const char *   
)

◆ credential_full_type()

const char* credential_full_type ( const char *  abbreviation)

Get the written-out name of an LSC Credential type.

Parameters
[in]abbreviationThe type abbreviation.
Returns
The written-out type name.

Definition at line 5797 of file manage.c.

5798 {
5799  if (abbreviation == NULL)
5800  return NULL;
5801  else if (strcasecmp (abbreviation, "cc") == 0)
5802  return "client certificate";
5803  else if (strcasecmp (abbreviation, "snmp") == 0)
5804  return "SNMP";
5805  else if (strcasecmp (abbreviation, "up") == 0)
5806  return "username + password";
5807  else if (strcasecmp (abbreviation, "usk") == 0)
5808  return "username + SSH key";
5809  else
5810  return abbreviation;
5811 }

◆ credential_in_use()

int credential_in_use ( credential_t  )

◆ credential_iterator_allow_insecure()

int credential_iterator_allow_insecure ( iterator_t )

◆ credential_iterator_auth_algorithm()

const char* credential_iterator_auth_algorithm ( iterator_t )

◆ credential_iterator_certificate()

const char* credential_iterator_certificate ( iterator_t )

◆ credential_iterator_community()

const char* credential_iterator_community ( iterator_t )

◆ credential_iterator_deb()

char* credential_iterator_deb ( iterator_t )

◆ credential_iterator_exe()

char* credential_iterator_exe ( iterator_t )

◆ credential_iterator_login()

const char* credential_iterator_login ( iterator_t )

◆ credential_iterator_password()

const char* credential_iterator_password ( iterator_t )

◆ credential_iterator_privacy_algorithm()

const char* credential_iterator_privacy_algorithm ( iterator_t )

◆ credential_iterator_privacy_password()

const char* credential_iterator_privacy_password ( iterator_t )

◆ credential_iterator_private_key()

const char* credential_iterator_private_key ( iterator_t )

◆ credential_iterator_rpm()

char* credential_iterator_rpm ( iterator_t )

◆ credential_iterator_type()

const char* credential_iterator_type ( iterator_t )

◆ credential_name()

char* credential_name ( credential_t  )

◆ credential_scanner_iterator_name()

const char* credential_scanner_iterator_name ( iterator_t )

◆ credential_scanner_iterator_readable()

int credential_scanner_iterator_readable ( iterator_t )

◆ credential_scanner_iterator_uuid()

const char* credential_scanner_iterator_uuid ( iterator_t )

◆ credential_target_iterator_name()

const char* credential_target_iterator_name ( iterator_t )

◆ credential_target_iterator_readable()

int credential_target_iterator_readable ( iterator_t )

◆ credential_target_iterator_uuid()

const char* credential_target_iterator_uuid ( iterator_t )

◆ credential_type()

char* credential_type ( credential_t  )

Referenced by validate_tippingpoint_data().

Here is the caller graph for this function:

◆ credential_uuid()

char* credential_uuid ( credential_t  )

◆ credential_value()

gchar* credential_value ( credential_t  ,
const char *   
)

Referenced by validate_scp_data(), and validate_smb_data().

Here is the caller graph for this function:

◆ credential_writable()

int credential_writable ( credential_t  )

◆ cve_cvss_base()

gchar* cve_cvss_base ( const gchar *  )

◆ cve_info_count()

int cve_info_count ( const get_data_t get)

◆ cve_info_iterator_authentication()

const char* cve_info_iterator_authentication ( iterator_t )

◆ cve_info_iterator_availability_impact()

const char* cve_info_iterator_availability_impact ( iterator_t )

◆ cve_info_iterator_complexity()

const char* cve_info_iterator_complexity ( iterator_t )

◆ cve_info_iterator_confidentiality_impact()

const char* cve_info_iterator_confidentiality_impact ( iterator_t )

◆ cve_info_iterator_cvss()

const char* cve_info_iterator_cvss ( iterator_t )

◆ cve_info_iterator_description()

const char* cve_info_iterator_description ( iterator_t )

◆ cve_info_iterator_integrity_impact()

const char* cve_info_iterator_integrity_impact ( iterator_t )

◆ cve_info_iterator_products()

const char* cve_info_iterator_products ( iterator_t )

◆ cve_info_iterator_vector()

const char* cve_info_iterator_vector ( iterator_t )

◆ cve_iterator_cvss()

const char* cve_iterator_cvss ( iterator_t )

◆ cve_iterator_name()

const char* cve_iterator_name ( iterator_t )

◆ delete_agent()

int delete_agent ( const char *  ,
int   
)

◆ delete_alert()

int delete_alert ( const char *  alert_id,
int  ultimate 
)

Delete an alert.

Parameters
[in]alert_idUUID of alert.
[in]ultimateWhether to remove entirely, or to trashcan.
Returns
0 success, 1 fail because a task refers to the alert, 2 failed to find target, 99 permission denied, -1 error.

Definition at line 8195 of file manage_sql.c.

References acl_user_may(), find_alert_with_permission(), sql_begin_immediate(), and sql_rollback().

8196 {
8197  alert_t alert = 0;
8198 
8200 
8201  if (acl_user_may ("delete_alert") == 0)
8202  {
8203  sql_rollback ();
8204  return 99;
8205  }
8206 
8207  if (find_alert_with_permission (alert_id, &alert, "delete_alert"))
8208  {
8209  sql_rollback ();
8210  return -1;
8211  }
8212 
8213  if (alert == 0)
8214  {
8215  if (find_trash ("alert", alert_id, &alert))
8216  {
8217  sql_rollback ();
8218  return -1;
8219  }
8220  if (alert == 0)
8221  {
8222  sql_rollback ();
8223  return 2;
8224  }
8225  if (ultimate == 0)
8226  {
8227  /* It's already in the trashcan. */
8228  sql_commit ();
8229  return 0;
8230  }
8231 
8232  /* Check if it's in use by a task in the trashcan. */
8233  if (sql_int ("SELECT count(*) FROM task_alerts"
8234  " WHERE alert = %llu"
8235  " AND alert_location = " G_STRINGIFY (LOCATION_TRASH) ";",
8236  alert))
8237  {
8238  sql_rollback ();
8239  return 1;
8240  }
8241 
8242  permissions_set_orphans ("alert", alert, LOCATION_TRASH);
8243  tags_set_orphans ("alert", alert, LOCATION_TRASH);
8244 
8245  sql ("DELETE FROM alert_condition_data_trash WHERE alert = %llu;",
8246  alert);
8247  sql ("DELETE FROM alert_event_data_trash WHERE alert = %llu;",
8248  alert);
8249  sql ("DELETE FROM alert_method_data_trash WHERE alert = %llu;",
8250  alert);
8251  sql ("DELETE FROM alerts_trash WHERE id = %llu;", alert);
8252  sql_commit ();
8253  return 0;
8254  }
8255 
8256  if (ultimate == 0)
8257  {
8258  alert_t trash_alert;
8259 
8260  if (sql_int ("SELECT count(*) FROM task_alerts"
8261  " WHERE alert = %llu"
8262  " AND alert_location = " G_STRINGIFY (LOCATION_TABLE)
8263  " AND (SELECT hidden < 2 FROM tasks"
8264  " WHERE id = task_alerts.task);",
8265  alert))
8266  {
8267  sql_rollback ();
8268  return 1;
8269  }
8270 
8271  sql ("INSERT INTO alerts_trash"
8272  " (uuid, owner, name, comment, event, condition, method, filter,"
8273  " filter_location, creation_time, modification_time)"
8274  " SELECT uuid, owner, name, comment, event, condition, method,"
8275  " filter, " G_STRINGIFY (LOCATION_TABLE) ", creation_time,"
8276  " m_now ()"
8277  " FROM alerts WHERE id = %llu;",
8278  alert);
8279 
8280  trash_alert = sql_last_insert_id ();
8281 
8282  sql ("INSERT INTO alert_condition_data_trash"
8283  " (alert, name, data)"
8284  " SELECT %llu, name, data"
8285  " FROM alert_condition_data WHERE alert = %llu;",
8286  trash_alert,
8287  alert);
8288 
8289  sql ("INSERT INTO alert_event_data_trash"
8290  " (alert, name, data)"
8291  " SELECT %llu, name, data"
8292  " FROM alert_event_data WHERE alert = %llu;",
8293  trash_alert,
8294  alert);
8295 
8296  sql ("INSERT INTO alert_method_data_trash"
8297  " (alert, name, data)"
8298  " SELECT %llu, name, data"
8299  " FROM alert_method_data WHERE alert = %llu;",
8300  trash_alert,
8301  alert);
8302 
8303  /* Update the location of the alert in any trashcan tasks. */
8304  sql ("UPDATE task_alerts"
8305  " SET alert = %llu,"
8306  " alert_location = " G_STRINGIFY (LOCATION_TRASH)
8307  " WHERE alert = %llu"
8308  " AND alert_location = " G_STRINGIFY (LOCATION_TABLE) ";",
8309  trash_alert,
8310  alert);
8311 
8312  permissions_set_locations ("alert", alert, trash_alert,
8313  LOCATION_TRASH);
8314  tags_set_locations ("alert", alert, trash_alert,
8315  LOCATION_TRASH);
8316  }
8317  else if (sql_int ("SELECT count(*) FROM task_alerts"
8318  " WHERE alert = %llu"
8319  " AND alert_location = " G_STRINGIFY (LOCATION_TABLE) ";",
8320  alert))
8321  {
8322  sql_rollback ();
8323  return 1;
8324  }
8325  else
8326  {
8327  permissions_set_orphans ("alert", alert, LOCATION_TABLE);
8328  tags_set_orphans ("alert", alert, LOCATION_TABLE);
8329  }
8330 
8331  sql ("DELETE FROM alert_condition_data WHERE alert = %llu;",
8332  alert);
8333  sql ("DELETE FROM alert_event_data WHERE alert = %llu;", alert);
8334  sql ("DELETE FROM alert_method_data WHERE alert = %llu;", alert);
8335  sql ("DELETE FROM alerts WHERE id = %llu;", alert);
8336  sql_commit ();
8337  return 0;
8338 }
long long int alert_t
Definition: manage.h:280
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
void permissions_set_locations(const char *, resource_t, resource_t, int)
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
resource_t sql_last_insert_id()
Get the ID of the last inserted row.
Definition: sql_pg.c:395
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
void tags_set_locations(const char *, resource_t, resource_t, int)
gboolean find_alert_with_permission(const char *uuid, alert_t *alert, const char *permission)
Find a alert for a specific permission, given a UUID.
Definition: manage_sql.c:6983
void sql_begin_immediate()
Begin an immediate transaction.
Definition: sql_pg.c:627
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
void permissions_set_orphans(const char *, resource_t, int)
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
void tags_set_orphans(const char *, resource_t, int)
Here is the call graph for this function:

◆ delete_asset()

int delete_asset ( const char *  ,
const char *  ,
int   
)

Referenced by migrate_150_to_151(), and migrate_152_to_153().

Here is the caller graph for this function:

◆ delete_config()

int delete_config ( const char *  ,
int   
)

◆ delete_credential()

int delete_credential ( const char *  ,
int   
)

◆ delete_filter()

int delete_filter ( const char *  ,
int   
)

◆ delete_group()

int delete_group ( const char *  ,
int   
)

◆ delete_note()

int delete_note ( const char *  ,
int   
)

◆ delete_override()

int delete_override ( const char *  ,
int   
)

◆ delete_permission()

int delete_permission ( const char *  ,
int   
)

◆ delete_port_list()

int delete_port_list ( const char *  ,
int   
)

◆ delete_port_range()

int delete_port_range ( const char *  ,
int   
)

◆ delete_report()

int delete_report ( const char *  ,
int   
)

◆ delete_report_format()

int delete_report_format ( const char *  ,
int   
)

◆ delete_role()

int delete_role ( const char *  ,
int   
)

◆ delete_scanner()

int delete_scanner ( const char *  ,
int   
)

◆ delete_schedule()

int delete_schedule ( const char *  ,
int   
)

◆ delete_tag()

int delete_tag ( const char *  ,
int   
)

◆ delete_target()

int delete_target ( const char *  ,
int   
)

◆ delete_task()

int delete_task ( task_t  ,
int   
)

◆ delete_task_lock()

int delete_task_lock ( task_t  ,
int   
)

◆ delete_user()

int delete_user ( const char *  ,
const char *  ,
int  ,
int  ,
const char *  ,
const char *   
)

◆ dfn_cert_adv_info_count()

int dfn_cert_adv_info_count ( const get_data_t get)

◆ dfn_cert_adv_info_iterator_cve_refs()

const char* dfn_cert_adv_info_iterator_cve_refs ( iterator_t )

◆ dfn_cert_adv_info_iterator_max_cvss()

const char* dfn_cert_adv_info_iterator_max_cvss ( iterator_t )

◆ dfn_cert_adv_info_iterator_summary()

const char* dfn_cert_adv_info_iterator_summary ( iterator_t )

◆ dfn_cert_adv_info_iterator_title()

const char* dfn_cert_adv_info_iterator_title ( iterator_t )

◆ event_description()

gchar* event_description ( event_t  event,
const void *  event_data,
const char *  task_name 
)

Get a description of an alert event.

Parameters
[in]eventEvent.
[in]event_dataEvent data.
[in]task_nameName of task if required in description, else NULL.
Returns
Freshly allocated description of event.

Definition at line 1114 of file manage.c.

1115 {
1116  switch (event)
1117  {
1119  if (task_name)
1120  return g_strdup_printf
1121  ("The security scan task '%s' changed status to '%s'",
1122  task_name,
1123  run_status_name ((task_status_t) event_data));
1124  return g_strdup_printf ("Task status changed to '%s'",
1125  run_status_name ((task_status_t) event_data));
1126  break;
1127  case EVENT_NEW_SECINFO:
1128  return g_strdup_printf ("New SecInfo arrived");
1129  break;
1130  case EVENT_UPDATED_SECINFO:
1131  return g_strdup_printf ("Updated SecInfo arrived");
1132  break;
1133  default:
1134  return g_strdup ("Internal Error");
1135  }
1136 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
const char * run_status_name(task_status_t status)
Get the name of a run status.
Definition: manage.c:1253
char * task_name(task_t)
Return the name of a task.
Definition: manage_sql.c:17945

◆ event_from_name()

event_t event_from_name ( const char *  name)

Get an event from a name.

Parameters
[in]nameEvent name.
Returns
The event.

Definition at line 1196 of file manage.c.

References EVENT_ERROR, EVENT_NEW_SECINFO, EVENT_TASK_RUN_STATUS_CHANGED, and EVENT_UPDATED_SECINFO.

1197 {
1198  if (strcasecmp (name, "Task run status changed") == 0)
1200  if (strcasecmp (name, "New SecInfo arrived") == 0)
1201  return EVENT_NEW_SECINFO;
1202  if (strcasecmp (name, "Updated SecInfo arrived") == 0)
1203  return EVENT_UPDATED_SECINFO;
1204  return EVENT_ERROR;
1205 }

◆ event_name()

const char* event_name ( event_t  event)

Get the name of an alert event.

Parameters
[in]eventEvent.
Returns
The name of the event (for example, "Run status changed").

Definition at line 1043 of file manage.c.

1044 {
1045  switch (event)
1046  {
1047  case EVENT_TASK_RUN_STATUS_CHANGED: return "Task run status changed";
1048  case EVENT_NEW_SECINFO: return "New SecInfo arrived";
1049  case EVENT_UPDATED_SECINFO: return "Updated SecInfo arrived";
1050  default: return "Internal Error";
1051  }
1052 }

◆ family_iterator_name()

const char* family_iterator_name ( iterator_t )

◆ family_nvt_count()

int family_nvt_count ( const char *  )

◆ file_iterator_content_64()

gchar* file_iterator_content_64 ( file_iterator_t iterator)

Return the file contents from a file iterator.

Parameters
[in]iteratorIterator.
Returns
Freshly allocated file contents, in base64.

Definition at line 7187 of file manage.c.

7188 {
7189  gchar *path_name, *content;
7190  GError *error;
7191  gsize content_size;
7192 
7193  path_name = g_build_filename (iterator->dir_name,
7194  (gchar*) *iterator->current,
7195  NULL);
7196 
7197  /* Read in the contents. */
7198 
7199  error = NULL;
7200  if (g_file_get_contents (path_name,
7201  &content,
7202  &content_size,
7203  &error)
7204  == FALSE)
7205  {
7206  if (error)
7207  {
7208  g_debug ("%s: failed to read %s: %s",
7209  __FUNCTION__, path_name, error->message);
7210  g_error_free (error);
7211  }
7212  g_free (path_name);
7213  return NULL;
7214  }
7215 
7216  g_free (path_name);
7217 
7218  /* Base64 encode the contents. */
7219 
7220  if (content && (content_size > 0))
7221  {
7222  gchar *base64 = g_base64_encode ((guchar*) content, content_size);
7223  g_free (content);
7224  return base64;
7225  }
7226 
7227  return content;
7228 }
A generic SQL iterator.
Definition: iterator.h:52

◆ file_iterator_name()

const char* file_iterator_name ( file_iterator_t iterator)

Return the name from a file iterator.

Parameters
[in]iteratorIterator.
Returns
File name.

Definition at line 7174 of file manage.c.

7175 {
7176  return (const char*) *iterator->current;
7177 }
A generic SQL iterator.
Definition: iterator.h:52

◆ filter_alert_iterator_name()

const char* filter_alert_iterator_name ( iterator_t )

◆ filter_alert_iterator_readable()

int filter_alert_iterator_readable ( iterator_t )

◆ filter_alert_iterator_uuid()

const char* filter_alert_iterator_uuid ( iterator_t )

◆ filter_count()

int filter_count ( const get_data_t )

◆ filter_free()

void filter_free ( array_t *  split)

Free a split filter.

Parameters
[in]splitSplit filter.

Definition at line 2018 of file manage_sql.c.

Referenced by manage_filter_controls(), and manage_report_filter_controls().

2019 {
2020  keyword_t **point;
2021  for (point = (keyword_t**) split->pdata; *point; point++)
2022  keyword_free (*point);
2023  array_free (split);
2024 }
Keyword.
Definition: manage.h:3428
Here is the caller graph for this function:

◆ filter_in_use()

int filter_in_use ( filter_t  )

◆ filter_iterator_term()

const char* filter_iterator_term ( iterator_t )

◆ filter_iterator_type()

const char* filter_iterator_type ( iterator_t )

◆ filter_name()

char* filter_name ( filter_t  )

Referenced by alert_iterator_filter_name().

Here is the caller graph for this function:

◆ filter_term()

gchar* filter_term ( const char *  )

Referenced by init_aggregate_iterator(), init_get(), init_task_iterator(), and task_count().

Here is the caller graph for this function:

◆ filter_term_value()

gchar* filter_term_value ( const char *  ,
const char *   
)

Referenced by init_aggregate_iterator(), init_get(), init_task_iterator(), and task_count().

Here is the caller graph for this function:

◆ filter_uuid()

char* filter_uuid ( filter_t  )

Referenced by alert_iterator_filter_uuid().

Here is the caller graph for this function:

◆ filter_writable()

int filter_writable ( filter_t  )

◆ find_alert_with_permission()

gboolean find_alert_with_permission ( const char *  uuid,
alert_t alert,
const char *  permission 
)

Find a alert for a specific permission, given a UUID.

Parameters
[in]uuidUUID of alert.
[out]alertAlert return, 0 if succesfully failed to find alert.
[in]permissionPermission.
Returns
FALSE on success (including if failed to find alert), TRUE on error.

Definition at line 6983 of file manage_sql.c.

References find_resource_with_permission().

Referenced by delete_alert(), manage_test_alert(), and set_task_alerts().

6985 {
6986  return find_resource_with_permission ("alert", uuid, alert, permission, 0);
6987 }
gboolean find_resource_with_permission(const char *type, const char *uuid, resource_t *resource, const char *permission, int trash)
Find a resource given a UUID and a permission.
Definition: manage_sql.c:4459
Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_config()

gboolean find_config ( const char *  ,
config_t  
)

◆ find_config_with_permission()

gboolean find_config_with_permission ( const char *  ,
config_t ,
const char *   
)

◆ find_credential_with_permission()

gboolean find_credential_with_permission ( const char *  ,
credential_t ,
const char *   
)

Referenced by validate_scp_data(), validate_smb_data(), and validate_tippingpoint_data().

Here is the caller graph for this function:

◆ find_filter()

gboolean find_filter ( const char *  ,
filter_t  
)

◆ find_filter_with_permission()

gboolean find_filter_with_permission ( const char *  ,
filter_t ,
const char *   
)

◆ find_note_with_permission()

gboolean find_note_with_permission ( const char *  ,
note_t ,
const char *   
)

◆ find_nvt()

gboolean find_nvt ( const char *  ,
nvt_t  
)

◆ find_override_with_permission()

gboolean find_override_with_permission ( const char *  ,
override_t ,
const char *   
)

◆ find_port_list()

gboolean find_port_list ( const char *  ,
port_list_t  
)

◆ find_port_list_with_permission()

gboolean find_port_list_with_permission ( const char *  ,
port_list_t ,
const char *   
)

◆ find_port_range()

gboolean find_port_range ( const char *  ,
port_list_t  
)

◆ find_report_format_with_permission()

gboolean find_report_format_with_permission ( const char *  ,
report_format_t ,
const char *   
)

Referenced by validate_scp_data(), and validate_send_data().

Here is the caller graph for this function:

◆ find_report_with_permission()

gboolean find_report_with_permission ( const char *  ,
report_t ,
const char *   
)

◆ find_resource()

gboolean find_resource ( const char *  type,
const char *  uuid,
resource_t resource 
)

Find a resource given a UUID.

Parameters
[in]typeType of resource.
[in]uuidUUID of resource.
[out]resourceResource return, 0 if succesfully failed to find resource.
Returns
FALSE on success (including if failed to find resource), TRUE on error.

Definition at line 4411 of file manage_sql.c.

References acl_user_owns_uuid(), sql_int64(), and sql_quote().

4412 {
4413  gchar *quoted_uuid;
4414  quoted_uuid = sql_quote (uuid);
4415  if (acl_user_owns_uuid (type, quoted_uuid, 0) == 0)
4416  {
4417  g_free (quoted_uuid);
4418  *resource = 0;
4419  return FALSE;
4420  }
4421  // TODO should really check type
4422  switch (sql_int64 (resource,
4423  "SELECT id FROM %ss WHERE uuid = '%s'%s;",
4424  type,
4425  quoted_uuid,
4426  strcmp (type, "task") ? "" : " AND hidden < 2"))
4427  {
4428  case 0:
4429  break;
4430  case 1: /* Too few rows in result of query. */
4431  *resource = 0;
4432  break;
4433  default: /* Programming error. */
4434  assert (0);
4435  case -1:
4436  g_free (quoted_uuid);
4437  return TRUE;
4438  break;
4439  }
4440 
4441  g_free (quoted_uuid);
4442  return FALSE;
4443 }
int acl_user_owns_uuid(const char *type, const char *uuid, int trash)
Test whether a user effectively owns a resource.
Definition: manage_acl.c:606
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
Here is the call graph for this function:

◆ find_result_with_permission()

gboolean find_result_with_permission ( const char *  ,
result_t ,
const char *   
)

◆ find_scanner()

gboolean find_scanner ( const char *  ,
scanner_t  
)

Referenced by manage_scanner_set().

Here is the caller graph for this function:

◆ find_scanner_with_permission()

gboolean find_scanner_with_permission ( const char *  ,
scanner_t ,
const char *   
)

Referenced by move_task().

Here is the caller graph for this function:

◆ find_schedule_with_permission()

gboolean find_schedule_with_permission ( const char *  ,
schedule_t ,
const char *   
)

◆ find_target_with_permission()

gboolean find_target_with_permission ( const char *  ,
target_t ,
const char *   
)

Referenced by run_osp_task().

Here is the caller graph for this function:

◆ find_task()

gboolean find_task ( const char *  id,
task_t  
)

◆ find_task_with_permission()

gboolean find_task_with_permission ( const char *  ,
task_t ,
const char *   
)

Referenced by move_task(), resume_task(), and stop_task().

Here is the caller graph for this function:

◆ find_trash_task_with_permission()

gboolean find_trash_task_with_permission ( const char *  ,
task_t ,
const char *   
)

◆ find_user_by_name_with_permission()

gboolean find_user_by_name_with_permission ( const char *  ,
user_t ,
const char *   
)

◆ free_tasks()

void free_tasks ( )

◆ get_certificate_info()

int get_certificate_info ( const gchar *  certificate,
time_t *  activation_time,
time_t *  expiration_time,
gchar **  fingerprint,
gchar **  issuer 
)

Gathers info from a certificate.

Parameters
[in]certificateThe certificate to get data from.
[out]activation_timePointer to write activation time to.
[out]expiration_timePointer to write expiration time to.
[out]fingerprintPointer for newly allocated fingerprint.
[out]issuerPointer for newly allocated issuer DN.
Returns
0 success, -1 error.

Definition at line 252 of file manage.c.

References truncate_certificate().

255 {
256  gchar *cert_truncated;
257 
258  cert_truncated = NULL;
259  if (activation_time)
260  *activation_time = -1;
261  if (expiration_time)
262  *expiration_time = -1;
263  if (fingerprint)
264  *fingerprint = NULL;
265  if (issuer)
266  *issuer = NULL;
267 
268  if (certificate)
269  {
270  int err;
271  gnutls_datum_t cert_datum;
272  gnutls_x509_crt_t gnutls_cert;
273 
274  cert_truncated = truncate_certificate (certificate);
275  if (cert_truncated == NULL)
276  {
277  return -1;
278  }
279  cert_datum.data = (unsigned char*) cert_truncated;
280  cert_datum.size = strlen (cert_truncated);
281 
282  gnutls_x509_crt_init (&gnutls_cert);
283  err = gnutls_x509_crt_import (gnutls_cert, &cert_datum,
284  GNUTLS_X509_FMT_PEM);
285  if (err)
286  {
287  g_free (cert_truncated);
288  return -1;
289  }
290 
291  if (activation_time)
292  {
293  *activation_time
294  = gnutls_x509_crt_get_activation_time (gnutls_cert);
295  }
296 
297  if (expiration_time)
298  {
299  *expiration_time
300  = gnutls_x509_crt_get_expiration_time (gnutls_cert);
301  }
302 
303  if (fingerprint) {
304  int i;
305  size_t buffer_size = 16;
306  unsigned char buffer[buffer_size];
307  GString *string;
308 
309  string = g_string_new ("");
310 
311  gnutls_x509_crt_get_fingerprint(gnutls_cert, GNUTLS_DIG_MD5,
312  buffer, &buffer_size);
313 
314  for (i = 0; i < buffer_size; i++)
315  {
316  if (i != 0)
317  {
318  g_string_append_c (string, ':');
319  }
320  g_string_append_printf(string, "%02x", buffer[i]);
321  }
322 
323  *fingerprint = string->str;
324  g_string_free (string, FALSE);
325  }
326 
327  if (issuer)
328  {
329  size_t buffer_size;
330  gchar *buffer;
331  gnutls_x509_crt_get_issuer_dn(gnutls_cert, NULL, &buffer_size);
332  buffer = g_malloc(buffer_size);
333  gnutls_x509_crt_get_issuer_dn(gnutls_cert, buffer, &buffer_size);
334 
335  *issuer = buffer;
336  }
337 
338  gnutls_x509_crt_deinit (gnutls_cert);
339  g_free (cert_truncated);
340  }
341  return 0;
342 }
gchar * truncate_certificate(const gchar *certificate)
Truncate a certificate, removing extra data.
Definition: manage.c:174
Here is the call graph for this function:

◆ get_data_reset()

void get_data_reset ( get_data_t data)

Reset command data.

Parameters
[in]dataCommand data.

Definition at line 2322 of file omp.c.

References get_data_t::filt_id, get_data_t::filter, get_data_t::filter_replace, get_data_t::filter_replacement, get_data_t::id, get_data_t::subtype, and get_data_t::type.

2323 {
2324  free (data->id);
2325  free (data->filt_id);
2326  free (data->filter);
2327  free (data->filter_replace);
2328  free (data->filter_replacement);
2329  free (data->subtype);
2330  free (data->type);
2331 
2332  memset (data, 0, sizeof (get_data_t));
2333 }
char * filt_id
Filter ID. Overrides "filter".
Definition: manage.h:313
gchar * subtype
Subtype, or NULL.
Definition: manage.h:320
Command data for a get command.
Definition: manage.h:310
gchar * type
Type of resource.
Definition: manage.h:319
char * id
ID of single item to get.
Definition: manage.h:317
char * filter_replacement
Filter term to replace the one in filt_id.
Definition: manage.h:316
char * filter_replace
Column to replace in filter.
Definition: manage.h:315
char * filter
Filter term.
Definition: manage.h:314

◆ get_iterator_comment()

const char* get_iterator_comment ( iterator_t )

◆ get_iterator_creation_time()

const char* get_iterator_creation_time ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ get_iterator_modification_time()

const char* get_iterator_modification_time ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ get_iterator_name()

const char* get_iterator_name ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ get_iterator_owner()

user_t get_iterator_owner ( iterator_t )

◆ get_iterator_owner_name()

const char* get_iterator_owner_name ( iterator_t )

◆ get_iterator_resource()

resource_t get_iterator_resource ( iterator_t )

Referenced by get_nvti_xml(), stop_active_tasks(), and task_iterator_current_report().

Here is the caller graph for this function:

◆ get_iterator_uuid()

const char* get_iterator_uuid ( iterator_t )

◆ get_nvti_xml()

gchar* get_nvti_xml ( iterator_t nvts,
int  details,
int  pref_count,
int  preferences,
const char *  timeout,
config_t  config,
int  close_tag 
)

Create and return XML description for an NVT.

Parameters
[in]nvtsThe NVT.
[in]detailsIf true, detailed XML, else simple XML.
[in]pref_countPreference count. Used if details is true.
[in]preferencesIf true, included preferences.
[in]timeoutTimeout. Used if details is true.
[in]configConfig, used if preferences is true.
[in]close_tagWhether to close the NVT tag or not.
Returns
A dynamically allocated string containing the XML description.

Definition at line 7658 of file manage.c.

References cleanup_iterator(), DEF, get_iterator_creation_time(), get_iterator_modification_time(), get_iterator_name(), get_iterator_resource(), init_nvt_cert_bund_adv_iterator(), init_nvt_dfn_cert_adv_iterator(), init_resource_tag_iterator(), manage_cert_loaded(), next(), nvt_iterator_name(), nvt_iterator_oid(), resource_tag_count(), resource_tag_iterator_comment(), resource_tag_iterator_name(), resource_tag_iterator_uuid(), and resource_tag_iterator_value().

7661 {
7662  const char* oid = nvt_iterator_oid (nvts);
7663  const char* name = nvt_iterator_name (nvts);
7664  gchar* msg;
7665 
7666  gchar* name_text = g_markup_escape_text (name, strlen (name));
7667  if (details)
7668  {
7669  GString *cert_refs_str, *tags_str, *buffer;
7670  iterator_t cert_refs_iterator, tags;
7671  gchar *tag_name_esc, *tag_value_esc, *tag_comment_esc;
7672 
7673  DEF (copyright);
7674  DEF (family);
7675  DEF (version);
7676  DEF (xref);
7677  DEF (tag);
7678 
7679 #undef DEF
7680 
7681  cert_refs_str = g_string_new ("");
7682  if (manage_cert_loaded())
7683  {
7684  init_nvt_cert_bund_adv_iterator (&cert_refs_iterator, oid, 0, 0);
7685  while (next (&cert_refs_iterator))
7686  {
7687  g_string_append_printf (cert_refs_str,
7688  "<cert_ref type=\"CERT-Bund\" id=\"%s\"/>",
7689  get_iterator_name (&cert_refs_iterator));
7690  }
7691  cleanup_iterator (&cert_refs_iterator);
7692 
7693  init_nvt_dfn_cert_adv_iterator (&cert_refs_iterator, oid, 0, 0);
7694  while (next (&cert_refs_iterator))
7695  {
7696  g_string_append_printf (cert_refs_str,
7697  "<cert_ref type=\"DFN-CERT\" id=\"%s\"/>",
7698  get_iterator_name (&cert_refs_iterator));
7699  }
7700  cleanup_iterator (&cert_refs_iterator);
7701  }
7702  else
7703  {
7704  g_string_append (cert_refs_str, "<warning>database not available</warning>");
7705  }
7706 
7707  tags_str = g_string_new ("");
7708  g_string_append_printf (tags_str,
7709  "<count>%i</count>",
7710  resource_tag_count ("nvt",
7712  (nvts),
7713  1));
7714 
7715  init_resource_tag_iterator (&tags, "nvt",
7716  get_iterator_resource (nvts),
7717  1, NULL, 1);
7718  while (next (&tags))
7719  {
7720  tag_name_esc = g_markup_escape_text (resource_tag_iterator_name
7721  (&tags),
7722  -1);
7723  tag_value_esc = g_markup_escape_text (resource_tag_iterator_value
7724  (&tags),
7725  -1);
7726  tag_comment_esc = g_markup_escape_text (resource_tag_iterator_comment
7727  (&tags),
7728  -1);
7729  g_string_append_printf (tags_str,
7730  "<tag id=\"%s\">"
7731  "<name>%s</name>"
7732  "<value>%s</value>"
7733  "<comment>%s</comment>"
7734  "</tag>",
7736  tag_name_esc,
7737  tag_value_esc,
7738  tag_comment_esc);
7739  g_free (tag_name_esc);
7740  g_free (tag_value_esc);
7741  g_free (tag_comment_esc);
7742  }
7743  cleanup_iterator (&tags);
7744 
7745  buffer = g_string_new ("");
7746 
7747  g_string_append_printf (buffer,
7748  "<nvt oid=\"%s\">"
7749  "<name>%s</name>"
7750  "<creation_time>%s</creation_time>"
7751  "<modification_time>%s</modification_time>"
7752  "<user_tags>%s</user_tags>"
7753  "<category>%s</category>"
7754  "<copyright>%s</copyright>"
7755  "<family>%s</family>"
7756  "<version>%s</version>"
7757  "<cvss_base>%s</cvss_base>"
7758  "<qod>"
7759  "<value>%s</value>"
7760  "<type>%s</type>"
7761  "</qod>"
7762  "<cve_id>%s</cve_id>"
7763  "<bugtraq_id>%s</bugtraq_id>"
7764  "<cert_refs>%s</cert_refs>"
7765  "<xrefs>%s</xrefs>"
7766  "<tags>%s</tags>"
7767  "<preference_count>%i</preference_count>"
7768  "<timeout>%s</timeout>",
7769  oid,
7770  name_text,
7773  : "",
7776  : "",
7777  tags_str->str,
7778  category_name (nvt_iterator_category (nvts)),
7779  copyright_text,
7780  family_text,
7781  version_text,
7782  nvt_iterator_cvss_base (nvts)
7783  ? nvt_iterator_cvss_base (nvts)
7784  : "",
7785  nvt_iterator_qod (nvts),
7786  nvt_iterator_qod_type (nvts),
7787  nvt_iterator_cve (nvts),
7788  nvt_iterator_bid (nvts),
7789  cert_refs_str->str,
7790  xref_text,
7791  tag_text,
7792  pref_count,
7793  timeout ? timeout : "");
7794  g_free (copyright_text);
7795  g_free (family_text);
7796  g_free (version_text);
7797  g_free (xref_text);
7798  g_free (tag_text);
7799  g_string_free(cert_refs_str, 1);
7800  g_string_free(tags_str, 1);
7801 
7802  if (preferences)
7803  {
7804  iterator_t prefs;
7805  const char *nvt_name = nvt_iterator_name (nvts);
7806 
7807  /* Send the preferences for the NVT. */
7808 
7809  xml_string_append (buffer,
7810  "<preferences>"
7811  "<timeout>%s</timeout>",
7812  timeout ? timeout : "");
7813 
7814  init_nvt_preference_iterator (&prefs, nvt_name);
7815  while (next (&prefs))
7816  buffer_config_preference_xml (buffer, &prefs, config, 1);
7817  cleanup_iterator (&prefs);
7818 
7819  xml_string_append (buffer, "</preferences>");
7820  }
7821 
7822  xml_string_append (buffer, close_tag ? "</nvt>" : "");
7823  msg = g_string_free (buffer, FALSE);
7824  }
7825  else
7826  msg = g_strdup_printf
7827  ("<nvt oid=\"%s\"><name>%s</name>"
7828  "<user_tags><count>%i</count></user_tags>%s",
7829  oid, name_text,
7830  resource_tag_count ("nvt", get_iterator_resource (nvts), 1),
7831  close_tag ? "</nvt>" : "");
7832  g_free (name_text);
7833  return msg;
7834 }
const char * resource_tag_iterator_value(iterator_t *)
const char * nvt_iterator_qod(iterator_t *)
void init_nvt_cert_bund_adv_iterator(iterator_t *, const char *, int, const char *)
resource_t get_iterator_resource(iterator_t *)
const char * get_iterator_name(iterator_t *)
int nvt_iterator_category(iterator_t *)
const char * resource_tag_iterator_uuid(iterator_t *)
const char * get_iterator_modification_time(iterator_t *)
A generic SQL iterator.
Definition: iterator.h:52
const char * nvt_iterator_cvss_base(iterator_t *)
const char * resource_tag_iterator_comment(iterator_t *)
int manage_cert_loaded()
Check whether CERT is available.
Definition: manage_pg.c:2643
const char * nvt_iterator_cve(iterator_t *)
const char * nvt_iterator_name(iterator_t *)
const char * nvt_iterator_bid(iterator_t *)
void init_nvt_dfn_cert_adv_iterator(iterator_t *, const char *, int, const char *)
const char * nvt_iterator_qod_type(iterator_t *iterator)
#define DEF(x)
Define a code snippet for get_nvti_xml.
Definition: manage.c:7638
const char * get_iterator_creation_time(iterator_t *)
void buffer_config_preference_xml(GString *, iterator_t *, config_t, int)
Buffer XML for the NVT preference of a config.
Definition: omp.c:11120
void init_nvt_preference_iterator(iterator_t *, const char *)
int init_resource_tag_iterator(iterator_t *, const char *, resource_t, int, const char *, int)
void cleanup_iterator(iterator_t *)
Cleanup an iterator.
Definition: sql.c:664
int resource_tag_count(const char *, resource_t, int)
const char * nvt_iterator_oid(iterator_t *)
gboolean next(iterator_t *)
Increment an iterator.
Definition: sql.c:689
const char * resource_tag_iterator_name(iterator_t *)
Here is the call graph for this function:

◆ get_schedule_timeout()

int get_schedule_timeout ( )

Get the current schedule timeout.

Returns
The schedule timeout in minutes.

Definition at line 6917 of file manage.c.

6918 {
6919  return schedule_timeout;
6920 }

◆ get_scheduled_user_uuid()

gchar* get_scheduled_user_uuid ( )

Access UUID of user that scheduled the current task.

Returns
UUID of user that scheduled the current task.

Definition at line 6451 of file manage.c.

References schedule_user_uuid.

Referenced by authenticate().

6452 {
6453  return schedule_user_uuid;
6454 }
gchar * schedule_user_uuid
UUID of user whose scheduled task is to be started (in connection with authenticate_allow_all).
Definition: manage.c:6432
Here is the caller graph for this function:

◆ get_termination_signal()

int get_termination_signal ( )

◆ group_count()

int group_count ( const get_data_t )

◆ group_in_use()

int group_in_use ( group_t  )

◆ group_users()

gchar* group_users ( group_t  )

◆ group_uuid()

char* group_uuid ( group_t  )

◆ group_writable()

int group_writable ( group_t  )

◆ host_detail_free()

void host_detail_free ( host_detail_t )

◆ host_detail_iterator_name()

const char* host_detail_iterator_name ( iterator_t )

◆ host_detail_iterator_source_id()

const char* host_detail_iterator_source_id ( iterator_t )

◆ host_detail_iterator_source_type()

const char* host_detail_iterator_source_type ( iterator_t )

◆ host_detail_iterator_value()

const char* host_detail_iterator_value ( iterator_t )

◆ host_identifier_iterator_os_id()

const char* host_identifier_iterator_os_id ( iterator_t )

◆ host_identifier_iterator_os_title()

const char* host_identifier_iterator_os_title ( iterator_t )

◆ host_identifier_iterator_source_data()

const char* host_identifier_iterator_source_data ( iterator_t )

◆ host_identifier_iterator_source_id()

const char* host_identifier_iterator_source_id ( iterator_t )

◆ host_identifier_iterator_source_orphan()

int host_identifier_iterator_source_orphan ( iterator_t )

◆ host_identifier_iterator_source_type()

const char* host_identifier_iterator_source_type ( iterator_t )

◆ host_identifier_iterator_value()

const char* host_identifier_iterator_value ( iterator_t )

◆ host_iterator_current_port()

int host_iterator_current_port ( iterator_t )

◆ host_iterator_end_time()

const char* host_iterator_end_time ( iterator_t )

◆ host_iterator_host()

const char* host_iterator_host ( iterator_t )

◆ host_iterator_max_port()

int host_iterator_max_port ( iterator_t )

◆ host_iterator_start_time()

const char* host_iterator_start_time ( iterator_t )

◆ host_notice()

host_t host_notice ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
int  ,
int   
)

◆ host_routes_xml()

gchar* host_routes_xml ( host_t  )

◆ host_uuid()

char* host_uuid ( resource_t  )

◆ hosts_set_details()

void hosts_set_details ( report_t  report)

◆ hosts_set_identifiers()

void hosts_set_identifiers ( )

◆ hosts_set_max_severity()

void hosts_set_max_severity ( report_t  ,
int *  ,
int *   
)

◆ info_name_count()

int info_name_count ( const gchar *  ,
const gchar *   
)

◆ init_agent_iterator()

int init_agent_iterator ( iterator_t ,
const get_data_t  
)

◆ init_aggregate_iterator()

int init_aggregate_iterator ( iterator_t iterator,
const char *  type,
const get_data_t get,
int  distinct,
GArray *  data_columns,
const char *  group_column,
const char *  subgroup_column,
GArray *  text_columns,
GArray *  sort_data,
int  first_group,
int  max_groups,
const char *  extra_tables,
const char *  extra_where 
)

Initialise a GET_AGGREGATES iterator, including observed resources.

Parameters
[in]iteratorIterator.
[in]typeType of resource.
[in]getGET data.
[in]distinctWhether the query should be distinct. Skipped for trash and single resource.
[in]data_columnsColumns to calculate statistics for.
[in]group_columnColumn to group data by.
[in]subgroup_columnColumn to further group data by.
[in]text_columnsColumns to get text from.
[in]sort_dataGArray of sorting data.
[in]first_groupRow number to start iterating from.
[in]max_groupsMaximum number of rows.
[in]extra_tablesJoin tables. Skipped for trash and single resource.
[in]extra_whereExtra WHERE clauses. Skipped for single resource.
Returns
0 success, 1 failed to find resource, 2 failed to find filter, 3 invalid stat_column, 4 invalid group_column, 5 invalid type, 6 trashcan not used by type, 7 invalid text column, 8 invalid subgroup_column, -1 error.

Definition at line 5402 of file manage_sql.c.

References filter_term(), filter_term_value(), init_iterator(), manage_cert_loaded(), manage_scap_loaded(), MIN_QOD_DEFAULT, sql_select_limit(), type_columns(), type_filter_columns(), type_opts_table(), type_owned(), type_select_columns(), type_trash_columns(), and type_where_columns().

5409 {
5410  int owned;
5411  gchar *autofp_str, *apply_overrides_str, *min_qod_str;
5412  int autofp, apply_overrides, min_qod;
5413  column_t *select_columns, *where_columns;
5414  gchar *columns;
5415  gchar *trash_columns;
5416  gchar *opts_table;
5417  const char **filter_columns;
5418  int first, max;
5419  gchar *from_table, *trash_extra, *clause, *filter_order, *filter;
5420  gchar *owned_clause;
5421  array_t *permissions;
5422  resource_t resource = 0;
5423  gchar *owner_filter;
5424  GString *aggregate_select, *outer_col_select;
5425  gchar *aggregate_group_by;
5426  gchar *outer_group_by_column, *outer_subgroup_column;
5427  gchar *select_group_column, *select_subgroup_column;
5428  GArray *select_data_columns, *select_text_columns;
5429  GString *order_clause;
5430 
5431  assert (get);
5432 
5433  if (get->id)
5434  g_warning ("%s: Called with an id parameter", __FUNCTION__);
5435 
5436  if ((manage_scap_loaded () == FALSE
5437  && (strcmp (type, "cve") == 0
5438  || strcmp (type, "cpe") == 0
5439  || strcmp (type, "ovaldef") == 0
5440  || strcmp (type, "allinfo") == 0))
5441  || (manage_cert_loaded () == FALSE
5442  && (strcmp (type, "cert_bund_adv") == 0
5443  || strcmp (type, "dfn_cert_adv") == 0
5444  || strcmp (type, "allinfo") == 0)))
5445  {
5446  // Init a dummy iterator if SCAP or CERT DB is required but unavailable.
5448  "SELECT NULL LIMIT %s",
5449  sql_select_limit (0));
5450  return 0;
5451  }
5452 
5453  if (get->filt_id && strcmp (get->filt_id, "0"))
5454  {
5455  if (get->filter_replacement)
5456  /* Replace the filter term with one given by the caller. This is
5457  * used by GET_REPORTS to use the default filter with any task (when
5458  * given the special value of -3 in filt_id). */
5459  filter = g_strdup (get->filter_replacement);
5460  else
5461  filter = filter_term (get->filt_id);
5462  if (filter == NULL)
5463  return 2;
5464  }
5465  else
5466  filter = NULL;
5467 
5468  autofp_str = filter_term_value (filter ? filter : get->filter,
5469  "autofp");
5470  autofp = autofp_str ? atoi (autofp_str) : 0;
5471  apply_overrides_str = filter_term_value (filter ? filter : get->filter,
5472  "apply_overrides");
5473  apply_overrides = apply_overrides_str ? atoi (apply_overrides_str) : 1;
5474  min_qod_str = filter_term_value (filter ? filter : get->filter, "min_qod");
5475  min_qod = (min_qod_str && strcmp (min_qod_str, ""))
5476  ? atoi (min_qod_str) : MIN_QOD_DEFAULT;
5477  g_free (apply_overrides_str);
5478  g_free (min_qod_str);
5479 
5480  select_columns = type_select_columns (type, apply_overrides);
5481  columns = type_columns (type, apply_overrides);
5482  trash_columns = type_trash_columns (type, apply_overrides);
5483  where_columns = type_where_columns (type, apply_overrides);
5484  filter_columns = type_filter_columns (type, apply_overrides);
5485  opts_table = type_opts_table (type, autofp, apply_overrides, min_qod);
5486 
5487  if (columns == NULL || filter_columns == NULL)
5488  {
5489  g_free (columns);
5490  g_free (trash_columns);
5491  g_free (opts_table);
5492  return 5;
5493  }
5494  if (get->trash && trash_columns == NULL)
5495  {
5496  g_free (columns);
5497  g_free (trash_columns);
5498  g_free (opts_table);
5499  return 6;
5500  }
5501 
5502  owned = type_owned (type);
5503 
5504  if (data_columns && data_columns->len > 0)
5505  {
5506  int i;
5507  for (i = 0; i < data_columns->len; i++)
5508  {
5509  if (vector_find_filter (filter_columns,
5510  g_array_index (data_columns, gchar*, i))
5511  == 0)
5512  {
5513  g_free (columns);
5514  g_free (trash_columns);
5515  g_free (opts_table);
5516  return 3;
5517  }
5518  }
5519  }
5520  if (text_columns && text_columns->len > 0)
5521  {
5522  int i;
5523  for (i = 0; i < text_columns->len; i++)
5524  {
5525  if (vector_find_filter (filter_columns,
5526  g_array_index (text_columns, gchar*, i))
5527  == 0)
5528  {
5529  g_free (columns);
5530  g_free (trash_columns);
5531  g_free (opts_table);
5532  return 7;
5533  }
5534  }
5535  }
5536  if (group_column && vector_find_filter (filter_columns, group_column) == 0)
5537  {
5538  g_free (columns);
5539  g_free (trash_columns);
5540  g_free (opts_table);
5541  return 4;
5542  }
5543  if (subgroup_column
5544  && vector_find_filter (filter_columns, subgroup_column) == 0)
5545  {
5546  g_free (columns);
5547  g_free (trash_columns);
5548  g_free (opts_table);
5549  return 8;
5550  }
5551  select_data_columns = g_array_new (TRUE, TRUE, sizeof (gchar*));
5552  select_text_columns = g_array_new (TRUE, TRUE, sizeof (gchar*));
5553 
5554  clause = filter_clause (type, filter ? filter : get->filter, filter_columns,
5555  select_columns, where_columns, get->trash,
5556  &filter_order, &first, &max, &permissions,
5557  &owner_filter);
5558 
5559  g_free (filter);
5560 
5561  if (resource)
5562  /* Ownership test is done above by find function. */
5563  owned_clause = g_strdup (" 1");
5564  else
5565  owned_clause = acl_where_owned (type, get, owned, owner_filter, resource,
5566  permissions);
5567 
5568  if (strcasecmp (type, "TASK") == 0)
5569  {
5570  if (get->trash)
5571  trash_extra = g_strdup (" AND hidden = 2");
5572  else
5573  trash_extra = g_strdup (" AND hidden = 0");
5574  }
5575  else if (strcasecmp (type, "REPORT") == 0)
5576  {
5577  if (get->trash)
5578  trash_extra = g_strdup (" AND (SELECT hidden FROM tasks"
5579  " WHERE tasks.id = task)"
5580  " = 2");
5581  else
5582  trash_extra = g_strdup (" AND (SELECT hidden FROM tasks"
5583  " WHERE tasks.id = task)"
5584  " = 0");
5585  }
5586  else if (strcasecmp (type, "RESULT") == 0)
5587  {
5588  trash_extra = results_extra_where (get, 0, NULL, autofp, apply_overrides,
5590  filter ? filter : get->filter);
5591  }
5592  else
5593  trash_extra = g_strdup ("");
5594 
5595  g_free (owner_filter);
5596  array_free (permissions);
5597 
5598  select_group_column = NULL;
5599  select_subgroup_column = NULL;
5600 
5601  if (group_column)
5602  {
5603  select_group_column
5604  = g_strdup (columns_select_column (select_columns,
5605  where_columns,
5606  group_column));
5607  if (subgroup_column)
5608  {
5609  select_subgroup_column
5610  = g_strdup (columns_select_column (select_columns,
5611  where_columns,
5612  subgroup_column));
5613  }
5614  }
5615 
5616  if (data_columns && data_columns->len > 0)
5617  {
5618  int column_index;
5619  for (column_index = 0; column_index < data_columns->len; column_index++)
5620  append_column (select_data_columns,
5621  g_array_index (data_columns, gchar*, column_index),
5622  select_columns,
5623  where_columns);
5624  }
5625 
5626  if (text_columns && text_columns->len > 0)
5627  {
5628  int column_index;
5629  for (column_index = 0; column_index < text_columns->len; column_index++)
5630  append_column (select_text_columns,
5631  g_array_index (text_columns, gchar*, column_index),
5632  select_columns,
5633  where_columns);
5634  }
5635 
5636  /* Round time fields to the next day to reduce amount of rows returned
5637  * This returns "pseudo-UTC" dates which are used by the GSA charts because
5638  * the JavaScript Date objects do not support setting the timezone.
5639  */
5640  if (column_is_timestamp (group_column))
5641  if (sql_is_sqlite3 ())
5642  outer_group_by_column
5643  = g_strdup_printf ("CAST (strftime ('%%s',"
5644  " date(%s, 'unixepoch',"
5645  " 'localtime'),"
5646  " 'utc')"
5647  " AS INTEGER)",
5648  "aggregate_group_value");
5649  else
5650  outer_group_by_column
5651  = g_strdup_printf ("EXTRACT (EPOCH FROM"
5652  " date_trunc ('day',"
5653  " TIMESTAMP WITH TIME ZONE 'epoch'"
5654  " + (%s) * INTERVAL '1 second'))"
5655  " :: integer",
5656  "aggregate_group_value");
5657  else
5658  outer_group_by_column = g_strdup ("aggregate_group_value");
5659 
5660  if (column_is_timestamp (subgroup_column))
5661  if (sql_is_sqlite3 ())
5662  outer_subgroup_column
5663  = g_strdup_printf ("CAST (strftime ('%%s',"
5664  " date(%s, 'unixepoch',"
5665  " 'localtime'),"
5666  " 'utc')"
5667  " AS INTEGER)",
5668  "aggregate_subgroup_value");
5669  else
5670  outer_subgroup_column
5671  = g_strdup_printf ("EXTRACT (EPOCH FROM"
5672  " date_trunc ('day',"
5673  " TIMESTAMP WITH TIME ZONE 'epoch'"
5674  " + (%s) * INTERVAL '1 second'))"
5675  " :: integer",
5676  "aggregate_subgroup_value");
5677  else
5678  outer_subgroup_column = g_strdup ("aggregate_subgroup_value");
5679 
5680  if (sort_data)
5681  {
5682  order_clause = g_string_new ("ORDER BY");
5683 
5684  int sort_index;
5685  for (sort_index = 0; sort_index < sort_data->len; sort_index++) {
5686  sort_data_t *sort_data_item;
5687  const gchar *sort_field, *sort_stat;
5688  int sort_order;
5689  gchar *order_column;
5690 
5691  sort_data_item = g_array_index (sort_data, sort_data_t*, sort_index);
5692  sort_field = sort_data_item->field;
5693  sort_stat = sort_data_item->stat;
5694  sort_order = sort_data_item->order;
5695 
5696  if (sort_stat && strcmp (sort_stat, "count") == 0)
5697  order_column = g_strdup ("outer_count");
5698  else if (sort_stat && strcmp (sort_stat, "value") == 0)
5699  order_column = g_strdup ("outer_group_column");
5700  else if (sort_field
5701  && group_column
5702  && strcmp (sort_field, "")
5703  && strcmp (sort_field, group_column)
5704  && (subgroup_column == NULL
5705  || strcmp (sort_field, subgroup_column)))
5706  {
5707  int index;
5708  order_column = NULL;
5709  for (index = 0;
5710  index < data_columns->len && order_column == NULL;
5711  index++)
5712  {
5713  gchar *column = g_array_index (data_columns, gchar*, index);
5714  if (strcmp (column, sort_field) == 0)
5715  {
5716  if (sort_stat == NULL || strcmp (sort_stat, "") == 0
5717  || ( strcmp (sort_stat, "min")
5718  && strcmp (sort_stat, "max")
5719  && strcmp (sort_stat, "mean")
5720  && strcmp (sort_stat, "sum")))
5721  order_column = g_strdup_printf ("max (aggregate_max_%d)",
5722  index);
5723  else if (strcmp (sort_stat, "mean") == 0)
5724  order_column = g_strdup_printf ("sum (aggregate_avg_%d)",
5725  index);
5726  else
5727  order_column = g_strdup_printf ("%s (aggregate_%s_%d)",
5728  sort_stat, sort_stat,
5729  index);
5730  }
5731  }
5732 
5733  for (index = 0;
5734  index < text_columns->len && order_column == NULL;
5735  index++)
5736  {
5737  gchar *column = g_array_index (text_columns, gchar*, index);
5738  if (strcmp (column, sort_field) == 0)
5739  {
5740  order_column = g_strdup_printf ("max (text_column_%d)",
5741  index);
5742  }
5743  }
5744  }
5745  else if (sort_field && subgroup_column
5746  && strcmp (sort_field, subgroup_column) == 0)
5747  order_column = g_strdup ("outer_subgroup_column");
5748  else
5749  order_column = g_strdup ("outer_group_column");
5750 
5751  if (subgroup_column && sort_index == 0)
5752  {
5753  xml_string_append (order_clause,
5754  " outer_group_column %s, %s %s",
5755  sort_order ? "ASC" : "DESC",
5756  order_column,
5757  sort_order ? "ASC" : "DESC");
5758  }
5759  else
5760  {
5761  xml_string_append (order_clause,
5762  "%s %s %s",
5763  sort_index > 0 ? "," : "",
5764  order_column,
5765  sort_order ? "ASC" : "DESC");
5766  }
5767  g_free (order_column);
5768  }
5769 
5770  if (sort_data->len == 0)
5771  g_string_append (order_clause, " outer_group_column ASC");
5772  }
5773  else
5774  order_clause = g_string_new ("");
5775 
5776  aggregate_select = g_string_new ("");
5777  outer_col_select = g_string_new ("");
5778  if (group_column && strcmp (group_column, ""))
5779  {
5780  if (subgroup_column && strcmp (subgroup_column, ""))
5781  {
5782  g_string_append_printf (aggregate_select,
5783  " count(*) AS aggregate_count,"
5784  " %s AS aggregate_group_value,"
5785  " %s AS aggregate_subgroup_value",
5786  select_group_column,
5787  select_subgroup_column);
5788 
5789  aggregate_group_by = g_strdup_printf (" GROUP BY %s, %s",
5790  select_group_column,
5791  select_subgroup_column);
5792  }
5793  else
5794  {
5795  g_string_append_printf (aggregate_select,
5796  " count(*) AS aggregate_count,"
5797  " %s AS aggregate_group_value,"
5798  " CAST (NULL AS TEXT) AS aggregate_subgroup_value",
5799  select_group_column);
5800 
5801  aggregate_group_by = g_strdup_printf (" GROUP BY %s",
5802  select_group_column);
5803  }
5804 
5805 
5806  }
5807  else
5808  {
5809  g_string_append_printf (aggregate_select,
5810  " count(*) AS aggregate_count,"
5811  " CAST (NULL AS TEXT) AS aggregate_group_value,"
5812  " CAST (NULL AS TEXT) AS aggregate_subgroup_value");
5813 
5814  aggregate_group_by = g_strdup ("");
5815  }
5816 
5817  int col_index;
5818  for (col_index = 0; col_index < select_data_columns->len; col_index ++)
5819  {
5820  gchar *select_data_column = g_array_index (select_data_columns, gchar*,
5821  col_index);
5822  // TODO: Test type of column (string, number, timestamp)
5823  g_string_append_printf (aggregate_select,
5824  ","
5825  " min(CAST (%s AS real)) AS aggregate_min_%d,"
5826  " max(CAST (%s AS real)) AS aggregate_max_%d,"
5827  " avg(CAST (%s AS real)) * count(*)"
5828  " AS aggregate_avg_%d,"
5829  " sum(CAST (%s AS real))"
5830  " AS aggregate_sum_%d",
5831  select_data_column,
5832  col_index,
5833  select_data_column,
5834  col_index,
5835  select_data_column,
5836  col_index,
5837  select_data_column,
5838  col_index);
5839  g_string_append_printf (outer_col_select,
5840  ", min(aggregate_min_%d),"
5841  " max (aggregate_max_%d),"
5842  " sum (aggregate_avg_%d) / sum(aggregate_count),"
5843  " sum (aggregate_sum_%d)",
5844  col_index, col_index, col_index, col_index);
5845  }
5846  for (col_index = 0; col_index < select_text_columns->len; col_index ++)
5847  {
5848  gchar *select_text_column = g_array_index (select_text_columns, gchar*,
5849  col_index);
5850  g_string_append_printf (aggregate_select,
5851  ", max (%s) as text_column_%d",
5852  select_text_column,
5853  col_index);
5854  g_string_append_printf (outer_col_select,
5855  ", max (text_column_%d)",
5856  col_index);
5857  }
5858 
5859  from_table = type_table (type, get->trash);
5860 
5862  "SELECT sum(aggregate_count) AS outer_count,"
5863  " %s AS outer_group_column,"
5864  " %s AS outer_subgroup_column"
5865  " %s"
5866  " FROM (SELECT%s %s"
5867  " FROM %s%s%s"
5868  " WHERE"
5869  " %s%s"
5870  " %s%s%s%s"
5871  " %s)"
5872  " AS agg_sub"
5873  " GROUP BY outer_group_column, outer_subgroup_column %s"
5874  " LIMIT %s OFFSET %d;",
5875  outer_group_by_column,
5876  outer_subgroup_column,
5877  outer_col_select->str,
5878  distinct ? " DISTINCT" : "",
5879  aggregate_select->str,
5880  from_table,
5881  opts_table ? opts_table : "",
5882  extra_tables ? extra_tables : "",
5883  owned_clause,
5884  trash_extra,
5885  clause ? " AND (" : "",
5886  clause ? clause : "",
5887  clause ? ")" : "",
5888  extra_where ? extra_where : "",
5889  aggregate_group_by,
5890  order_clause->str,
5891  sql_select_limit (max_groups),
5892  first_group);
5893 
5894  g_free (columns);
5895  g_free (trash_columns);
5896  g_free (opts_table);
5897  g_free (owned_clause);
5898  g_free (trash_extra);
5899  g_free (filter_order);
5900  g_string_free (order_clause, TRUE);
5901  g_free (clause);
5902  g_free (aggregate_group_by);
5903  g_string_free (aggregate_select, TRUE);
5904  g_string_free (outer_col_select, TRUE);
5905  g_free (outer_group_by_column);
5906  g_free (outer_subgroup_column);
5907  g_free (select_group_column);
5908  g_free (select_subgroup_column);
5909  return 0;
5910 }
int sql_is_sqlite3()
Get whether backend is SQLite3.
Definition: sql_pg.c:92
int trash
Boolean. Whether to return from trashcan.
Definition: manage.h:318
int order
The sort order.
Definition: manage.h:4102
#define MIN_QOD_DEFAULT
Default min quality of detection percentage for filters.
Definition: manage.h:1110
gchar * stat
The statistic to sort by.
Definition: manage.h:4101
int column_is_timestamp(const char *)
char * type_columns(const char *, int)
A generic SQL iterator.
Definition: iterator.h:52
char * filt_id
Filter ID. Overrides "filter".
Definition: manage.h:313
gchar * type_table(const char *, int)
gchar * filter_term_value(const char *, const char *)
gchar * field
The field to sort by.
Definition: manage.h:4100
char * type_trash_columns(const char *, int)
Iterator column.
Definition: manage_sql.c:1512
int setting_dynamic_severity_int()
gchar * filter_term(const char *)
column_t * type_select_columns(const char *type, int)
char * id
ID of single item to get.
Definition: manage.h:317
char * filter_replacement
Filter term to replace the one in filt_id.
Definition: manage.h:316
const char ** type_filter_columns(const char *, int)
int type_owned(const char *type)
Check whether a resource type has an owner.
Definition: manage_sql.c:4376
gchar * acl_where_owned(const char *type, const get_data_t *get, int owned, const gchar *owner_filter, resource_t resource, array_t *permissions)
Generate the ownership part of an SQL WHERE clause.
Definition: manage_acl.c:1352
gchar * type_opts_table(const char *, int, int, int)
int manage_cert_loaded()
Check whether CERT is available.
Definition: manage_pg.c:2643
void init_iterator(iterator_t *iterator, const char *sql,...)
Initialise an iterator.
Definition: sql.c:577
const char * sql_select_limit(int)
Setup a LIMIT argument.
Definition: sql_pg.c:127
int manage_scap_loaded()
Check whether SCAP is available.
Definition: manage_pg.c:2659
column_t * type_where_columns(const char *type, int)
char * filter
Filter term.
Definition: manage.h:314
long long int resource_t
A resource, like a task or target.
Definition: iterator.h:42
Here is the call graph for this function:

◆ init_alert_data_iterator()

void init_alert_data_iterator ( iterator_t iterator,
alert_t  alert,
int  trash,
const char *  table 
)

Initialise an alert data iterator.

Parameters
[in]iteratorIterator.
[in]alertAlert.
[in]trashWhether to iterate over trashcan alert data.
[in]tableType of data: "condition", "event" or "method", corresponds to substring of the table to select from.

Definition at line 8756 of file manage_sql.c.

References init_iterator().

8758 {
8760  "SELECT name, data FROM alert_%s_data%s"
8761  " WHERE alert = %llu;",
8762  table,
8763  trash ? "_trash" : "",
8764  alert);
8765 }
A generic SQL iterator.
Definition: iterator.h:52
void init_iterator(iterator_t *iterator, const char *sql,...)
Initialise an iterator.
Definition: sql.c:577
Here is the call graph for this function:

◆ init_alert_iterator()

int init_alert_iterator ( iterator_t iterator,
const get_data_t get 
)

Initialise an alert iterator, including observed alerts.

Parameters
[in]iteratorIterator.
[in]getGET data.
Returns
0 success, 1 failed to find alert, failed to find filter (filt_id), -1 error.

Definition at line 8564 of file manage_sql.c.

References ALERT_ITERATOR_COLUMNS, ALERT_ITERATOR_FILTER_COLUMNS, and ALERT_ITERATOR_TRASH_COLUMNS.

8565 {
8566  static const char *filter_columns[] = ALERT_ITERATOR_FILTER_COLUMNS;
8567  static column_t columns[] = ALERT_ITERATOR_COLUMNS;
8568  static column_t trash_columns[] = ALERT_ITERATOR_TRASH_COLUMNS;
8569 
8570  return init_get_iterator (iterator,
8571  "alert",
8572  get,
8573  columns,
8574  trash_columns,
8575  filter_columns,
8576  0,
8577  NULL,
8578  NULL,
8579  TRUE);
8580 }
A generic SQL iterator.
Definition: iterator.h:52
Iterator column.
Definition: manage_sql.c:1512
#define ALERT_ITERATOR_FILTER_COLUMNS
Filter columns for alert iterator.
Definition: manage_sql.c:8449
#define ALERT_ITERATOR_TRASH_COLUMNS
Alert iterator columns for trash case.
Definition: manage_sql.c:8470
#define ALERT_ITERATOR_COLUMNS
Alert iterator columns.
Definition: manage_sql.c:8456

◆ init_alert_task_iterator()

void init_alert_task_iterator ( iterator_t iterator,
alert_t  alert,
int  ascending 
)

Initialise an alert task iterator.

Iterate over all tasks that use the alert.

Parameters
[in]iteratorIterator.
[in]alertAlert.
[in]ascendingWhether to sort ascending or descending.

Definition at line 13591 of file manage_sql.c.

References acl_where_owned(), and init_iterator().

13593 {
13594  gchar *available;
13595  get_data_t get;
13596  array_t *permissions;
13597 
13598  assert (alert);
13599 
13600  get.trash = 0;
13601  permissions = make_array ();
13602  array_add (permissions, g_strdup ("get_tasks"));
13603  available = acl_where_owned ("task", &get, 1, "any", 0, permissions);
13604  array_free (permissions);
13605 
13607  "SELECT tasks.name, tasks.uuid, %s FROM tasks, task_alerts"
13608  " WHERE tasks.id = task_alerts.task"
13609  " AND task_alerts.alert = %llu"
13610  " AND hidden = 0"
13611  " ORDER BY tasks.name %s;",
13612  available,
13613  alert,
13614  ascending ? "ASC" : "DESC");
13615 
13616  g_free (available);
13617 }
A generic SQL iterator.
Definition: iterator.h:52
Command data for a get command.
Definition: manage.h:310
gchar * acl_where_owned(const char *type, const get_data_t *get, int owned, const gchar *owner_filter, resource_t resource, array_t *permissions)
Generate the ownership part of an SQL WHERE clause.
Definition: manage_acl.c:1352
void init_iterator(iterator_t *iterator, const char *sql,...)
Initialise an iterator.
Definition: sql.c:577
Here is the call graph for this function:

◆ init_all_info_iterator()

int init_all_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_asset_host_iterator()

int init_asset_host_iterator ( iterator_t ,
const get_data_t  
)

◆ init_asset_os_iterator()

int init_asset_os_iterator ( iterator_t ,
const get_data_t  
)

◆ init_cert_bund_adv_info_iterator()

int init_cert_bund_adv_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_config_file_iterator()

void init_config_file_iterator ( iterator_t ,
const char *  ,
const char *   
)

◆ init_config_iterator()

int init_config_iterator ( iterator_t ,
const get_data_t  
)

◆ init_config_task_iterator()

void init_config_task_iterator ( iterator_t ,
config_t  ,
int   
)

◆ init_config_timeout_iterator()

void init_config_timeout_iterator ( iterator_t ,
config_t   
)

◆ init_cpe_cve_iterator()

void init_cpe_cve_iterator ( iterator_t ,
const char *  ,
int  ,
const char *   
)

◆ init_cpe_info_iterator()

int init_cpe_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_credential_iterator()

int init_credential_iterator ( iterator_t ,
const get_data_t  
)

◆ init_credential_iterator_one()

void init_credential_iterator_one ( iterator_t ,
credential_t   
)

◆ init_credential_scanner_iterator()

void init_credential_scanner_iterator ( iterator_t ,
credential_t  ,
int   
)

◆ init_credential_target_iterator()

void init_credential_target_iterator ( iterator_t ,
credential_t  ,
int   
)

◆ init_cve_cert_bund_adv_iterator()

void init_cve_cert_bund_adv_iterator ( iterator_t ,
const char *  ,
int  ,
const char *   
)

◆ init_cve_dfn_cert_adv_iterator()

void init_cve_dfn_cert_adv_iterator ( iterator_t ,
const char *  ,
int  ,
const char *   
)

◆ init_cve_info_iterator()

int init_cve_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_cve_nvt_iterator()

void init_cve_nvt_iterator ( iterator_t ,
const char *  ,
int  ,
const char *   
)

◆ init_dfn_cert_adv_info_iterator()

int init_dfn_cert_adv_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_family_iterator()

void init_family_iterator ( iterator_t ,
int  ,
const char *  ,
int   
)

◆ init_filter_alert_iterator()

void init_filter_alert_iterator ( iterator_t ,
filter_t   
)

◆ init_filter_iterator()

int init_filter_iterator ( iterator_t ,
const get_data_t  
)

◆ init_group_iterator()

int init_group_iterator ( iterator_t ,
const get_data_t  
)

◆ init_host_detail_iterator()

void init_host_detail_iterator ( iterator_t ,
resource_t   
)

◆ init_host_identifier_iterator()

void init_host_identifier_iterator ( iterator_t ,
host_t  ,
int  ,
const char *   
)

◆ init_host_prognosis_iterator()

void init_host_prognosis_iterator ( iterator_t ,
report_host_t  ,
int  ,
int  ,
const char *  ,
const char *  ,
int  ,
const char *   
)

◆ init_manage()

int init_manage ( GSList *  log_config,
int  nvt_cache_mode,
const gchar *  database,
int  max_ips_per_target,
int  max_email_attachment_size,
int  max_email_include_size,
int  max_email_message_size,
void(*)()  update_progress,
int(*)(openvas_connection_t *, gchar *)  fork_connection,
int  skip_db_check 
)

Initialize the manage library.

Check DB version, do startup database checks, load the NVT cache.

Ensure all tasks are in a clean initial state.

Beware that calling this function while tasks are running may lead to problems.

Parameters
[in]log_configLog configuration.
[in]nvt_cache_modeTrue when running in NVT caching mode.
[in]databaseLocation of database.
[in]max_ips_per_targetMax number of IPs per target.
[in]max_email_attachment_sizeMax size of email attachments.
[in]max_email_include_sizeMax size of email inclusions.
[in]max_email_message_sizeMax size of email user message text.
[in]update_progressFunction to update progress, or NULL. *
[in]fork_connectionFunction to fork a connection that will accept OMP requests. Used to start tasks with OMP when an alert occurs.
[in]skip_db_checkSkip DB check.
Returns
0 success, -1 error, -2 database is wrong version, -3 database needs to be initialised from server, -4 max_ips_per_target out of range.

Definition at line 17065 of file manage_sql.c.

17071 {
17072  return init_manage_internal (log_config,
17073  nvt_cache_mode,
17074  database,
17075  max_ips_per_target,
17076  max_email_attachment_size,
17077  max_email_include_size,
17078  max_email_message_size,
17079  update_progress,
17080  1, /* Stop active tasks. */
17081  fork_connection,
17082  skip_db_check,
17083  1); /* Check encryption key if checking db. */
17084 }
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310

◆ init_manage_helper()

int init_manage_helper ( GSList *  log_config,
const gchar *  database,
int  max_ips_per_target,
void(*)()  update_progress 
)

Initialize the manage library for a helper program.

This should be called at the beginning of any program that accesses the database. Forked processes should call init_manage_process. The daemon itself calls init_manage, including in NVT cache mode (–rebuild/update).

Parameters
[in]log_configLog configuration.
[in]databaseLocation of database.
[in]max_ips_per_targetMax number of IPs per target.
[in]update_progressFunction to update progress, or NULL. *
Returns
0 success, -1 error, -2 database is wrong version, -3 database needs to be initialised from server, -4 max_ips_per_target out of range.

Definition at line 17102 of file manage_sql.c.

17104 {
17105  return init_manage_internal (log_config,
17106  0, /* Run daemon in NVT cache mode. */
17107  database,
17108  max_ips_per_target,
17109  0, /* Default max_email_attachment_size. */
17110  0, /* Default max_email_include_size. */
17111  0, /* Default max_email_message_size */
17112  update_progress,
17113  0, /* Stop active tasks. */
17114  NULL,
17115  0, /* Skip DB check. */
17116  0); /* Dummy. */
17117 }
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310

◆ init_manage_process()

void init_manage_process ( int  update_nvt_cache,
const gchar *  database 
)

Initialize the manage library for a process.

Open the SQL database, attach secondary databases, and define functions.

Parameters
[in]update_nvt_cache0 operate normally, -1 just update NVT cache, -2 just rebuild NVT cache.
[in]databaseLocation of manage database.

Definition at line 14303 of file manage_sql.c.

Referenced by reinit_manage_process().

14304 {
14305  if (sql_is_open ())
14306  return;
14307 
14308  /* Open the database. */
14309  if (sql_open (database))
14310  {
14311  g_warning ("%s: sql_open failed\n", __FUNCTION__);
14312  abort ();
14313  }
14314 
14315  /* Attach the SCAP and CERT databases. */
14317 
14318  if (update_nvt_cache)
14319  {
14320  sql ("CREATE TEMPORARY TABLE old_nvts"
14321  " (oid TEXT, modification_time INTEGER);");
14322  sql ("INSERT INTO old_nvts (oid, modification_time)"
14323  " SELECT oid, modification_time FROM nvts;");
14324  }
14325 
14326  /* Define functions for SQL. */
14327 
14328  /* Lock to avoid an error return from Postgres when multiple processes
14329  * create a function at the same time. */
14332  {
14333  sql_rollback ();
14334  g_warning ("%s: failed to create functions", __FUNCTION__);
14335  abort ();
14336  }
14337  sql_commit ();
14338 }
int manage_create_sql_functions()
Create functions.
Definition: manage_pg.c:113
int sql_is_open()
Check whether the database is open.
Definition: sql_pg.c:201
void sql_begin_exclusive()
Begin an exclusive transaction.
Definition: sql_pg.c:598
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
void manage_attach_databases()
Attach external databases.
Definition: manage_pg.c:2624
int sql_open(const char *)
Open the database.
Definition: sql_pg.c:250
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649
Here is the caller graph for this function:

◆ init_note_iterator()

int init_note_iterator ( iterator_t ,
const get_data_t ,
nvt_t  ,
result_t  ,
task_t   
)

◆ init_nvt_cert_bund_adv_iterator()

void init_nvt_cert_bund_adv_iterator ( iterator_t ,
const char *  ,
int  ,
const char *   
)

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ init_nvt_dfn_cert_adv_iterator()

void init_nvt_dfn_cert_adv_iterator ( iterator_t ,
const char *  ,
int  ,
const char *   
)

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ init_nvt_info_iterator()

int init_nvt_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_nvt_iterator()

void init_nvt_iterator ( iterator_t ,
nvt_t  ,
config_t  ,
const char *  ,
const char *  ,
int  ,
const char *   
)

◆ init_nvt_preference_iterator()

void init_nvt_preference_iterator ( iterator_t ,
const char *   
)

◆ init_nvt_selector_iterator()

void init_nvt_selector_iterator ( iterator_t ,
const char *  ,
config_t  ,
int   
)

Referenced by migrate_3_to_4().

Here is the caller graph for this function:

◆ init_os_host_iterator()

void init_os_host_iterator ( iterator_t ,
resource_t   
)

◆ init_ovaldef_info_iterator()

int init_ovaldef_info_iterator ( iterator_t ,
get_data_t ,
const char *   
)

◆ init_ovaldi_file_iterator()

void init_ovaldi_file_iterator ( iterator_t )

Referenced by get_ovaldi_files().

Here is the caller graph for this function:

◆ init_override_iterator()

int init_override_iterator ( iterator_t ,
const get_data_t ,
nvt_t  ,
result_t  ,
task_t   
)

◆ init_param_option_iterator()

void init_param_option_iterator ( iterator_t ,
report_format_param_t  ,
int  ,
const char *   
)

◆ init_permission_iterator()

int init_permission_iterator ( iterator_t ,
const get_data_t  
)

◆ init_port_list_iterator()

int init_port_list_iterator ( iterator_t ,
const get_data_t  
)

◆ init_port_list_target_iterator()

void init_port_list_target_iterator ( iterator_t ,
port_list_t  ,
int   
)

◆ init_port_range_iterator()

void init_port_range_iterator ( iterator_t ,
port_range_t  ,
int  ,
int  ,
const char *   
)

◆ init_preference_iterator()

void init_preference_iterator ( iterator_t ,
config_t   
)

◆ init_report_counts_build_iterator()

void init_report_counts_build_iterator ( iterator_t ,
report_t  ,
int  ,
int  ,
const char *   
)

◆ init_report_errors_iterator()

void init_report_errors_iterator ( iterator_t ,
report_t   
)

◆ init_report_format_alert_iterator()

void init_report_format_alert_iterator ( iterator_t ,
report_format_t   
)

◆ init_report_format_file_iterator()

int init_report_format_file_iterator ( file_iterator_t iterator,
report_format_t  report_format 
)

Initialise a report format file iterator.

Parameters
[in]iteratorIterator.
[in]report_formatSingle report format to iterate over, NULL for all.
Returns
0 on success, -1 on error.

Definition at line 7096 of file manage.c.

References predefined_report_format_dir(), report_format_owner_uuid(), report_format_predefined(), and report_format_uuid().

7098 {
7099  gchar *dir_name, *uuid;
7100 
7101  uuid = report_format_uuid (report_format);
7102  if (uuid == NULL)
7103  return -1;
7104 
7105  if (report_format_predefined (report_format))
7106  dir_name = predefined_report_format_dir (uuid);
7107  else
7108  {
7109  gchar *owner_uuid;
7110 
7111  owner_uuid = report_format_owner_uuid (report_format);
7112  if (owner_uuid == NULL)
7113  return -1;
7114  dir_name = g_build_filename (OPENVAS_STATE_DIR,
7115  "openvasmd",
7116  "report_formats",
7117  owner_uuid,
7118  uuid,
7119  NULL);
7120  g_free (owner_uuid);
7121  }
7122 
7123  g_free (uuid);
7124 
7125  if (get_report_format_files (dir_name, &iterator->start))
7126  {
7127  g_free (dir_name);
7128  return -1;
7129  }
7130 
7131  iterator->current = iterator->start->pdata;
7132  iterator->current--;
7133  iterator->dir_name = dir_name;
7134  return 0;
7135 }
int report_format_predefined(report_format_t)
char * report_format_owner_uuid(report_format_t)
A generic SQL iterator.
Definition: iterator.h:52
gchar * predefined_report_format_dir(const gchar *uuid)
Get the directory of a report format.
Definition: manage.c:7077
char * report_format_uuid(report_format_t)
Here is the call graph for this function:

◆ init_report_format_iterator()

int init_report_format_iterator ( iterator_t ,
const get_data_t  
)

◆ init_report_format_param_iterator()

void init_report_format_param_iterator ( iterator_t ,
report_format_t  ,
int  ,
int  ,
const char *   
)

◆ init_report_host_iterator()

void init_report_host_iterator ( iterator_t ,
report_t  ,
const char *  ,
report_host_t   
)

◆ init_report_iterator()

int init_report_iterator ( iterator_t ,
const get_data_t  
)

◆ init_report_iterator_task()

void init_report_iterator_task ( iterator_t ,
task_t   
)

Referenced by delete_reports().

Here is the caller graph for this function:

◆ init_resource_tag_iterator()

int init_resource_tag_iterator ( iterator_t ,
const char *  ,
resource_t  ,
int  ,
const char *  ,
int   
)

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ init_result_get_iterator()

int init_result_get_iterator ( iterator_t ,
const get_data_t ,
report_t  ,
const char *  ,
const gchar *   
)

◆ init_role_iterator()

int init_role_iterator ( iterator_t ,
const get_data_t  
)

◆ init_scanner_iterator()

int init_scanner_iterator ( iterator_t ,
const get_data_t  
)

◆ init_scanner_task_iterator()

void init_scanner_task_iterator ( iterator_t ,
scanner_t   
)

◆ init_schedule_iterator()

int init_schedule_iterator ( iterator_t ,
const get_data_t  
)

◆ init_schedule_task_iterator()

void init_schedule_task_iterator ( iterator_t ,
schedule_t   
)

◆ init_setting_iterator()

void init_setting_iterator ( iterator_t ,
const char *  ,
const char *  ,
int  ,
int  ,
int  ,
const char *   
)

◆ init_severity_data()

void init_severity_data ( severity_data_t data)

Initialize a severity data structure.

Parameters
[in]dataThe data structure to initialize.

Definition at line 831 of file manage.c.

References severity_data_t::counts, severity_data_t::max, SEVERITY_MAX, SEVERITY_MISSING, SEVERITY_SUBDIVISIONS, severity_data_t::total, and ZERO_SEVERITY_INDEX.

832 {
833  int max_i;
835 
836  data->counts = g_malloc0 (sizeof (int) * (max_i + 1));
837 
838  data->total = 0;
839  data->max = SEVERITY_MISSING;
840 }
#define SEVERITY_SUBDIVISIONS
Definition: manage_utils.h:46
int * counts
Definition: manage.h:988
double max
Definition: manage.h:990
#define ZERO_SEVERITY_INDEX
Definition: manage.c:779
#define SEVERITY_MISSING
Definition: manage_utils.h:40
#define SEVERITY_MAX
Definition: manage_utils.h:44

◆ init_system_report_type_iterator()

int init_system_report_type_iterator ( report_type_iterator_t iterator,
const char *  type,
const char *  slave_id 
)

Initialise a system report type iterator.

Parameters
[in]iteratorIterator.
[in]typeSingle report type to iterate over, NULL for all.
[in]slave_idID of slave to get reports from. 0 for local.
Returns
0 on success, 1 failed to find report type, 2 failed to find slave, 3 used the fallback report, 4 could not connect to slave, 5 authentication failed, 6 failed to get system report, 99 permission denied, -1 on error.

Definition at line 6041 of file manage.c.

References acl_user_may().

6044 {
6045  int ret;
6046 
6047  if (acl_user_may ("get_system_reports") == 0)
6048  return 99;
6049 
6050  ret = get_system_report_types (type, &iterator->start, &iterator->current,
6051  slave_id);
6052  if (ret == 0 || ret == 3)
6053  {
6054  iterator->current--;
6055  return ret;
6056  }
6057  return ret;
6058 }
A generic SQL iterator.
Definition: iterator.h:52
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
Here is the call graph for this function:

◆ init_tag_iterator()

int init_tag_iterator ( iterator_t ,
const get_data_t  
)

◆ init_tag_name_iterator()

int init_tag_name_iterator ( iterator_t ,
const get_data_t  
)

◆ init_target_iterator()

int init_target_iterator ( iterator_t ,
const get_data_t  
)

◆ init_target_iterator_one()

void init_target_iterator_one ( iterator_t ,
target_t   
)

◆ init_target_task_iterator()

void init_target_task_iterator ( iterator_t ,
target_t   
)

◆ init_task_alert_iterator()

void init_task_alert_iterator ( iterator_t iterator,
task_t  task,
event_t  event 
)

Initialise a task alert iterator.

Parameters
[in]iteratorIterator.
[in]taskTask.
[in]eventEvent.

Definition at line 8837 of file manage_sql.c.

8838 {
8839  gchar *owned_clause;
8840  get_data_t get;
8841  array_t *permissions;
8842 
8843  get.trash = 0;
8844  permissions = make_array ();
8845  array_add (permissions, g_strdup ("get_alerts"));
8846  owned_clause = acl_where_owned ("alert", &get, 0, "any", 0, permissions);
8847  array_free (permissions);
8848 
8849  if (task && event)
8851  "SELECT alerts.id, alerts.uuid, alerts.name"
8852  " FROM alerts, task_alerts"
8853  " WHERE task_alerts.task = %llu AND event = %i"
8854  " AND task_alerts.alert = alerts.id"
8855  " AND %s;",
8856  task,
8857  event,
8858  owned_clause);
8859  else if (task)
8861  "SELECT alerts.id, alerts.uuid, alerts.name"
8862  " FROM alerts, task_alerts"
8863  " WHERE task_alerts.task = %llu"
8864  " AND task_alerts.alert = alerts.id"
8865  " AND %s;",
8866  task,
8867  owned_clause);
8868  else if (event)
8870  "SELECT alerts.id, alerts.uuid, alerts.name"
8871  " FROM alerts"
8872  " WHERE event = %i"
8873  " AND %s;",
8874  event,
8875  owned_clause);
8876  else
8878  "SELECT alerts.id, alerts.uuid, alerts.name"
8879  " FROM alerts"
8880  " WHERE %s;",
8881  owned_clause);
8882 
8883  g_free (owned_clause);
8884 }
int trash
Boolean. Whether to return from trashcan.
Definition: manage.h:318
A generic SQL iterator.
Definition: iterator.h:52
Command data for a get command.
Definition: manage.h:310
gchar * acl_where_owned(const char *type, const get_data_t *get, int owned, const gchar *owner_filter, resource_t resource, array_t *permissions)
Generate the ownership part of an SQL WHERE clause.
Definition: manage_acl.c:1352
void init_iterator(iterator_t *iterator, const char *sql,...)
Initialise an iterator.
Definition: sql.c:577

◆ init_task_group_iterator()

void init_task_group_iterator ( iterator_t iterator,
task_t  task 
)

Initialise a task group iterator.

Parameters
[in]iteratorIterator.
[in]taskTask.

Definition at line 6822 of file manage_sql.c.

References init_iterator(), and LOCATION_TABLE.

6823 {
6825  "SELECT DISTINCT 1, resource, subject,"
6826  " (SELECT name FROM groups"
6827  " WHERE groups.id = permissions.subject),"
6828  " (SELECT uuid FROM groups"
6829  " WHERE groups.id = permissions.subject)"
6830  " FROM permissions"
6831  /* Any permission implies 'get_tasks'. */
6832  " WHERE resource_type = 'task'"
6833  " AND resource = %llu"
6834  " AND resource_location = " G_STRINGIFY (LOCATION_TABLE)
6835  " AND subject_type = 'group'"
6836  " AND subject_location = " G_STRINGIFY (LOCATION_TABLE) ";",
6837  task);
6838 }
A generic SQL iterator.
Definition: iterator.h:52
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
void init_iterator(iterator_t *iterator, const char *sql,...)
Initialise an iterator.
Definition: sql.c:577
Here is the call graph for this function:

◆ init_task_iterator()

int init_task_iterator ( iterator_t iterator,
const get_data_t get 
)

Initialise a task iterator.

Parameters
[in]iteratorTask iterator.
[in]getGET data.
Returns
0 success, 1 failed to find target, 2 failed to find filter, -1 error.

Definition at line 14024 of file manage_sql.c.

References filter_term(), filter_term_value(), MIN_QOD_DEFAULT, TASK_ITERATOR_COLUMNS, TASK_ITERATOR_COLUMNS_MIN, TASK_ITERATOR_FILTER_COLUMNS, TASK_ITERATOR_WHERE_COLUMNS, and TASK_ITERATOR_WHERE_COLUMNS_MIN.

Referenced by stop_active_tasks().

14025 {
14026  static const char *filter_columns[] = TASK_ITERATOR_FILTER_COLUMNS;
14027  static column_t columns[] = TASK_ITERATOR_COLUMNS;
14028  static column_t where_columns[] = TASK_ITERATOR_WHERE_COLUMNS;
14029  static column_t columns_min[] = TASK_ITERATOR_COLUMNS_MIN;
14030  static column_t where_columns_min[] = TASK_ITERATOR_WHERE_COLUMNS_MIN;
14031  char *filter;
14032  gchar *value;
14033  int overrides, min_qod;
14034  gchar *extra_tables;
14035  int ret;
14036 
14037  if (get->filt_id && strcmp (get->filt_id, "0"))
14038  {
14039  filter = filter_term (get->filt_id);
14040  if (filter == NULL)
14041  return 2;
14042  }
14043  else
14044  filter = NULL;
14045  value = filter_term_value (filter ? filter : get->filter, "apply_overrides");
14046  overrides = value && strcmp (value, "0");
14047  g_free (value);
14048 
14049  value = filter_term_value (filter ? filter : get->filter, "min_qod");
14050  if (value == NULL || sscanf (value, "%d", &min_qod) != 1)
14051  min_qod = MIN_QOD_DEFAULT;
14052  g_free (value);
14053  free (filter);
14054 
14055  extra_tables = task_iterator_opts_table (overrides, min_qod, 0);
14056 
14057  ret = init_get_iterator2 (iterator,
14058  "task",
14059  get,
14060  /* SELECT columns. */
14061  get->minimal ? columns_min : columns,
14062  get->minimal ? columns_min : columns,
14063  /* Filterable columns not in SELECT columns. */
14064  get->minimal ? where_columns_min : where_columns,
14065  get->minimal ? where_columns_min : where_columns,
14066  filter_columns,
14067  0,
14068  extra_tables,
14069  get->trash
14070  ? " AND hidden = 2"
14071  : " AND hidden = 0",
14072  current_credentials.uuid ? TRUE : FALSE,
14073  FALSE,
14074  NULL);
14075 
14076  g_free (extra_tables);
14077  return ret;
14078 }
int trash
Boolean. Whether to return from trashcan.
Definition: manage.h:318
#define MIN_QOD_DEFAULT
Default min quality of detection percentage for filters.
Definition: manage.h:1110
#define TASK_ITERATOR_COLUMNS
Task iterator columns.
Definition: manage_sql.c:13934
A generic SQL iterator.
Definition: iterator.h:52
char * filt_id
Filter ID. Overrides "filter".
Definition: manage.h:313
gchar * filter_term_value(const char *, const char *)
#define TASK_ITERATOR_FILTER_COLUMNS
Filter columns for task iterator.
Definition: manage_sql.c:13703
#define TASK_ITERATOR_COLUMNS_MIN
Task iterator minimal columns.
Definition: manage_sql.c:13944
Iterator column.
Definition: manage_sql.c:1512
gchar * filter_term(const char *)
#define TASK_ITERATOR_WHERE_COLUMNS
Task iterator WHERE columns.
Definition: manage_sql.c:13925
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
#define TASK_ITERATOR_WHERE_COLUMNS_MIN
Task iterator minimal WHERE columns.
Definition: manage_sql.c:13953
int minimal
Whether to respond with minimal information.
Definition: manage.h:323
char * filter
Filter term.
Definition: manage.h:314
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_task_role_iterator()

void init_task_role_iterator ( iterator_t iterator,
task_t  task 
)

Initialise a task role iterator.

Parameters
[in]iteratorIterator.
[in]taskTask.

Definition at line 6851 of file manage_sql.c.

References init_iterator(), and LOCATION_TABLE.

6852 {
6854  "SELECT DISTINCT 1, resource, subject,"
6855  " (SELECT name FROM roles"
6856  " WHERE roles.id = permissions.subject),"
6857  " (SELECT uuid FROM roles"
6858  " WHERE roles.id = permissions.subject)"
6859  " FROM permissions"
6860  /* Any permission implies 'get'. */
6861  " WHERE resource_type = 'task'"
6862  " AND resource = %llu"
6863  " AND resource_location = " G_STRINGIFY (LOCATION_TABLE)
6864  " AND subject_type = 'role'",
6865  task);
6866 }
A generic SQL iterator.
Definition: iterator.h:52
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
void init_iterator(iterator_t *iterator, const char *sql,...)
Initialise an iterator.
Definition: sql.c:577
Here is the call graph for this function:

◆ init_user_config_iterator()

void init_user_config_iterator ( iterator_t ,
config_t  ,
int  ,
int  ,
const char *   
)

◆ init_user_group_iterator()

void init_user_group_iterator ( iterator_t ,
user_t   
)

◆ init_user_iterator()

int init_user_iterator ( iterator_t ,
const get_data_t  
)

◆ init_user_role_iterator()

void init_user_role_iterator ( iterator_t ,
user_t   
)

◆ init_user_target_iterator()

void init_user_target_iterator ( iterator_t ,
target_t   
)

◆ insert_report_host_detail()

void insert_report_host_detail ( report_t  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ iso_time()

char* iso_time ( time_t *  epoch_time)

Create an ISO time from seconds since epoch.

Parameters
[in]epoch_timeTime in seconds from epoch.
Returns
Pointer to ISO time in static memory, or NULL on error.

Definition at line 1138 of file manage_sql.c.

Referenced by buffer_aggregate_xml(), and certificate_iso_time().

1139 {
1140  return iso_time_internal (epoch_time, NULL);
1141 }
Here is the caller graph for this function:

◆ iso_time_tz()

char* iso_time_tz ( time_t *  epoch_time,
const char *  timezone,
const char **  abbrev 
)

Create an ISO time from seconds since epoch, given a timezone.

Parameters
[in]epoch_timeTime in seconds from epoch.
[in]timezoneTimezone.
[out]abbrevTimezone abbreviation.
Returns
Pointer to ISO time in static memory, or NULL on error.

Definition at line 1153 of file manage_sql.c.

References iso_time().

1154 {
1155  gchar *tz;
1156  char *ret;
1157 
1158  if (timezone == NULL)
1159  return iso_time (epoch_time);
1160 
1161  /* Store current TZ. */
1162  tz = getenv ("TZ") ? g_strdup (getenv ("TZ")) : NULL;
1163 
1164  if (setenv ("TZ", timezone, 1) == -1)
1165  {
1166  g_warning ("%s: Failed to switch to timezone", __FUNCTION__);
1167  if (tz != NULL)
1168  setenv ("TZ", tz, 1);
1169  g_free (tz);
1170  return iso_time (epoch_time);
1171  }
1172 
1173  tzset ();
1174  ret = iso_time_internal (epoch_time, abbrev);
1175 
1176  /* Revert to stored TZ. */
1177  if (tz)
1178  {
1179  if (setenv ("TZ", tz, 1) == -1)
1180  {
1181  g_warning ("%s: Failed to switch to original TZ", __FUNCTION__);
1182  g_free (tz);
1183  return ret;
1184  }
1185  }
1186  else
1187  unsetenv ("TZ");
1188 
1189  g_free (tz);
1190  return ret;
1191 }
char * iso_time(time_t *epoch_time)
Create an ISO time from seconds since epoch.
Definition: manage_sql.c:1138
Here is the call graph for this function:

◆ keyfile_to_auth_conf_settings_xml()

gchar* keyfile_to_auth_conf_settings_xml ( const gchar *  )

◆ keyword_relation_symbol()

const char* keyword_relation_symbol ( keyword_relation_t  relation)

Get the symbol of a keyword relation.

Parameters
[in]relationRelation.
Returns
Relation symbol.

Definition at line 1627 of file manage_sql.c.

References KEYWORD_RELATION_APPROX, KEYWORD_RELATION_COLUMN_ABOVE, KEYWORD_RELATION_COLUMN_APPROX, KEYWORD_RELATION_COLUMN_BELOW, KEYWORD_RELATION_COLUMN_EQUAL, and KEYWORD_RELATION_COLUMN_REGEXP.

1628 {
1629  switch (relation)
1630  {
1631  case KEYWORD_RELATION_APPROX: return "~";
1632  case KEYWORD_RELATION_COLUMN_ABOVE: return ">";
1633  case KEYWORD_RELATION_COLUMN_APPROX: return "~";
1634  case KEYWORD_RELATION_COLUMN_EQUAL: return "=";
1635  case KEYWORD_RELATION_COLUMN_BELOW: return "<";
1636  case KEYWORD_RELATION_COLUMN_REGEXP: return ":";
1637  default: return "";
1638  }
1639 }

◆ load_tasks()

int load_tasks ( )

◆ lookup_report_format()

gboolean lookup_report_format ( const char *  ,
report_format_t  
)

◆ make_cve_result()

result_t make_cve_result ( task_t  ,
const char *  ,
const char *  ,
double  ,
const char *   
)

◆ make_nvt_from_nvti()

nvt_t make_nvt_from_nvti ( const nvti_t *  ,
int   
)

◆ make_osp_result()

result_t make_osp_result ( task_t  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
int   
)

◆ make_report()

report_t make_report ( task_t  ,
const char *  ,
task_status_t   
)

◆ make_result()

result_t make_result ( task_t  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ make_task()

task_t make_task ( char *  ,
char *  ,
int  ,
int   
)

◆ make_task_complete()

void make_task_complete ( const char *  )

◆ manage_alert()

int manage_alert ( const char *  alert_id,
const char *  task_id,
event_t  event,
const void *  event_data,
gchar **  script_message 
)

Escalate an alert with task and event data.

Parameters
[in]alert_idAlert UUID.
[in]task_idTask UUID.
[in]eventEvent.
[in]event_dataEvent data.
[out]script_messageCustom error message from alert script.
Returns
0 success, 1 failed to find alert, 2 failed to find task, 99 permission denied, -1 error, -2 failed to find report format for alert, -3 failed to find filter for alert, -4 failed to find credential for alert, -5 alert script failed.

Definition at line 12984 of file manage_sql.c.

12986 {
12987  alert_t alert;
12988  task_t task;
12989  alert_condition_t condition;
12990  alert_method_t method;
12991 
12992  if (acl_user_may ("test_alert") == 0)
12993  return 99;
12994 
12995  if (find_alert_with_permission (alert_id, &alert, "test_alert"))
12996  return -1;
12997  if (alert == 0)
12998  return 1;
12999 
13000  if (task_id == NULL || strcmp (task_id, "0") == 0)
13001  task = 0;
13002  else
13003  {
13004  if (find_task_with_permission (task_id, &task, NULL))
13005  return -1;
13006  if (task == 0)
13007  return 2;
13008  }
13009 
13010  condition = alert_condition (alert);
13011  method = alert_method (alert);
13012  return escalate_1 (alert, task, 0, event, event_data, method, condition,
13013  script_message);
13014 }
alert_condition_t
Types of alert conditions.
Definition: manage.h:501
long long int alert_t
Definition: manage.h:280
alert_method_t
Types of alerts.
Definition: manage.h:482
gboolean find_alert_with_permission(const char *uuid, alert_t *alert, const char *permission)
Find a alert for a specific permission, given a UUID.
Definition: manage_sql.c:6983
gboolean find_task_with_permission(const char *, task_t *, const char *)
unsigned int task_id(task_t task)
Return the identifier of a task.
Definition: manage_sql.c:17869
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
long long int task_t
Definition: manage.h:286

◆ manage_auth_allow_all()

void manage_auth_allow_all ( int  scheduled)

Ensure that any subsequent authentications succeed.

Parameters
[in]scheduledWhether this is happening from the scheduler.

Definition at line 6440 of file manage.c.

References authenticate_allow_all.

6441 {
6442  authenticate_allow_all = scheduled ? 1 : 2;
6443 }
int authenticate_allow_all
Flag for manage_auth_allow_all.
Definition: manage.c:6426

◆ manage_backup_db()

int manage_backup_db ( const gchar *  database)

Backup the database to a file.

Parameters
[in]databaseName of manage database.
Returns
0 success, -1 error.
Parameters
[in]databaseLocation of manage database.
Returns
0 success, -1 error.

Definition at line 2680 of file manage_pg.c.

2681 {
2682  g_warning ("%s: database backup not supported for Postgres", __FUNCTION__);
2683  return -1;
2684 }

◆ manage_cert_db_supported_version()

int manage_cert_db_supported_version ( )

Return the database version supported by this manager.

Returns
Database version supported by this manager.

Definition at line 6322 of file manage_sql.c.

6323 {
6324  return OPENVASMD_CERT_DATABASE_VERSION;
6325 }

◆ manage_cert_db_version()

int manage_cert_db_version ( )

Return the database version of the actual database.

Returns
Database version read from database if possible, else -1.

Definition at line 6333 of file manage_sql.c.

References manage_cert_loaded(), and sql_string().

6334 {
6335  if (manage_cert_loaded () == 0)
6336  return -1;
6337 
6338  int number;
6339  char *version = sql_string ("SELECT value FROM cert.meta"
6340  " WHERE name = 'database_version' LIMIT 1;");
6341  if (version)
6342  {
6343  number = atoi (version);
6344  free (version);
6345  return number;
6346  }
6347  return -1;
6348 }
int manage_cert_loaded()
Check whether CERT is available.
Definition: manage_pg.c:2643
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ manage_cert_loaded()

int manage_cert_loaded ( )

Check whether CERT is available.

Returns
1 if CERT database is loaded, else 0.

Definition at line 2643 of file manage_pg.c.

Referenced by get_nvti_xml(), and migrate_116_to_117().

2644 {
2645  return !!sql_int ("SELECT EXISTS (SELECT * FROM information_schema.tables"
2646  " WHERE table_catalog = '%s'"
2647  " AND table_schema = 'cert'"
2648  " AND table_name = 'dfn_cert_advs')"
2649  " ::integer;",
2650  sql_database ());
2651 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
const char * sql_database()
Return name of current database.
Definition: sql_pg.c:226
Here is the caller graph for this function:

◆ manage_check_alerts()

int manage_check_alerts ( GSList *  log_config,
const gchar *  database 
)

Check if any SecInfo alerts are due.

Parameters
[in]log_configLog configuration.
[in]databaseLocation of manage database.
Returns
0 success, -1 error, -2 database is wrong version, -3 database needs to be initialised from server.

Definition at line 6886 of file manage_sql.c.

6887 {
6888  int ret;
6889 
6890  g_info (" Checking alerts.\n");
6891 
6892  ret = manage_option_setup (log_config, database);
6893  if (ret)
6894  return ret;
6895 
6896  /* Setup a dummy user, so that create_user will work. */
6897  current_credentials.uuid = "";
6898 
6899  if (manage_scap_loaded ())
6900  {
6901  int max_time;
6902 
6903  max_time
6904  = sql_int ("SELECT %s"
6905  " ((SELECT max (modification_time) FROM scap.cves),"
6906  " (SELECT max (modification_time) FROM scap.cpes),"
6907  " (SELECT max (modification_time) FROM scap.ovaldefs),"
6908  " (SELECT max (creation_time) FROM scap.cves),"
6909  " (SELECT max (creation_time) FROM scap.cpes),"
6910  " (SELECT max (creation_time) FROM scap.ovaldefs));",
6911  sql_greatest ());
6912 
6913  if (sql_int ("SELECT NOT EXISTS (SELECT * FROM meta"
6914  " WHERE name = 'scap_check_time')"))
6915  sql ("INSERT INTO meta (name, value)"
6916  " VALUES ('scap_check_time', %i);",
6917  max_time);
6918  else if (sql_int ("SELECT value = '0' FROM meta"
6919  " WHERE name = 'scap_check_time';"))
6920  sql ("UPDATE meta SET value = %i"
6921  " WHERE name = 'scap_check_time';",
6922  max_time);
6923  else
6924  {
6925  check_for_new_scap ();
6926  check_for_updated_scap ();
6927  sql ("UPDATE meta SET value = %i"
6928  " WHERE name = 'scap_check_time';",
6929  max_time);
6930  }
6931  }
6932 
6933  if (manage_cert_loaded ())
6934  {
6935  int max_time;
6936 
6937  max_time
6938  = sql_int ("SELECT"
6939  " %s"
6940  " ((SELECT max (modification_time) FROM cert.cert_bund_advs),"
6941  " (SELECT max (modification_time) FROM cert.dfn_cert_advs),"
6942  " (SELECT max (creation_time) FROM cert.cert_bund_advs),"
6943  " (SELECT max (creation_time) FROM cert.dfn_cert_advs));",
6944  sql_greatest ());
6945 
6946  if (sql_int ("SELECT NOT EXISTS (SELECT * FROM meta"
6947  " WHERE name = 'cert_check_time')"))
6948  sql ("INSERT INTO meta (name, value)"
6949  " VALUES ('cert_check_time', %i);",
6950  max_time);
6951  else if (sql_int ("SELECT value = '0' FROM meta"
6952  " WHERE name = 'cert_check_time';"))
6953  sql ("UPDATE meta SET value = %i"
6954  " WHERE name = 'cert_check_time';",
6955  max_time);
6956  else
6957  {
6958  check_for_new_cert ();
6959  check_for_updated_cert ();
6960  sql ("UPDATE meta SET value = %i"
6961  " WHERE name = 'cert_check_time';",
6962  max_time);
6963  }
6964  }
6965 
6966  current_credentials.uuid = NULL;
6967 
6969 
6970  return ret;
6971 }
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
const char * sql_greatest()
Get keyword for "greatest" SQL function.
Definition: sql_pg.c:114
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
void manage_option_cleanup()
Cleanup for an option process.
Definition: manage_sql.c:1504
int manage_cert_loaded()
Check whether CERT is available.
Definition: manage_pg.c:2643
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
#define g_info(...)
Defines g_info for glib versions older than 2.40.
Definition: manage.h:55
int manage_option_setup(GSList *log_config, const gchar *database)
Setup for an option process.
Definition: manage_sql.c:1463
int manage_scap_loaded()
Check whether SCAP is available.
Definition: manage_pg.c:2659

◆ manage_check_current_task()

int manage_check_current_task ( )

Handle state changes to current task made by other processes.

Returns
0 on success, -1 if out of space in scanner output buffer, 1 if queued to scanner.

Definition at line 5733 of file manage.c.

References current_scanner_task, manage_transaction_stop(), send_to_server(), set_task_run_status(), task_run_status(), TASK_STATUS_DELETE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_WAITING, TASK_STATUS_DELETE_WAITING, TASK_STATUS_DONE, TASK_STATUS_INTERNAL_ERROR, TASK_STATUS_NEW, TASK_STATUS_REQUESTED, TASK_STATUS_RUNNING, TASK_STATUS_STOP_REQUESTED, TASK_STATUS_STOP_REQUESTED_GIVEUP, TASK_STATUS_STOP_WAITING, and TASK_STATUS_STOPPED.

Referenced by process_omp_change(), and process_otp_scanner_input().

5734 {
5736  {
5737  task_status_t run_status;
5738 
5739  /* Commit pending transaction if needed. */
5740  manage_transaction_stop (FALSE);
5741 
5742  /* Check if some other process changed the status. */
5743 
5744  run_status = task_run_status (current_scanner_task);
5745  switch (run_status)
5746  {
5748  /* This should only happen for slave tasks. */
5749  assert (0);
5751  if (send_to_server ("CLIENT <|> STOP_WHOLE_TEST <|> CLIENT\n"))
5752  return -1;
5755  return 1;
5756  break;
5758  if (send_to_server ("CLIENT <|> STOP_WHOLE_TEST <|> CLIENT\n"))
5759  return -1;
5762  return 1;
5763  break;
5765  if (send_to_server ("CLIENT <|> STOP_WHOLE_TEST <|> CLIENT\n"))
5766  return -1;
5769  return 1;
5770  break;
5773  case TASK_STATUS_DONE:
5774  case TASK_STATUS_NEW:
5775  case TASK_STATUS_REQUESTED:
5776  case TASK_STATUS_RUNNING:
5778  case TASK_STATUS_STOPPED:
5780  break;
5781  }
5782  }
5783  return 0;
5784 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
void set_task_run_status(task_t, task_status_t)
Set the run state of a task.
Definition: manage_sql.c:18307
task_t current_scanner_task
The task currently running on the scanner.
Definition: manage.c:998
task_status_t task_run_status(task_t)
Return the run state of a task.
Definition: manage_sql.c:18238
int send_to_server(const char *msg)
Send a message to the server.
void manage_transaction_stop(gboolean)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_clean_filter()

gchar* manage_clean_filter ( const gchar *  filter)

Clean a filter.

Parameters
[in]filterFilter.
Returns
Cleaned filter.

Definition at line 2818 of file manage_sql.c.

References manage_clean_filter_remove().

2819 {
2820  return manage_clean_filter_remove (filter, NULL);
2821 }
gchar * manage_clean_filter_remove(const gchar *filter, const gchar *column)
Clean a filter, removing a keyword in the process.
Definition: manage_sql.c:2743
Here is the call graph for this function:

◆ manage_clean_filter_remove()

gchar* manage_clean_filter_remove ( const gchar *  filter,
const gchar *  column 
)

Clean a filter, removing a keyword in the process.

Parameters
[in]filterFilter.
[in]columnKeyword to remove, or NULL.
Returns
Cleaned filter.

Definition at line 2743 of file manage_sql.c.

References keyword::column, KEYWORD_RELATION_COLUMN_EQUAL, keyword::relation, and split_filter().

Referenced by init_get(), and manage_clean_filter().

2744 {
2745  GString *clean;
2746  keyword_t **point;
2747  array_t *split;
2748 
2749  if (filter == NULL)
2750  return g_strdup ("");
2751 
2752  clean = g_string_new ("");
2753  split = split_filter (filter);
2754  point = (keyword_t**) split->pdata;
2755  while (*point)
2756  {
2757  keyword_t *keyword;
2758 
2759  keyword = *point;
2760  if (keyword->column
2761  && column
2762  && strlen (column)
2763  && ((strcasecmp (keyword->column, column) == 0)
2764  || (keyword->column[0] == '_'
2765  && strcasecmp (keyword->column + 1, column) == 0)))
2766  {
2767  /* Remove this keyword. */;
2768  }
2769  else if (keyword->column)
2770  switch (keyword->relation)
2771  {
2773  append_relation (clean, keyword, '=');
2774  break;
2776  append_relation (clean, keyword, '~');
2777  break;
2779  append_relation (clean, keyword, '>');
2780  break;
2782  append_relation (clean, keyword, '<');
2783  break;
2785  append_relation (clean, keyword, ':');
2786  break;
2787 
2789  if (keyword->quoted)
2790  g_string_append_printf (clean, " \"%s\"", keyword->string);
2791  else
2792  g_string_append_printf (clean, " %s", keyword->string);
2793  break;
2794  }
2795  else
2796  if (keyword->quoted)
2797  g_string_append_printf (clean, " %s\"%s\"",
2798  keyword->equal ? "=" : "",
2799  keyword->string);
2800  else
2801  g_string_append_printf (clean, " %s%s",
2802  keyword->equal ? "=" : "",
2803  keyword->string);
2804  point++;
2805  }
2806  filter_free (split);
2807  return g_strstrip (g_string_free (clean, FALSE));
2808 }
gchar * column
The column prefix, or NULL.
Definition: manage.h:3430
void filter_free(array_t *split)
Free a split filter.
Definition: manage_sql.c:2018
int equal
Whether the keyword is like "=example".
Definition: manage.h:3431
keyword_relation_t relation
The relation.
Definition: manage.h:3437
gchar * string
The keyword string, outer quotes removed.
Definition: manage.h:3435
Keyword.
Definition: manage.h:3428
int quoted
Whether the keyword was quoted.
Definition: manage.h:3434
array_t * split_filter(const gchar *given_filter)
Split the filter term into parts.
Definition: manage_sql.c:2043
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_cleanup_process_error()

void manage_cleanup_process_error ( int  signal)

Cleanup as immediately as possible.

Put any running task in the error state and close the database.

Intended for handlers for signals like SIGSEGV and SIGABRT.

Parameters
[in]signalDummy argument for use as signal handler.

Definition at line 17154 of file manage_sql.c.

References current_scanner_task, set_task_run_status(), sql_close(), sql_is_open(), and TASK_STATUS_INTERNAL_ERROR.

Referenced by handle_sigabrt(), and handle_sigsegv().

17155 {
17156  g_debug ("Received %s signal.\n", sys_siglist[signal]);
17157  if (sql_is_open ())
17158  {
17160  {
17161  g_warning ("%s: Error exit, setting running task to Internal Error",
17162  __FUNCTION__);
17164  }
17165  sql_close ();
17166  }
17167 }
int sql_is_open()
Check whether the database is open.
Definition: sql_pg.c:201
task_t current_scanner_task
The task currently running on the scanner.
Definition: manage.c:998
void sql_close()
Close the database.
Definition: sql_pg.c:363
void set_task_run_status(task_t task, task_status_t status)
Set the run state of a task.
Definition: manage_sql.c:18307
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_complete_nvt_cache_update()

void manage_complete_nvt_cache_update ( GList *  ,
GList *  ,
int   
)

◆ manage_count_hosts()

int manage_count_hosts ( const char *  ,
const char *   
)

Referenced by sql_max_hosts().

Here is the caller graph for this function:

◆ manage_create_scanner()

int manage_create_scanner ( GSList *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ manage_create_user()

int manage_create_user ( GSList *  ,
const gchar *  ,
const gchar *  ,
const gchar *  ,
const gchar *   
)

◆ manage_db_supported_version()

int manage_db_supported_version ( )

Return the database version supported by this manager.

Returns
Database version supported by this manager.

Definition at line 6250 of file manage_sql.c.

6251 {
6252  return OPENVASMD_DATABASE_VERSION;
6253 }

◆ manage_db_version()

int manage_db_version ( )

Return the database version of the actual database.

Returns
Database version read from database, -2 if database is empty, -1 on error.

Definition at line 6262 of file manage_sql.c.

References manage_db_empty(), sql_schema(), and sql_string().

Referenced by manage_create_sql_functions(), migrate_0_to_1(), migrate_100_to_101(), migrate_101_to_102(), migrate_102_to_103(), migrate_103_to_104(), migrate_104_to_105(), migrate_105_to_106(), migrate_106_to_107(), migrate_107_to_108(), migrate_108_to_109(), migrate_109_to_110(), migrate_10_to_11(), migrate_110_to_111(), migrate_111_to_112(), migrate_112_to_113(), migrate_113_to_114(), migrate_114_to_115(), migrate_115_to_116(), migrate_116_to_117(), migrate_117_to_118(), migrate_118_to_119(), migrate_119_to_120(), migrate_11_to_12(), migrate_120_to_121(), migrate_121_to_122(), migrate_122_to_123(), migrate_123_to_124(), migrate_124_to_125(), migrate_125_to_126(), migrate_126_to_127(), migrate_127_to_128(), migrate_128_to_129(), migrate_129_to_130(), migrate_12_to_13(), migrate_130_to_131(), migrate_131_to_132(), migrate_132_to_133(), migrate_133_to_134(), migrate_134_to_135(), migrate_135_to_136(), migrate_136_to_137(), migrate_137_to_138(), migrate_138_to_139(), migrate_139_to_140(), migrate_13_to_14(), migrate_140_to_141(), migrate_141_to_142(), migrate_142_to_143(), migrate_143_to_144(), migrate_144_to_145(), migrate_145_to_146(), migrate_146_to_147(), migrate_147_to_148(), migrate_148_to_149(), migrate_149_to_150(), migrate_14_to_15(), migrate_150_to_151(), migrate_151_to_152(), migrate_152_to_153(), migrate_153_to_154(), migrate_154_to_155(), migrate_155_to_156(), migrate_156_to_157(), migrate_157_to_158(), migrate_158_to_159(), migrate_159_to_160(), migrate_15_to_16(), migrate_160_to_161(), migrate_161_to_162(), migrate_162_to_163(), migrate_163_to_164(), migrate_164_to_165(), migrate_165_to_166(), migrate_166_to_167(), migrate_167_to_168(), migrate_168_to_169(), migrate_169_to_170(), migrate_16_to_17(), migrate_170_to_171(), migrate_171_to_172(), migrate_172_to_173(), migrate_173_to_174(), migrate_174_to_175(), migrate_175_to_176(), migrate_176_to_177(), migrate_177_to_178(), migrate_178_to_179(), migrate_179_to_180(), migrate_17_to_18(), migrate_180_to_181(), migrate_181_to_182(), migrate_182_to_183(), migrate_183_to_184(), migrate_18_to_19(), migrate_19_to_20(), migrate_1_to_2(), migrate_20_to_21(), migrate_21_to_22(), migrate_22_to_23(), migrate_23_to_24(), migrate_24_to_25(), migrate_25_to_26(), migrate_26_to_27(), migrate_27_to_28(), migrate_28_to_29(), migrate_29_to_30(), migrate_2_to_3(), migrate_30_to_31(), migrate_31_to_32(), migrate_32_to_33(), migrate_33_to_34(), migrate_34_to_35(), migrate_35_to_36(), migrate_36_to_37(), migrate_37_to_38(), migrate_38_to_39(), migrate_39_to_40(), migrate_3_to_4(), migrate_40_to_41(), migrate_41_to_42(), migrate_42_to_43(), migrate_43_to_44(), migrate_44_to_45(), migrate_45_to_46(), migrate_46_to_47(), migrate_47_to_48(), migrate_48_to_49(), migrate_49_to_50(), migrate_4_to_5(), migrate_50_to_51(), migrate_51_to_52(), migrate_52_to_53(), migrate_53_to_54(), migrate_54_to_55(), migrate_55_to_56(), migrate_56_to_57(), migrate_57_to_58(), migrate_58_to_59(), migrate_59_to_60(), migrate_5_to_6(), migrate_60_to_61(), migrate_61_to_62(), migrate_62_to_63(), migrate_63_to_64(), migrate_64_to_65(), migrate_65_to_66(), migrate_66_to_67(), migrate_67_to_68(), migrate_68_to_69(), migrate_69_to_70(), migrate_6_to_7(), migrate_70_to_71(), migrate_71_to_72(), migrate_72_to_73(), migrate_73_to_74(), migrate_74_to_75(), migrate_75_to_76(), migrate_76_to_77(), migrate_77_to_78(), migrate_78_to_79(), migrate_7_to_8(), migrate_80_to_81(), migrate_81_to_82(), migrate_82_to_83(), migrate_83_to_84(), migrate_84_to_85(), migrate_85_to_86(), migrate_86_to_87(), migrate_87_to_88(), migrate_88_to_89(), migrate_89_to_90(), migrate_8_to_9(), migrate_90_to_91(), migrate_91_to_92(), migrate_92_to_93(), migrate_93_to_94(), migrate_94_to_95(), migrate_95_to_96(), migrate_96_to_97(), migrate_97_to_98(), migrate_98_to_99(), migrate_99_to_100(), and migrate_9_to_10().

6263 {
6264  int number;
6265  char *version;
6266 
6267  if (manage_db_empty ())
6268  return -2;
6269 
6270  version = sql_string ("SELECT value FROM %s.meta"
6271  " WHERE name = 'database_version' LIMIT 1;",
6272  sql_schema ());
6273  if (version)
6274  {
6275  number = atoi (version);
6276  free (version);
6277  return number;
6278  }
6279  return -1;
6280 }
const char * sql_schema()
Get main schema name.
Definition: sql_pg.c:103
int manage_db_empty()
Check whether database is empty.
Definition: manage_pg.c:78
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ manage_decrypt_all_credentials()

int manage_decrypt_all_credentials ( GSList *  log_config,
const gchar *  database 
)

Decrypt all credentials.

Parameters
[in]log_configLog configuration.
[in]databaseLocation of manage database.
Returns
0 success, -1 error, -2 database is wrong version, -3 database needs to be initialised from server.

Definition at line 6599 of file manage_sql.c.

6600 {
6601  int ret;
6602 
6603  g_info (" Decrypting all credentials.\n");
6604 
6605  ret = manage_option_setup (log_config, database);
6606  if (ret)
6607  return ret;
6608 
6609  ret = encrypt_all_credentials (TRUE);
6610  if (ret)
6611  printf ("Decryption failed.\n");
6612  else
6613  printf ("Decryption succeeded.\n");
6614 
6616 
6617  return ret;
6618 }
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310
void manage_option_cleanup()
Cleanup for an option process.
Definition: manage_sql.c:1504
#define g_info(...)
Defines g_info for glib versions older than 2.40.
Definition: manage.h:55
int manage_option_setup(GSList *log_config, const gchar *database)
Setup for an option process.
Definition: manage_sql.c:1463

◆ manage_default_ca_cert()

char* manage_default_ca_cert ( )

Referenced by set_certs().

Here is the caller graph for this function:

◆ manage_delete_scanner()

int manage_delete_scanner ( GSList *  ,
const gchar *  ,
const gchar *   
)

◆ manage_delete_user()

int manage_delete_user ( GSList *  ,
const gchar *  ,
const gchar *  ,
const gchar *   
)

◆ manage_empty_trashcan()

int manage_empty_trashcan ( )

◆ manage_encrypt_all_credentials()

int manage_encrypt_all_credentials ( GSList *  log_config,
const gchar *  database 
)

Encrypt or re-encrypt all credentials.

All plaintext credentials in the credentials table are encrypted, all already encrypted credentials are encrypted again using the latest key.

Parameters
[in]log_configLog configuration.
[in]databaseLocation of manage database.
Returns
0 success, -1 error, -2 database is wrong version, -3 database needs to be initialised from server.

Definition at line 6567 of file manage_sql.c.

6568 {
6569  int ret;
6570 
6571  g_info (" (Re-)encrypting all credentials.\n");
6572 
6573  ret = manage_option_setup (log_config, database);
6574  if (ret)
6575  return ret;
6576 
6577  ret = encrypt_all_credentials (FALSE);
6578  if (ret)
6579  printf ("Encryption failed.\n");
6580  else
6581  printf ("Encryption succeeded.\n");
6582 
6584 
6585  return ret;
6586 }
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310
void manage_option_cleanup()
Cleanup for an option process.
Definition: manage_sql.c:1504
#define g_info(...)
Defines g_info for glib versions older than 2.40.
Definition: manage.h:55
int manage_option_setup(GSList *log_config, const gchar *database)
Setup for an option process.
Definition: manage_sql.c:1463

◆ manage_filter_controls()

void manage_filter_controls ( const gchar *  filter,
int *  first,
int *  max,
gchar **  sort_field,
int *  sort_order 
)

Get info from a filter.

It's up to the caller to ensure that max is adjusted for Max Rows Per Page (by calling manage_max_rows).

Parameters
[in]filterFilter.
[out]firstNumber of first item.
[out]maxMax number of rows.
[out]sort_fieldSort field.
[out]sort_orderSort order.

Definition at line 2289 of file manage_sql.c.

References keyword::column, filter_free(), SETTING_UUID_ROWS_PER_PAGE, setting_value_int(), split_filter(), and keyword::string.

Referenced by init_get().

2291 {
2292  keyword_t **point;
2293  array_t *split;
2294 
2295  if (filter == NULL)
2296  {
2297  if (first)
2298  *first = 1;
2299  if (max)
2300  *max = -1;
2301  if (sort_field)
2302  *sort_field = g_strdup ("name");
2303  if (sort_order)
2304  *sort_order = 1;
2305  return;
2306  }
2307 
2308  split = split_filter (filter);
2309  point = (keyword_t**) split->pdata;
2310  if (first)
2311  {
2312  *first = 1;
2313  while (*point)
2314  {
2315  keyword_t *keyword;
2316 
2317  keyword = *point;
2318  if (keyword->column && (strcmp (keyword->column, "first") == 0))
2319  {
2320  *first = atoi (keyword->string);
2321  if (*first < 0)
2322  *first = 0;
2323  break;
2324  }
2325  point++;
2326  }
2327  }
2328 
2329  point = (keyword_t**) split->pdata;
2330  if (max)
2331  {
2332  *max = -1;
2333  while (*point)
2334  {
2335  keyword_t *keyword;
2336 
2337  keyword = *point;
2338  if (keyword->column && (strcmp (keyword->column, "rows") == 0))
2339  {
2340  *max = atoi (keyword->string);
2341  if (*max == -2)
2343  else if (*max < 1)
2344  *max = -1;
2345  break;
2346  }
2347  point++;
2348  }
2349  }
2350 
2351  point = (keyword_t**) split->pdata;
2352  if (sort_field || sort_order)
2353  {
2354  if (sort_field) *sort_field = NULL;
2355  if (sort_order) *sort_order = 1;
2356  while (*point)
2357  {
2358  keyword_t *keyword;
2359 
2360  keyword = *point;
2361  if (keyword->column
2362  && (strcmp (keyword->column, "sort") == 0))
2363  {
2364  if (sort_field) *sort_field = g_strdup (keyword->string);
2365  if (sort_order) *sort_order = 1;
2366  break;
2367  }
2368  if (keyword->column
2369  && (strcmp (keyword->column, "sort-reverse") == 0))
2370  {
2371  if (sort_field) *sort_field = g_strdup (keyword->string);
2372  if (sort_order) *sort_order = 0;
2373  break;
2374  }
2375  point++;
2376  }
2377  if (sort_field && (*sort_field == NULL))
2378  *sort_field = g_strdup ("name");
2379  }
2380 
2381  filter_free (split);
2382  return;
2383 }
gchar * column
The column prefix, or NULL.
Definition: manage.h:3430
void filter_free(array_t *split)
Free a split filter.
Definition: manage_sql.c:2018
int setting_value_int(const char *, int *)
gchar * string
The keyword string, outer quotes removed.
Definition: manage.h:3435
Keyword.
Definition: manage.h:3428
array_t * split_filter(const gchar *given_filter)
Split the filter term into parts.
Definition: manage_sql.c:2043
#define SETTING_UUID_ROWS_PER_PAGE
UUID of &#39;Rows Per Page&#39; setting.
Definition: manage_sql.h:213
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_get_ldap_info()

void manage_get_ldap_info ( int *  ,
gchar **  ,
gchar **  ,
int *  ,
gchar **   
)

◆ manage_get_radius_info()

void manage_get_radius_info ( int *  ,
char **  ,
char **   
)

◆ manage_get_scanners()

int manage_get_scanners ( GSList *  ,
const gchar *   
)

◆ manage_get_users()

int manage_get_users ( GSList *  ,
const gchar *  ,
const gchar *   
)

◆ manage_max_hosts()

int manage_max_hosts ( )

◆ manage_max_rows()

int manage_max_rows ( int  )

◆ manage_migrate()

int manage_migrate ( GSList *  log_config,
const gchar *  database 
)

Migrate database to version supported by this manager.

Parameters
[in]log_configLog configuration.
[in]databaseLocation of manage database.
Returns
0 success, 1 already on supported version, 2 too hard, 11 cannot migrate SCAP DB, 12 cannot migrate CERT DB, -1 error, -11 error running SCAP migration, -12 error running CERT migration.

Definition at line 14255 of file manage_migrators.c.

14256 {
14257  migrator_t *migrators;
14258  /* The version on the disk. */
14259  int old_version, old_scap_version, old_cert_version;
14260  /* The version that this program requires. */
14261  int new_version, new_scap_version, new_cert_version;
14262  int version_current = 0, scap_version_current = 0, cert_version_current = 0;
14263 
14264  g_log_set_handler (G_LOG_DOMAIN,
14266  (GLogFunc) openvas_log_func,
14267  log_config);
14268 
14269  init_manage_process (0, database);
14270 
14271  old_version = manage_db_version ();
14272  new_version = manage_db_supported_version ();
14273 
14274  if (old_version == -1)
14275  {
14276  cleanup_manage_process (TRUE);
14277  return -1;
14278  }
14279 
14280  if (old_version == -2)
14281  {
14282  g_warning ("%s: no task tables yet, run a --rebuild to create them.\n",
14283  __FUNCTION__);
14284  version_current = 1;
14285  }
14286  else if (old_version == new_version)
14287  {
14288  version_current = 1;
14289  }
14290  else
14291  {
14292  switch (migrate_is_available (old_version, new_version))
14293  {
14294  case -1:
14295  cleanup_manage_process (TRUE);
14296  return -1;
14297  case 0:
14298  cleanup_manage_process (TRUE);
14299  return 2;
14300  }
14301 
14302  /* Call the migrators to take the DB from the old version to the new. */
14303 
14304  migrators = database_migrators + old_version + 1;
14305 
14306  while ((migrators->version >= 0) && (migrators->version <= new_version))
14307  {
14308  if (migrators->function == NULL)
14309  {
14310  cleanup_manage_process (TRUE);
14311  return -1;
14312  }
14313 
14314  g_info (" Migrating to %i", migrators->version);
14315 
14316  if (migrators->function ())
14317  {
14318  cleanup_manage_process (TRUE);
14319  return -1;
14320  }
14321  migrators++;
14322  }
14323  }
14324 
14325  /* Migrate SCAP and CERT databases */
14326  old_scap_version = manage_scap_db_version ();
14327  new_scap_version = manage_scap_db_supported_version ();
14328  old_cert_version = manage_cert_db_version ();
14329  new_cert_version = manage_cert_db_supported_version ();
14330 
14331  if (old_scap_version == new_scap_version)
14332  {
14333  g_debug ("SCAP database already at current version");
14334  scap_version_current = 1;
14335  }
14336  else if (old_scap_version == -1)
14337  {
14338  g_message ("No SCAP database found for migration");
14339  scap_version_current = 1;
14340  }
14341  else if (old_scap_version > new_scap_version)
14342  {
14343  g_warning ("SCAP database version too new: %d", old_scap_version);
14344  return 11;
14345  }
14346  else
14347  {
14348  g_message ("Migrating SCAP database");
14349  switch (openvas_migrate_secinfo (SBINDIR "/openvas-scapdata-sync",
14350  SCAP_FEED))
14351  {
14352  case 0:
14353  g_message ("SCAP database migrated successfully");
14354  break;
14355  case 1:
14356  g_warning ("SCAP sync already running");
14357  cleanup_manage_process (TRUE);
14358  return 11;
14359  break;
14360  default:
14361  assert (0);
14362  case -1:
14363  cleanup_manage_process (TRUE);
14364  return -11;
14365  break;
14366  }
14367  }
14368 
14369  if (old_cert_version == new_cert_version)
14370  {
14371  g_debug ("CERT database already at current version");
14372  cert_version_current = 1;
14373  }
14374  else if (old_cert_version == -1)
14375  {
14376  g_message ("No CERT database found for migration");
14377  cert_version_current = 1;
14378  }
14379  else if (old_cert_version > new_cert_version)
14380  {
14381  g_warning ("CERT database version too new: %d", old_cert_version);
14382  return 12;
14383  }
14384  else
14385  {
14386  g_message ("Migrating CERT database");
14387  switch (openvas_migrate_secinfo (SBINDIR "/openvas-certdata-sync",
14388  CERT_FEED))
14389  {
14390  case 0:
14391  g_message ("CERT database migrated successfully");
14392  break;
14393  case 1:
14394  g_warning ("CERT sync already running");
14395  cleanup_manage_process (TRUE);
14396  return 12;
14397  break;
14398  default:
14399  assert (0);
14400  case -1:
14401  cleanup_manage_process (TRUE);
14402  return -12;
14403  break;
14404  }
14405  }
14406 
14407  if (version_current && scap_version_current && cert_version_current)
14408  {
14409  cleanup_manage_process (TRUE);
14410  return 1;
14411  }
14412 
14413  /* We now run ANALYZE after migrating, instead of on every startup. ANALYZE
14414  * made startup too slow, especially for large databases. Running it here
14415  * is preferred over removing it entirely, because users may have very
14416  * different use patterns of the database.
14417  *
14418  * Reopen the database before the ANALYZE, in case the schema has changed. */
14419  cleanup_manage_process (TRUE);
14420  init_manage_process (0, database);
14421  sql ("ANALYZE;");
14422 
14423  cleanup_manage_process (TRUE);
14424  return 0;
14425 }
void init_manage_process(int, const gchar *)
Initialize the manage library for a process.
Definition: manage_sql.c:14303
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310
int manage_scap_db_supported_version()
Return the database version supported by this manager.
Definition: manage_sql.c:6288
int version
Version that the migrator produces.
void cleanup_manage_process(gboolean)
Cleanup the manage library.
Definition: manage_sql.c:17128
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
A migrator.
int openvas_migrate_secinfo(const gchar *, int)
#define SCAP_FEED
Definition: manage.h:4142
#define ALL_LOG_LEVELS
Flag with all Glib log levels.
Definition: manage.h:47
#define CERT_FEED
Definition: manage.h:4143
int manage_db_supported_version()
Return the database version supported by this manager.
Definition: manage_sql.c:6250
#define g_info(...)
Defines g_info for glib versions older than 2.40.
Definition: manage.h:55
#define G_LOG_DOMAIN
GLib log domain.
int manage_cert_db_version()
Return the database version of the actual database.
Definition: manage_sql.c:6333
int manage_db_version()
Return the database version of the actual database.
Definition: manage_sql.c:6262
int manage_cert_db_supported_version()
Return the database version supported by this manager.
Definition: manage_sql.c:6322
int(* function)()
Function that does the migration. NULL if too hard.
int migrate_is_available(int old_version, int new_version)
Check whether a migration is available.
int manage_scap_db_version()
Return the database version of the actual database.
Definition: manage_sql.c:6299

◆ manage_migrate_needs_timezone()

gboolean manage_migrate_needs_timezone ( GSList *  log_config,
const gchar *  database 
)

Check whether the migration needs the real timezone.

Parameters
[in]log_configLog configuration.
[in]databaseLocation of manage database.
Returns
TRUE if yes, else FALSE.

Definition at line 14206 of file manage_migrators.c.

14207 {
14208  int db_version;
14209  g_log_set_handler (G_LOG_DOMAIN,
14211  (GLogFunc) openvas_log_func,
14212  log_config);
14213  init_manage_process (0, database);
14214  db_version = manage_db_version ();
14215  cleanup_manage_process (TRUE);
14216  return db_version > 0 && db_version < 52;
14217 }
void init_manage_process(int, const gchar *)
Initialize the manage library for a process.
Definition: manage_sql.c:14303
GSList * log_config
Logging parameters, as passed to setup_log_handlers.
Definition: openvasmd.c:310
void cleanup_manage_process(gboolean)
Cleanup the manage library.
Definition: manage_sql.c:17128
#define ALL_LOG_LEVELS
Flag with all Glib log levels.
Definition: manage.h:47
#define G_LOG_DOMAIN
GLib log domain.
int manage_db_version()
Return the database version of the actual database.
Definition: manage_sql.c:6262

◆ manage_modify_scanner()

int manage_modify_scanner ( GSList *  ,
const gchar *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ manage_modify_setting()

int manage_modify_setting ( GSList *  ,
const gchar *  ,
const gchar *  ,
const gchar *  ,
const char *   
)

◆ manage_nvt_name()

char* manage_nvt_name ( nvt_t  )

◆ manage_nvt_preference_add()

void manage_nvt_preference_add ( const char *  ,
const char *  ,
int   
)

◆ manage_nvt_preferences_enable()

void manage_nvt_preferences_enable ( )

◆ manage_optimize()

int manage_optimize ( GSList *  ,
const gchar *  ,
const gchar *   
)

◆ manage_port_name()

char* manage_port_name ( int  number,
const char *  protocol 
)

Returns associated name for a tcp/ip port.

Parameters
numberPort number to get name for.
protocolProtocol type of port.
Returns
associated name for port if found, NULL otherwise.

Definition at line 6359 of file manage_sql.c.

References sql_string().

Referenced by port_name_formatted().

6360 {
6361  if (protocol == NULL || number <= 0 || number > 65535)
6362  return NULL;
6363 
6364  return sql_string ("SELECT name FROM port_names"
6365  " WHERE number = %i AND protocol = '%s' LIMIT 1;",
6366  number, protocol);
6367 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_read_info()

int manage_read_info ( gchar *  type,
gchar *  uid,
gchar *  name,
gchar **  result 
)

Read raw information.

Parameters
[in]typeType of the requested information.
[in]uidUnique identifier of the requested information
[in]nameName or identifier of the requested information.
[out]resultPointer to the read information location. Will point to NULL on error.
Returns
1 success, -1 error.

Definition at line 7889 of file manage.c.

7890 {
7891  gchar *fname;
7892  gchar *pnames[2] = { "refname", NULL };
7893  gchar *pvalues[2] = { name, NULL };
7894 
7895  assert (result != NULL);
7896  *result = NULL;
7897 
7898  if (g_ascii_strcasecmp ("CPE", type) == 0)
7899  {
7900  fname = get_cpe_filename ();
7901  if (fname)
7902  {
7903  gchar *cpe;
7904  cpe = xsl_transform (CPE_GETBYNAME_XSL, fname, pnames, pvalues);
7905  g_free (fname);
7906  if (cpe)
7907  *result = cpe;
7908  }
7909  }
7910  else if (g_ascii_strcasecmp ("CVE", type) == 0)
7911  {
7912  fname = get_cve_filename (uid);
7913  if (fname)
7914  {
7915  gchar *cve;
7916  cve = xsl_transform (CVE_GETBYNAME_XSL, fname, pnames, pvalues);
7917  g_free (fname);
7918  if (cve)
7919  *result = cve;
7920  }
7921  }
7922  else if (g_ascii_strcasecmp ("NVT", type) == 0)
7923  {
7924  iterator_t nvts;
7925  nvt_t nvt;
7926 
7927  if (!find_nvt (name ? name : uid, &nvt) && nvt)
7928  {
7929  init_nvt_iterator (&nvts, nvt, 0, NULL, NULL, 0, NULL);
7930 
7931  if (next (&nvts))
7932  *result = get_nvti_xml (&nvts,
7933  1, /* Include details. */
7934  0, /* Preference count. */
7935  1, /* Include preferences. */
7936  NULL, /* Timeout. */
7937  0, /* Config. */
7938  1); /* Close tag. */
7939 
7940  cleanup_iterator (&nvts);
7941  }
7942  }
7943  else if (g_ascii_strcasecmp ("OVALDEF", type) == 0)
7944  {
7945  fname = get_ovaldef_filename (uid);
7946  if (fname)
7947  {
7948  gchar *ovaldef;
7949  ovaldef = xsl_transform (OVALDEF_GETBYNAME_XSL, fname,
7950  pnames, pvalues);
7951  g_free (fname);
7952  if (ovaldef)
7953  *result = ovaldef;
7954  }
7955  }
7956  else if (g_ascii_strcasecmp ("CERT_BUND_ADV", type) == 0)
7957  {
7958  fname = get_cert_bund_adv_filename (uid);
7959  if (fname)
7960  {
7961  gchar *adv;
7963  pnames, pvalues);
7964  g_free (fname);
7965  if (adv)
7966  *result = adv;
7967  }
7968  }
7969  else if (g_ascii_strcasecmp ("DFN_CERT_ADV", type) == 0)
7970  {
7971  fname = get_dfn_cert_adv_filename (uid);
7972  if (fname)
7973  {
7974  gchar *adv;
7976  pnames, pvalues);
7977  g_free (fname);
7978  if (adv)
7979  *result = adv;
7980  }
7981  }
7982 
7983  if (*result == NULL)
7984  return -1;
7985 
7986  return 1;
7987 }
#define CPE_GETBYNAME_XSL
CPE selection stylesheet location.
Definition: manage.c:90
#define OVALDEF_GETBYNAME_XSL
OVALDEF selection stylesheet location.
Definition: manage.c:100
A generic SQL iterator.
Definition: iterator.h:52
gchar * get_nvti_xml(iterator_t *nvts, int details, int pref_count, int preferences, const char *timeout, config_t config, int close_tag)
Create and return XML description for an NVT.
Definition: manage.c:7658
#define CVE_GETBYNAME_XSL
CVE selection stylesheet location.
Definition: manage.c:95
long long int nvt_t
Definition: manage.h:294
gboolean find_nvt(const char *, nvt_t *)
gchar * xsl_transform(gchar *stylesheet, gchar *xmlfile, gchar **param_names, gchar **param_values)
Run xsltproc in an external process.
Definition: manage.c:7535
void cleanup_iterator(iterator_t *)
Cleanup an iterator.
Definition: sql.c:664
#define DFN_CERT_ADV_GETBYNAME_XSL
DFN_CERT_ADV selection stylesheet location.
Definition: manage.c:110
gboolean next(iterator_t *)
Increment an iterator.
Definition: sql.c:689
void init_nvt_iterator(iterator_t *, nvt_t, config_t, const char *, const char *, int, const char *)
#define CERT_BUND_ADV_GETBYNAME_XSL
CERT_BUND_ADV selection stylesheet location.
Definition: manage.c:105

◆ manage_report()

gchar* manage_report ( report_t  ,
const get_data_t ,
report_format_t  ,
int  ,
int  ,
const char *  ,
gsize *  ,
gchar **  ,
gchar **  ,
gchar **  ,
gchar **  ,
gchar **   
)

◆ manage_report_filter_controls()

void manage_report_filter_controls ( const gchar *  filter,
int *  first,
int *  max,
gchar **  sort_field,
int *  sort_order,
int *  result_hosts_only,
gchar **  min_qod,
gchar **  levels,
gchar **  delta_states,
gchar **  search_phrase,
int *  search_phrase_exact,
int *  autofp,
int *  notes,
int *  overrides,
int *  apply_overrides,
gchar **  zone 
)

Get info from a filter for report.

It's up to the caller to ensure that max is adjusted for Max Rows Per Page (by calling manage_max_rows).

Parameters
[in]filterFilter.
[out]firstNumber of first item.
[out]maxMax number of rows.
[out]sort_fieldSort field.
[out]sort_orderSort order.
[out]result_hosts_onlyWhether to show only hosts with results.
[out]min_qodMinimum QoD base of included results. All results if NULL.
[out]levelsString describing threat levels (message types) to include in count (for example, "hmlgd" for High, Medium, Low, loG and Debug). All levels if NULL.
[out]delta_statesString describing delta states to include in count (for example, "sngc" Same, New, Gone and Changed). All levels if NULL.
[out]search_phrasePhrase that results must include. All results if NULL or "".
[out]search_phrase_exactWhether search phrase is exact.
[out]autofpWhether to apply auto FP filter.
[out]notesWhether to include notes.
[out]overridesWhether to include overrides.
[out]apply_overridesWhether to apply overrides.
[out]zoneTimezone.

Definition at line 2474 of file manage_sql.c.

References keyword::column, keyword::equal, filter_control_int(), filter_control_str(), filter_free(), SETTING_UUID_ROWS_PER_PAGE, setting_value_int(), split_filter(), and keyword::string.

2481 {
2482  keyword_t **point;
2483  array_t *split;
2484  int val;
2485  gchar *string;
2486 
2487  if (filter == NULL)
2488  return;
2489 
2490  split = split_filter (filter);
2491  point = (keyword_t**) split->pdata;
2492  if (first)
2493  {
2494  *first = 1;
2495  while (*point)
2496  {
2497  keyword_t *keyword;
2498 
2499  keyword = *point;
2500  if (keyword->column && (strcmp (keyword->column, "first") == 0))
2501  {
2502  *first = atoi (keyword->string);
2503  if (*first < 0)
2504  *first = 0;
2505  break;
2506  }
2507  point++;
2508  }
2509  /* Switch from 1 to 0 indexing. */
2510 
2511  (*first)--;
2512  }
2513 
2514  point = (keyword_t**) split->pdata;
2515  if (max)
2516  {
2517  *max = 100;
2518  while (*point)
2519  {
2520  keyword_t *keyword;
2521 
2522  keyword = *point;
2523  if (keyword->column && (strcmp (keyword->column, "rows") == 0))
2524  {
2525  *max = atoi (keyword->string);
2526  if (*max == -2)
2528  else if (*max < 1)
2529  *max = -1;
2530  break;
2531  }
2532  point++;
2533  }
2534  }
2535 
2536  point = (keyword_t**) split->pdata;
2537  if (sort_field || sort_order)
2538  {
2539  if (sort_field) *sort_field = NULL;
2540  if (sort_order) *sort_order = 1;
2541  while (*point)
2542  {
2543  keyword_t *keyword;
2544 
2545  keyword = *point;
2546  if (keyword->column
2547  && (strcmp (keyword->column, "sort") == 0))
2548  {
2549  if (sort_field) *sort_field = g_strdup (keyword->string);
2550  if (sort_order) *sort_order = 1;
2551  break;
2552  }
2553  if (keyword->column
2554  && (strcmp (keyword->column, "sort-reverse") == 0))
2555  {
2556  if (sort_field) *sort_field = g_strdup (keyword->string);
2557  if (sort_order) *sort_order = 0;
2558  break;
2559  }
2560  point++;
2561  }
2562  if (sort_field && (*sort_field == NULL))
2563  // FIX name??
2564  *sort_field = g_strdup ("name");
2565  }
2566 
2567  if (search_phrase)
2568  {
2569  GString *phrase;
2570  phrase = g_string_new ("");
2571  point = (keyword_t**) split->pdata;
2572  if (search_phrase_exact)
2573  *search_phrase_exact = 0;
2574  while (*point)
2575  {
2576  keyword_t *keyword;
2577 
2578  keyword = *point;
2579  if (keyword->column == NULL)
2580  {
2581  if (search_phrase_exact && keyword->equal)
2582  /* If one term is "exact" then the search is "exact", because
2583  * for reports the filter terms are combined into a single
2584  * search term. */
2585  *search_phrase_exact = 1;
2586  g_string_append_printf (phrase, "%s ", keyword->string);
2587  }
2588  point++;
2589  }
2590  *search_phrase = g_strchomp (phrase->str);
2591  g_string_free (phrase, FALSE);
2592  }
2593 
2594  if (result_hosts_only)
2595  {
2596  if (filter_control_int ((keyword_t **) split->pdata,
2597  "result_hosts_only",
2598  &val))
2599  *result_hosts_only = 1;
2600  else
2601  *result_hosts_only = val;
2602  }
2603 
2604  if (autofp)
2605  {
2606  if (filter_control_int ((keyword_t **) split->pdata,
2607  "autofp",
2608  &val))
2609  *autofp = 0;
2610  else
2611  *autofp = val;
2612  }
2613 
2614  if (notes)
2615  {
2616  if (filter_control_int ((keyword_t **) split->pdata,
2617  "notes",
2618  &val))
2619  *notes = 1;
2620  else
2621  *notes = val;
2622  }
2623 
2624  if (overrides)
2625  {
2626  if (filter_control_int ((keyword_t **) split->pdata,
2627  "overrides",
2628  &val))
2629  *overrides = 1;
2630  else
2631  *overrides = val;
2632  }
2633 
2634  if (apply_overrides)
2635  {
2636  if (filter_control_int ((keyword_t **) split->pdata,
2637  "apply_overrides",
2638  &val))
2639  {
2640  if (filter_control_int ((keyword_t **) split->pdata,
2641  "overrides",
2642  &val))
2643  *apply_overrides = 1;
2644  else
2645  *apply_overrides = val;
2646  }
2647  else
2648  *apply_overrides = val;
2649  }
2650 
2651  if (delta_states)
2652  {
2653  if (filter_control_str ((keyword_t **) split->pdata,
2654  "delta_states",
2655  &string))
2656  *delta_states = NULL;
2657  else
2658  *delta_states = string;
2659  }
2660 
2661  if (levels)
2662  {
2663  if (filter_control_str ((keyword_t **) split->pdata,
2664  "levels",
2665  &string))
2666  *levels = NULL;
2667  else
2668  *levels = string;
2669  }
2670 
2671  if (min_qod)
2672  {
2673  if (filter_control_str ((keyword_t **) split->pdata,
2674  "min_qod",
2675  &string))
2676  *min_qod = NULL;
2677  else
2678  *min_qod = string;
2679  }
2680 
2681  if (zone)
2682  {
2683  if (filter_control_str ((keyword_t **) split->pdata,
2684  "timezone",
2685  &string))
2686  *zone = NULL;
2687  else
2688  *zone = string;
2689  }
2690 
2691  filter_free (split);
2692  return;
2693 }
gchar * column
The column prefix, or NULL.
Definition: manage.h:3430
void filter_free(array_t *split)
Free a split filter.
Definition: manage_sql.c:2018
int filter_control_int(keyword_t **point, const char *column, int *val)
Get an int column from a filter split.
Definition: manage_sql.c:2395
int setting_value_int(const char *, int *)
int equal
Whether the keyword is like "=example".
Definition: manage.h:3431
gchar * string
The keyword string, outer quotes removed.
Definition: manage.h:3435
Keyword.
Definition: manage.h:3428
int filter_control_str(keyword_t **point, const char *column, gchar **string)
Get a string column from a filter split.
Definition: manage_sql.c:2424
array_t * split_filter(const gchar *given_filter)
Split the filter term into parts.
Definition: manage_sql.c:2043
#define SETTING_UUID_ROWS_PER_PAGE
UUID of &#39;Rows Per Page&#39; setting.
Definition: manage_sql.h:213
Here is the call graph for this function:

◆ manage_report_host_add()

report_host_t manage_report_host_add ( report_t  ,
const char *  ,
time_t  ,
time_t   
)

◆ manage_report_host_detail()

int manage_report_host_detail ( report_t  ,
const char *  ,
const char *   
)

◆ manage_reset_currents()

void manage_reset_currents ( )

Cleanup as immediately as possible.

Definition at line 17173 of file manage_sql.c.

References current_report, and current_scanner_task.

17174 {
17175  current_report = 0;
17177 }
task_t current_scanner_task
The task currently running on the scanner.
Definition: manage.c:998
report_t current_report
The report of the current task.
Definition: manage.c:1003
long long int task_t
Definition: manage.h:286

◆ manage_resource_name()

int manage_resource_name ( const char *  type,
const char *  uuid,
char **  name 
)

Get the name of a resource.

Parameters
[in]typeType.
[in]uuidUUID.
[out]nameReturn for freshly allocated name.
Returns
0 success, 1 error in type.

Definition at line 4942 of file manage_sql.c.

References LOCATION_TABLE, and resource_name().

4943 {
4944  return resource_name (type, uuid, LOCATION_TABLE, name);
4945 }
int resource_name(const char *type, const char *uuid, int location, char **name)
Get the name of a resource.
Definition: manage_sql.c:4852
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
Here is the call graph for this function:

◆ manage_restore()

int manage_restore ( const char *  )

◆ manage_run_wizard()

int manage_run_wizard ( const gchar *  ,
int(*)(void *, gchar *, gchar **)  ,
void *  ,
array_t *  ,
int  ,
const char *  ,
gchar **  ,
gchar **  ,
gchar **   
)

◆ manage_scanner_set()

int manage_scanner_set ( const char *  uuid)

Set the address of scanner to connect to.

Parameters
[in]uuidScanner UUID.
Returns
0 if success, -1 if error, -2 scanner has no cert.

Definition at line 17377 of file manage_sql.c.

References current_credentials, find_scanner(), openvas_scanner_set_address(), openvas_scanner_set_unix(), scanner_ca_pub(), scanner_host(), scanner_key_priv(), scanner_key_pub(), scanner_port(), SCANNER_TYPE_OPENVAS, and set_certs().

Referenced by manage_scanner_set_default().

17378 {
17379  scanner_t scanner = 0;
17380  char *host;
17381  int type, ret = 0;
17382 
17383  if (uuid == NULL)
17384  return -1;
17385 
17386  if (!current_credentials.uuid)
17387  current_credentials.uuid = "";
17388  if (find_scanner (uuid, &scanner) || scanner == 0)
17389  {
17390  g_warning ("Failed to find scanner %s\n", uuid);
17391  return -1;
17392  }
17393  if (!strcmp (current_credentials.uuid, ""))
17394  current_credentials.uuid = NULL;
17395 
17396  type = scanner_type (scanner);
17397  if (type != SCANNER_TYPE_OPENVAS)
17398  {
17399  g_warning ("Scanner %s not an OpenVAS Scanner\n", uuid);
17400  return -1;
17401  }
17402  host = scanner_host (scanner);
17403  if (host && *host == '/')
17404  {
17405  /* XXX: Workaround for unix socket case. Should add a flag. */
17406  openvas_scanner_set_unix (host);
17407  }
17408  else
17409  {
17410  char *ca_pub, *key_pub, *key_priv;
17411  int port;
17412 
17413  port = scanner_port (scanner);
17414  if (openvas_scanner_set_address (host, port))
17415  {
17416  g_warning ("Failed to set %s:%d as scanner\n", host, port);
17417  g_free (host);
17418  return -1;
17419  }
17420  ca_pub = scanner_ca_pub (scanner);
17421  key_pub = scanner_key_pub (scanner);
17422  key_priv = scanner_key_priv (scanner);
17423  ret = set_certs (ca_pub, key_pub, key_priv);
17424  g_free (ca_pub);
17425  g_free (key_pub);
17426  g_free (key_priv);
17427  }
17428  g_free (host);
17429  if (ret)
17430  return -2;
17431  return 0;
17432 }
int set_certs(const char *, const char *, const char *)
Initialise OpenVAS scanner variables, checking for defaults.
Definition: manage.c:4312
int openvas_scanner_set_address(const char *addr, int port)
Set the scanner&#39;s address and port. Will try to resolve addr if it is a hostname. ...
Definition: scanner.c:807
char * scanner_host(scanner_t)
int scanner_port(scanner_t)
char * scanner_ca_pub(scanner_t)
char * scanner_key_priv(scanner_t)
gboolean find_scanner(const char *, scanner_t *)
int openvas_scanner_set_unix(const char *path)
Set the scanner&#39;s unix socket path.
Definition: scanner.c:833
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
scanner_type
Scanner types.
Definition: manage.h:267
long long int scanner_t
Definition: manage.h:300
char * scanner_key_pub(scanner_t)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_scanner_set_default()

int manage_scanner_set_default ( )

Set the default scanner as the scanner to connect to.

Returns
0 success, -1 error, -2 scanner has no cert.

Definition at line 17440 of file manage_sql.c.

References manage_scanner_set(), and SCANNER_UUID_DEFAULT.

17441 {
17443 }
#define SCANNER_UUID_DEFAULT
UUID of &#39;OpenVAS Default&#39; scanner.
Definition: manage_sql.h:203
int manage_scanner_set(const char *uuid)
Set the address of scanner to connect to.
Definition: manage_sql.c:17377
Here is the call graph for this function:

◆ manage_scap_db_supported_version()

int manage_scap_db_supported_version ( )

Return the database version supported by this manager.

Returns
Database version supported by this manager.

Definition at line 6288 of file manage_sql.c.

6289 {
6290  return OPENVASMD_SCAP_DATABASE_VERSION;
6291 }

◆ manage_scap_db_version()

int manage_scap_db_version ( )

Return the database version of the actual database.

Returns
Database version read from database if possible, else -1.

Definition at line 6299 of file manage_sql.c.

References manage_scap_loaded(), and sql_string().

6300 {
6301  if (manage_scap_loaded () == 0)
6302  return -1;
6303 
6304  int number;
6305  char *version = sql_string ("SELECT value FROM scap.meta"
6306  " WHERE name = 'database_version' LIMIT 1;");
6307  if (version)
6308  {
6309  number = atoi (version);
6310  free (version);
6311  return number;
6312  }
6313  return -1;
6314 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
int manage_scap_loaded()
Check whether SCAP is available.
Definition: manage_pg.c:2659
Here is the call graph for this function:

◆ manage_scap_loaded()

int manage_scap_loaded ( )

Check whether SCAP is available.

Returns
1 if SCAP database is loaded, else 0.

Definition at line 2659 of file manage_pg.c.

Referenced by migrate_116_to_117().

2660 {
2661  return !!sql_int ("SELECT EXISTS (SELECT * FROM information_schema.tables"
2662  " WHERE table_catalog = '%s'"
2663  " AND table_schema = 'scap'"
2664  " AND table_name = 'cves')"
2665  " ::integer;",
2666  sql_database ());
2667 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
const char * sql_database()
Return name of current database.
Definition: sql_pg.c:226
Here is the caller graph for this function:

◆ manage_scap_update_time()

const char* manage_scap_update_time ( )

GET SCAP update time, as a string.

Returns
Last update time as a static string, or "" on error.

Definition at line 7842 of file manage.c.

References SCAP_TIMESTAMP_FILENAME.

7843 {
7844  gchar *content;
7845  GError *error;
7846  gsize content_size;
7847  struct tm update_time;
7848 
7849  /* Read in the contents. */
7850 
7851  error = NULL;
7852  if (g_file_get_contents (SCAP_TIMESTAMP_FILENAME,
7853  &content,
7854  &content_size,
7855  &error)
7856  == FALSE)
7857  {
7858  if (error)
7859  {
7860  g_debug ("%s: failed to read %s: %s",
7861  __FUNCTION__, SCAP_TIMESTAMP_FILENAME, error->message);
7862  g_error_free (error);
7863  }
7864  return "";
7865  }
7866 
7867  memset (&update_time, 0, sizeof (struct tm));
7868  if (strptime (content, "%Y%m%d%H%M", &update_time))
7869  {
7870  static char time_string[100];
7871  strftime (time_string, 99, "%FT%T.000%z", &update_time);
7872  return time_string;
7873  }
7874  return "";
7875 }
#define SCAP_TIMESTAMP_FILENAME
SCAP timestamp location.
Definition: manage.c:142

◆ manage_schedule()

int manage_schedule ( int(*)(openvas_connection_t *, gchar *)  fork_connection,
gboolean  run_tasks,
sigset_t *  sigmask_current 
)

Schedule any actions that are due.

In openvasmd, periodically called from the main daemon loop.

Parameters
[in]fork_connectionFunction that forks a child which is connected to the Manager. Must return PID in parent, 0 in child, or -1 on error.
[in]run_tasksWhether to run scheduled tasks.
[in]sigmask_currentSigmask to restore in child.
Returns
0 success, 1 failed to get lock, -1 error.

Definition at line 6481 of file manage.c.

References auto_delete_reports(), cleanup_task_schedule_iterator(), clear_duration_schedules(), current_credentials, init_task_schedule_iterator(), manage_session_init(), manage_update_nvti_cache(), next(), next_time(), reinit_manage_process(), reschedule_task(), schedule_duration(), schedule_period(), set_task_schedule_next_time(), set_task_schedule_next_time_uuid(), set_task_schedule_periods(), set_task_schedule_uuid(), task_schedule_iterator_first_time(), task_schedule_iterator_owner_name(), task_schedule_iterator_owner_uuid(), task_schedule_iterator_period(), task_schedule_iterator_period_months(), task_schedule_iterator_start_due(), task_schedule_iterator_stop_due(), task_schedule_iterator_task(), task_schedule_iterator_task_uuid(), task_schedule_iterator_timed_out(), task_schedule_iterator_timezone(), task_schedule_next_time_uuid(), task_schedule_periods_uuid(), task_schedule_uuid(), task_uuid(), and update_duration_schedule_periods().

6484 {
6485  iterator_t schedules;
6486  GSList *starts = NULL, *stops = NULL;
6487  int ret;
6488  task_t previous_start_task = 0;
6489  task_t previous_stop_task = 0;
6490 
6491  ret = manage_update_nvti_cache ();
6492  if (ret)
6493  {
6494  if (ret == -1)
6495  {
6496  g_warning ("%s: manage_update_nvti_cache error"
6497  " (Perhaps the db went down?)",
6498  __FUNCTION__);
6499  /* Just ignore, in case the db went down temporarily. */
6500  return 0;
6501  }
6502 
6503  return ret;
6504  }
6505 
6506  if (run_tasks == 0)
6507  return 0;
6508 
6509  /* Assemble "starts" and "stops" list containing task uuid and owner name
6510  * for each (scheduled) task to start or stop. */
6511 
6512  ret = init_task_schedule_iterator (&schedules);
6513  if (ret)
6514  {
6515  if (ret == -1)
6516  {
6517  g_warning ("%s: iterator init error"
6518  " (Perhaps the db went down?)",
6519  __FUNCTION__);
6520  /* Just ignore, in case the db went down temporarily. */
6521  return 0;
6522  }
6523 
6524  return ret;
6525  }
6526  /* This iterator runs in an exclusive transaction, so this loop is atomic. */
6527  while (next (&schedules))
6528  if (task_schedule_iterator_start_due (&schedules))
6529  {
6530  time_t first_time, period, period_months;
6531  const char* timezone;
6532  int timed_out;
6533 
6534  /* Check if task schedule is timed out before updating next due time */
6535  timed_out = task_schedule_iterator_timed_out (&schedules);
6536 
6537  /* Update the task schedule info to prevent multiple schedules. */
6538 
6539  first_time = task_schedule_iterator_first_time (&schedules);
6540  period = task_schedule_iterator_period (&schedules);
6541  period_months = task_schedule_iterator_period_months (&schedules);
6542  timezone = task_schedule_iterator_timezone (&schedules);
6543 
6545  (task_schedule_iterator_task (&schedules),
6546  next_time (first_time, period, period_months, timezone, 0));
6547 
6548  /* Skip this task if it was already added to the starts list
6549  * to avoid conflicts between multiple users with permissions.
6550  */
6551 
6552  if (previous_start_task == task_schedule_iterator_task (&schedules))
6553  continue;
6554 
6555  if (timed_out)
6556  {
6557  g_message (" %s: Task timed out: %s",
6558  __FUNCTION__,
6559  task_schedule_iterator_task_uuid (&schedules));
6560  continue;
6561  }
6562 
6563  previous_start_task = task_schedule_iterator_task (&schedules);
6564 
6565  /* Add task UUID and owner name and UUID to the list. */
6566 
6567  starts = g_slist_prepend
6568  (starts,
6569  g_strdup (task_schedule_iterator_task_uuid (&schedules)));
6570  starts = g_slist_prepend
6571  (starts,
6572  g_strdup (task_schedule_iterator_owner_uuid (&schedules)));
6573  starts = g_slist_prepend
6574  (starts,
6575  g_strdup (task_schedule_iterator_owner_name (&schedules)));
6576  }
6577  else if (task_schedule_iterator_stop_due (&schedules))
6578  {
6579  /* Skip this task if it was already added to the stops list
6580  * to avoid conflicts between multiple users with permissions.
6581  */
6582 
6583  if (previous_stop_task == task_schedule_iterator_task (&schedules))
6584  continue;
6585  previous_stop_task = task_schedule_iterator_task (&schedules);
6586 
6587  /* Add task UUID and owner name and UUID to the list. */
6588 
6589  stops = g_slist_prepend
6590  (stops,
6591  g_strdup (task_schedule_iterator_task_uuid (&schedules)));
6592  stops = g_slist_prepend
6593  (stops,
6594  g_strdup (task_schedule_iterator_owner_uuid (&schedules)));
6595  stops = g_slist_prepend
6596  (stops,
6597  g_strdup (task_schedule_iterator_owner_name (&schedules)));
6598  }
6599  cleanup_task_schedule_iterator (&schedules);
6600 
6601  /* Start tasks in forked processes, now that the SQL statement is closed. */
6602 
6603  while (starts)
6604  {
6605  int pid;
6606  openvas_connection_t connection;
6607  gchar *task_uuid, *owner, *owner_uuid;
6608  GSList *head;
6609  omp_authenticate_info_opts_t auth_opts;
6610 
6611  owner = starts->data;
6612  assert (starts->next);
6613  owner_uuid = starts->next->data;
6614  assert (starts->next->next);
6615  task_uuid = starts->next->next->data;
6616 
6617  head = starts;
6618  starts = starts->next->next->next;
6619  g_slist_free_1 (head->next->next);
6620  g_slist_free_1 (head->next);
6621  g_slist_free_1 (head);
6622 
6623  /* Fork a child to start the task and wait for the response, so that the
6624  * parent can return to the main loop. */
6625 
6626  pid = fork ();
6627  switch (pid)
6628  {
6629  case 0:
6630  /* Child. Carry on to start the task, reopen the database (required
6631  * after fork). */
6632 
6633  /* Restore the sigmask that was blanked for pselect. */
6634  pthread_sigmask (SIG_SETMASK, sigmask_current, NULL);
6635 
6638  while (starts)
6639  {
6640  g_free (starts->data);
6641  starts = g_slist_delete_link (starts, starts);
6642  }
6643  break;
6644 
6645  case -1:
6646  /* Parent on error. Reschedule and continue to next task. */
6647  g_warning ("%s: fork failed\n", __FUNCTION__);
6649  g_free (task_uuid);
6650  g_free (owner);
6651  g_free (owner_uuid);
6652  continue;
6653 
6654  default:
6655  /* Parent. Continue to next task. */
6656  g_debug ("%s: %i forked %i", __FUNCTION__, getpid (), pid);
6657  g_free (task_uuid);
6658  g_free (owner);
6659  g_free (owner_uuid);
6660  continue;
6661 
6662  }
6663 
6664  /* Run the callback to fork a child connected to the Manager. */
6665 
6666  pid = fork_connection (&connection, owner_uuid);
6667  switch (pid)
6668  {
6669  case 0:
6670  /* Child. Break, start task, exit. */
6671  g_free (owner_uuid);
6672  break;
6673 
6674  case -1:
6675  /* Parent on error. */
6676  g_warning ("%s: fork_connection failed\n", __FUNCTION__);
6678  g_free (task_uuid);
6679  g_free (owner);
6680  g_free (owner_uuid);
6681  exit (EXIT_FAILURE);
6682  break;
6683 
6684  default:
6685  {
6686  int status;
6687 
6688  /* Parent. Wait for child, to check return. */
6689 
6690  g_debug ("%s: %i fork_connectioned %i",
6691  __FUNCTION__, getpid (), pid);
6692 
6693  g_free (owner);
6694  g_free (owner_uuid);
6695 
6696  if (signal (SIGCHLD, SIG_DFL) == SIG_ERR)
6697  g_warning ("%s: failed to set SIGCHLD", __FUNCTION__);
6698  while (waitpid (pid, &status, 0) < 0)
6699  {
6700  if (errno == ECHILD)
6701  {
6702  g_warning ("%s: Failed to get child exit,"
6703  " so task '%s' may not have been scheduled",
6704  __FUNCTION__,
6705  task_uuid);
6706  g_free (task_uuid);
6707  exit (EXIT_FAILURE);
6708  }
6709  if (errno == EINTR)
6710  continue;
6711  g_warning ("%s: waitpid: %s",
6712  __FUNCTION__,
6713  strerror (errno));
6714  g_warning ("%s: As a result, task '%s' may not have been"
6715  " scheduled",
6716  __FUNCTION__,
6717  task_uuid);
6718  g_free (task_uuid);
6719  exit (EXIT_FAILURE);
6720  }
6721  if (WIFEXITED (status))
6722  switch (WEXITSTATUS (status))
6723  {
6724  case EXIT_SUCCESS:
6725  {
6726  schedule_t schedule;
6727  int periods;
6728 
6729  /* Child succeeded. */
6730 
6731  schedule = task_schedule_uuid (task_uuid);
6732  if (schedule
6733  && schedule_period (schedule) == 0
6734  && schedule_duration (schedule) == 0
6735  /* Check next time too, in case the user changed
6736  * the schedule after this task was added to the
6737  * "starts" list. */
6739  /* A once-off schedule without a duration, remove
6740  * it from the task. If it has a duration it
6741  * will be removed below, after the duration. */
6743  else if ((periods = task_schedule_periods_uuid
6744  (task_uuid)))
6745  {
6746  /* A task restricted to a certain number of
6747  * scheduled runs. */
6748  if (periods > 1)
6749  {
6751  periods - 1);
6752  }
6753  else if (periods == 1
6754  && schedule_duration (schedule) == 0)
6755  {
6756  /* Last run of a task restricted to a certain
6757  * number of scheduled runs. */
6759  }
6760  else if (periods == 1)
6761  /* Flag that the task has started, for
6762  * update_duration_schedule_periods. */
6764  }
6765  }
6766  g_free (task_uuid);
6767  exit (EXIT_SUCCESS);
6768 
6769  case EXIT_FAILURE:
6770  default:
6771  break;
6772  }
6773 
6774  /* Child failed, reset task schedule time and exit. */
6775 
6776  g_warning ("%s: child failed\n", __FUNCTION__);
6778  g_free (task_uuid);
6779 
6780  exit (EXIT_FAILURE);
6781  }
6782  }
6783 
6784  /* Start the task. */
6785 
6786  auth_opts = omp_authenticate_info_opts_defaults;
6787  auth_opts.username = owner;
6788  if (omp_authenticate_info_ext_c (&connection, auth_opts))
6789  {
6790  g_warning ("%s: omp_authenticate failed", __FUNCTION__);
6791  g_free (task_uuid);
6792  g_free (owner);
6793  openvas_connection_free (&connection);
6794  exit (EXIT_FAILURE);
6795  }
6796 
6797  g_free (owner);
6798 
6799  if (omp_resume_task_report_c (&connection, task_uuid, NULL))
6800  {
6801  if (omp_start_task_report_c (&connection, task_uuid, NULL))
6802  {
6803  g_warning ("%s: omp_start_task and omp_resume_task failed", __FUNCTION__);
6804  g_free (task_uuid);
6805  openvas_connection_free (&connection);
6806  exit (EXIT_FAILURE);
6807  }
6808  }
6809 
6810  g_free (task_uuid);
6811  openvas_connection_free (&connection);
6812  exit (EXIT_SUCCESS);
6813  }
6814 
6815  /* Stop tasks in forked processes, now that the SQL statement is closed. */
6816 
6817  while (stops)
6818  {
6819  openvas_connection_t connection;
6820  gchar *task_uuid, *owner, *owner_uuid;
6821  GSList *head;
6822  omp_authenticate_info_opts_t auth_opts;
6823 
6824  owner = stops->data;
6825  assert (stops->next);
6826  owner_uuid = stops->next->data;
6827  assert (stops->next->next);
6828  task_uuid = stops->next->next->data;
6829 
6830  head = stops;
6831  stops = stops->next->next->next;
6832  g_slist_free_1 (head->next->next);
6833  g_slist_free_1 (head->next);
6834  g_slist_free_1 (head);
6835 
6836  /* TODO As with starts above, this should retry if the stop failed. */
6837 
6838  /* Run the callback to fork a child connected to the Manager. */
6839 
6840  switch (fork_connection (&connection, owner_uuid))
6841  {
6842  case 0:
6843  /* Child. Break, stop task, exit. */
6844  while (stops)
6845  {
6846  g_free (stops->data);
6847  stops = g_slist_delete_link (stops, stops);
6848  }
6849  break;
6850 
6851  case -1:
6852  /* Parent on error. */
6853  g_free (task_uuid);
6854  g_free (owner);
6855  g_free (owner_uuid);
6856  while (stops)
6857  {
6858  g_free (stops->data);
6859  stops = g_slist_delete_link (stops, stops);
6860  }
6861  g_warning ("%s: stop fork failed\n", __FUNCTION__);
6862  return -1;
6863  break;
6864 
6865  default:
6866  /* Parent. Continue to next task. */
6867  g_free (task_uuid);
6868  g_free (owner);
6869  g_free (owner_uuid);
6870  continue;
6871  break;
6872  }
6873 
6874  /* Stop the task. */
6875 
6876  auth_opts = omp_authenticate_info_opts_defaults;
6877  auth_opts.username = owner;
6878  if (omp_authenticate_info_ext_c (&connection, auth_opts))
6879  {
6880  g_free (task_uuid);
6881  g_free (owner);
6882  g_free (owner_uuid);
6883  openvas_connection_free (&connection);
6884  exit (EXIT_FAILURE);
6885  }
6886 
6887  if (omp_stop_task_c (&connection, task_uuid))
6888  {
6889  g_free (task_uuid);
6890  g_free (owner);
6891  g_free (owner_uuid);
6892  openvas_connection_free (&connection);
6893  exit (EXIT_FAILURE);
6894  }
6895 
6896  g_free (task_uuid);
6897  g_free (owner);
6898  g_free (owner_uuid);
6899  openvas_connection_free (&connection);
6900  exit (EXIT_SUCCESS);
6901  }
6902 
6905 
6907 
6908  return 0;
6909 }
void auto_delete_reports()
int task_schedule_periods_uuid(const gchar *)
Set the next time a scheduled task will be due.
Definition: manage_sql.c:19000
long long int schedule_t
Definition: manage.h:299
schedule_t task_schedule_uuid(const gchar *)
Return the schedule of a task.
Definition: manage_sql.c:18938
void reinit_manage_process()
Reinitialize the manage library for a process.
Definition: manage_sql.c:14347
void reschedule_task(const gchar *)
A generic SQL iterator.
Definition: iterator.h:52
int task_uuid(task_t, char **)
Return the UUID of a task.
Definition: manage_sql.c:17885
int manage_update_nvti_cache()
Update the memory cache of NVTs, if this has been requested.
Definition: manage_sql.c:14475
const char * task_schedule_iterator_task_uuid(iterator_t *)
void set_task_schedule_next_time_uuid(const gchar *task_id, time_t time)
Set the next time a scheduled task will be due.
Definition: manage_sql.c:19071
void clear_duration_schedules(task_t)
const char * task_schedule_iterator_owner_uuid(iterator_t *)
void manage_session_init(const char *uuid)
Setup session.
Definition: manage_pg.c:46
task_t task_schedule_iterator_task(iterator_t *)
void update_duration_schedule_periods(task_t)
time_t task_schedule_iterator_period_months(iterator_t *)
gboolean task_schedule_iterator_stop_due(iterator_t *)
time_t task_schedule_iterator_period(iterator_t *)
int set_task_schedule_uuid(const gchar *task_id, schedule_t schedule, int periods)
Set the schedule of a task.
Definition: manage_sql.c:18836
int init_task_schedule_iterator(iterator_t *)
const char * task_schedule_iterator_owner_name(iterator_t *)
time_t task_schedule_iterator_first_time(iterator_t *)
int schedule_duration(schedule_t)
gboolean task_schedule_iterator_start_due(iterator_t *)
void set_task_schedule_next_time(task_t task, time_t time)
Set the next time a scheduled task will be due.
Definition: manage_sql.c:19058
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
gboolean task_schedule_iterator_timed_out(iterator_t *)
time_t next_time(time_t first, int period, int period_months, const char *timezone, int periods_offset)
Calculate the next time from now given a start time and a period.
Definition: manage_utils.c:287
gboolean next(iterator_t *)
Increment an iterator.
Definition: sql.c:689
void cleanup_task_schedule_iterator(iterator_t *)
long long int task_t
Definition: manage.h:286
int set_task_schedule_periods(const gchar *, int)
Set the schedule periods of a task, given a UUID.
Definition: manage_sql.c:18869
const char * task_schedule_iterator_timezone(iterator_t *)
int schedule_period(schedule_t)
time_t task_schedule_next_time_uuid(const gchar *)
Set the next time a scheduled task will be due.
Definition: manage_sql.c:19038
Here is the call graph for this function:

◆ manage_schema()

int manage_schema ( gchar *  ,
gchar **  ,
gsize *  ,
gchar **  ,
gchar **   
)

◆ manage_send_report()

int manage_send_report ( report_t  ,
report_t  ,
report_format_t  ,
const get_data_t ,
int  ,
int  ,
int  ,
int  ,
gboolean(*)(const char *, int(*)(const char *, void *), void *)  ,
int(*)(const char *, void *)  ,
void *  ,
const char *  ,
const char *  ,
const char *  ,
int  ,
const char *  ,
const char *  ,
int  ,
int  ,
const gchar *   
)

◆ manage_session_set_timezone()

void manage_session_set_timezone ( const char *  timezone)

Setup session timezone.

Parameters
[in]timezoneTimezone.

Definition at line 63 of file manage_pg.c.

References sql().

64 {
65  sql ("SET SESSION TIME ZONE '%s';", timezone);
66  return;
67 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ manage_set_config()

int manage_set_config ( config_t  ,
const char *  ,
const char *  ,
const char *   
)

◆ manage_set_config_families()

int manage_set_config_families ( config_t  ,
GPtrArray *  ,
GPtrArray *  ,
GPtrArray *  ,
int   
)

◆ manage_set_config_nvts()

int manage_set_config_nvts ( config_t  ,
const char *  ,
GPtrArray *   
)

◆ manage_set_config_preference()

int manage_set_config_preference ( config_t  ,
const char *  ,
const char *  ,
const char *   
)

◆ manage_set_ldap_info()

void manage_set_ldap_info ( int  ,
gchar *  ,
gchar *  ,
int  ,
gchar *   
)

◆ manage_set_password()

int manage_set_password ( GSList *  ,
const gchar *  ,
const gchar *  ,
const gchar *   
)

◆ manage_set_radius_info()

void manage_set_radius_info ( int  ,
gchar *  ,
gchar *   
)

◆ manage_system_report()

int manage_system_report ( const char *  name,
const char *  duration,
const char *  start_time,
const char *  end_time,
const char *  slave_id,
char **  report 
)

Get a system report.

Parameters
[in]nameName of report.
[in]durationTime range of report, in seconds.
[in]start_timeTime of first data point in report.
[in]end_timeTime of last data point in report.
[in]slave_idID of slave to get report from. 0 for local.
[out]reportOn success, report in base64 if such a report exists else NULL. Arbitrary on error.
Returns
0 if successful (including failure to find report), -1 on error, 3 if used the fallback report, 4 could not connect to slave, 5 authentication failed, 6 failed to get system report.

Definition at line 6240 of file manage.c.

References manage_system_report(), and parse_iso_time().

Referenced by manage_system_report().

6243 {
6244  gchar *astdout = NULL;
6245  gchar *astderr = NULL;
6246  GError *err = NULL;
6247  gint exit_status;
6248  gchar *command;
6249  time_t start_time_num, end_time_num, duration_num;
6250  start_time_num = 0;
6251  end_time_num = 0;
6252  duration_num = 0;
6253 
6254  assert (name);
6255 
6256  if (duration && strcmp (duration, ""))
6257  {
6258  duration_num = atol (duration);
6259  if (duration_num == 0)
6260  return manage_system_report ("blank", NULL, NULL, NULL,
6261  NULL, report);
6262  }
6263  if (start_time && strcmp (start_time, ""))
6264  {
6265  start_time_num = parse_iso_time (start_time);
6266  if (start_time_num == 0)
6267  return manage_system_report ("blank", NULL, NULL, NULL,
6268  NULL, report);
6269  }
6270  if (end_time && strcmp (end_time, ""))
6271  {
6272  end_time_num = parse_iso_time (end_time);
6273  if (end_time_num == 0)
6274  return manage_system_report ("blank", NULL, NULL, NULL,
6275  NULL, report);
6276  }
6277 
6278  if (slave_id && strcmp (slave_id, "0"))
6279  return slave_system_report (name, duration, start_time, end_time,
6280  slave_id, report);
6281 
6282  /* For simplicity, it's up to the command to do the base64 encoding. */
6283  if (start_time && strcmp (start_time, ""))
6284  {
6285  if (end_time && strcmp (end_time, ""))
6286  {
6287  command = g_strdup_printf ("openvasmr %ld %ld %s",
6288  start_time_num,
6289  end_time_num,
6290  name);
6291  }
6292  else if (duration && strcmp (duration, ""))
6293  {
6294  command = g_strdup_printf ("openvasmr %ld %ld %s",
6295  start_time_num,
6296  start_time_num + duration_num,
6297  name);
6298  }
6299  else
6300  {
6301  command = g_strdup_printf ("openvasmr %ld %ld %s",
6302  start_time_num,
6303  start_time_num + DEFAULT_DURATION,
6304  name);
6305  }
6306  }
6307  else if (end_time && strcmp (end_time, ""))
6308  {
6309  if (duration && strcmp (duration, ""))
6310  {
6311  command = g_strdup_printf ("openvasmr %ld %ld %s",
6312  end_time_num - duration_num,
6313  end_time_num,
6314  name);
6315  }
6316  else
6317  {
6318  command = g_strdup_printf ("openvasmr %ld %ld %s",
6319  end_time_num - DEFAULT_DURATION,
6320  end_time_num,
6321  name);
6322  }
6323  }
6324  else
6325  {
6326  if (duration && strcmp (duration, ""))
6327  {
6328  command = g_strdup_printf ("openvasmr %ld %s",
6329  duration_num,
6330  name);
6331  }
6332  else
6333  {
6334  command = g_strdup_printf ("openvasmr %ld %s",
6336  name);
6337  }
6338  }
6339 
6340  g_debug (" command: %s", command);
6341 
6342  if ((g_spawn_command_line_sync (command,
6343  &astdout,
6344  &astderr,
6345  &exit_status,
6346  &err)
6347  == FALSE)
6348  || (WIFEXITED (exit_status) == 0)
6349  || WEXITSTATUS (exit_status))
6350  {
6351  int ret;
6352  double load[3];
6353  GError *get_error;
6354  gchar *output;
6355  gsize output_len;
6356  GString *buffer;
6357 
6358  g_debug ("%s: openvasmr failed with %d", __FUNCTION__, exit_status);
6359  g_debug ("%s: stdout: %s", __FUNCTION__, astdout);
6360  g_debug ("%s: stderr: %s", __FUNCTION__, astderr);
6361  g_free (astdout);
6362  g_free (astderr);
6363  g_free (command);
6364 
6365  buffer = g_string_new (FALLBACK_SYSTEM_REPORT_HEADER);
6366 
6367  ret = getloadavg (load, 3);
6368  if (ret == 3)
6369  {
6370  g_string_append_printf (buffer,
6371  "Load average for past minute: %.1f\n",
6372  load[0]);
6373  g_string_append_printf (buffer,
6374  "Load average for past 5 minutes: %.1f\n",
6375  load[1]);
6376  g_string_append_printf (buffer,
6377  "Load average for past 15 minutes: %.1f\n",
6378  load[2]);
6379  }
6380  else
6381  g_string_append (buffer, "Error getting load averages.\n");
6382 
6383  get_error = NULL;
6384  g_file_get_contents ("/proc/meminfo",
6385  &output,
6386  &output_len,
6387  &get_error);
6388  if (get_error)
6389  g_error_free (get_error);
6390  else
6391  {
6392  gchar *safe;
6393  g_string_append (buffer, "\n/proc/meminfo:\n\n");
6394  safe = g_markup_escape_text (output, strlen (output));
6395  g_free (output);
6396  g_string_append (buffer, safe);
6397  g_free (safe);
6398  }
6399 
6400  *report = g_string_free (buffer, FALSE);
6401  return 3;
6402  }
6403  g_free (astderr);
6404  g_free (command);
6405  if (astdout == NULL || strlen (astdout) == 0)
6406  {
6407  g_free (astdout);
6408  if (strcmp (name, "blank") == 0)
6409  return -1;
6410  return manage_system_report ("blank", NULL, NULL, NULL,
6411  NULL, report);
6412  }
6413  else
6414  *report = astdout;
6415  return 0;
6416 }
int parse_iso_time(const char *text_time)
Convert an ISO time into seconds since epoch.
Definition: manage_sql.c:875
#define DEFAULT_DURATION
Definition: manage.c:6222
int manage_system_report(const char *name, const char *duration, const char *start_time, const char *end_time, const char *slave_id, char **report)
Get a system report.
Definition: manage.c:6240
#define FALLBACK_SYSTEM_REPORT_HEADER
Header for fallback system report.
Definition: manage.c:6217
Here is the call graph for this function:
Here is the caller graph for this function:

◆ manage_task_remove_file()

int manage_task_remove_file ( task_t  ,
const char *   
)

◆ manage_task_update_file()

void manage_task_update_file ( task_t  ,
const char *  ,
const void *   
)

◆ manage_test_alert()

int manage_test_alert ( const char *  alert_id,
gchar **  script_message 
)

Test an alert.

Parameters
[in]alert_idAlert UUID.
[out]script_messageCustom message from the alert script.
Returns
0 success, 1 failed to find alert, 2 failed to find task, 99 permission denied, -1 error, -2 failed to find report format for alert, -3 failed to find filter for alert, -4 failed to find credential for alert, -5 alert script failed.

Definition at line 13084 of file manage_sql.c.

References acl_user_may(), find_alert_with_permission(), and task_id().

13085 {
13086  int ret;
13087  alert_t alert;
13088  task_t task;
13089  report_t report;
13090  result_t result;
13091  char *task_id, *report_id;
13092  time_t now;
13093  const char *now_string;
13094  gchar *clean;
13095 
13096  if (acl_user_may ("test_alert") == 0)
13097  return 99;
13098 
13099  if (find_alert_with_permission (alert_id, &alert, "test_alert"))
13100  return -1;
13101  if (alert == 0)
13102  return 1;
13103 
13104  if (alert_event (alert) == EVENT_NEW_SECINFO
13105  || alert_event (alert) == EVENT_UPDATED_SECINFO)
13106  {
13107  int ret;
13108  char *alert_event_data;
13109  gchar *type;
13110 
13111  alert_event_data = alert_data (alert, "event", "secinfo_type");
13112  type = g_strdup_printf ("%s_example", alert_event_data ?: "NVT");
13113  free (alert_event_data);
13114 
13115  if (alert_event (alert) == EVENT_NEW_SECINFO)
13116  ret = manage_alert (alert_id, "0", EVENT_NEW_SECINFO, (void*) type,
13117  script_message);
13118  else
13119  ret = manage_alert (alert_id, "0", EVENT_UPDATED_SECINFO, (void*) type,
13120  script_message);
13121 
13122  g_free (type);
13123 
13124  return ret;
13125  }
13126 
13127  task = make_task (g_strdup ("Temporary Task for Alert"),
13128  g_strdup (""),
13129  0, /* Exclude from assets. */
13130  0); /* Skip event and log. */
13131 
13132  report_id = openvas_uuid_make ();
13133  if (report_id == NULL)
13134  return -1;
13135  task_uuid (task, &task_id);
13136  report = make_report (task, report_id, TASK_STATUS_DONE);
13137  result = make_result (task, "127.0.0.1", "telnet (23/tcp)",
13138  "1.3.6.1.4.1.25623.1.0.10330", "Alarm",
13139  "A telnet server seems to be running on this port.");
13140  if (result == 0)
13141  {
13142  ret = -1;
13143  goto exit;
13144  }
13145  now = time (NULL);
13146  now_string = ctime (&now);
13147  if (strlen (now_string) == 0)
13148  {
13149  ret = -1;
13150  goto exit;
13151  }
13152  clean = g_strdup (now_string);
13153  if (clean[strlen (clean) - 1] == '\n')
13154  clean[strlen (clean) - 1] = '\0';
13155  set_task_start_time_otp (task, g_strdup (clean));
13156  set_scan_start_time_otp (report, g_strdup (clean));
13157  set_scan_host_start_time_otp (report, "127.0.0.1", clean);
13158  report_add_result (report, result);
13159  set_scan_host_end_time_otp (report, "127.0.0.1", clean);
13160  set_scan_end_time_otp (report, clean);
13161  g_free (clean);
13162  ret = manage_alert (alert_id,
13163  task_id,
13165  (void*) TASK_STATUS_DONE,
13166  script_message);
13167  exit:
13168  delete_task (task, 1);
13169  free (task_id);
13170  free (report_id);
13171  return ret;
13172 }
void report_add_result(report_t, result_t)
char * alert_data(alert_t alert, const char *type, const char *name)
Return data associated with an alert.
Definition: manage_sql.c:8810
void set_scan_host_start_time_otp(report_t, const char *, const char *)
long long int alert_t
Definition: manage.h:280
int delete_task(task_t, int)
long long int result_t
Definition: manage.h:287
void set_scan_start_time_otp(report_t, const char *)
void set_scan_host_end_time_otp(report_t, const char *, const char *)
result_t make_result(task_t, const char *, const char *, const char *, const char *, const char *)
long long int report_t
Definition: manage.h:288
void set_task_start_time_otp(task_t task, char *time)
Set the start time of a task.
Definition: manage_sql.c:18524
task_t make_task(char *, char *, int, int)
int task_uuid(task_t task, char **id)
Return the UUID of a task.
Definition: manage_sql.c:17885
gboolean find_alert_with_permission(const char *uuid, alert_t *alert, const char *permission)
Find a alert for a specific permission, given a UUID.
Definition: manage_sql.c:6983
report_t make_report(task_t, const char *, task_status_t)
unsigned int task_id(task_t task)
Return the identifier of a task.
Definition: manage_sql.c:17869
void set_scan_end_time_otp(report_t, const char *)
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
int manage_alert(const char *alert_id, const char *task_id, event_t event, const void *event_data, gchar **script_message)
Escalate an alert with task and event data.
Definition: manage_sql.c:12984
long long int task_t
Definition: manage.h:286
Here is the call graph for this function:

◆ manage_transaction_start()

void manage_transaction_start ( )

◆ manage_transaction_stop()

void manage_transaction_stop ( gboolean  )

Referenced by manage_check_current_task(), and process_omp_client_input().

Here is the caller graph for this function:

◆ manage_trash_resource_name()

int manage_trash_resource_name ( const char *  type,
const char *  uuid,
char **  name 
)

Get the name of a trashcan resource.

Parameters
[in]typeType.
[in]uuidUUID.
[out]nameReturn for freshly allocated name.
Returns
0 success, 1 error in type.

Definition at line 4957 of file manage_sql.c.

References LOCATION_TRASH, and resource_name().

4958 {
4959  return resource_name (type, uuid, LOCATION_TRASH, name);
4960 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int resource_name(const char *type, const char *uuid, int location, char **name)
Get the name of a resource.
Definition: manage_sql.c:4852
Here is the call graph for this function:

◆ manage_user_exists()

int manage_user_exists ( const gchar *  ,
auth_method_t   
)

◆ manage_user_hash()

gchar* manage_user_hash ( const gchar *  username)

Get user hash.

This is for "file" users, now entirely stored in db.

Parameters
[in]usernameUser name.
Returns
Hash.

Definition at line 17189 of file manage_sql.c.

References sql_quote(), and sql_string().

17190 {
17191  gchar *hash, *quoted_username;
17192  quoted_username = sql_quote (username);
17193  hash = sql_string ("SELECT password FROM users WHERE name = '%s';",
17194  quoted_username);
17195  g_free (quoted_username);
17196  return hash;
17197 }
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ manage_user_uuid()

gchar* manage_user_uuid ( const gchar *  ,
auth_method_t   
)

◆ manage_verify_scanner()

int manage_verify_scanner ( GSList *  ,
const gchar *  ,
const gchar *   
)

◆ modify_agent()

int modify_agent ( const char *  ,
const char *  ,
const char *   
)

◆ modify_alert()

int modify_alert ( const char *  alert_id,
const char *  name,
const char *  comment,
const char *  filter_id,
event_t  event,
GPtrArray *  event_data,
alert_condition_t  condition,
GPtrArray *  condition_data,
alert_method_t  method,
GPtrArray *  method_data 
)

Modify an alert.

Parameters
[in]alert_idUUID of alert.
[in]nameName of alert.
[in]commentComment on alert.
[in]filter_idFilter.
[in]eventType of event.
[in]event_dataType-specific event data.
[in]conditionEvent condition.
[in]condition_dataCondition-specific data.
[in]methodEscalation method.
[in]method_dataData for escalation method.
Returns
0 success, 1 failed to find alert, 2 alert with new name exists, 3 alert_id required, 4 failed to find filter, 5 filter type must be result if specified, 6 Provided email address not valid, 7 unexpected condition data name, 8 syntax error in condition data, 9 email subject too long, 10 email message too long, 11 failed to find filter for condition, 12 error in Send host, 13 error in Send port, 14 failed to find report format for Send method, 15 error in SCP host, 17 failed to find report format for SCP method, 18 error in SCP credential, 19 error in SCP path, 20 method does not match event, 21 condition does not match event, 31 unexpected event data name, 32 syntax error in event data, 40 invalid SMB credential , 41 invalid SMB share path, 42 invalid SMB file path, 50 invalid TippingPoint credential, 51 invalid TippingPoint hostname, 52 invalid TippingPoint certificate, 53 invalid TippingPoint TLS workaround setting. 99 permission denied, -1 internal error.

Definition at line 7894 of file manage_sql.c.

7898 {
7899  int index, ret;
7900  gchar *quoted_name, *quoted_comment, *item;
7901  alert_t alert;
7902  filter_t filter;
7903 
7904  if (alert_id == NULL)
7905  return 3;
7906 
7908 
7909  assert (current_credentials.uuid);
7910 
7911  if (acl_user_may ("modify_alert") == 0)
7912  {
7913  sql_rollback ();
7914  return 99;
7915  }
7916 
7917  ret = check_alert_params (event, condition, method);
7918  if (ret)
7919  {
7920  sql_rollback ();
7921  return ret;
7922  }
7923 
7924  alert = 0;
7925  if (find_alert_with_permission (alert_id, &alert, "modify_alert"))
7926  {
7927  sql_rollback ();
7928  return -1;
7929  }
7930 
7931  if (alert == 0)
7932  {
7933  sql_rollback ();
7934  return 1;
7935  }
7936 
7937  /* Check whether an alert with the same name exists already. */
7938  if (resource_with_name_exists (name, "alert", alert))
7939  {
7940  sql_rollback ();
7941  return 2;
7942  }
7943 
7944  /* Check filter. */
7945  filter = 0;
7946  if (event != EVENT_NEW_SECINFO && event != EVENT_UPDATED_SECINFO && filter_id
7947  && strcmp (filter_id, "0"))
7948  {
7949  char *type;
7950 
7951  if (find_filter_with_permission (filter_id, &filter, "get_filters"))
7952  {
7953  sql_rollback ();
7954  return -1;
7955  }
7956 
7957  if (filter == 0)
7958  {
7959  sql_rollback ();
7960  return 4;
7961  }
7962 
7963  /* Filter type must be report if specified. */
7964 
7965  type = sql_string ("SELECT type FROM filters WHERE id = %llu;",
7966  filter);
7967  if (type && strcasecmp (type, "result"))
7968  {
7969  free (type);
7970  sql_rollback ();
7971  return 5;
7972  }
7973  free (type);
7974  }
7975 
7976  quoted_name = sql_quote (name ?: "");
7977  quoted_comment = sql_quote (comment ? comment : "");
7978 
7979  sql ("UPDATE alerts SET"
7980  " name = '%s',"
7981  " comment = '%s',"
7982  " filter = %llu,"
7983  " modification_time = m_now ()"
7984  " WHERE id = %llu;",
7985  quoted_name,
7986  quoted_comment,
7987  filter,
7988  alert);
7989 
7990  g_free (quoted_comment);
7991  g_free (quoted_name);
7992 
7993  /* Modify alert event */
7994  if (event != EVENT_ERROR)
7995  {
7996  sql ("UPDATE alerts set event = %i WHERE id = %llu", event, alert);
7997  sql ("DELETE FROM alert_event_data WHERE alert = %llu", alert);
7998  index = 0;
7999  while ((item = (gchar*) g_ptr_array_index (event_data, index++)))
8000  {
8001  int validation_result;
8002  gchar *name = sql_quote (item);
8003  gchar *data = sql_quote (item + strlen (item) + 1);
8004 
8005  validation_result = validate_alert_event_data (name, data, event);
8006 
8007  if (validation_result)
8008  {
8009  g_free (name);
8010  g_free (data);
8011  sql_rollback ();
8012 
8013  switch (validation_result)
8014  {
8015  case 1:
8016  return 31;
8017  case 2:
8018  return 32;
8019  default:
8020  return -1;
8021  }
8022  }
8023 
8024  sql ("INSERT INTO alert_event_data (alert, name, data)"
8025  " VALUES (%llu, '%s', '%s');",
8026  alert,
8027  name,
8028  data);
8029  g_free (name);
8030  g_free (data);
8031  }
8032  }
8033 
8034  /* Modify alert condition */
8035  if (condition != ALERT_CONDITION_ERROR)
8036  {
8037  sql ("UPDATE alerts set condition = %i WHERE id = %llu",
8038  condition,
8039  alert);
8040  sql ("DELETE FROM alert_condition_data WHERE alert = %llu", alert);
8041  index = 0;
8042  while ((item = (gchar*) g_ptr_array_index (condition_data, index++)))
8043  {
8044  int validation_result;
8045  gchar *name = sql_quote (item);
8046  gchar *data = sql_quote (item + strlen (item) + 1);
8047 
8048  validation_result = validate_alert_condition_data (name, data,
8049  condition);
8050 
8051  if (validation_result)
8052  {
8053  g_free (name);
8054  g_free (data);
8055  sql_rollback ();
8056 
8057  switch (validation_result)
8058  {
8059  case 1:
8060  return 7;
8061  case 2:
8062  return 8;
8063  case 3:
8064  return 11;
8065  default:
8066  return -1;
8067  }
8068  }
8069 
8070  sql ("INSERT INTO alert_condition_data (alert, name, data)"
8071  " VALUES (%llu, '%s', '%s');",
8072  alert,
8073  name,
8074  data);
8075  g_free (name);
8076  g_free (data);
8077  }
8078  }
8079 
8080  /* Modify alert method */
8081  if (method != ALERT_METHOD_ERROR)
8082  {
8083  sql ("UPDATE alerts set method = %i WHERE id = %llu", method, alert);
8084  sql ("DELETE FROM alert_method_data WHERE alert = %llu", alert);
8085  index = 0;
8086  while ((item = (gchar*) g_ptr_array_index (method_data, index++)))
8087  {
8088  int ret;
8089  gchar *name, *data;
8090 
8091  name = sql_quote (item);
8092  data = sql_quote (item + strlen (item) + 1);
8093 
8094  if (method == ALERT_METHOD_EMAIL
8095  && strcmp (name, "to_address") == 0
8096  && validate_email_list (data))
8097  {
8098  g_free (name);
8099  g_free (data);
8100  sql_rollback ();
8101  return 6;
8102  }
8103 
8104  if (method == ALERT_METHOD_EMAIL
8105  && strcmp (name, "from_address") == 0
8106  && validate_email (data))
8107  {
8108  g_free (name);
8109  g_free (data);
8110  sql_rollback ();
8111  return 6;
8112  }
8113 
8114  if (method == ALERT_METHOD_EMAIL
8115  && strcmp (name, "subject") == 0
8116  && strlen (data) > 80)
8117  {
8118  g_free (name);
8119  g_free (data);
8120  sql_rollback ();
8121  return 9;
8122  }
8123 
8124  if (method == ALERT_METHOD_EMAIL
8125  && strcmp (name, "message") == 0
8126  && strlen (data) > max_email_message_length)
8127  {
8128  g_free (name);
8129  g_free (data);
8130  sql_rollback ();
8131  return 10;
8132  }
8133 
8134  ret = validate_scp_data (method, name, &data);
8135  if (ret)
8136  {
8137  g_free (name);
8138  g_free (data);
8139  sql_rollback ();
8140  return ret;
8141  }
8142 
8143  ret = validate_send_data (method, name, &data);
8144  if (ret)
8145  {
8146  g_free (name);
8147  g_free (data);
8148  sql_rollback ();
8149  return ret;
8150  }
8151 
8152  ret = validate_smb_data (method, name, &data);
8153  if (ret)
8154  {
8155  g_free (name);
8156  g_free (data);
8157  sql_rollback ();
8158  return ret;
8159  }
8160 
8161  ret = validate_tippingpoint_data (method, name, &data);
8162  if (ret)
8163  {
8164  g_free (name);
8165  g_free (data);
8166  sql_rollback ();
8167  return ret;
8168  }
8169 
8170  sql ("INSERT INTO alert_method_data (alert, name, data)"
8171  " VALUES (%llu, '%s', '%s');",
8172  alert,
8173  name,
8174  data);
8175  g_free (name);
8176  g_free (data);
8177  }
8178  }
8179 
8180  sql_commit ();
8181 
8182  return 0;
8183 }
long long int filter_t
Definition: manage.h:281
long long int alert_t
Definition: manage.h:280
int validate_send_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the Send method.
Definition: manage_sql.c:7304
int validate_scp_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the SCP method.
Definition: manage_sql.c:7222
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
int validate_smb_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the Send method.
Definition: manage_sql.c:7368
gboolean find_alert_with_permission(const char *uuid, alert_t *alert, const char *permission)
Find a alert for a specific permission, given a UUID.
Definition: manage_sql.c:6983
gboolean find_filter_with_permission(const char *, filter_t *, const char *)
void sql_begin_immediate()
Begin an immediate transaction.
Definition: sql_pg.c:627
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
int validate_tippingpoint_data(alert_method_t method, const gchar *name, gchar **data)
Validate method data for the TippingPoint method.
Definition: manage_sql.c:7435
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649

◆ modify_asset()

int modify_asset ( const char *  ,
const char *   
)

Referenced by migrate_152_to_153().

Here is the caller graph for this function:

◆ modify_credential()

int modify_credential ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_filter()

int modify_filter ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_group()

int modify_group ( const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_note()

int modify_note ( note_t  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
task_t  ,
result_t   
)

◆ modify_override()

int modify_override ( override_t  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
task_t  ,
result_t   
)

◆ modify_permission()

int modify_permission ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_port_list()

int modify_port_list ( const char *  ,
const char *  ,
const char *   
)

◆ modify_report()

int modify_report ( const char *  ,
const char *   
)

◆ modify_report_format()

int modify_report_format ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_role()

int modify_role ( const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_scanner()

int modify_scanner ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_schedule()

int modify_schedule ( const char *  ,
const char *  ,
const char *  ,
time_t  ,
time_t  ,
time_t  ,
time_t  ,
const char *   
)

◆ modify_setting()

int modify_setting ( const gchar *  ,
const gchar *  ,
const gchar *  ,
gchar **   
)

◆ modify_tag()

int modify_tag ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_target()

int modify_target ( const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *  ,
const char *   
)

◆ modify_task_check_config_scanner()

int modify_task_check_config_scanner ( task_t  ,
const char *  ,
const char *   
)

◆ modify_user()

int modify_user ( const gchar *  ,
gchar **  ,
const gchar *  ,
const gchar *  ,
const gchar *  ,
int  ,
const gchar *  ,
int  ,
const array_t *  ,
array_t *  ,
gchar **  ,
array_t *  ,
gchar **  ,
gchar **   
)

◆ move_task()

int move_task ( const char *  task_id,
const char *  slave_id 
)

Reassign a task to another slave.

Parameters
[in]task_idUUID of task.
[in]slave_idUUID of slave.
Returns
0 success, 1 success, process forked, 2 task not found, 3 slave not found, 4 slaves not supported by scanner, 5 task cannot be stopped currently, 6 scanner does not allow stopping, 7 new scanner does not support slaves, 98 stop and resume permission denied, 99 permission denied, -1 error.

Definition at line 5576 of file manage.c.

References acl_user_has_access_uuid(), acl_user_may(), find_scanner_with_permission(), find_task_with_permission(), resume_task(), SCANNER_TYPE_CVE, SCANNER_TYPE_OMP, SCANNER_TYPE_OPENVAS, SCANNER_UUID_DEFAULT, set_task_scanner(), stop_task_internal(), task_id(), task_run_status(), task_scanner(), TASK_STATUS_DELETE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_WAITING, TASK_STATUS_DELETE_WAITING, TASK_STATUS_REQUESTED, TASK_STATUS_RUNNING, TASK_STATUS_STOP_REQUESTED, TASK_STATUS_STOP_REQUESTED_GIVEUP, and TASK_STATUS_STOP_WAITING.

5577 {
5578  task_t task;
5579  int task_scanner_type, slave_scanner_type;
5580  scanner_t slave, scanner;
5581  task_status_t status;
5582  int should_resume_task = 0;
5583 
5584  if (task_id == NULL)
5585  return -1;
5586  if (slave_id == NULL)
5587  return -1;
5588 
5589  if (acl_user_may ("modify_task") == 0)
5590  return 99;
5591 
5592  /* Find the task. */
5593 
5594  if (find_task_with_permission (task_id, &task, "get_tasks"))
5595  return -1;
5596  if (task == 0)
5597  return 2;
5598 
5599  /* Make sure destination scanner supports slavery. */
5600 
5601  if (strcmp (slave_id, "") == 0)
5602  slave_id = SCANNER_UUID_DEFAULT;
5603 
5604  if (find_scanner_with_permission (slave_id, &slave, "get_scanners"))
5605  return -1;
5606  if (slave == 0)
5607  return 3;
5608 
5609  slave_scanner_type = scanner_type (slave);
5610  if (slave_scanner_type != SCANNER_TYPE_OPENVAS
5611  && slave_scanner_type != SCANNER_TYPE_OMP)
5612  return 7;
5613 
5614  /* Make sure current scanner supports slavery. */
5615 
5616  scanner = task_scanner (task);
5617  if (scanner == 0)
5618  return -1;
5619 
5620  task_scanner_type = scanner_type (scanner);
5621  if (task_scanner_type != SCANNER_TYPE_OPENVAS
5622  && task_scanner_type != SCANNER_TYPE_OMP)
5623  return 4;
5624 
5625  /* Stop task if required. */
5626 
5627  status = task_run_status (task);
5628 
5629  switch (status)
5630  {
5635  case TASK_STATUS_REQUESTED:
5636  // Task cannot be stopped now
5637  return 5;
5638  break;
5639  case TASK_STATUS_RUNNING:
5640  if (task_scanner_type == SCANNER_TYPE_CVE)
5641  return 6;
5642  // Check permissions to stop and resume task
5643  if (acl_user_has_access_uuid ("task", task_id, "stop_task", 0)
5644  && acl_user_has_access_uuid ("task", task_id, "resume_task", 0))
5645  {
5646  // Stop the task, wait and resume after changes
5647  stop_task_internal (task);
5648  should_resume_task = 1;
5649 
5650  status = task_run_status (task);
5651  while (status == TASK_STATUS_STOP_REQUESTED
5653  || status == TASK_STATUS_STOP_WAITING)
5654  {
5655  sleep (5);
5656  status = task_run_status (task);
5657  }
5658  }
5659  else
5660  return 98;
5661  break;
5665  while (status == TASK_STATUS_STOP_REQUESTED
5667  || status == TASK_STATUS_STOP_WAITING)
5668  {
5669  sleep (5);
5670  status = task_run_status (task);
5671  }
5672  break;
5673  default:
5674  break;
5675  }
5676 
5677  /* Update scanner. */
5678 
5679  set_task_scanner (task, slave);
5680 
5681  /* Resume task if required. */
5682 
5683  if (should_resume_task)
5684  {
5685  pid_t pid = getpid ();
5686 
5687  resume_task (task_id, NULL);
5688 
5689  if (getpid () != pid)
5690  return 1;
5691  }
5692 
5693  return 0;
5694 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
int resume_task(const char *task_id, char **report_id)
Resume a task.
Definition: manage.c:5543
int acl_user_has_access_uuid(const char *type, const char *uuid, const char *permission, int trash)
Test whether the user may access a resource.
Definition: manage_acl.c:758
void set_task_scanner(task_t, scanner_t)
Set the scanner of a task.
Definition: manage_sql.c:18208
task_status_t task_run_status(task_t)
Return the run state of a task.
Definition: manage_sql.c:18238
unsigned int task_id(task_t)
Return the identifier of a task.
Definition: manage_sql.c:17869
#define SCANNER_UUID_DEFAULT
UUID of &#39;OpenVAS Default&#39; scanner.
Definition: manage_sql.h:203
int stop_task_internal(task_t task)
Initiate stopping a task.
Definition: manage.c:5447
gboolean find_task_with_permission(const char *, task_t *, const char *)
scanner_t task_scanner(task_t)
Return the scanner of a task.
Definition: manage_sql.c:18183
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
scanner_type
Scanner types.
Definition: manage.h:267
gboolean find_scanner_with_permission(const char *, scanner_t *, const char *)
long long int task_t
Definition: manage.h:286
long long int scanner_t
Definition: manage.h:300
Here is the call graph for this function:

◆ next()

gboolean next ( iterator_t iterator)

Increment an iterator.

Parameters
[in]iteratorIterator.
Returns
TRUE if there was a next item, else FALSE.

Definition at line 689 of file sql.c.

References iterator::crypt_ctx, iterator::done, log_errors, lsc_crypt_flush(), sql_exec_internal(), and iterator::stmt.

690 {
691  int ret;
692 
693  if (iterator->done) return FALSE;
694 
696  while (1)
697  {
698  ret = sql_exec_internal (1, iterator->stmt);
699  if (ret == 0)
700  {
701  iterator->done = TRUE;
702  return FALSE;
703  }
704  if (ret == -1)
705  {
706  if (log_errors)
707  g_warning ("%s: sql_exec_internal failed\n", __FUNCTION__);
708  abort ();
709  }
710  if (ret == -2)
711  {
712  /* Busy or locked, with statement reset. Just try step again like
713  * we used to do in sql_exec_internal. We're not supposed to do this
714  * for SQLite, but it would mean quite a bit of reworking in the
715  * callers to be able to handle this case. */
716  g_warning ("%s: stepping after reset\n", __FUNCTION__);
717  continue;
718  }
719  if (ret == 2)
720  {
721  /* Schema changed, for example an internal change due to a VACUUM.
722  * Retrying will result in the same error, so abort. We lock
723  * exclusively around the VACUUM in --optimize, so hopefully when
724  * using --optimize the schema error will happen earlier, in the
725  * the init function for the iterator.
726  *
727  * This only applies to SQLite3. */
728  g_warning ("%s: schema error.\n"
729  " This is possibly due to running VACUUM while Manager\n"
730  " is running. Restart Manager. In future use\n"
731  " --optimize=vacuum instead of running VACUUM"
732  " directly.\n",
733  __FUNCTION__);
734  abort ();
735  }
736  break;
737  }
738  assert (ret == 1);
739  return TRUE;
740 }
A generic SQL iterator.
Definition: iterator.h:52
int log_errors
Whether to log errors.
Definition: sql.c:62
lsc_crypt_ctx_t crypt_ctx
Encryption context.
Definition: iterator.h:57
gboolean done
End flag.
Definition: iterator.h:55
int sql_exec_internal(int, sql_stmt_t *)
Execute a prepared statement.
Definition: sql_pg.c:482
void lsc_crypt_flush(lsc_crypt_ctx_t ctx)
Flush an LSC encryption context.
Definition: lsc_crypt.c:586
sql_stmt_t * stmt
SQL statement.
Definition: iterator.h:54
Here is the call graph for this function:

◆ next_file()

gboolean next_file ( file_iterator_t iterator)

Increment a report type iterator.

The caller must stop using this after it returns FALSE.

Parameters
[in]iteratorTask iterator.
Returns
TRUE if there was a next item, else FALSE.

Definition at line 7159 of file manage.c.

7160 {
7161  iterator->current++;
7162  if (*iterator->current == NULL) return FALSE;
7163  return TRUE;
7164 }
A generic SQL iterator.
Definition: iterator.h:52

◆ next_report()

gboolean next_report ( iterator_t ,
report_t  
)

Referenced by delete_reports().

Here is the caller graph for this function:

◆ next_report_type()

gboolean next_report_type ( report_type_iterator_t iterator)

Increment a report type iterator.

The caller must stop using this after it returns FALSE.

Parameters
[in]iteratorTask iterator.
Returns
TRUE if there was a next item, else FALSE.

Definition at line 6081 of file manage.c.

6082 {
6083  iterator->current++;
6084  if (*iterator->current == NULL) return FALSE;
6085  return TRUE;
6086 }
A generic SQL iterator.
Definition: iterator.h:52

◆ note_count()

int note_count ( const get_data_t ,
nvt_t  ,
result_t  ,
task_t   
)

◆ note_iterator_active()

int note_iterator_active ( iterator_t )

◆ note_iterator_creation_time()

time_t note_iterator_creation_time ( iterator_t )

◆ note_iterator_end_time()

time_t note_iterator_end_time ( iterator_t )

◆ note_iterator_hosts()

const char* note_iterator_hosts ( iterator_t )

◆ note_iterator_modification_time()

time_t note_iterator_modification_time ( iterator_t )

◆ note_iterator_nvt_name()

const char* note_iterator_nvt_name ( iterator_t )

◆ note_iterator_nvt_oid()

const char* note_iterator_nvt_oid ( iterator_t )

◆ note_iterator_nvt_type()

const char* note_iterator_nvt_type ( iterator_t )

◆ note_iterator_port()

const char* note_iterator_port ( iterator_t )

◆ note_iterator_result()

result_t note_iterator_result ( iterator_t )

◆ note_iterator_severity()

const char* note_iterator_severity ( iterator_t )

◆ note_iterator_task()

task_t note_iterator_task ( iterator_t )

◆ note_iterator_text()

const char* note_iterator_text ( iterator_t )

◆ note_iterator_threat()

const char* note_iterator_threat ( iterator_t )

◆ note_uuid()

int note_uuid ( note_t  ,
char **   
)

◆ nvt_info_count()

int nvt_info_count ( const get_data_t )

◆ nvt_iterator_bid()

const char* nvt_iterator_bid ( iterator_t )

◆ nvt_iterator_category()

int nvt_iterator_category ( iterator_t )

◆ nvt_iterator_copyright()

const char* nvt_iterator_copyright ( iterator_t )

◆ nvt_iterator_cve()

const char* nvt_iterator_cve ( iterator_t )

◆ nvt_iterator_cvss_base()

const char* nvt_iterator_cvss_base ( iterator_t )

◆ nvt_iterator_description()

const char* nvt_iterator_description ( iterator_t )

◆ nvt_iterator_family()

const char* nvt_iterator_family ( iterator_t )

◆ nvt_iterator_name()

const char* nvt_iterator_name ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ nvt_iterator_oid()

const char* nvt_iterator_oid ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ nvt_iterator_qod()

const char* nvt_iterator_qod ( iterator_t )

◆ nvt_iterator_qod_type()

const char* nvt_iterator_qod_type ( iterator_t iterator)

◆ nvt_iterator_solution_type()

const char* nvt_iterator_solution_type ( iterator_t )

◆ nvt_iterator_tag()

const char* nvt_iterator_tag ( iterator_t )

◆ nvt_iterator_version()

const char* nvt_iterator_version ( iterator_t )

◆ nvt_iterator_xref()

const char* nvt_iterator_xref ( iterator_t )

◆ nvt_oid()

char* nvt_oid ( const char *  )

Referenced by buffer_config_preference_xml().

Here is the caller graph for this function:

◆ nvt_preference_count()

int nvt_preference_count ( const char *  )

◆ nvt_preference_iterator_config_value()

char* nvt_preference_iterator_config_value ( iterator_t ,
config_t   
)

Referenced by buffer_config_preference_xml().

Here is the caller graph for this function:

◆ nvt_preference_iterator_name()

const char* nvt_preference_iterator_name ( iterator_t )

◆ nvt_preference_iterator_nvt()

char* nvt_preference_iterator_nvt ( iterator_t )

Referenced by buffer_config_preference_xml().

Here is the caller graph for this function:

◆ nvt_preference_iterator_real_name()

char* nvt_preference_iterator_real_name ( iterator_t )

Referenced by buffer_config_preference_xml().

Here is the caller graph for this function:

◆ nvt_preference_iterator_type()

char* nvt_preference_iterator_type ( iterator_t )

Referenced by buffer_config_preference_xml().

Here is the caller graph for this function:

◆ nvt_preference_iterator_value()

const char* nvt_preference_iterator_value ( iterator_t )

Referenced by buffer_config_preference_xml().

Here is the caller graph for this function:

◆ nvt_selector_family_count()

int nvt_selector_family_count ( const char *  ,
int   
)

Referenced by make_config_discovery(), make_config_host_discovery(), and make_config_system_discovery().

Here is the caller graph for this function:

◆ nvt_selector_family_growing()

int nvt_selector_family_growing ( const char *  ,
const char *  ,
int   
)

◆ nvt_selector_iterator_include()

int nvt_selector_iterator_include ( iterator_t )

◆ nvt_selector_iterator_name()

const char* nvt_selector_iterator_name ( iterator_t )

Referenced by migrate_3_to_4().

Here is the caller graph for this function:

◆ nvt_selector_iterator_nvt()

const char* nvt_selector_iterator_nvt ( iterator_t )

Referenced by migrate_3_to_4().

Here is the caller graph for this function:

◆ nvt_selector_iterator_type()

int nvt_selector_iterator_type ( iterator_t )

◆ nvt_selector_nvt_count()

int nvt_selector_nvt_count ( const char *  ,
const char *  ,
int   
)

Referenced by make_config_discovery(), make_config_host_discovery(), and make_config_system_discovery().

Here is the caller graph for this function:

◆ nvt_severity()

char* nvt_severity ( const char *  ,
const char *   
)

◆ nvts_feed_version()

char* nvts_feed_version ( )

◆ openvas_current_sync()

int openvas_current_sync ( const gchar *  ,
gchar **  ,
gchar **   
)

◆ openvas_get_sync_script_description()

gboolean openvas_get_sync_script_description ( const gchar *  ,
gchar **   
)

◆ openvas_get_sync_script_feed_version()

gboolean openvas_get_sync_script_feed_version ( const gchar *  ,
gchar **   
)

◆ openvas_get_sync_script_identification()

gboolean openvas_get_sync_script_identification ( const gchar *  ,
gchar **  ,
int   
)

◆ openvas_migrate_secinfo()

int openvas_migrate_secinfo ( const gchar *  ,
int   
)

◆ openvas_sync_feed()

int openvas_sync_feed ( const gchar *  ,
const gchar *  ,
int   
)

◆ openvas_sync_script_perform_selftest()

gboolean openvas_sync_script_perform_selftest ( const gchar *  ,
gchar **   
)

◆ os_host_iterator_severity()

const char* os_host_iterator_severity ( iterator_t )

◆ osp_get_details_from_iterator()

int osp_get_details_from_iterator ( iterator_t ,
char **  ,
GSList **   
)

◆ osp_get_version_from_iterator()

int osp_get_version_from_iterator ( iterator_t ,
char **  ,
char **  ,
char **  ,
char **  ,
char **  ,
char **   
)

◆ osp_scanner_connect()

osp_connection_t* osp_scanner_connect ( scanner_t  )

◆ ovaldef_cves()

char* ovaldef_cves ( const char *  )

◆ ovaldef_info_count()

int ovaldef_info_count ( const get_data_t get)

◆ ovaldef_info_iterator_class()

const char* ovaldef_info_iterator_class ( iterator_t )

◆ ovaldef_info_iterator_cve_refs()

const char* ovaldef_info_iterator_cve_refs ( iterator_t )

◆ ovaldef_info_iterator_deprecated()

const char* ovaldef_info_iterator_deprecated ( iterator_t )

◆ ovaldef_info_iterator_description()

const char* ovaldef_info_iterator_description ( iterator_t )

◆ ovaldef_info_iterator_file()

const char* ovaldef_info_iterator_file ( iterator_t )

◆ ovaldef_info_iterator_max_cvss()

const char* ovaldef_info_iterator_max_cvss ( iterator_t )

◆ ovaldef_info_iterator_status()

const char* ovaldef_info_iterator_status ( iterator_t )

◆ ovaldef_info_iterator_title()

const char* ovaldef_info_iterator_title ( iterator_t )

◆ ovaldef_info_iterator_version()

const char* ovaldef_info_iterator_version ( iterator_t )

◆ ovaldef_severity()

char* ovaldef_severity ( const char *  )

◆ ovaldef_uuid()

char* ovaldef_uuid ( const char *  ,
const char *   
)

◆ ovaldef_version()

char* ovaldef_version ( const char *  )

◆ ovaldi_file_iterator_name()

const char* ovaldi_file_iterator_name ( iterator_t )

Referenced by get_ovaldi_files().

Here is the caller graph for this function:

◆ override_count()

int override_count ( const get_data_t ,
nvt_t  ,
result_t  ,
task_t   
)

◆ override_iterator_active()

int override_iterator_active ( iterator_t )

◆ override_iterator_creation_time()

time_t override_iterator_creation_time ( iterator_t )

◆ override_iterator_end_time()

time_t override_iterator_end_time ( iterator_t )

◆ override_iterator_hosts()

const char* override_iterator_hosts ( iterator_t )

◆ override_iterator_modification_time()

time_t override_iterator_modification_time ( iterator_t )

◆ override_iterator_new_severity()

const char* override_iterator_new_severity ( iterator_t )

◆ override_iterator_new_threat()

const char* override_iterator_new_threat ( iterator_t )

◆ override_iterator_nvt_name()

const char* override_iterator_nvt_name ( iterator_t )

◆ override_iterator_nvt_oid()

const char* override_iterator_nvt_oid ( iterator_t )

◆ override_iterator_nvt_type()

const char* override_iterator_nvt_type ( iterator_t )

◆ override_iterator_port()

const char* override_iterator_port ( iterator_t )

◆ override_iterator_result()

result_t override_iterator_result ( iterator_t )

◆ override_iterator_severity()

const char* override_iterator_severity ( iterator_t )

◆ override_iterator_task()

task_t override_iterator_task ( iterator_t )

◆ override_iterator_text()

const char* override_iterator_text ( iterator_t )

◆ override_iterator_threat()

const char* override_iterator_threat ( iterator_t )

◆ override_uuid()

int override_uuid ( override_t  ,
char **   
)

◆ param_option_iterator_value()

const char* param_option_iterator_value ( iterator_t )

◆ parse_tags()

void parse_tags ( const char *  scanner_tags,
gchar **  tags,
gchar **  cvss_base 
)

Split up the tags received from the scanner.

Parameters
[in]scanner_tagsThe tags sent by the scanner.
[out]tagsTags.
[out]cvss_baseCVSS base.

Definition at line 7241 of file manage.c.

Referenced by migrate_16_to_17().

7242 {
7243  gchar **split, **point;
7244  GString *tags_buffer;
7245  gboolean first;
7246 
7247  tags_buffer = g_string_new ("");
7248  split = g_strsplit (scanner_tags, "|", 0);
7249  point = split;
7250  *cvss_base = NULL;
7251  first = TRUE;
7252 
7253  while (*point)
7254  {
7255  if (strncmp (*point, "cvss_base=", strlen ("cvss_base=")) == 0)
7256  {
7257  /* Skip this tag. */
7258  }
7259  else if (strncmp (*point,
7260  "cvss_base_vector=",
7261  strlen ("cvss_base_vector="))
7262  == 0)
7263  {
7264  if (*cvss_base == NULL)
7265  *cvss_base = g_strdup_printf ("%.1f",
7266  get_cvss_score_from_base_metrics
7267  (*point
7268  + strlen ("cvss_base_vector=")));
7269  if (first)
7270  first = FALSE;
7271  else
7272  g_string_append_c (tags_buffer, '|');
7273  g_string_append (tags_buffer, *point);
7274  }
7275  else
7276  {
7277  if (first)
7278  first = FALSE;
7279  else
7280  g_string_append_c (tags_buffer, '|');
7281  g_string_append (tags_buffer, *point);
7282  }
7283  point++;
7284  }
7285 
7286  if (tags_buffer->len == 0)
7287  {
7288  g_string_free (tags_buffer, TRUE);
7289  *tags = g_strdup ("NOTAG");
7290  }
7291  else
7292  *tags = g_string_free (tags_buffer, FALSE);
7293  g_strfreev (split);
7294 }
Here is the caller graph for this function:

◆ permission_count()

int permission_count ( const get_data_t )

◆ permission_in_use()

int permission_in_use ( permission_t  )

◆ permission_is_admin()

int permission_is_admin ( const char *  )

◆ permission_iterator_resource_in_trash()

int permission_iterator_resource_in_trash ( iterator_t )

◆ permission_iterator_resource_name()

const char* permission_iterator_resource_name ( iterator_t )

◆ permission_iterator_resource_orphan()

int permission_iterator_resource_orphan ( iterator_t )

◆ permission_iterator_resource_readable()

int permission_iterator_resource_readable ( iterator_t )

◆ permission_iterator_resource_type()

const char* permission_iterator_resource_type ( iterator_t )

◆ permission_iterator_resource_uuid()

const char* permission_iterator_resource_uuid ( iterator_t )

◆ permission_iterator_subject_in_trash()

int permission_iterator_subject_in_trash ( iterator_t )

◆ permission_iterator_subject_name()

const char* permission_iterator_subject_name ( iterator_t )

◆ permission_iterator_subject_readable()

int permission_iterator_subject_readable ( iterator_t )

◆ permission_iterator_subject_type()

const char* permission_iterator_subject_type ( iterator_t )

◆ permission_iterator_subject_uuid()

const char* permission_iterator_subject_uuid ( iterator_t )

◆ permission_name()

char* permission_name ( permission_t  )

◆ permission_uuid()

char* permission_uuid ( permission_t  )

◆ permission_writable()

int permission_writable ( permission_t  )

◆ port_list_count()

int port_list_count ( const get_data_t )

◆ port_list_in_use()

int port_list_in_use ( port_list_t  )

◆ port_list_is_predefined()

int port_list_is_predefined ( port_list_t  )

◆ port_list_iterator_count_all()

int port_list_iterator_count_all ( iterator_t )

◆ port_list_iterator_count_tcp()

int port_list_iterator_count_tcp ( iterator_t )

◆ port_list_iterator_count_udp()

int port_list_iterator_count_udp ( iterator_t )

◆ port_list_target_iterator_name()

const char* port_list_target_iterator_name ( iterator_t )

◆ port_list_target_iterator_readable()

int port_list_target_iterator_readable ( iterator_t )

◆ port_list_target_iterator_uuid()

const char* port_list_target_iterator_uuid ( iterator_t )

◆ port_list_uuid()

char* port_list_uuid ( port_list_t  )

◆ port_list_writable()

int port_list_writable ( port_list_t  )

◆ port_name_formatted()

char* port_name_formatted ( const char *  field)

Returns formatted port number, protocol and iana name from.

field in "number/proto" form.

Parameters
fieldNumber/Protocol string.
Returns
Formatted port name string, NULL if error.

Definition at line 6378 of file manage_sql.c.

References manage_port_name().

6379 {
6380  int number;
6381  char *protocol, *port_name;
6382 
6383  if (field == NULL)
6384  return NULL;
6385 
6386  protocol = g_newa (char, strlen (field));
6387 
6388  if (sscanf (field, "%i/%s",
6389  &number, protocol)
6390  != 2)
6391  return g_strdup (field);
6392 
6393  port_name = manage_port_name (number, protocol);
6394  if (port_name)
6395  {
6396  char *formatted = g_strdup_printf
6397  ("%i/%s (IANA: %s)",
6398  number,
6399  protocol,
6400  port_name);
6401  free (port_name);
6402  return formatted;
6403  }
6404  else
6405  return g_strdup (field);
6406 }
char * manage_port_name(int number, const char *protocol)
Returns associated name for a tcp/ip port.
Definition: manage_sql.c:6359
Here is the call graph for this function:

◆ port_range_iterator_comment()

const char* port_range_iterator_comment ( iterator_t )

◆ port_range_iterator_end()

const char* port_range_iterator_end ( iterator_t )

◆ port_range_iterator_start()

const char* port_range_iterator_start ( iterator_t )

◆ port_range_iterator_type()

const char* port_range_iterator_type ( iterator_t )

◆ port_range_iterator_type_int()

port_protocol_t port_range_iterator_type_int ( iterator_t iterator)

◆ port_range_iterator_uuid()

const char* port_range_iterator_uuid ( iterator_t )

◆ port_range_uuid()

char* port_range_uuid ( port_range_t  )

◆ preference_iterator_default()

const char* preference_iterator_default ( iterator_t )

◆ preference_iterator_hr_name()

const char* preference_iterator_hr_name ( iterator_t )

◆ preference_iterator_name()

const char* preference_iterator_name ( iterator_t )

◆ preference_iterator_type()

const char* preference_iterator_type ( iterator_t )

◆ preference_iterator_value()

const char* preference_iterator_value ( iterator_t )

◆ prognosis_iterator_cpe()

const char* prognosis_iterator_cpe ( iterator_t )

◆ prognosis_iterator_cve()

const char* prognosis_iterator_cve ( iterator_t )

◆ prognosis_iterator_cvss_double()

double prognosis_iterator_cvss_double ( iterator_t )

◆ prognosis_iterator_description()

const char* prognosis_iterator_description ( iterator_t )

◆ qod_from_type()

int qod_from_type ( const char *  )

Referenced by migrate_143_to_144().

Here is the caller graph for this function:

◆ report_add_result()

void report_add_result ( report_t  ,
result_t   
)

◆ report_cache_counts()

void report_cache_counts ( report_t  ,
int  ,
int  ,
const char *   
)

◆ report_clear_count_cache()

void report_clear_count_cache ( report_t  ,
int  ,
int  ,
const char *   
)

◆ report_count()

int report_count ( const get_data_t )

◆ report_counts()

int report_counts ( const char *  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *  ,
double *  ,
int  ,
int  ,
int   
)

◆ report_counts_build_iterator_min_qod()

int report_counts_build_iterator_min_qod ( iterator_t )

◆ report_counts_build_iterator_override()

int report_counts_build_iterator_override ( iterator_t )

◆ report_counts_build_iterator_user()

user_t report_counts_build_iterator_user ( iterator_t )

◆ report_counts_id()

int report_counts_id ( report_t  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *  ,
double *  ,
const get_data_t ,
const char *   
)

◆ report_counts_id_no_filt()

int report_counts_id_no_filt ( report_t  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *  ,
int *  ,
double *  ,
const get_data_t ,
const char *   
)

◆ report_format_active()

int report_format_active ( report_format_t  )

◆ report_format_alert_iterator_name()

const char* report_format_alert_iterator_name ( iterator_t )

◆ report_format_alert_iterator_readable()

int report_format_alert_iterator_readable ( iterator_t )

◆ report_format_alert_iterator_uuid()

const char* report_format_alert_iterator_uuid ( iterator_t )

◆ report_format_content_type()

char* report_format_content_type ( report_format_t  )

◆ report_format_count()

int report_format_count ( const get_data_t )

◆ report_format_extension()

char* report_format_extension ( report_format_t  )

◆ report_format_global()

int report_format_global ( report_format_t  )

◆ report_format_in_use()

int report_format_in_use ( report_format_t  )

◆ report_format_iterator_active()

int report_format_iterator_active ( iterator_t )

◆ report_format_iterator_content_type()

const char* report_format_iterator_content_type ( iterator_t )

◆ report_format_iterator_description()

const char* report_format_iterator_description ( iterator_t )

◆ report_format_iterator_extension()

const char* report_format_iterator_extension ( iterator_t )

◆ report_format_iterator_signature()

const char* report_format_iterator_signature ( iterator_t )

◆ report_format_iterator_summary()

const char* report_format_iterator_summary ( iterator_t )

◆ report_format_iterator_trust()

const char* report_format_iterator_trust ( iterator_t )

◆ report_format_iterator_trust_time()

time_t report_format_iterator_trust_time ( iterator_t )

◆ report_format_name()

char* report_format_name ( report_format_t  )

◆ report_format_owner_uuid()

char* report_format_owner_uuid ( report_format_t  )

Referenced by init_report_format_file_iterator().

Here is the caller graph for this function:

◆ report_format_param_iterator_fallback()

const char* report_format_param_iterator_fallback ( iterator_t )

◆ report_format_param_iterator_name()

const char* report_format_param_iterator_name ( iterator_t )

◆ report_format_param_iterator_param()

report_format_param_t report_format_param_iterator_param ( iterator_t )

◆ report_format_param_iterator_type()

report_format_param_type_t report_format_param_iterator_type ( iterator_t )

◆ report_format_param_iterator_type_max()

long long int report_format_param_iterator_type_max ( iterator_t )

◆ report_format_param_iterator_type_min()

long long int report_format_param_iterator_type_min ( iterator_t )

◆ report_format_param_iterator_type_name()

const char* report_format_param_iterator_type_name ( iterator_t )

◆ report_format_param_iterator_type_regex()

const char* report_format_param_iterator_type_regex ( iterator_t )

◆ report_format_param_iterator_value()

const char* report_format_param_iterator_value ( iterator_t )

◆ report_format_param_type_from_name()

report_format_param_type_t report_format_param_type_from_name ( const char *  name)

Get a report format param type from a name.

Parameters
[in]nameParam type name.
Returns
The param type.

Definition at line 6978 of file manage.c.

References REPORT_FORMAT_PARAM_TYPE_BOOLEAN, REPORT_FORMAT_PARAM_TYPE_ERROR, REPORT_FORMAT_PARAM_TYPE_INTEGER, REPORT_FORMAT_PARAM_TYPE_REPORT_FORMAT_LIST, REPORT_FORMAT_PARAM_TYPE_SELECTION, REPORT_FORMAT_PARAM_TYPE_STRING, and REPORT_FORMAT_PARAM_TYPE_TEXT.

6979 {
6980  if (strcmp (name, "boolean") == 0)
6982  if (strcmp (name, "integer") == 0)
6984  if (strcmp (name, "selection") == 0)
6986  if (strcmp (name, "string") == 0)
6988  if (strcmp (name, "text") == 0)
6990  if (strcmp (name, "report_format_list") == 0)
6993 }

◆ report_format_param_type_name()

const char* report_format_param_type_name ( report_format_param_type_t  type)

Get the name of a report format param type.

Parameters
[in]typeParam type.
Returns
The name of the param type.

Definition at line 6947 of file manage.c.

References REPORT_FORMAT_PARAM_TYPE_BOOLEAN, REPORT_FORMAT_PARAM_TYPE_ERROR, REPORT_FORMAT_PARAM_TYPE_INTEGER, REPORT_FORMAT_PARAM_TYPE_REPORT_FORMAT_LIST, REPORT_FORMAT_PARAM_TYPE_SELECTION, REPORT_FORMAT_PARAM_TYPE_STRING, and REPORT_FORMAT_PARAM_TYPE_TEXT.

6948 {
6949  switch (type)
6950  {
6952  return "boolean";
6954  return "integer";
6956  return "selection";
6958  return "string";
6960  return "text";
6962  return "report_format_list";
6963  default:
6964  assert (0);
6966  return "ERROR";
6967  }
6968 }

◆ report_format_predefined()

int report_format_predefined ( report_format_t  )

Referenced by init_report_format_file_iterator().

Here is the caller graph for this function:

◆ report_format_trust()

int report_format_trust ( report_format_t  )

◆ report_format_uuid()

char* report_format_uuid ( report_format_t  )

Referenced by check_generate_scripts(), and init_report_format_file_iterator().

Here is the caller graph for this function:

◆ report_format_writable()

int report_format_writable ( report_format_t  )

◆ report_host_count()

int report_host_count ( report_t  )

Referenced by sql_report_host_count().

Here is the caller graph for this function:

◆ report_host_dead()

int report_host_dead ( report_host_t  )

◆ report_host_noticeable()

int report_host_noticeable ( report_t  ,
const gchar *   
)

◆ report_host_result_count()

int report_host_result_count ( report_host_t  )

◆ report_host_set_end_time()

void report_host_set_end_time ( report_host_t  ,
time_t   
)

◆ report_iterator_uuid()

const char* report_iterator_uuid ( iterator_t )

◆ report_path_task_uuid()

gchar* report_path_task_uuid ( gchar *  )

◆ report_progress()

int report_progress ( report_t  ,
task_t  ,
gchar **   
)

Referenced by sql_report_progress().

Here is the caller graph for this function:

◆ report_result_host_count()

int report_result_host_count ( report_t  ,
int   
)

Referenced by sql_report_result_host_count().

Here is the caller graph for this function:

◆ report_results_filter_term()

gchar* report_results_filter_term ( int  ,
int  ,
int  ,
int  ,
int   
)

Create a basic filter term to get report results.

Definition at line 752 of file manage.c.

Referenced by report_results_get_data().

754 {
755  return g_strdup_printf ("first=%d rows=%d"
756  " apply_overrides=%d autofp=%d min_qod=%d",
757  first, rows,
758  apply_overrides, autofp, min_qod);
759 }
Here is the caller graph for this function:

◆ report_results_get_data()

get_data_t* report_results_get_data ( int  ,
int  ,
int  ,
int  ,
int   
)

Create a new basic get_data_t struct to get report results.

Definition at line 766 of file manage.c.

References report_results_filter_term().

768 {
769  get_data_t* get = malloc (sizeof (get_data_t));
770  memset (get, 0, sizeof (get_data_t));
771  get->type = g_strdup ("result");
772  get->filter = report_results_filter_term (first, rows,
773  apply_overrides, autofp, min_qod);
774 
775  return get;
776 }
Command data for a get command.
Definition: manage.h:310
gchar * report_results_filter_term(int first, int rows, int apply_overrides, int autofp, int min_qod)
Create a basic filter term to get report results.
Definition: manage.c:752
Here is the call graph for this function:

◆ report_scan_result_count()

int report_scan_result_count ( report_t  ,
const char *  ,
const char *  ,
int  ,
const char *  ,
const char *  ,
int  ,
int  ,
int *   
)

◆ report_scan_run_status()

int report_scan_run_status ( report_t  ,
int *   
)

◆ report_set_slave_host()

void report_set_slave_host ( report_t  ,
const gchar *   
)

◆ report_set_slave_name()

void report_set_slave_name ( report_t  ,
const gchar *   
)

◆ report_set_slave_password()

void report_set_slave_password ( report_t  ,
const gchar *   
)

◆ report_set_slave_port()

void report_set_slave_port ( report_t  ,
int   
)

◆ report_set_slave_username()

void report_set_slave_username ( report_t  ,
const gchar *   
)

◆ report_set_slave_uuid()

void report_set_slave_uuid ( report_t  ,
const gchar *   
)

◆ report_set_source_iface()

void report_set_source_iface ( report_t  ,
const gchar *   
)

◆ report_severity()

double report_severity ( report_t  ,
int  ,
int   
)

Referenced by sql_report_severity(), and task_severity_double().

Here is the caller graph for this function:

◆ report_slave_progress()

int report_slave_progress ( report_t  )

◆ report_slave_task_uuid()

char* report_slave_task_uuid ( report_t  )

◆ report_task()

gboolean report_task ( report_t  ,
task_t  
)

Referenced by acl_user_has_access_uuid(), and sql_report_progress().

Here is the caller graph for this function:

◆ report_timestamp()

int report_timestamp ( const char *  ,
gchar **   
)

◆ report_type_iterator_name()

const char* report_type_iterator_name ( report_type_iterator_t iterator)

Return the name from a report type iterator.

Parameters
[in]iteratorIterator.
Returns
Name.

Definition at line 6096 of file manage.c.

6097 {
6098  return (const char*) *iterator->current;
6099 }
A generic SQL iterator.
Definition: iterator.h:52

◆ report_type_iterator_title()

const char* report_type_iterator_title ( report_type_iterator_t iterator)

Return the title from a report type iterator.

Parameters
[in]iteratorIterator.
Returns
Title.

Definition at line 6109 of file manage.c.

6110 {
6111  const char *name = *iterator->current;
6112  return name + strlen (name) + 1;
6113 }
A generic SQL iterator.
Definition: iterator.h:52

◆ report_uuid()

char* report_uuid ( report_t  )

◆ reports_build_count_cache()

void reports_build_count_cache ( int  ,
int *   
)

◆ reports_clear_count_cache()

void reports_clear_count_cache ( int  )

◆ reports_clear_count_cache_for_override()

void reports_clear_count_cache_for_override ( override_t  ,
int   
)

◆ request_delete_task()

int request_delete_task ( task_t )

◆ request_delete_task_uuid()

int request_delete_task_uuid ( const char *  ,
int   
)

◆ reset_task()

void reset_task ( task_t  )

◆ resource_count()

int resource_count ( const char *  type,
const get_data_t get 
)

Return number of resources of a certain type for current user.

Parameters
[in]typeType.
[in]getGET params.
Returns
The number of resources associated with the current user.

Definition at line 17704 of file manage_sql.c.

References get_data_t::filter, SEVERITY_ERROR, get_data_t::trash, and type_owned().

17705 {
17706  static const char *filter_columns[] = { "owner", NULL };
17707  static column_t select_columns[] = {{ "owner", NULL }, { NULL, NULL }};
17708  get_data_t count_get;
17709 
17710  const char *extra_where;
17711 
17712  memset (&count_get, '\0', sizeof (count_get));
17713  count_get.trash = get->trash;
17714  if (type_owned (type))
17715  count_get.filter = "rows=-1 first=1 permission=any owner=any";
17716  else
17717  count_get.filter = "rows=-1 first=1 permission=any";
17718 
17719  if (strcmp (type, "task") == 0)
17720  {
17721  extra_where = (get->trash
17722  ? " AND hidden = 2"
17723  : " AND hidden = 0");
17724  }
17725  else if (strcmp (type, "report") == 0)
17726  {
17727  extra_where = " AND (SELECT hidden FROM tasks"
17728  " WHERE tasks.id = task)"
17729  " = 0";
17730  }
17731  else if (strcmp (type, "result") == 0)
17732  {
17733  extra_where = " AND (severity != " G_STRINGIFY (SEVERITY_ERROR) ")"
17734  " AND (SELECT hidden FROM tasks"
17735  " WHERE tasks.id = task)"
17736  " = 0";
17737  }
17738  else
17739  extra_where = NULL;
17740 
17741  return count (get->subtype ? get->subtype : type,
17742  &count_get,
17743  type_owned (type) ? select_columns : NULL,
17744  type_owned (type) ? select_columns : NULL,
17745  type_owned (type) ? filter_columns : NULL,
17746  0, NULL,
17747  extra_where,
17748  type_owned (type));
17749 }
int trash
Boolean. Whether to return from trashcan.
Definition: manage.h:318
gchar * subtype
Subtype, or NULL.
Definition: manage.h:320
Command data for a get command.
Definition: manage.h:310
Iterator column.
Definition: manage_sql.c:1512
#define SEVERITY_ERROR
Definition: manage_utils.h:38
int type_owned(const char *type)
Check whether a resource type has an owner.
Definition: manage_sql.c:4376
char * filter
Filter term.
Definition: manage.h:314
Here is the call graph for this function:

◆ resource_id_exists()

int resource_id_exists ( const char *  type,
const char *  id 
)

Test whether a resource of the given type and unique ID exists.

Parameters
[in]typeType.
[in]idUnique ID.
Returns
1 if the resource exists, 0 otherwise.

Definition at line 17760 of file manage_sql.c.

References sql_int().

17761 {
17762  return !!sql_int ("SELECT count(*)"
17763  " FROM %ss"
17764  " WHERE uuid='%s'"
17765  " %s;",
17766  type,
17767  id,
17768  (strcmp (type, "task") == 0) ? "AND hidden=0" : "");
17769 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ resource_tag_count()

int resource_tag_count ( const char *  ,
resource_t  ,
int   
)

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ resource_tag_iterator_comment()

const char* resource_tag_iterator_comment ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ resource_tag_iterator_name()

const char* resource_tag_iterator_name ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ resource_tag_iterator_uuid()

const char* resource_tag_iterator_uuid ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ resource_tag_iterator_value()

const char* resource_tag_iterator_value ( iterator_t )

Referenced by get_nvti_xml().

Here is the caller graph for this function:

◆ result_count()

int result_count ( const get_data_t ,
report_t  ,
const char *   
)

◆ result_detection_reference()

int result_detection_reference ( result_t  ,
char **  ,
char **  ,
char **  ,
char **  ,
char **   
)

◆ result_host_asset_id()

char* result_host_asset_id ( const char *  ,
result_t   
)

◆ result_iterator_date()

const char* result_iterator_date ( iterator_t )

◆ result_iterator_descr()

const char* result_iterator_descr ( iterator_t )

Referenced by buffer_results_xml().

Here is the caller graph for this function:

◆ result_iterator_host()

const char* result_iterator_host ( iterator_t )

◆ result_iterator_level()

const char* result_iterator_level ( iterator_t )

◆ result_iterator_nvt_bid()

const char* result_iterator_nvt_bid ( iterator_t )

◆ result_iterator_nvt_cve()

const char* result_iterator_nvt_cve ( iterator_t )

◆ result_iterator_nvt_cvss_base()

const char* result_iterator_nvt_cvss_base ( iterator_t )

◆ result_iterator_nvt_family()

const char* result_iterator_nvt_family ( iterator_t )

◆ result_iterator_nvt_name()

const char* result_iterator_nvt_name ( iterator_t )

◆ result_iterator_nvt_oid()

const char* result_iterator_nvt_oid ( iterator_t )

◆ result_iterator_nvt_tag()

const char* result_iterator_nvt_tag ( iterator_t )

◆ result_iterator_nvt_xref()

const char* result_iterator_nvt_xref ( iterator_t )

◆ result_iterator_original_level()

const char* result_iterator_original_level ( iterator_t )

◆ result_iterator_original_severity()

const char* result_iterator_original_severity ( iterator_t )

◆ result_iterator_original_type()

const char* result_iterator_original_type ( iterator_t )

◆ result_iterator_port()

const char* result_iterator_port ( iterator_t )

◆ result_iterator_qod()

const char* result_iterator_qod ( iterator_t )

Referenced by buffer_results_xml().

Here is the caller graph for this function:

◆ result_iterator_qod_type()

const char* result_iterator_qod_type ( iterator_t )

Referenced by buffer_results_xml().

Here is the caller graph for this function:

◆ result_iterator_report()

report_t result_iterator_report ( iterator_t )

◆ result_iterator_result()

result_t result_iterator_result ( iterator_t )

Referenced by buffer_results_xml().

Here is the caller graph for this function:

◆ result_iterator_scan_nvt_version()

const char* result_iterator_scan_nvt_version ( iterator_t )

◆ result_iterator_severity()

const char* result_iterator_severity ( iterator_t )

◆ result_iterator_severity_double()

double result_iterator_severity_double ( iterator_t )

◆ result_iterator_task()

task_t result_iterator_task ( iterator_t )

◆ result_iterator_type()

const char* result_iterator_type ( iterator_t )

◆ result_uuid()

int result_uuid ( result_t  ,
char **   
)

◆ resume_task()

int resume_task ( const char *  task_id,
char **  report_id 
)

Resume a task.

Parameters
[in]task_idTask UUID.
[out]report_idIf successful, ID of the resultant report.
Returns
22 caller error (task must be in "stopped" state), or any start_task error.

Definition at line 5543 of file manage.c.

References acl_user_may(), find_task_with_permission(), task_id(), task_run_status(), and TASK_STATUS_STOPPED.

Referenced by move_task().

5544 {
5545  task_t task;
5546  task_status_t run_status;
5547 
5548  if (acl_user_may ("resume_task") == 0)
5549  return 99;
5550 
5551  task = 0;
5552  if (find_task_with_permission (task_id, &task, "resume_task"))
5553  return -1;
5554  if (task == 0)
5555  return 3;
5556 
5557  run_status = task_run_status (task);
5558  if (run_status == TASK_STATUS_STOPPED)
5559  return run_task (task_id, report_id, 1);
5560  return 22;
5561 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
task_status_t task_run_status(task_t)
Return the run state of a task.
Definition: manage_sql.c:18238
unsigned int task_id(task_t)
Return the identifier of a task.
Definition: manage_sql.c:17869
gboolean find_task_with_permission(const char *, task_t *, const char *)
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
long long int task_t
Definition: manage.h:286
Here is the call graph for this function:
Here is the caller graph for this function:

◆ role_count()

int role_count ( const get_data_t )

◆ role_in_use()

int role_in_use ( role_t  )

◆ role_users()

gchar* role_users ( role_t  )

◆ role_uuid()

char* role_uuid ( role_t  )

◆ role_writable()

int role_writable ( role_t  )

◆ run_status_name()

const char* run_status_name ( task_status_t  status)

Get the name of a run status.

Parameters
[in]statusRun status.
Returns
The name of the status (for example, "Done" or "Running").

Definition at line 1253 of file manage.c.

References TASK_STATUS_DELETE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_WAITING, TASK_STATUS_DELETE_WAITING, TASK_STATUS_DONE, TASK_STATUS_NEW, TASK_STATUS_REQUESTED, TASK_STATUS_RUNNING, TASK_STATUS_STOP_REQUESTED, TASK_STATUS_STOP_REQUESTED_GIVEUP, TASK_STATUS_STOP_WAITING, and TASK_STATUS_STOPPED.

Referenced by sql_run_status_name().

1254 {
1255  switch (status)
1256  {
1259  return "Delete Requested";
1262  return "Ultimate Delete Requested";
1263  case TASK_STATUS_DONE: return "Done";
1264  case TASK_STATUS_NEW: return "New";
1265 
1266  case TASK_STATUS_REQUESTED: return "Requested";
1267 
1268  case TASK_STATUS_RUNNING: return "Running";
1269 
1273  return "Stop Requested";
1274 
1275  case TASK_STATUS_STOPPED: return "Stopped";
1276  default: return "Internal Error";
1277  }
1278 }
Here is the caller graph for this function:

◆ save_tasks()

int save_tasks ( )

◆ scan_end_time()

char* scan_end_time ( report_t  )

◆ scan_end_time_uuid()

char* scan_end_time_uuid ( const char *  )

◆ scan_host_end_time()

int scan_host_end_time ( report_t  ,
const char *   
)

Referenced by update_end_times().

Here is the caller graph for this function:

◆ scan_start_time()

char* scan_start_time ( report_t  )

◆ scan_start_time_epoch()

int scan_start_time_epoch ( report_t  )

◆ scan_start_time_uuid()

char* scan_start_time_uuid ( const char *  )

◆ scanner_ca_pub()

char* scanner_ca_pub ( scanner_t  )

Referenced by manage_scanner_set().

Here is the caller graph for this function:

◆ scanner_count()

int scanner_count ( const get_data_t )

◆ scanner_host()

char* scanner_host ( scanner_t  )

Referenced by manage_scanner_set().

Here is the caller graph for this function:

◆ scanner_in_use()

int scanner_in_use ( scanner_t  )

◆ scanner_iterator_ca_pub()

const char* scanner_iterator_ca_pub ( iterator_t )

◆ scanner_iterator_credential()

credential_t scanner_iterator_credential ( iterator_t )

◆ scanner_iterator_credential_name()

const char* scanner_iterator_credential_name ( iterator_t )

◆ scanner_iterator_credential_trash()

int scanner_iterator_credential_trash ( iterator_t )

◆ scanner_iterator_host()

const char* scanner_iterator_host ( iterator_t )

◆ scanner_iterator_key_priv()

const char* scanner_iterator_key_priv ( iterator_t )

◆ scanner_iterator_key_pub()

const char* scanner_iterator_key_pub ( iterator_t )

◆ scanner_iterator_port()

int scanner_iterator_port ( iterator_t )

◆ scanner_iterator_type()

int scanner_iterator_type ( iterator_t )

◆ scanner_key_priv()

char* scanner_key_priv ( scanner_t  )

Referenced by manage_scanner_set().

Here is the caller graph for this function:

◆ scanner_key_pub()

char* scanner_key_pub ( scanner_t  )

Referenced by manage_scanner_set().

Here is the caller graph for this function:

◆ scanner_login()

char* scanner_login ( scanner_t  )

Referenced by slave_authenticate().

Here is the caller graph for this function:

◆ scanner_name()

char* scanner_name ( scanner_t  )

◆ scanner_password()

char* scanner_password ( scanner_t  )

Referenced by slave_authenticate().

Here is the caller graph for this function:

◆ scanner_port()

int scanner_port ( scanner_t  )

Referenced by manage_scanner_set().

Here is the caller graph for this function:

◆ scanner_task_iterator_name()

const char* scanner_task_iterator_name ( iterator_t )

◆ scanner_task_iterator_readable()

int scanner_task_iterator_readable ( iterator_t )

◆ scanner_task_iterator_uuid()

const char* scanner_task_iterator_uuid ( iterator_t )

◆ scanner_type()

◆ scanner_uuid()

char * scanner_uuid ( scanner_t  )

◆ scanner_uuid_default()

const char* scanner_uuid_default ( )

◆ scanner_writable()

int scanner_writable ( scanner_t  )

◆ schedule_count()

int schedule_count ( const get_data_t )

◆ schedule_duration()

int schedule_duration ( schedule_t  )

Referenced by manage_schedule().

Here is the caller graph for this function:

◆ schedule_in_use()

int schedule_in_use ( schedule_t  )

◆ schedule_info()

int schedule_info ( schedule_t  ,
time_t *  ,
time_t *  ,
int *  ,
int *  ,
int *   
)

◆ schedule_iterator_duration()

time_t schedule_iterator_duration ( iterator_t )

◆ schedule_iterator_first_time()

time_t schedule_iterator_first_time ( iterator_t )

◆ schedule_iterator_initial_offset()

time_t schedule_iterator_initial_offset ( iterator_t )

◆ schedule_iterator_next_time()

time_t schedule_iterator_next_time ( iterator_t )

◆ schedule_iterator_period()

time_t schedule_iterator_period ( iterator_t )

◆ schedule_iterator_period_months()

time_t schedule_iterator_period_months ( iterator_t )

◆ schedule_iterator_timezone()

const char* schedule_iterator_timezone ( iterator_t )

◆ schedule_name()

char* schedule_name ( schedule_t  )

◆ schedule_period()

int schedule_period ( schedule_t  )

Referenced by manage_schedule().

Here is the caller graph for this function:

◆ schedule_task_iterator_name()

const char* schedule_task_iterator_name ( iterator_t )

◆ schedule_task_iterator_readable()

int schedule_task_iterator_readable ( iterator_t )

◆ schedule_task_iterator_uuid()

const char* schedule_task_iterator_uuid ( iterator_t )

◆ schedule_uuid()

char* schedule_uuid ( schedule_t  )

◆ schedule_writable()

int schedule_writable ( schedule_t  )

◆ set_credential_auth_algorithm()

void set_credential_auth_algorithm ( credential_t  ,
const char *   
)

◆ set_credential_certificate()

void set_credential_certificate ( credential_t  ,
const char *   
)

◆ set_credential_comment()

void set_credential_comment ( credential_t  ,
const char *   
)

◆ set_credential_data()

int set_credential_data ( credential_t  ,
const char *  ,
const char *   
)

◆ set_credential_login()

void set_credential_login ( credential_t  ,
const char *   
)

◆ set_credential_name()

void set_credential_name ( credential_t  ,
const char *   
)

◆ set_credential_password()

void set_credential_password ( credential_t  ,
const char *   
)

◆ set_credential_privacy_algorithm()

void set_credential_privacy_algorithm ( credential_t  ,
const char *   
)

◆ set_credential_private_key()

void set_credential_private_key ( credential_t  ,
const char *  ,
const char *   
)

◆ set_credential_snmp_secret()

void set_credential_snmp_secret ( credential_t  ,
const char *  ,
const char *  ,
const char *   
)

◆ set_db_version()

void set_db_version ( int  version)

Set the database version of the actual database.

Caller must organise transaction.

Parameters
versionNew version number.

Definition at line 6416 of file manage_sql.c.

References sql(), and sql_schema().

Referenced by migrate_0_to_1(), migrate_100_to_101(), migrate_101_to_102(), migrate_102_to_103(), migrate_103_to_104(), migrate_104_to_105(), migrate_105_to_106(), migrate_106_to_107(), migrate_107_to_108(), migrate_108_to_109(), migrate_109_to_110(), migrate_10_to_11(), migrate_110_to_111(), migrate_111_to_112(), migrate_112_to_113(), migrate_113_to_114(), migrate_114_to_115(), migrate_115_to_116(), migrate_116_to_117(), migrate_117_to_118(), migrate_118_to_119(), migrate_119_to_120(), migrate_11_to_12(), migrate_120_to_121(), migrate_121_to_122(), migrate_122_to_123(), migrate_123_to_124(), migrate_124_to_125(), migrate_125_to_126(), migrate_126_to_127(), migrate_127_to_128(), migrate_128_to_129(), migrate_129_to_130(), migrate_12_to_13(), migrate_130_to_131(), migrate_131_to_132(), migrate_132_to_133(), migrate_133_to_134(), migrate_134_to_135(), migrate_135_to_136(), migrate_136_to_137(), migrate_137_to_138(), migrate_138_to_139(), migrate_139_to_140(), migrate_13_to_14(), migrate_140_to_141(), migrate_141_to_142(), migrate_142_to_143(), migrate_143_to_144(), migrate_144_to_145(), migrate_145_to_146(), migrate_146_to_147(), migrate_147_to_148(), migrate_148_to_149(), migrate_149_to_150(), migrate_14_to_15(), migrate_150_to_151(), migrate_151_to_152(), migrate_152_to_153(), migrate_153_to_154(), migrate_154_to_155(), migrate_155_to_156(), migrate_156_to_157(), migrate_157_to_158(), migrate_158_to_159(), migrate_159_to_160(), migrate_15_to_16(), migrate_160_to_161(), migrate_161_to_162(), migrate_162_to_163(), migrate_163_to_164(), migrate_164_to_165(), migrate_165_to_166(), migrate_167_to_168(), migrate_16_to_17(), migrate_170_to_171(), migrate_171_to_172(), migrate_172_to_173(), migrate_173_to_174(), migrate_174_to_175(), migrate_175_to_176(), migrate_176_to_177(), migrate_177_to_178(), migrate_178_to_179(), migrate_179_to_180(), migrate_17_to_18(), migrate_180_to_181(), migrate_181_to_182(), migrate_182_to_183(), migrate_183_to_184(), migrate_18_to_19(), migrate_19_to_20(), migrate_1_to_2(), migrate_20_to_21(), migrate_21_to_22(), migrate_22_to_23(), migrate_23_to_24(), migrate_25_to_26(), migrate_26_to_27(), migrate_27_to_28(), migrate_28_to_29(), migrate_29_to_30(), migrate_2_to_3(), migrate_30_to_31(), migrate_31_to_32(), migrate_32_to_33(), migrate_33_to_34(), migrate_34_to_35(), migrate_35_to_36(), migrate_36_to_37(), migrate_37_to_38(), migrate_38_to_39(), migrate_39_to_40(), migrate_3_to_4(), migrate_40_to_41(), migrate_41_to_42(), migrate_42_to_43(), migrate_43_to_44(), migrate_44_to_45(), migrate_45_to_46(), migrate_46_to_47(), migrate_47_to_48(), migrate_48_to_49(), migrate_49_to_50(), migrate_50_to_51(), migrate_51_to_52(), migrate_52_to_53(), migrate_53_to_54(), migrate_54_to_55(), migrate_55_to_56(), migrate_56_to_57(), migrate_57_to_58(), migrate_58_to_59(), migrate_59_to_60(), migrate_60_to_61(), migrate_61_to_62(), migrate_62_to_63(), migrate_63_to_64(), migrate_64_to_65(), migrate_65_to_66(), migrate_66_to_67(), migrate_67_to_68(), migrate_68_to_69(), migrate_69_to_70(), migrate_6_to_7(), migrate_70_to_71(), migrate_71_to_72(), migrate_72_to_73(), migrate_73_to_74(), migrate_74_to_75(), migrate_75_to_76(), migrate_76_to_77(), migrate_77_to_78(), migrate_78_to_79(), migrate_7_to_8(), migrate_80_to_81(), migrate_81_to_82(), migrate_82_to_83(), migrate_83_to_84(), migrate_84_to_85(), migrate_85_to_86(), migrate_86_to_87(), migrate_87_to_88(), migrate_88_to_89(), migrate_89_to_90(), migrate_8_to_9(), migrate_90_to_91(), migrate_91_to_92(), migrate_92_to_93(), migrate_93_to_94(), migrate_94_to_95(), migrate_95_to_96(), migrate_96_to_97(), migrate_97_to_98(), migrate_98_to_99(), migrate_99_to_100(), and migrate_9_to_10().

6417 {
6418  sql ("DELETE FROM %s.meta WHERE name = 'database_version';",
6419  sql_schema ());
6420  sql ("INSERT INTO %s.meta (name, value)"
6421  " VALUES ('database_version', '%i');",
6422  sql_schema (),
6423  version);
6424 }
const char * sql_schema()
Get main schema name.
Definition: sql_pg.c:103
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_nvts_feed_version()

void set_nvts_feed_version ( const char *  )

◆ set_report_format_active()

void set_report_format_active ( report_format_t  ,
int   
)

◆ set_report_format_name()

void set_report_format_name ( report_format_t  ,
const char *   
)

◆ set_report_format_param()

int set_report_format_param ( report_format_t  ,
const char *  ,
const char *   
)

◆ set_report_format_summary()

void set_report_format_summary ( report_format_t  ,
const char *   
)

◆ set_scan_end_time()

void set_scan_end_time ( report_t  ,
const char *   
)

Referenced by update_end_times().

Here is the caller graph for this function:

◆ set_scan_end_time_epoch()

void set_scan_end_time_epoch ( report_t  ,
time_t   
)

◆ set_scan_end_time_otp()

void set_scan_end_time_otp ( report_t  ,
const char *   
)

◆ set_scan_host_end_time()

void set_scan_host_end_time ( report_t  ,
const char *  ,
const char *   
)

Referenced by update_end_times().

Here is the caller graph for this function:

◆ set_scan_host_end_time_otp()

void set_scan_host_end_time_otp ( report_t  ,
const char *  ,
const char *   
)

◆ set_scan_host_start_time()

void set_scan_host_start_time ( report_t  ,
const char *  ,
const char *   
)

◆ set_scan_host_start_time_otp()

void set_scan_host_start_time_otp ( report_t  ,
const char *  ,
const char *   
)

◆ set_scan_ports()

void set_scan_ports ( report_t  ,
const char *  ,
unsigned  int,
unsigned  int 
)

◆ set_scan_start_time()

void set_scan_start_time ( report_t  ,
const char *   
)

◆ set_scan_start_time_epoch()

void set_scan_start_time_epoch ( report_t  ,
time_t   
)

◆ set_scan_start_time_otp()

void set_scan_start_time_otp ( report_t  ,
const char *   
)

◆ set_schedule_timeout()

void set_schedule_timeout ( int  new_timeout)

Set the schedule timeout.

Parameters
new_timeoutThe new schedule timeout in minutes.

Definition at line 6928 of file manage.c.

6929 {
6930  if (new_timeout < 0)
6931  schedule_timeout = -1;
6932  else
6933  schedule_timeout = new_timeout;
6934 }

◆ set_scheduled_user_uuid()

void set_scheduled_user_uuid ( gchar *  user_uuid)

Set UUID of user that scheduled the current task.

Parameters
user_uuidUUID of user that scheduled the current task.

Definition at line 6462 of file manage.c.

References schedule_user_uuid, and user_uuid().

6463 {
6465 }
char * user_uuid(user_t)
gchar * schedule_user_uuid
UUID of user whose scheduled task is to be started (in connection with authenticate_allow_all).
Definition: manage.c:6432
Here is the call graph for this function:

◆ set_task_alerts()

int set_task_alerts ( task_t  task,
array_t *  alerts,
gchar **  alert_id_return 
)

Set the alerts on a task, removing any previous alerts.

Parameters
[in]taskTask.
[in]alertsAlerts.
[out]alert_id_returnID of alert on "failed to find" error.
Returns
0 success, -1 error, 1 failed to find alert.

Definition at line 18674 of file manage_sql.c.

References find_alert_with_permission(), LOCATION_TABLE, sql(), sql_begin_immediate(), sql_commit(), and sql_rollback().

18675 {
18676  alert_t alert = 0;
18677  guint index;
18678 
18680 
18681  sql ("DELETE FROM task_alerts where task = %llu;", task);
18682 
18683  index = alerts->len;
18684  while (index--)
18685  {
18686  gchar *alert_id;
18687 
18688  alert_id = (gchar*) g_ptr_array_index (alerts, index);
18689  if (strcmp (alert_id, "0") == 0)
18690  continue;
18691 
18692  if (find_alert_with_permission (alert_id, &alert, "get_alerts"))
18693  {
18694  sql_rollback ();
18695  return -1;
18696  }
18697 
18698  if (alert == 0)
18699  {
18700  sql_rollback ();
18701  if (alert_id_return) *alert_id_return = alert_id;
18702  return 1;
18703  }
18704 
18705  sql ("INSERT INTO task_alerts (task, alert, alert_location)"
18706  " VALUES (%llu, %llu, " G_STRINGIFY (LOCATION_TABLE) ");",
18707  task,
18708  alert);
18709  }
18710 
18711  sql_commit ();
18712  return 0;
18713 }
long long int alert_t
Definition: manage.h:280
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
gboolean find_alert_with_permission(const char *uuid, alert_t *alert, const char *permission)
Find a alert for a specific permission, given a UUID.
Definition: manage_sql.c:6983
void sql_begin_immediate()
Begin an immediate transaction.
Definition: sql_pg.c:627
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
Here is the call graph for this function:

◆ set_task_alterable()

void set_task_alterable ( task_t  task,
int  alterable 
)

Set the alterable state of a task.

Parameters
[in]taskTask.
[in]alterableWhether task is alterable.

Definition at line 18722 of file manage_sql.c.

References sql().

18723 {
18724  sql ("UPDATE tasks SET alterable = %i WHERE id = %llu;",
18725  alterable,
18726  task);
18727 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_task_config()

void set_task_config ( task_t  task,
config_t  config 
)

Set the config of a task.

Parameters
[in]taskTask.
[in]configConfig.

Definition at line 18095 of file manage_sql.c.

References sql().

18096 {
18097  sql ("UPDATE tasks SET config = %llu, modification_time = m_now ()"
18098  " WHERE id = %llu;",
18099  config,
18100  task);
18101 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_task_description()

void set_task_description ( task_t  ,
char *  ,
gsize   
)

◆ set_task_end_time()

void set_task_end_time ( task_t  task,
char *  time 
)

Referenced by update_end_times().

Here is the caller graph for this function:

◆ set_task_end_time_epoch()

void set_task_end_time_epoch ( task_t  ,
time_t   
)

◆ set_task_groups()

int set_task_groups ( task_t  task,
array_t *  groups,
gchar **  group_id_return 
)

Set observer groups on a task, removing any previous groups.

Parameters
[in]taskTask.
[in]groupsGroups.
[out]group_id_returnID of group on "failed to find" error.
Returns
0 success, -1 error, 1 failed to find group.

Definition at line 18739 of file manage_sql.c.

References current_credentials, find_group(), LOCATION_TABLE, sql(), sql_begin_immediate(), sql_commit(), and sql_rollback().

18740 {
18741  group_t group = 0;
18742  guint index;
18743 
18745 
18746  sql ("DELETE FROM permissions"
18747  " WHERE resource_type = 'task'"
18748  " AND resource = %llu"
18749  " AND subject_type = 'group'"
18750  " AND name = 'get';",
18751  task);
18752 
18753  index = 0;
18754  while (index < groups->len)
18755  {
18756  gchar *group_id;
18757 
18758  group_id = (gchar*) g_ptr_array_index (groups, index);
18759  if (strcmp (group_id, "0") == 0)
18760  {
18761  index++;
18762  continue;
18763  }
18764 
18765  if (find_group (group_id, &group))
18766  {
18767  sql_rollback ();
18768  return -1;
18769  }
18770 
18771  if (group == 0)
18772  {
18773  sql_rollback ();
18774  if (group_id_return) *group_id_return = group_id;
18775  return 1;
18776  }
18777 
18778  sql ("INSERT INTO permissions"
18779  " (uuid, owner, name, comment, resource_type, resource,"
18780  " resource_uuid, resource_location, subject_type, subject,"
18781  " subject_location, creation_time, modification_time)"
18782  " VALUES"
18783  " (make_uuid (),"
18784  " (SELECT id FROM users WHERE users.uuid = '%s'),"
18785  " 'get_tasks', '', 'task', %llu,"
18786  " (SELECT uuid FROM tasks WHERE tasks.id = %llu),"
18787  " " G_STRINGIFY (LOCATION_TABLE) ", 'group', %llu,"
18788  " " G_STRINGIFY (LOCATION_TABLE) ", m_now (), m_now ());",
18789  current_credentials.uuid, task, task, group);
18790 
18791  index++;
18792  }
18793 
18794  sql_commit ();
18795  return 0;
18796 }
void sql_rollback()
Roll a transaction back.
Definition: sql_pg.c:658
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
long long int group_t
Definition: manage.h:282
gboolean find_group(const char *, group_t *)
void sql_begin_immediate()
Begin an immediate transaction.
Definition: sql_pg.c:627
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
void sql_commit()
Commit a transaction.
Definition: sql_pg.c:649
#define LOCATION_TABLE
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:81
Here is the call graph for this function:

◆ set_task_hosts_ordering()

void set_task_hosts_ordering ( task_t  task,
const char *  ordering 
)

Set the hosts ordering of a task.

Parameters
[in]taskTask.
[in]orderingHosts ordering.

Definition at line 18152 of file manage_sql.c.

References sql(), and sql_quote().

18153 {
18154  char *quoted_ordering = sql_quote (ordering ?: "");
18155  sql ("UPDATE tasks SET hosts_ordering = '%s', modification_time = m_now ()"
18156  " WHERE id = %llu;", quoted_ordering, task);
18157  g_free (quoted_ordering);
18158 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
Here is the call graph for this function:

◆ set_task_observers()

int set_task_observers ( task_t  task,
const gchar *  observers 
)

Set the observers of a task.

Parameters
[in]taskTask.
[in]observersObservers.
Returns
0 success, -1 error, 1 user name validation failed, 2 failed to find user.
Todo:
Similar to validate_user in openvas-administrator.

Definition at line 19148 of file manage_sql.c.

References current_credentials, sql(), sql_begin_immediate(), sql_rollback(), and user_exists().

Here is the call graph for this function:

◆ set_task_parameter()

int set_task_parameter ( task_t  ,
const char *  ,
char *   
)

◆ set_task_preferences()

int set_task_preferences ( task_t  ,
array_t *   
)

◆ set_task_run_status()

void set_task_run_status ( task_t  task,
task_status_t  status 
)

Set the run state of a task.

Logs and generates event.

Parameters
[in]taskTask.
[in]statusNew run status.

Definition at line 18307 of file manage_sql.c.

Referenced by manage_check_current_task(), manage_cleanup_process_error(), and set_task_requested().

18308 {
18309  char *uuid;
18310  char *name;
18311 
18312  set_task_run_status_internal (task, status);
18313 
18314  task_uuid (task, &uuid);
18315  name = task_name (task);
18316  g_log ("event task", G_LOG_LEVEL_MESSAGE,
18317  "Status of task %s (%s) has changed to %s",
18318  name, uuid, run_status_name (status));
18319  free (uuid);
18320  free (name);
18321 
18322  event (task,
18323  (task == current_scanner_task) ? current_report : 0,
18324  EVENT_TASK_RUN_STATUS_CHANGED, (void*) status);
18325 }
task_t current_scanner_task
The task currently running on the scanner.
Definition: manage.c:998
int task_uuid(task_t task, char **id)
Return the UUID of a task.
Definition: manage_sql.c:17885
const char * run_status_name(task_status_t status)
Get the name of a run status.
Definition: manage.c:1253
report_t current_report
The report of the current task.
Definition: manage.c:1003
char * task_name(task_t task)
Return the name of a task.
Definition: manage_sql.c:17945
Here is the caller graph for this function:

◆ set_task_scanner()

void set_task_scanner ( task_t  task,
scanner_t  scanner 
)

Set the scanner of a task.

Parameters
[in]taskTask.
[in]scannerScanner.

Definition at line 18208 of file manage_sql.c.

References SCANNER_TYPE_CVE, and sql().

Referenced by move_task().

18209 {
18210  sql ("UPDATE tasks SET scanner = %llu, modification_time = m_now ()"
18211  " WHERE id = %llu;", scanner, task);
18212  if (scanner_type (scanner) == SCANNER_TYPE_CVE)
18213  sql ("UPDATE tasks SET config = 0 WHERE id = %llu;", task);
18214 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
scanner_type
Scanner types.
Definition: manage.h:267
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_task_schedule()

int set_task_schedule ( task_t  task,
schedule_t  schedule,
int  periods 
)

Set the schedule of a task.

Parameters
[in]taskTask.
[in]scheduleSchedule.
[in]periodsNumber of schedule periods.
Returns
0 success, -1 error.

Definition at line 18808 of file manage_sql.c.

References sql().

18809 {
18810  sql ("UPDATE tasks"
18811  " SET schedule = %llu,"
18812  " schedule_periods = %i,"
18813  " schedule_next_time = (SELECT next_time (first_time,"
18814  " period,"
18815  " period_months,"
18816  " timezone)"
18817  " FROM schedules"
18818  " WHERE id = %llu),"
18819  " modification_time = m_now ()"
18820  " WHERE id = %llu;",
18821  schedule, periods, schedule, task);
18822 
18823  return 0;
18824 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_task_schedule_periods()

int set_task_schedule_periods ( const gchar *  task_id,
int  periods 
)

Set the schedule periods of a task, given a UUID.

The task modification time stays the same.

Parameters
[in]task_idTask UUID.
[in]periodsSchedule periods.
Returns
0 success, -1 error.

Definition at line 18869 of file manage_sql.c.

References sql(), sql_quote(), and task_id().

Referenced by manage_schedule().

18870 {
18871  gchar *quoted_task_id;
18872 
18873  quoted_task_id = sql_quote (task_id);
18874  sql ("UPDATE tasks"
18875  " SET schedule_periods = %i"
18876  " WHERE uuid = '%s';",
18877  periods, quoted_task_id);
18878  g_free (quoted_task_id);
18879 
18880  return 0;
18881 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
unsigned int task_id(task_t task)
Return the identifier of a task.
Definition: manage_sql.c:17869
Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_task_schedule_periods_id()

int set_task_schedule_periods_id ( task_t  task,
int  periods 
)

Set the schedule periods of a task, given an ID.

The task modification time stays the same.

Parameters
[in]taskTask UUID.
[in]periodsSchedule periods.
Returns
0 success, -1 error.

Definition at line 18894 of file manage_sql.c.

References sql().

18895 {
18896  sql ("UPDATE tasks"
18897  " SET schedule_periods = %i"
18898  " WHERE id = %llu;",
18899  periods, task);
18900  return 0;
18901 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_task_start_time()

void set_task_start_time ( task_t  task,
char *  time 
)

Set the start time of a task.

Parameters
[in]taskTask.
[in]timeNew time. ISO format. Freed before return.

Definition at line 18493 of file manage_sql.c.

References parse_iso_time(), and sql().

18494 {
18495  sql ("UPDATE tasks SET start_time = %i, modification_time = m_now ()"
18496  " WHERE id = %llu;",
18497  parse_iso_time (time),
18498  task);
18499  free (time);
18500 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
int parse_iso_time(const char *text_time)
Convert an ISO time into seconds since epoch.
Definition: manage_sql.c:875
Here is the call graph for this function:

◆ set_task_start_time_epoch()

void set_task_start_time_epoch ( task_t  task,
int  time 
)

Set the start time of a task.

Parameters
[in]taskTask.
[in]timeNew time. Seconds since epoch.

Definition at line 18509 of file manage_sql.c.

References sql().

18510 {
18511  sql ("UPDATE tasks SET start_time = %i, modification_time = m_now ()"
18512  " WHERE id = %llu;",
18513  time,
18514  task);
18515 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_task_start_time_otp()

void set_task_start_time_otp ( task_t  task,
char *  time 
)

Set the start time of a task.

Parameters
[in]taskTask.
[in]timeNew time. OTP format (ctime). Freed before return.

Definition at line 18524 of file manage_sql.c.

References sql().

18525 {
18526  sql ("UPDATE tasks SET start_time = %i, modification_time = m_now ()"
18527  " WHERE id = %llu;",
18528  parse_otp_time (time),
18529  task);
18530  free (time);
18531 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ set_task_target()

void set_task_target ( task_t  task,
target_t  target 
)

Set the target of a task.

Parameters
[in]taskTask.
[in]targetTarget.

Definition at line 18137 of file manage_sql.c.

References sql().

18138 {
18139  sql ("UPDATE tasks SET target = %llu, modification_time = m_now ()"
18140  " WHERE id = %llu;",
18141  target,
18142  task);
18143 }
void sql(char *sql,...)
Perform an SQL statement, retrying if database is busy or locked.
Definition: sql.c:199
Here is the call graph for this function:

◆ setting_auto_cache_rebuild_int()

int setting_auto_cache_rebuild_int ( )

◆ setting_count()

int setting_count ( const char *  )

◆ setting_default_severity_dbl()

double setting_default_severity_dbl ( )

◆ setting_dynamic_severity_int()

int setting_dynamic_severity_int ( )

◆ setting_filter()

char* setting_filter ( const char *  )

Referenced by init_get().

Here is the caller graph for this function:

◆ setting_is_default_ca_cert()

int setting_is_default_ca_cert ( const gchar *  )

◆ setting_iterator_comment()

const char* setting_iterator_comment ( iterator_t )

◆ setting_iterator_name()

const char* setting_iterator_name ( iterator_t )

◆ setting_iterator_uuid()

const char* setting_iterator_uuid ( iterator_t )

◆ setting_iterator_value()

const char* setting_iterator_value ( iterator_t )

◆ setting_severity()

const char* setting_severity ( )

Referenced by severity_in_level().

Here is the caller graph for this function:

◆ setting_timezone()

char* setting_timezone ( )

◆ setting_value_int()

int setting_value_int ( const char *  ,
int *   
)

Referenced by manage_filter_controls(), and manage_report_filter_controls().

Here is the caller graph for this function:

◆ severity_data_add()

void severity_data_add ( severity_data_t severity_data,
double  severity 
)

Add a severity occurrence to the counts of a severity_data_t.

Parameters
[in]severity_dataThe severity count struct to add to.
[in]severityThe severity to add.

Definition at line 860 of file manage.c.

References severity_data_t::counts, severity_data_t::max, severity_data_index(), and severity_data_t::total.

861 {
862  (severity_data->counts)[severity_data_index (severity)]++;
863 
864  if (severity_data->total == 0 || severity_data->max <= severity)
865  severity_data->max = severity;
866 
867  (severity_data->total)++;
868 }
int * counts
Definition: manage.h:988
double max
Definition: manage.h:990
int severity_data_index(double severity)
Convert a severity value into an index in the counts array.
Definition: manage.c:789
Here is the call graph for this function:

◆ severity_data_add_count()

void severity_data_add_count ( severity_data_t severity_data,
double  severity,
int  count 
)

Add a multiple severity occurrences to the counts of a severity_data_t.

Parameters
[in]severity_dataThe severity count struct to add to.
[in]severityThe severity to add.
[in]countThe number of occurrences to add.

Definition at line 878 of file manage.c.

880 {
881  (severity_data->counts)[severity_data_index (severity)] += count;
882 
883  if (severity_data->total == 0 || severity_data->max <= severity)
884  severity_data->max = severity;
885 
886  (severity_data->total) += count;
887 }
int * counts
Definition: manage.h:988
double max
Definition: manage.h:990
int severity_data_index(double severity)
Convert a severity value into an index in the counts array.
Definition: manage.c:789

◆ severity_data_index()

int severity_data_index ( double  severity)

Convert a severity value into an index in the counts array.

Parameters
[in]severitySeverity value.
Returns
The index, 0 for invalid severity scores.

Definition at line 789 of file manage.c.

References SEVERITY_DEBUG, SEVERITY_ERROR, SEVERITY_FP, SEVERITY_SUBDIVISIONS, and ZERO_SEVERITY_INDEX.

Referenced by severity_data_add().

790 {
791  int ret;
792  if (severity >= 0.0)
793  ret = (int)(round (severity * SEVERITY_SUBDIVISIONS)) + ZERO_SEVERITY_INDEX;
794  else if (severity == SEVERITY_FP || severity == SEVERITY_DEBUG
795  || severity == SEVERITY_ERROR)
796  ret = (int)(round (severity)) + ZERO_SEVERITY_INDEX;
797  else
798  ret = 0;
799 
800  return ret;
801 }
#define SEVERITY_SUBDIVISIONS
Definition: manage_utils.h:46
#define ZERO_SEVERITY_INDEX
Definition: manage.c:779
#define SEVERITY_ERROR
Definition: manage_utils.h:38
#define SEVERITY_FP
Definition: manage_utils.h:34
#define SEVERITY_DEBUG
Definition: manage_utils.h:36
Here is the caller graph for this function:

◆ severity_data_level_counts()

void severity_data_level_counts ( const severity_data_t severity_data,
const gchar *  severity_class,
int *  errors,
int *  debugs,
int *  false_positives,
int *  logs,
int *  lows,
int *  mediums,
int *  highs 
)

Count the occurrences of severities in the levels.

Parameters
[in]severity_dataThe severity counts data to evaluate.
[in]severity_classThe severity class setting to use.
[out]errorsThe number of error messages.
[out]debugsThe number of debug messages.
[out]false_positivesThe number of False Positives.
[out]logsThe number of Log messages.
[out]lowsThe number of Low severity results.
[out]mediumsThe number of Medium severity results.
[out]highsThe number of High severity results.

Definition at line 930 of file manage.c.

References level_max_severity(), level_min_severity(), and severity_data_range_count().

934 {
935  if (errors)
936  *errors
937  = severity_data_range_count (severity_data,
938  level_min_severity ("Error",
939  severity_class),
940  level_max_severity ("Error",
941  severity_class));
942 
943  if (debugs)
944  *debugs
945  = severity_data_range_count (severity_data,
946  level_min_severity ("Debug",
947  severity_class),
948  level_max_severity ("Debug",
949  severity_class));
950 
951  if (false_positives)
952  *false_positives
953  = severity_data_range_count (severity_data,
954  level_min_severity ("False Positive",
955  severity_class),
956  level_max_severity ("False Positive",
957  severity_class));
958 
959  if (logs)
960  *logs
961  = severity_data_range_count (severity_data,
962  level_min_severity ("Log",
963  severity_class),
964  level_max_severity ("Log",
965  severity_class));
966 
967  if (lows)
968  *lows
969  = severity_data_range_count (severity_data,
970  level_min_severity ("low",
971  severity_class),
972  level_max_severity ("low",
973  severity_class));
974 
975  if (mediums)
976  *mediums
977  = severity_data_range_count (severity_data,
978  level_min_severity ("medium",
979  severity_class),
980  level_max_severity ("medium",
981  severity_class));
982 
983  if (highs)
984  *highs
985  = severity_data_range_count (severity_data,
986  level_min_severity ("high",
987  severity_class),
988  level_max_severity ("high",
989  severity_class));
990 }
int severity_data_range_count(const severity_data_t *severity_data, double min_severity, double max_severity)
Calculate the total of severity counts in a range.
Definition: manage.c:899
double level_max_severity(const char *level, const char *class)
Get the minimum severity for a severity level and class.
Definition: manage_utils.c:454
double level_min_severity(const char *level, const char *class)
Get the minimum severity for a severity level and class.
Definition: manage_utils.c:403
Here is the call graph for this function:

◆ severity_data_range_count()

int severity_data_range_count ( const severity_data_t severity_data,
double  min_severity,
double  max_severity 
)

Calculate the total of severity counts in a range.

Parameters
[in]severity_dataThe severity data struct to get counts from.
[in]min_severityThe minimum severity included in the range.
[in]max_severityThe maximum severity included in the range.
Returns
The total of severity counts in the specified range.

Definition at line 899 of file manage.c.

Referenced by severity_data_level_counts().

901 {
902  int i, i_max, count;
903 
904  i_max = severity_data_index (max_severity);
905  count = 0;
906 
907  for (i = severity_data_index (min_severity);
908  i <= i_max;
909  i++)
910  {
911  count += (severity_data->counts)[i];
912  }
913  return count;
914 }
int * counts
Definition: manage.h:988
int severity_data_index(double severity)
Convert a severity value into an index in the counts array.
Definition: manage.c:789
Here is the caller graph for this function:

◆ severity_data_value()

double severity_data_value ( int  index)

Convert an index in the counts array to a severity value.

Parameters
[in]indexIndex in the counts array.
Returns
The corresponding severity value.

Definition at line 811 of file manage.c.

References SEVERITY_MAX, SEVERITY_MISSING, SEVERITY_SUBDIVISIONS, and ZERO_SEVERITY_INDEX.

812 {
813  double ret;
814  if (index <= ZERO_SEVERITY_INDEX && index > 0)
815  ret = ((double) index) - ZERO_SEVERITY_INDEX;
816  else if (index <= (ZERO_SEVERITY_INDEX
818  ret = (((double) (index - ZERO_SEVERITY_INDEX)) / SEVERITY_SUBDIVISIONS);
819  else
820  ret = SEVERITY_MISSING;
821 
822  return ret;
823 }
#define SEVERITY_SUBDIVISIONS
Definition: manage_utils.h:46
#define ZERO_SEVERITY_INDEX
Definition: manage.c:779
#define SEVERITY_MISSING
Definition: manage_utils.h:40
#define SEVERITY_MAX
Definition: manage_utils.h:44

◆ severity_in_level()

int severity_in_level ( double  severity,
const char *  level 
)

Check whether a severity falls within a threat level.

Parameters
[in]severitySeverity.
[in]levelThreat level.
Returns
1 if in level, else 0.

Definition at line 583 of file manage.c.

References setting_severity().

Referenced by severity_to_level(), and sql_severity_in_level().

584 {
585  const char *class;
586 
587  class = setting_severity ();
588  if (strcmp (class, "classic") == 0)
589  {
590  if (strcmp (level, "high") == 0)
591  return severity > 5 && severity <= 10;
592  else if (strcmp (level, "medium") == 0)
593  return severity > 2 && severity <= 5;
594  else if (strcmp (level, "low") == 0)
595  return severity > 0 && severity <= 2;
596  else if (strcmp (level, "none") == 0 || strcmp (level, "log") == 0)
597  return severity == 0;
598  else
599  return 0;
600  }
601  else if (strcmp (class, "pci-dss") == 0)
602  {
603  if (strcmp (level, "high") == 0)
604  return severity >= 4.0;
605  else if (strcmp (level, "none") == 0 || strcmp (level, "log") == 0)
606  return severity >= 0.0 && severity < 4.0;
607  else
608  return 0;
609  }
610  else
611  {
612  /* NIST/BSI. */
613  if (strcmp (level, "high") == 0)
614  return severity >= 7 && severity <= 10;
615  else if (strcmp (level, "medium") == 0)
616  return severity >= 4 && severity < 7;
617  else if (strcmp (level, "low") == 0)
618  return severity > 0 && severity < 4;
619  else if (strcmp (level, "none") == 0 || strcmp (level, "log") == 0)
620  return severity == 0;
621  else
622  return 0;
623  }
624 }
const char * setting_severity()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ severity_matches_ov()

int severity_matches_ov ( double  severity,
double  ov_severity 
)

Check whether a severity matches an override's severity.

Parameters
[in]severityseverity score
[in]ov_severityoverride severity score to match
Returns
1 if matches, else 0.

Definition at line 635 of file manage.c.

Referenced by sql_severity_matches_ov().

636 {
637  if (ov_severity <= 0.0)
638  return severity == ov_severity;
639  else
640  return severity >= ov_severity;
641 }
Here is the caller graph for this function:

◆ severity_to_level()

const char* severity_to_level ( double  severity,
int  mode 
)

Get the threat level matching a severity score.

Parameters
[in]severityseverity score
[in]mode0 for normal levels, 1 to use "Alarm" for severity > 0.0
Returns
the level as a static string

Definition at line 652 of file manage.c.

References SEVERITY_DEBUG, SEVERITY_ERROR, SEVERITY_FP, severity_in_level(), and SEVERITY_LOG.

Referenced by sql_severity_to_level().

653 {
654  if (severity == SEVERITY_LOG)
655  return "Log";
656  else if (severity == SEVERITY_FP)
657  return "False Positive";
658  else if (severity == SEVERITY_DEBUG)
659  return "Debug";
660  else if (severity == SEVERITY_ERROR)
661  return "Error";
662  else if (severity > 0.0 && severity <= 10.0)
663  {
664  if (mode == 1)
665  return ("Alarm");
666  else if (severity_in_level (severity, "high"))
667  return ("High");
668  else if (severity_in_level (severity, "medium"))
669  return ("Medium");
670  else if (severity_in_level (severity, "low"))
671  return ("Low");
672  else
673  return ("Log");
674  }
675  else
676  {
677  g_warning ("%s: Invalid severity score given: %f",
678  __FUNCTION__, severity);
679  return (NULL);
680  }
681 }
#define SEVERITY_ERROR
Definition: manage_utils.h:38
#define SEVERITY_FP
Definition: manage_utils.h:34
#define SEVERITY_DEBUG
Definition: manage_utils.h:36
int severity_in_level(double severity, const char *level)
Check whether a severity falls within a threat level.
Definition: manage.c:583
#define SEVERITY_LOG
Definition: manage_utils.h:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ severity_to_type()

const char* severity_to_type ( double  severity)

Get the message type matching a severity score.

Parameters
[in]severityseverity score
Returns
the message type as a static string

Definition at line 691 of file manage.c.

References SEVERITY_DEBUG, SEVERITY_ERROR, SEVERITY_FP, and SEVERITY_LOG.

Referenced by sql_severity_to_type().

692 {
693  if (severity == SEVERITY_LOG)
694  return "Log Message";
695  else if (severity == SEVERITY_FP)
696  return "False Positive";
697  else if (severity == SEVERITY_DEBUG)
698  return "Debug Message";
699  else if (severity == SEVERITY_ERROR)
700  return "Error Message";
701  else if (severity > 0.0 && severity <= 10.0)
702  return "Alarm";
703  else
704  {
705  g_warning ("%s: Invalid severity score given: %f",
706  __FUNCTION__, severity);
707  return (NULL);
708  }
709 }
#define SEVERITY_ERROR
Definition: manage_utils.h:38
#define SEVERITY_FP
Definition: manage_utils.h:34
#define SEVERITY_DEBUG
Definition: manage_utils.h:36
#define SEVERITY_LOG
Definition: manage_utils.h:32
Here is the caller graph for this function:

◆ sort_data_free()

void sort_data_free ( sort_data_t )

◆ split_filter()

array_t* split_filter ( const gchar *  given_filter)

Split the filter term into parts.

Parameters
[in]given_filterFilter term.
Returns
Array of strings, the parts.

Definition at line 2043 of file manage_sql.c.

References keyword::column, keyword::equal, KEYWORD_RELATION_COLUMN_ABOVE, KEYWORD_RELATION_COLUMN_APPROX, KEYWORD_RELATION_COLUMN_BELOW, KEYWORD_RELATION_COLUMN_EQUAL, KEYWORD_RELATION_COLUMN_REGEXP, keyword::relation, and keyword::string.

Referenced by manage_clean_filter_remove(), manage_filter_controls(), and manage_report_filter_controls().

2044 {
2045  int in_quote, between;
2046  array_t *parts;
2047  const gchar *current_part, *filter;
2048  keyword_t *keyword;
2049 
2050  assert (given_filter);
2051 
2052  filter = given_filter;
2053  parts = make_array ();
2054  in_quote = 0;
2055  between = 1;
2056  keyword = NULL;
2057  current_part = filter; /* To silence compiler warning. */
2058  while (*filter)
2059  {
2060  switch (*filter)
2061  {
2062  case '=':
2063  if (between)
2064  {
2065  /* Empty index. Start a part. */
2066  keyword = g_malloc0 (sizeof (keyword_t));
2067  keyword->equal = 1;
2068  current_part = filter + 1;
2069  between = 0;
2070  break;
2071  }
2072  case ':':
2073  case '~':
2074  case '>':
2075  case '<':
2076  if (between)
2077  {
2078  /* Empty index. Just start a part for now. */
2079  keyword = g_malloc0 (sizeof (keyword_t));
2080  current_part = filter;
2081  between = 0;
2082  break;
2083  }
2084  if (in_quote)
2085  break;
2086  /* End of an index. */
2087  if (keyword == NULL)
2088  {
2089  assert (0);
2090  break;
2091  }
2092  if (keyword->column)
2093  /* Already had an index char. */
2094  break;
2095  if (filter <= (current_part - 1))
2096  {
2097  assert (0);
2098  break;
2099  }
2100  keyword->column = g_strndup (current_part,
2101  filter - current_part);
2102  current_part = filter + 1;
2103  switch (*filter)
2104  {
2105  case '=':
2107  break;
2108  case '~':
2110  break;
2111  case '>':
2113  break;
2114  case '<':
2116  break;
2117  case ':':
2119  break;
2120  }
2121  break;
2122 
2123  case ' ':
2124  case '\t':
2125  case '\n':
2126  case '\r':
2127  if (in_quote || between)
2128  break;
2129  /* End of a part. */
2130  if (keyword == NULL)
2131  {
2132  assert (0);
2133  break;
2134  }
2135  keyword->string = g_strndup (current_part, filter - current_part);
2136  parse_keyword (keyword);
2137  if (keyword_applies (parts, keyword))
2138  array_add (parts, keyword);
2139  keyword = NULL;
2140  between = 1;
2141  break;
2142 
2143  case '"':
2144  if (in_quote)
2145  {
2146  /* End of a quoted part. */
2147  if (keyword == NULL)
2148  {
2149  assert (0);
2150  break;
2151  }
2152  keyword->quoted = 1;
2153  keyword->string = g_strndup (current_part,
2154  filter - current_part);
2155  parse_keyword (keyword);
2156  if (keyword_applies (parts, keyword))
2157  array_add (parts, keyword);
2158  keyword = NULL;
2159  in_quote = 0;
2160  between = 1;
2161  }
2162  else if (between)
2163  {
2164  /* Start of a quoted part. */
2165  keyword = g_malloc0 (sizeof (keyword_t));
2166  in_quote = 1;
2167  current_part = filter + 1;
2168  between = 0;
2169  }
2170  else if (keyword->column && filter == current_part)
2171  {
2172  /* A quoted index. */
2173  in_quote = 1;
2174  current_part++;
2175  }
2176  else if (keyword->equal && filter == current_part)
2177  {
2178  /* A quoted exact term, like ="abc". */
2179  in_quote = 1;
2180  current_part++;
2181  }
2182  /* Else just a quote in a keyword, like ab"cd. */
2183  break;
2184 
2185  default:
2186  if (between)
2187  {
2188  /* Start of a part. */
2189  keyword = g_malloc0 (sizeof (keyword_t));
2190  current_part = filter;
2191  between = 0;
2192  }
2193  break;
2194  }
2195  filter++;
2196  }
2197  if (between == 0)
2198  {
2199  if (keyword == NULL)
2200  assert (0);
2201  else
2202  {
2203  keyword->quoted = in_quote;
2204  keyword->string = g_strdup (current_part);
2205  parse_keyword (keyword);
2206  if (keyword_applies (parts, keyword))
2207  array_add (parts, keyword);
2208  keyword = NULL;
2209  }
2210  }
2211  assert (keyword == NULL);
2212 
2213  {
2214  int index, first, max, sort;
2215  keyword_t *keyword;
2216 
2217  index = parts->len;
2218  first = max = sort = 0;
2219  while (index--)
2220  {
2221  keyword_t *item;
2222  item = (keyword_t*) g_ptr_array_index (parts, index);
2223  if (item->column && (strcmp (item->column, "first") == 0))
2224  first = 1;
2225  else if (item->column && (strcmp (item->column, "rows") == 0))
2226  max = 1;
2227  else if (item->column
2228  && ((strcmp (item->column, "sort") == 0)
2229  || (strcmp (item->column, "sort-reverse") == 0)))
2230  sort = 1;
2231  }
2232 
2233  if (first == 0)
2234  {
2235  keyword = g_malloc0 (sizeof (keyword_t));
2236  keyword->column = g_strdup ("first");
2237  keyword->string = g_strdup ("1");
2240  array_add (parts, keyword);
2241  }
2242 
2243  if (max == 0)
2244  {
2245  keyword = g_malloc0 (sizeof (keyword_t));
2246  keyword->column = g_strdup ("rows");
2247  /* If there was a filter, make max_return default to Rows Per
2248  * Page. This keeps the pre-filters OMP behaviour when the filter
2249  * is empty, but is more convenenient for clients that set the
2250  * filter. */
2251  if (strlen (given_filter))
2252  keyword->string = g_strdup ("-2");
2253  else
2254  keyword->string = g_strdup ("-1");
2257  array_add (parts, keyword);
2258  }
2259 
2260  if (table_order_if_sort_not_specified == 0 && sort == 0)
2261  {
2262  keyword = g_malloc0 (sizeof (keyword_t));
2263  keyword->column = g_strdup ("sort");
2264  keyword->string = g_strdup ("name");
2267  array_add (parts, keyword);
2268  }
2269  }
2270 
2271  array_add (parts, NULL);
2272 
2273  return parts;
2274 }
gchar * column
The column prefix, or NULL.
Definition: manage.h:3430
keyword_type_t type
Type of keyword.
Definition: manage.h:3436
int equal
Whether the keyword is like "=example".
Definition: manage.h:3431
int table_order_if_sort_not_specified
Flag to control the default sorting produced by split filter.
Definition: manage_sql.c:2033
keyword_relation_t relation
The relation.
Definition: manage.h:3437
gchar * string
The keyword string, outer quotes removed.
Definition: manage.h:3435
Keyword.
Definition: manage.h:3428
int quoted
Whether the keyword was quoted.
Definition: manage.h:3434
Here is the caller graph for this function:

◆ sql_cancel()

int sql_cancel ( )

Referenced by handle_termination_signal().

Here is the caller graph for this function:

◆ start_task()

int start_task ( const char *  task_id,
char **  report_id 
)

Start a task.

Use send_to_server to queue the task start sequence in the scanner output buffer.

Only one task can run at a time in a process.

Parameters
[in]task_idThe task ID.
[out]report_idThe report ID.
Returns
Before forking: 1 task is active already, 3 failed to find task, 99 permission denied, -1 internal error, -2 task is missing a target, -3 creating the report failed, -4 target missing hosts, -6 already a task running in this process, -7 no CA cert, -9 fork failed. After forking: 0 success (parent), 2 success (child), -10 error (child).

Definition at line 5399 of file manage.c.

References acl_user_may().

5400 {
5401  if (acl_user_may ("start_task") == 0)
5402  return 99;
5403 
5404  return run_task (task_id, report_id, 0);
5405 }
unsigned int task_id(task_t)
Return the identifier of a task.
Definition: manage_sql.c:17869
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
Here is the call graph for this function:

◆ stop_task()

int stop_task ( const char *  task_id)

Initiate stopping a task.

Use send_to_server to queue the task stop sequence in the scanner output buffer.

Parameters
[in]task_idTask UUID.
Returns
0 on success, 1 if stop requested, 3 failed to find task, 99 permission denied, -1 if out of space in scanner output buffer, -5 scanner down.

Definition at line 5514 of file manage.c.

References acl_user_may(), config_type(), find_task_with_permission(), task_config(), and task_id().

5515 {
5516  task_t task;
5517 
5518  if (acl_user_may ("stop_task") == 0)
5519  return 99;
5520 
5521  task = 0;
5522  if (find_task_with_permission (task_id, &task, "stop_task"))
5523  return -1;
5524  if (task == 0)
5525  return 3;
5526 
5527  if (config_type (task_config (task)) != 0)
5528  return stop_osp_task (task);
5529 
5530  return stop_task_internal (task);
5531 }
int config_type(config_t)
config_t task_config(task_t)
Return the config of a task.
Definition: manage_sql.c:18016
unsigned int task_id(task_t)
Return the identifier of a task.
Definition: manage_sql.c:17869
int stop_task_internal(task_t task)
Initiate stopping a task.
Definition: manage.c:5447
gboolean find_task_with_permission(const char *, task_t *, const char *)
int acl_user_may(const char *operation)
Test whether a user may perform an operation.
Definition: manage_acl.c:56
long long int task_t
Definition: manage.h:286
Here is the call graph for this function:

◆ sync_config()

int sync_config ( const char *  )

◆ tag_count()

int tag_count ( const get_data_t get)

◆ tag_in_use()

int tag_in_use ( tag_t  )

◆ tag_iterator_active()

int tag_iterator_active ( iterator_t )

◆ tag_iterator_orphan()

int tag_iterator_orphan ( iterator_t )

◆ tag_iterator_resource_location()

int tag_iterator_resource_location ( iterator_t )

◆ tag_iterator_resource_name()

const char* tag_iterator_resource_name ( iterator_t )

◆ tag_iterator_resource_readable()

int tag_iterator_resource_readable ( iterator_t )

◆ tag_iterator_resource_type()

const char* tag_iterator_resource_type ( iterator_t )

◆ tag_iterator_resource_uuid()

const char* tag_iterator_resource_uuid ( iterator_t )

◆ tag_iterator_value()

const char* tag_iterator_value ( iterator_t )

◆ tag_name_iterator_name()

const char* tag_name_iterator_name ( iterator_t )

◆ tag_uuid()

char* tag_uuid ( target_t  )

◆ tag_writable()

int tag_writable ( tag_t  )

◆ target_count()

int target_count ( const get_data_t )

◆ target_credential()

credential_t target_credential ( target_t  ,
const char *   
)

Referenced by sql_target_credential().

Here is the caller graph for this function:

◆ target_exclude_hosts()

char* target_exclude_hosts ( target_t  )

◆ target_hosts()

char* target_hosts ( target_t  )

◆ target_in_use()

int target_in_use ( target_t  )

◆ target_iterator_alive_tests()

const char* target_iterator_alive_tests ( iterator_t )

◆ target_iterator_comment()

const char* target_iterator_comment ( iterator_t )

◆ target_iterator_esxi_credential()

int target_iterator_esxi_credential ( iterator_t )

◆ target_iterator_esxi_trash()

int target_iterator_esxi_trash ( iterator_t )

◆ target_iterator_exclude_hosts()

const char* target_iterator_exclude_hosts ( iterator_t )

◆ target_iterator_hosts()

const char* target_iterator_hosts ( iterator_t )

◆ target_iterator_port_list_name()

const char* target_iterator_port_list_name ( iterator_t )

◆ target_iterator_port_list_trash()

int target_iterator_port_list_trash ( iterator_t )

◆ target_iterator_port_list_uuid()

const char* target_iterator_port_list_uuid ( iterator_t )

◆ target_iterator_reverse_lookup_only()

const char* target_iterator_reverse_lookup_only ( iterator_t )

◆ target_iterator_reverse_lookup_unify()

const char* target_iterator_reverse_lookup_unify ( iterator_t )

◆ target_iterator_smb_credential()

int target_iterator_smb_credential ( iterator_t )

◆ target_iterator_smb_trash()

int target_iterator_smb_trash ( iterator_t )

◆ target_iterator_snmp_credential()

int target_iterator_snmp_credential ( iterator_t )

◆ target_iterator_snmp_trash()

int target_iterator_snmp_trash ( iterator_t )

◆ target_iterator_ssh_credential()

int target_iterator_ssh_credential ( iterator_t )

◆ target_iterator_ssh_port()

const char* target_iterator_ssh_port ( iterator_t )

◆ target_iterator_ssh_trash()

int target_iterator_ssh_trash ( iterator_t )

◆ target_login_port()

int target_login_port ( target_t  ,
const char *   
)

Referenced by sql_target_login_port().

Here is the caller graph for this function:

◆ target_name()

char* target_name ( target_t  )

◆ target_port_range()

char* target_port_range ( target_t  )

◆ target_reverse_lookup_only()

char* target_reverse_lookup_only ( target_t  )

◆ target_reverse_lookup_unify()

char* target_reverse_lookup_unify ( target_t  )

◆ target_ssh_credential_name()

char* target_ssh_credential_name ( const char *  )

◆ target_ssh_port()

char* target_ssh_port ( target_t  )

◆ target_task_iterator_name()

const char* target_task_iterator_name ( iterator_t )

◆ target_task_iterator_readable()

int target_task_iterator_readable ( iterator_t )

◆ target_task_iterator_uuid()

const char* target_task_iterator_uuid ( iterator_t )

◆ target_uuid()

char* target_uuid ( target_t  )

Referenced by run_osp_task().

Here is the caller graph for this function:

◆ target_writable()

int target_writable ( target_t  )

◆ task_alert_iterator_alert()

alert_t task_alert_iterator_alert ( iterator_t iterator)

Get the alert from a task alert iterator.

Parameters
[in]iteratorIterator.
Returns
alert.

Definition at line 8894 of file manage_sql.c.

References iterator::done, and iterator_int64().

8895 {
8896  if (iterator->done) return 0;
8897  return (task_t) iterator_int64 (iterator, 0);
8898 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
long long int task_t
Definition: manage.h:286
long long int iterator_int64(iterator_t *iterator, int col)
Get an integer column from an iterator.
Definition: sql.c:637
Here is the call graph for this function:

◆ task_alert_iterator_name()

const char* task_alert_iterator_name ( iterator_t )

◆ task_alert_iterator_uuid()

const char* task_alert_iterator_uuid ( iterator_t )

◆ task_alterable()

int task_alterable ( task_t  task)

Return whether a task is an Alterable Task.

Parameters
[in]taskTask.
Returns
1 if Alterable, else 0.

Definition at line 14238 of file manage_sql.c.

References sql_int().

14239 {
14240  return sql_int ("SELECT alterable FROM tasks"
14241  " WHERE id = %llu",
14242  task);
14243 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_average_scan_duration()

int task_average_scan_duration ( task_t  task)

Get the average duration of all finished reports of a task.

Parameters
[in]taskTask.
Returns
Average scan duration in seconds.

Definition at line 14283 of file manage_sql.c.

References sql_int(), and TASK_STATUS_DONE.

14284 {
14285  return sql_int ("SELECT avg (end_time - start_time) FROM reports"
14286  " WHERE task = %llu"
14287  " AND scan_run_status = %d"
14288  " AND coalesce (end_time, 0) != 0"
14289  " AND coalesce (start_time, 0) != 0;",
14290  task, TASK_STATUS_DONE);
14291 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_comment()

char* task_comment ( task_t  task)

Return the comment of a task.

Parameters
[in]taskTask.
Returns
Comment of task.

Definition at line 17959 of file manage_sql.c.

References sql_string().

17960 {
17961  return sql_string ("SELECT comment FROM tasks WHERE id = %llu;",
17962  task);
17963 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_config()

config_t task_config ( task_t  task)

Return the config of a task.

Parameters
[in]taskTask.
Returns
Config of task.

Definition at line 18016 of file manage_sql.c.

References sql_int64().

Referenced by stop_task().

18017 {
18018  config_t config;
18019  switch (sql_int64 (&config,
18020  "SELECT config FROM tasks WHERE id = %llu;",
18021  task))
18022  {
18023  case 0:
18024  return config;
18025  default: /* Programming error. */
18026  case 1: /* Too few rows in result of query. */
18027  case -1: /* Error. */
18028  /* Every task should have a config. */
18029  assert (0);
18030  return 0;
18031  break;
18032  }
18033 }
long long int config_t
Definition: manage.h:278
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_config_in_trash()

int task_config_in_trash ( task_t  task)

Return whether the config of a task is in the trashcan.

Parameters
[in]taskTask.
Returns
1 if in trashcan, else 0.

Definition at line 18081 of file manage_sql.c.

References LOCATION_TRASH, and sql_int().

Referenced by task_config_name(), and task_config_uuid().

18082 {
18083  return sql_int ("SELECT config_location = " G_STRINGIFY (LOCATION_TRASH)
18084  " FROM tasks WHERE id = %llu;",
18085  task);
18086 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_config_name()

char* task_config_name ( task_t  task)

Return the name of the config of a task.

Parameters
[in]taskTask.
Returns
Name of config of task.

Definition at line 18062 of file manage_sql.c.

References sql_string(), and task_config_in_trash().

18063 {
18064  if (task_config_in_trash (task))
18065  return sql_string ("SELECT name FROM configs_trash WHERE id ="
18066  " (SELECT config FROM tasks WHERE id = %llu);",
18067  task);
18068  return sql_string ("SELECT name FROM configs WHERE id ="
18069  " (SELECT config FROM tasks WHERE id = %llu);",
18070  task);
18071 }
int task_config_in_trash(task_t task)
Return whether the config of a task is in the trashcan.
Definition: manage_sql.c:18081
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_config_uuid()

char* task_config_uuid ( task_t  task)

Return the UUID of the config of a task.

Parameters
[in]taskTask.
Returns
UUID of config of task.

Definition at line 18043 of file manage_sql.c.

References sql_string(), and task_config_in_trash().

18044 {
18045  if (task_config_in_trash (task))
18046  return sql_string ("SELECT uuid FROM configs_trash WHERE id ="
18047  " (SELECT config FROM tasks WHERE id = %llu);",
18048  task);
18049  return sql_string ("SELECT uuid FROM configs WHERE id ="
18050  " (SELECT config FROM tasks WHERE id = %llu);",
18051  task);
18052 }
int task_config_in_trash(task_t task)
Return whether the config of a task is in the trashcan.
Definition: manage_sql.c:18081
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_count()

unsigned int task_count ( const get_data_t get)

Return the number of tasks associated with the current user.

Parameters
[in]getGET params.
Returns
The number of tasks associated with the current user.

Definition at line 17814 of file manage_sql.c.

References filter_term(), filter_term_value(), MIN_QOD_DEFAULT, TASK_ITERATOR_COLUMNS, TASK_ITERATOR_FILTER_COLUMNS, and TASK_ITERATOR_WHERE_COLUMNS.

17815 {
17816  static const char *extra_columns[] = TASK_ITERATOR_FILTER_COLUMNS;
17817  static column_t columns[] = TASK_ITERATOR_COLUMNS;
17818  static column_t where_columns[] = TASK_ITERATOR_WHERE_COLUMNS;
17819  char *filter;
17820  gchar *value;
17821  int overrides, min_qod;
17822  gchar *extra_tables;
17823  int ret;
17824 
17825  if (get->filt_id && strcmp (get->filt_id, "0"))
17826  {
17827  filter = filter_term (get->filt_id);
17828  if (filter == NULL)
17829  return 2;
17830  }
17831  else
17832  filter = NULL;
17833  value = filter_term_value (filter ? filter : get->filter, "apply_overrides");
17834  overrides = value && strcmp (value, "0");
17835  g_free (value);
17836 
17837  value = filter_term_value (filter ? filter : get->filter, "min_qod");
17838  if (value == NULL || sscanf (value, "%d", &min_qod) != 1)
17839  min_qod = MIN_QOD_DEFAULT;
17840  g_free (value);
17841  free (filter);
17842 
17843  extra_tables = task_iterator_opts_table (overrides, min_qod, 0);
17844 
17845  ret = count2 ("task", get,
17846  columns,
17847  columns,
17848  where_columns,
17849  where_columns,
17850  extra_columns, 0,
17851  extra_tables,
17852  get->trash
17853  ? " AND hidden = 2"
17854  : " AND hidden = 0",
17855  TRUE);
17856 
17857  g_free (extra_tables);
17858  return ret;
17859 }
int trash
Boolean. Whether to return from trashcan.
Definition: manage.h:318
#define MIN_QOD_DEFAULT
Default min quality of detection percentage for filters.
Definition: manage.h:1110
#define TASK_ITERATOR_COLUMNS
Task iterator columns.
Definition: manage_sql.c:13934
char * filt_id
Filter ID. Overrides "filter".
Definition: manage.h:313
gchar * filter_term_value(const char *, const char *)
#define TASK_ITERATOR_FILTER_COLUMNS
Filter columns for task iterator.
Definition: manage_sql.c:13703
Iterator column.
Definition: manage_sql.c:1512
gchar * filter_term(const char *)
#define TASK_ITERATOR_WHERE_COLUMNS
Task iterator WHERE columns.
Definition: manage_sql.c:13925
char * filter
Filter term.
Definition: manage.h:314
Here is the call graph for this function:

◆ task_debugs_size()

int task_debugs_size ( task_t  )

◆ task_description()

char* task_description ( task_t  )

◆ task_false_positive_size()

int task_false_positive_size ( task_t  )

◆ task_group_iterator_name()

const char* task_group_iterator_name ( iterator_t )

◆ task_group_iterator_uuid()

const char* task_group_iterator_uuid ( iterator_t )

◆ task_holes_size()

int task_holes_size ( task_t  )

◆ task_hosts_ordering()

char* task_hosts_ordering ( task_t  task)

Return the hosts ordering of a task.

Parameters
[in]taskTask.
Returns
Hosts ordering of task.

Definition at line 17973 of file manage_sql.c.

References sql_string().

17974 {
17975  return sql_string ("SELECT hosts_ordering FROM tasks WHERE id = %llu;",
17976  task);
17977 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_id()

unsigned int task_id ( task_t  task)

Return the identifier of a task.

Parameters
[in]taskTask.
Returns
ID of task.
Todo:
The cast is a hack for compatibility with the old, alternate, FS based storage mechanism.

Definition at line 17869 of file manage_sql.c.

Referenced by manage_test_alert(), move_task(), resume_task(), set_task_schedule_next_time_uuid(), set_task_schedule_periods(), set_task_schedule_uuid(), stop_task(), task_schedule_next_time_uuid(), task_schedule_periods_uuid(), and task_schedule_uuid().

17870 {
17873  return (unsigned int) task;
17874 }
Here is the caller graph for this function:

◆ task_in_trash()

int task_in_trash ( task_t  task)

Return whether a task is in the trashcan.

Parameters
[in]taskTask.
Returns
1 if in trashcan, else 0.

Definition at line 17900 of file manage_sql.c.

References sql_int().

17901 {
17902  return sql_int ("SELECT hidden = 2"
17903  " FROM tasks WHERE id = %llu;",
17904  task);
17905 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_in_use()

int task_in_use ( task_t  task)

Return whether a task is in use by a task.

Parameters
[in]taskTask.
Returns
0.

Definition at line 14202 of file manage_sql.c.

References task_run_status(), TASK_STATUS_DELETE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_WAITING, TASK_STATUS_DELETE_WAITING, TASK_STATUS_REQUESTED, TASK_STATUS_RUNNING, TASK_STATUS_STOP_REQUESTED, TASK_STATUS_STOP_REQUESTED_GIVEUP, and TASK_STATUS_STOP_WAITING.

Referenced by trash_task_in_use().

14203 {
14204  task_status_t status;
14205  status = task_run_status (task);
14206  return status == TASK_STATUS_DELETE_REQUESTED
14207  || status == TASK_STATUS_DELETE_WAITING
14210  || status == TASK_STATUS_REQUESTED
14211  || status == TASK_STATUS_RUNNING
14213  || status == TASK_STATUS_STOP_REQUESTED
14214  || status == TASK_STATUS_STOP_WAITING;
14215 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
task_status_t task_run_status(task_t task)
Return the run state of a task.
Definition: manage_sql.c:18238
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_infos_size()

int task_infos_size ( task_t  )

◆ task_iterator_current_report()

report_t task_iterator_current_report ( iterator_t iterator)

Return the current report of a task.

Parameters
[in]iteratorIterator.
Returns
Current report of task if task is active, else (report_t) 0.

Definition at line 18416 of file manage_sql.c.

References get_iterator_resource(), sql_int(), task_iterator_run_status(), TASK_STATUS_DELETE_REQUESTED, TASK_STATUS_DELETE_ULTIMATE_REQUESTED, TASK_STATUS_INTERNAL_ERROR, TASK_STATUS_REQUESTED, TASK_STATUS_RUNNING, TASK_STATUS_STOP_REQUESTED, TASK_STATUS_STOP_REQUESTED_GIVEUP, and TASK_STATUS_STOPPED.

18417 {
18420  if (run_status == TASK_STATUS_REQUESTED
18421  || run_status == TASK_STATUS_RUNNING
18422  || run_status == TASK_STATUS_DELETE_REQUESTED
18423  || run_status == TASK_STATUS_DELETE_ULTIMATE_REQUESTED
18424  || run_status == TASK_STATUS_STOP_REQUESTED
18425  || run_status == TASK_STATUS_STOP_REQUESTED_GIVEUP
18426  || run_status == TASK_STATUS_STOPPED
18427  || run_status == TASK_STATUS_INTERNAL_ERROR)
18428  {
18429  return (unsigned int) sql_int ("SELECT max(id) FROM reports"
18430  " WHERE task = %llu"
18431  " AND (scan_run_status = %u"
18432  " OR scan_run_status = %u"
18433  " OR scan_run_status = %u"
18434  " OR scan_run_status = %u"
18435  " OR scan_run_status = %u"
18436  " OR scan_run_status = %u"
18437  " OR scan_run_status = %u"
18438  " OR scan_run_status = %u);",
18439  task,
18448  }
18449  return (report_t) 0;
18450 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
resource_t get_iterator_resource(iterator_t *)
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
A generic SQL iterator.
Definition: iterator.h:52
task_status_t task_iterator_run_status(iterator_t *iterator)
Get the run status from a task iterator.
Definition: manage_sql.c:14088
long long int report_t
Definition: manage.h:288
long long int task_t
Definition: manage.h:286
Here is the call graph for this function:

◆ task_iterator_finished_reports()

int task_iterator_finished_reports ( iterator_t iterator)

Get the number of reports of a task iterator.

Parameters
[in]iteratorIterator.
Returns
Count of all task reports.

Definition at line 14160 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_int().

14161 {
14162  if (iterator->done) return 0;
14164 }
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_first_report()

const char* task_iterator_first_report ( iterator_t iterator)

Get the first report UUID from a task iterator.

Parameters
[in]iteratorIterator.
Returns
First report UUID.

Definition at line 14118 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_string().

14119 {
14120  if (iterator->done) return 0;
14122 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_hosts_ordering()

const char* task_iterator_hosts_ordering ( iterator_t iterator)

Get the hosts ordering value from a task iterator.

Parameters
[in]iteratorIterator.
Returns
Task hosts ordering.

Definition at line 14174 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_string().

14175 {
14176  if (iterator->done) return 0;
14178 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_last_report()

const char* task_iterator_last_report ( iterator_t iterator)

Get the last report UUID from a task iterator.

Parameters
[in]iteratorIterator.
Returns
Last report UUID.

Definition at line 14146 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_string().

14147 {
14148  if (iterator->done) return 0;
14150 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_run_status()

task_status_t task_iterator_run_status ( iterator_t iterator)

Get the run status from a task iterator.

Parameters
[in]iteratorIterator.
Returns
Task run status.

Definition at line 14088 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, iterator_int(), and TASK_STATUS_INTERNAL_ERROR.

Referenced by stop_active_tasks(), and task_iterator_current_report().

14089 {
14090  task_status_t ret;
14092  ret = (unsigned int) iterator_int (iterator, GET_ITERATOR_COLUMN_COUNT);
14093  return ret;
14094 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_iterator_run_status_name()

const char* task_iterator_run_status_name ( iterator_t iterator)

Get the run status name from a task iterator.

Parameters
[in]iteratorIterator.
Returns
Task run status name.

Definition at line 14132 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_string().

14133 {
14134  if (iterator->done) return 0;
14136 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
const char * iterator_string(iterator_t *iterator, int col)
Get a string column from an iterator.
Definition: sql.c:652
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_scanner()

scanner_t task_iterator_scanner ( iterator_t iterator)

Get the UUID of task scanner from a task iterator.

Parameters
[in]iteratorIterator.
Returns
Task scanner if found, NULL otherwise.

Definition at line 14188 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_int64().

14189 {
14190  if (iterator->done) return 0;
14192 }
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
long long int iterator_int64(iterator_t *iterator, int col)
Get an integer column from an iterator.
Definition: sql.c:637
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_total_reports()

int task_iterator_total_reports ( iterator_t iterator)

Get the number of reports of a task iterator.

Parameters
[in]iteratorIterator.
Returns
Count of all task reports.

Definition at line 14104 of file manage_sql.c.

References iterator::done, GET_ITERATOR_COLUMN_COUNT, and iterator_int().

14105 {
14106  if (iterator->done) return 0;
14108 }
int iterator_int(iterator_t *iterator, int col)
Get a int column from an iterator.
Definition: sql.c:622
A generic SQL iterator.
Definition: iterator.h:52
gboolean done
End flag.
Definition: iterator.h:55
#define GET_ITERATOR_COLUMN_COUNT
Number of columns for GET iterator.
Definition: manage_sql.c:4191
Here is the call graph for this function:

◆ task_iterator_trend_counts()

const char* task_iterator_trend_counts ( iterator_t ,
int  ,
int  ,
int  ,
double  ,
int  ,
int  ,
int  ,
double   
)

◆ task_last_report()

int task_last_report ( task_t  task,
report_t report 
)

Get the report from the most recently completed invocation of task.

Parameters
[in]taskThe task.
[out]reportReport return, 0 if succesfully failed to select report.
Returns
0 success, -1 error.

Definition at line 18542 of file manage_sql.c.

References sql_int64(), and TASK_STATUS_DONE.

Referenced by sql_task_last_report().

18543 {
18544  switch (sql_int64 (report,
18545  "SELECT id FROM reports WHERE task = %llu"
18546  " AND scan_run_status = %u"
18547  " ORDER BY date DESC LIMIT 1;",
18548  task,
18550  {
18551  case 0:
18552  break;
18553  case 1: /* Too few rows in result of query. */
18554  *report = 0;
18555  return 0;
18556  break;
18557  default: /* Programming error. */
18558  assert (0);
18559  case -1:
18560  return -1;
18561  break;
18562  }
18563  return 0;
18564 }
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_last_stopped_report()

int task_last_stopped_report ( task_t  task,
report_t report 
)

Get the report from the most recently stopped invocation of task.

Parameters
[in]taskThe task.
[out]reportReport return, 0 if succesfully failed to select report.
Returns
0 success, -1 error.

Definition at line 18608 of file manage_sql.c.

References sql_int64(), and TASK_STATUS_STOPPED.

18609 {
18610  switch (sql_int64 (report,
18611  "SELECT id FROM reports WHERE task = %llu"
18612  " AND scan_run_status = %u"
18613  " ORDER BY date DESC LIMIT 1;",
18614  task,
18616  {
18617  case 0:
18618  break;
18619  case 1: /* Too few rows in result of query. */
18620  *report = 0;
18621  return 0;
18622  break;
18623  default: /* Programming error. */
18624  assert (0);
18625  case -1:
18626  return -1;
18627  break;
18628  }
18629  return 0;
18630 }
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
Here is the call graph for this function:

◆ task_logs_size()

int task_logs_size ( task_t  )

◆ task_name()

char* task_name ( task_t  task)

Return the name of a task.

Parameters
[in]taskTask.
Returns
Task name.

Definition at line 17945 of file manage_sql.c.

References sql_string().

17946 {
17947  return sql_string ("SELECT name FROM tasks WHERE id = %llu;",
17948  task);
17949 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_observers()

char* task_observers ( task_t  task)

Return the observers of a task.

Parameters
[in]taskTask.
Returns
Observers of task.

Definition at line 17987 of file manage_sql.c.

References cleanup_iterator(), init_task_user_iterator(), and next().

17988 {
17989  iterator_t users;
17990  GString *observers;
17991 
17992  observers = g_string_new ("");
17993 
17994  init_task_user_iterator (&users, task);
17995  if (next (&users))
17996  {
17997  g_string_append (observers, task_user_iterator_name (&users));
17998  while (next (&users))
17999  g_string_append_printf (observers,
18000  " %s",
18001  task_user_iterator_name (&users));
18002  }
18003  cleanup_iterator (&users);
18004 
18005  return g_string_free (observers, FALSE);
18006 }
A generic SQL iterator.
Definition: iterator.h:52
void init_task_user_iterator(iterator_t *iterator, task_t task)
Initialise a task user iterator.
Definition: manage_sql.c:6797
void cleanup_iterator(iterator_t *)
Cleanup an iterator.
Definition: sql.c:664
gboolean next(iterator_t *)
Increment an iterator.
Definition: sql.c:689
Here is the call graph for this function:

◆ task_owner_name()

char* task_owner_name ( task_t  task)

Return the name of the owner of a task.

Parameters
[in]taskTask.
Returns
Newly allocated user name.

Definition at line 17915 of file manage_sql.c.

References sql_string().

17916 {
17917  return sql_string ("SELECT name FROM users WHERE id ="
17918  " (SELECT owner FROM tasks WHERE id = %llu);",
17919  task);
17920 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_preference_value()

char* task_preference_value ( task_t  ,
const char *   
)

◆ task_report_count()

unsigned int task_report_count ( task_t  )

◆ task_result_count()

int task_result_count ( task_t  task,
int  min_qod 
)

Return number of results in a task.

Parameters
[in]taskTask.
[in]min_qodMinimum QOD.
Returns
Result count.

Definition at line 18375 of file manage_sql.c.

References SEVERITY_ERROR, and sql_int().

18376 {
18377  return sql_int ("SELECT count (*) FROM results"
18378  " WHERE task = %llu"
18379  " AND qod > %i"
18380  " AND severity > " G_STRINGIFY (SEVERITY_ERROR) ";",
18381  task,
18382  min_qod);
18383 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
#define SEVERITY_ERROR
Definition: manage_utils.h:38
Here is the call graph for this function:

◆ task_role_iterator_name()

const char* task_role_iterator_name ( iterator_t )

◆ task_role_iterator_uuid()

const char* task_role_iterator_uuid ( iterator_t )

◆ task_run_status()

task_status_t task_run_status ( task_t  task)

Return the run state of a task.

Parameters
[in]taskTask.
Returns
Task run status.

Definition at line 18238 of file manage_sql.c.

References sql_int().

Referenced by manage_check_current_task(), move_task(), resume_task(), set_task_requested(), stop_task_internal(), task_in_use(), and task_running_report().

18239 {
18240  return (unsigned int) sql_int ("SELECT run_status FROM tasks WHERE id = %llu;",
18241  task);
18242 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_running_report()

report_t task_running_report ( task_t  task)

Return the running report of a task.

Parameters
[in]taskTask.
Returns
Current report of task if task is active, else (report_t) 0.

Definition at line 18393 of file manage_sql.c.

References sql_int(), task_run_status(), TASK_STATUS_REQUESTED, and TASK_STATUS_RUNNING.

Referenced by task_upload_progress().

18394 {
18395  task_status_t run_status = task_run_status (task);
18396  if (run_status == TASK_STATUS_REQUESTED
18397  || run_status == TASK_STATUS_RUNNING)
18398  {
18399  return (unsigned int) sql_int ("SELECT max(id) FROM reports"
18400  " WHERE task = %llu AND end_time IS NULL"
18401  " AND scan_run_status = %u;",
18402  task,
18404  }
18405  return (report_t) 0;
18406 }
task_status_t
Task statuses, also used as scan/report statuses.
Definition: manage.h:218
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
long long int report_t
Definition: manage.h:288
task_status_t task_run_status(task_t task)
Return the run state of a task.
Definition: manage_sql.c:18238
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_scanner()

scanner_t task_scanner ( task_t  task)

Return the scanner of a task.

Parameters
[in]taskTask.
Returns
scanner of task.

Definition at line 18183 of file manage_sql.c.

References sql_int64().

Referenced by move_task(), and stop_task_internal().

18184 {
18185  scanner_t scanner = 0;
18186  switch (sql_int64 (&scanner, "SELECT scanner FROM tasks WHERE id = %llu;",
18187  task))
18188  {
18189  case 0:
18190  return scanner;
18191  break;
18192  case 1: /* Too few rows in result of query. */
18193  default: /* Programming error. */
18194  assert (0);
18195  case -1:
18196  return 0;
18197  break;
18198  }
18199 }
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
long long int scanner_t
Definition: manage.h:300
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_scanner_in_trash()

int task_scanner_in_trash ( task_t  task)

Return whether the scanner of a task is in the trashcan.

Parameters
[in]taskTask.
Returns
1 if in trash, else 0.

Definition at line 18224 of file manage_sql.c.

References LOCATION_TRASH, and sql_int().

18225 {
18226  return sql_int ("SELECT scanner_location = " G_STRINGIFY (LOCATION_TRASH)
18227  " FROM tasks WHERE id = %llu;", task);
18228 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_schedule()

schedule_t task_schedule ( task_t  task)

Return the schedule of a task.

Parameters
[in]taskTask.
Returns
Schedule.

Definition at line 18911 of file manage_sql.c.

References sql_int64().

18912 {
18913  schedule_t schedule = 0;
18914  switch (sql_int64 (&schedule,
18915  "SELECT schedule FROM tasks WHERE id = %llu;",
18916  task))
18917  {
18918  case 0:
18919  return schedule;
18920  break;
18921  case 1: /* Too few rows in result of query. */
18922  default: /* Programming error. */
18923  assert (0);
18924  case -1:
18925  return 0;
18926  break;
18927  }
18928 }
long long int schedule_t
Definition: manage.h:299
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
Here is the call graph for this function:

◆ task_schedule_in_trash()

int task_schedule_in_trash ( task_t  task)

Get whether the task schedule is in the trash.

Parameters
[in]taskTask.
Returns
1 if in trash, else 0.

Definition at line 18971 of file manage_sql.c.

References LOCATION_TRASH, and sql_int().

18972 {
18973  return sql_int ("SELECT schedule_location = " G_STRINGIFY (LOCATION_TRASH)
18974  " FROM tasks"
18975  " WHERE id = %llu;",
18976  task);
18977 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_schedule_next_time()

int task_schedule_next_time ( task_t  task)

Get next time a scheduled task will run, following schedule timezone.

Parameters
[in]taskTask.
Returns
If the task has a schedule, the next time the task will run (0 if it has already run), otherwise 0.

Definition at line 19021 of file manage_sql.c.

References next_time(), and sql_int().

19022 {
19023  int next_time;
19024 
19025  next_time = sql_int ("SELECT schedule_next_time FROM tasks"
19026  " WHERE id = %llu;",
19027  task);
19028 
19029  return next_time;
19030 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
time_t next_time(time_t first, int period, int period_months, const char *timezone, int periods_offset)
Calculate the next time from now given a start time and a period.
Definition: manage_utils.c:287
Here is the call graph for this function:

◆ task_schedule_next_time_uuid()

time_t task_schedule_next_time_uuid ( const gchar *  task_id)

Set the next time a scheduled task will be due.

Parameters
[in]task_idTask UUID.

Definition at line 19038 of file manage_sql.c.

References sql_int(), sql_quote(), and task_id().

Referenced by manage_schedule().

19039 {
19040  gchar *quoted_task_id;
19041  time_t ret;
19042 
19043  quoted_task_id = sql_quote (task_id);
19044  ret = (time_t) sql_int ("SELECT schedule_next_time FROM tasks"
19045  " WHERE uuid = '%s';",
19046  quoted_task_id);
19047  g_free (quoted_task_id);
19048  return ret;
19049 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
unsigned int task_id(task_t task)
Return the identifier of a task.
Definition: manage_sql.c:17869
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_schedule_periods()

int task_schedule_periods ( task_t  task)

Get the number of times the period schedule should run on the task.

Parameters
[in]taskTask.
Returns
Number of times.

Definition at line 18987 of file manage_sql.c.

References sql_int().

18988 {
18989  return sql_int ("SELECT schedule_periods FROM tasks WHERE id = %llu;", task);
18990 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_schedule_periods_uuid()

int task_schedule_periods_uuid ( const gchar *  task_id)

Set the next time a scheduled task will be due.

Parameters
[in]task_idTask UUID.
Returns
Task schedule periods.

Definition at line 19000 of file manage_sql.c.

References sql_int(), sql_quote(), and task_id().

Referenced by manage_schedule().

19001 {
19002  gchar *quoted_task_id;
19003  int ret;
19004 
19005  quoted_task_id = sql_quote (task_id);
19006  ret = sql_int ("SELECT schedule_periods FROM tasks WHERE uuid = '%s';",
19007  quoted_task_id);
19008  g_free (quoted_task_id);
19009  return ret;
19010 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
unsigned int task_id(task_t task)
Return the identifier of a task.
Definition: manage_sql.c:17869
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_schedule_uuid()

schedule_t task_schedule_uuid ( const gchar *  task_id)

Return the schedule of a task.

Parameters
[in]task_idID of task.
Returns
Schedule.

Definition at line 18938 of file manage_sql.c.

References sql_int64(), sql_quote(), and task_id().

Referenced by manage_schedule().

18939 {
18940  schedule_t schedule;
18941  gchar *quoted_task_id;
18942 
18943  quoted_task_id = sql_quote (task_id);
18944  schedule = 0;
18945  switch (sql_int64 (&schedule,
18946  "SELECT schedule FROM tasks WHERE uuid = '%s';",
18947  quoted_task_id))
18948  {
18949  case 0:
18950  g_free (quoted_task_id);
18951  return schedule;
18952  break;
18953  case 1: /* Too few rows in result of query. */
18954  default: /* Programming error. */
18955  assert (0);
18956  case -1:
18957  g_free (quoted_task_id);
18958  return 0;
18959  break;
18960  }
18961 }
long long int schedule_t
Definition: manage.h:299
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
unsigned int task_id(task_t task)
Return the identifier of a task.
Definition: manage_sql.c:17869
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_second_last_report_id()

gchar* task_second_last_report_id ( task_t  task)

Get report ID from second most recently completed invocation of task.

Parameters
[in]taskThe task.
Returns
The UUID of the report as a newly allocated string.

Definition at line 18640 of file manage_sql.c.

References sql_string(), and TASK_STATUS_DONE.

18641 {
18642  return sql_string ("SELECT uuid FROM reports WHERE task = %llu"
18643  " AND scan_run_status = %u"
18644  " ORDER BY date DESC LIMIT 1 OFFSET 1;",
18645  task,
18647 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:

◆ task_severity()

char* task_severity ( task_t  task,
int  overrides,
int  min_qod,
int  offset 
)

Return the severity score of a task, taking overrides into account.

Parameters
[in]taskTask.
[in]overridesWhether to apply overrides.
[in]min_qodMinimum QoD of results to count.
[in]offsetOffset of report to get severity from: 0 = use last report, 1 = use next to last report
Returns
Severity score of last report on task if there is one, as a freshly allocated string, else NULL.

Definition at line 19094 of file manage_sql.c.

References SEVERITY_MISSING, and task_severity_double().

19095 {
19096  double severity;
19097 
19098  severity = task_severity_double (task, overrides, min_qod, offset);
19099 
19100  if (severity == SEVERITY_MISSING)
19101  return NULL;
19102  else
19103  return g_strdup_printf ("%0.1f", severity);
19104 }
double task_severity_double(task_t task, int overrides, int min_qod, int offset)
Return the severity score of a task, taking overrides into account.
Definition: manage_sql.c:19119
#define SEVERITY_MISSING
Definition: manage_utils.h:40
Here is the call graph for this function:

◆ task_severity_double()

double task_severity_double ( task_t  task,
int  overrides,
int  min_qod,
int  offset 
)

Return the severity score of a task, taking overrides into account.

Parameters
[in]taskTask.
[in]overridesWhether to apply overrides.
[in]min_qodMinimum QoD of results to count.
[in]offsetOffset of report to get severity from: 0 = use last report, 1 = use next to last report
Returns
Severity score of last report on task as a double if there is one, else SEVERITY_MISSING.

Definition at line 19119 of file manage_sql.c.

References current_credentials, report_severity(), SEVERITY_MISSING, sql_int64(), TASK_STATUS_DONE, and task_target().

Referenced by task_severity().

19120 {
19121  report_t report;
19122 
19123  if (current_credentials.uuid == NULL
19124  || task_target (task) == 0 /* Container task. */)
19125  return SEVERITY_MISSING;
19126 
19127  sql_int64 (&report,
19128  "SELECT id FROM reports"
19129  " WHERE reports.task = %llu"
19130  " AND reports.scan_run_status = %u"
19131  " ORDER BY reports.date DESC"
19132  " LIMIT 1 OFFSET %d",
19133  task, TASK_STATUS_DONE, offset);
19134 
19135  return report_severity (report, overrides, min_qod);
19136 }
double report_severity(report_t, int, int)
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
long long int report_t
Definition: manage.h:288
#define SEVERITY_MISSING
Definition: manage_utils.h:40
credentials_t current_credentials
Current credentials during any OMP command.
Definition: manage.c:717
target_t task_target(task_t task)
Return the target of a task.
Definition: manage_sql.c:18111
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_target()

target_t task_target ( task_t  task)

Return the target of a task.

Parameters
[in]taskTask.
Returns
Target of task.

Definition at line 18111 of file manage_sql.c.

References sql_int64().

Referenced by run_osp_task(), and task_severity_double().

18112 {
18113  target_t target = 0;
18114  switch (sql_int64 (&target,
18115  "SELECT target FROM tasks WHERE id = %llu;",
18116  task))
18117  {
18118  case 0:
18119  return target;
18120  break;
18121  case 1: /* Too few rows in result of query. */
18122  default: /* Programming error. */
18123  assert (0);
18124  case -1:
18125  return 0;
18126  break;
18127  }
18128 }
long long int target_t
Definition: manage.h:285
int sql_int64(long long int *ret, char *sql,...)
Get a particular cell from a SQL query, as an int64.
Definition: sql.c:501
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_target_in_trash()

int task_target_in_trash ( task_t  task)

Return whether the target of a task is in the trashcan.

Parameters
[in]taskTask.
Returns
1 if in trash, else 0.

Definition at line 18168 of file manage_sql.c.

References LOCATION_TRASH, and sql_int().

18169 {
18170  return sql_int ("SELECT target_location = " G_STRINGIFY (LOCATION_TRASH)
18171  " FROM tasks WHERE id = %llu;",
18172  task);
18173 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ task_trend()

const char* task_trend ( task_t  ,
int  ,
int   
)

Referenced by sql_task_trend().

Here is the caller graph for this function:

◆ task_upload_progress()

int task_upload_progress ( task_t  task)

Return the upload progress of a task.

Parameters
[in]taskTask.
Returns
Task upload progress, as a percentage, or -1 on error.

Definition at line 18460 of file manage_sql.c.

References task_running_report().

18461 {
18462  report_t report;
18463  report = task_running_report (task);
18464  if (report)
18465  {
18466  int count;
18467  int using_sqlite = sql_is_sqlite3 ();
18468  get_data_t get;
18469  memset (&get, 0, sizeof (get_data_t));
18470  get.filter = g_strdup ("min_qod=0");
18471  count = result_count (&get, report, NULL);
18472  get_data_reset (&get);
18473 
18474  return sql_int ("SELECT"
18475  " %s (%s (((%i * 100) / upload_result_count), 100), -1)"
18476  " FROM tasks"
18477  " WHERE id = %llu;",
18478  using_sqlite ? "max" : "greatest",
18479  using_sqlite ? "min" : "least",
18480  count,
18481  task);
18482  }
18483  return -1;
18484 }
int sql_is_sqlite3()
Get whether backend is SQLite3.
Definition: sql_pg.c:92
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
int result_count(const get_data_t *, report_t, const char *)
Command data for a get command.
Definition: manage.h:310
long long int report_t
Definition: manage.h:288
void get_data_reset(get_data_t *)
Reset command data.
Definition: omp.c:2322
report_t task_running_report(task_t task)
Return the running report of a task.
Definition: manage_sql.c:18393
Here is the call graph for this function:

◆ task_uuid()

int task_uuid ( task_t  task,
char **  id 
)

Return the UUID of a task.

Parameters
[in]taskTask.
[out]idPointer to a newly allocated string.
Returns
0.

Definition at line 17885 of file manage_sql.c.

References sql_string().

Referenced by acl_user_has_access_uuid(), and manage_schedule().

17886 {
17887  *id = sql_string ("SELECT uuid FROM tasks WHERE id = %llu;",
17888  task);
17889  return 0;
17890 }
char * sql_string(char *sql,...)
Get a particular cell from a SQL query, as an string.
Definition: sql.c:469
Here is the call graph for this function:
Here is the caller graph for this function:

◆ task_warnings_size()

int task_warnings_size ( task_t  )

◆ task_writable()

int task_writable ( task_t  task)

Return whether a task is writable.

Parameters
[in]taskTask.
Returns
1 if writable, else 0.

Definition at line 14253 of file manage_sql.c.

References sql_int().

14254 {
14255  return sql_int ("SELECT hidden = 0 FROM tasks"
14256  " WHERE id = %llu",
14257  task);
14258 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ total_asset_count()

int total_asset_count ( const get_data_t )

◆ total_info_count()

int total_info_count ( const get_data_t ,
int   
)

◆ trash_agent_in_use()

int trash_agent_in_use ( agent_t  )

◆ trash_agent_writable()

int trash_agent_writable ( agent_t  )

◆ trash_alert_in_use()

int trash_alert_in_use ( alert_t  alert)

Return whether a trashcan alert is in use by a task.

Parameters
[in]alertAlert.
Returns
1 if in use, else 0.

Definition at line 8520 of file manage_sql.c.

References LOCATION_TRASH, and sql_int().

8521 {
8522  return !!sql_int ("SELECT count(*) FROM task_alerts"
8523  " WHERE alert = %llu"
8524  " AND alert_location = " G_STRINGIFY (LOCATION_TRASH),
8525  alert);
8526 }
#define LOCATION_TRASH
Location of a constituent of a trashcan resource.
Definition: manage_sql.h:86
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ trash_alert_writable()

int trash_alert_writable ( alert_t  alert)

Return whether a trashcan alert is writable.

Parameters
[in]alertAlert.
Returns
1 if writable, else 0.

Definition at line 8549 of file manage_sql.c.

8550 {
8551  return 1;
8552 }

◆ trash_config_in_use()

int trash_config_in_use ( config_t  )

◆ trash_config_readable_uuid()

int trash_config_readable_uuid ( const gchar *  )

◆ trash_config_writable()

int trash_config_writable ( config_t  )

◆ trash_credential_in_use()

int trash_credential_in_use ( credential_t  )

◆ trash_credential_name()

char* trash_credential_name ( credential_t  )

◆ trash_credential_readable()

int trash_credential_readable ( credential_t  )

◆ trash_credential_uuid()

char* trash_credential_uuid ( credential_t  )

◆ trash_credential_writable()

int trash_credential_writable ( credential_t  )

◆ trash_filter_in_use()

int trash_filter_in_use ( filter_t  )

◆ trash_filter_name()

char* trash_filter_name ( filter_t  )

Referenced by alert_iterator_filter_name().

Here is the caller graph for this function:

◆ trash_filter_uuid()

char* trash_filter_uuid ( filter_t  )

Referenced by alert_iterator_filter_uuid().

Here is the caller graph for this function:

◆ trash_filter_writable()

int trash_filter_writable ( filter_t  )

◆ trash_group_in_use()

int trash_group_in_use ( group_t  )

◆ trash_group_writable()

int trash_group_writable ( group_t  )

◆ trash_id_exists()

int trash_id_exists ( const char *  type,
const char *  id 
)

Test Whether a resource of the given type and ID exists in the trash.

Parameters
[in]typeType.
[in]idUnique ID.
Returns
1 if the resource exists, 0 otherwise.

Definition at line 17780 of file manage_sql.c.

References sql_int().

17781 {
17782  if ((strcmp (type, "nvt") == 0)
17783  || (strcmp (type, "cpe") == 0)
17784  || (strcmp (type, "cve") == 0)
17785  || (strcmp (type, "ovaldef") == 0)
17786  || (strcmp (type, "cert_bund_adv") == 0)
17787  || (strcmp (type, "dfn_cert_adv") == 0)
17788  || (strcmp (type, "report") == 0)
17789  || (strcmp (type, "result") == 0)
17790  || (strcmp (type, "user") == 0))
17791  return 0;
17792  else if (strcmp (type, "task"))
17793  return !!sql_int ("SELECT count(*)"
17794  " FROM %ss_trash"
17795  " WHERE uuid='%s';",
17796  type,
17797  id);
17798  else
17799  return !!sql_int ("SELECT count(*)"
17800  " FROM tasks"
17801  " WHERE uuid='%s'"
17802  " AND hidden=2;",
17803  id);
17804 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ trash_permission_in_use()

int trash_permission_in_use ( permission_t  )

◆ trash_permission_writable()

int trash_permission_writable ( permission_t  )

◆ trash_port_list_in_use()

int trash_port_list_in_use ( port_list_t  )

◆ trash_port_list_readable_uuid()

int trash_port_list_readable_uuid ( const gchar *  )

◆ trash_port_list_writable()

int trash_port_list_writable ( port_list_t  )

◆ trash_report_format_global()

int trash_report_format_global ( report_format_t  )

◆ trash_report_format_in_use()

int trash_report_format_in_use ( report_format_t  )

◆ trash_report_format_writable()

int trash_report_format_writable ( report_format_t  )

◆ trash_role_in_use()

int trash_role_in_use ( role_t  )

◆ trash_role_writable()

int trash_role_writable ( role_t  )

◆ trash_scanner_in_use()

int trash_scanner_in_use ( scanner_t  )

◆ trash_scanner_readable()

int trash_scanner_readable ( scanner_t  )

◆ trash_scanner_writable()

int trash_scanner_writable ( scanner_t  )

◆ trash_schedule_in_use()

int trash_schedule_in_use ( schedule_t  )

◆ trash_schedule_readable()

int trash_schedule_readable ( schedule_t  )

◆ trash_schedule_writable()

int trash_schedule_writable ( schedule_t  )

◆ trash_tag_in_use()

int trash_tag_in_use ( tag_t  )

◆ trash_tag_writable()

int trash_tag_writable ( tag_t  )

◆ trash_target_credential()

credential_t trash_target_credential ( target_t  ,
const char *   
)

Referenced by sql_target_credential().

Here is the caller graph for this function:

◆ trash_target_credential_location()

int trash_target_credential_location ( target_t  ,
const char *   
)

Referenced by sql_trash_target_credential_location().

Here is the caller graph for this function:

◆ trash_target_exclude_hosts()

char* trash_target_exclude_hosts ( target_t  )

◆ trash_target_hosts()

char* trash_target_hosts ( target_t  )

◆ trash_target_in_use()

int trash_target_in_use ( target_t  )

◆ trash_target_login_port()

int trash_target_login_port ( target_t  ,
const char *   
)

Referenced by sql_target_login_port().

Here is the caller graph for this function:

◆ trash_target_name()

char* trash_target_name ( target_t  )

◆ trash_target_readable()

int trash_target_readable ( target_t  )

◆ trash_target_uuid()

char* trash_target_uuid ( target_t  )

◆ trash_target_writable()

int trash_target_writable ( target_t  )

◆ trash_task_in_use()

int trash_task_in_use ( task_t  task)

Return whether a trashcan task is referenced by a task.

Parameters
[in]taskTask.
Returns
0.

Definition at line 14225 of file manage_sql.c.

References task_in_use().

14226 {
14227  return task_in_use (task);
14228 }
int task_in_use(task_t task)
Return whether a task is in use by a task.
Definition: manage_sql.c:14202
Here is the call graph for this function:

◆ trash_task_writable()

int trash_task_writable ( task_t  task)

Return whether a trashcan task is writable.

Parameters
[in]taskTask.
Returns
1 if writable, else 0.

Definition at line 14268 of file manage_sql.c.

References sql_int().

14269 {
14270  return sql_int ("SELECT hidden = 2 FROM tasks"
14271  " WHERE id = %llu",
14272  task);
14273 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
Here is the call graph for this function:

◆ trash_user_in_use()

int trash_user_in_use ( user_t  )

◆ trash_user_writable()

int trash_user_writable ( user_t  )

◆ trim_partial_report()

void trim_partial_report ( report_t  )

◆ truncate_certificate()

gchar* truncate_certificate ( const gchar *  certificate)

Truncate a certificate, removing extra data.

Parameters
[in]certificateThe certificate.
Returns
The truncated private key as a newly allocated string or NULL.

Definition at line 174 of file manage.c.

Referenced by get_certificate_info().

175 {
176  gchar *cert_start, *cert_end;
177  cert_start = strstr (certificate, "-----BEGIN CERTIFICATE-----");
178  if (cert_start)
179  {
180  cert_end = strstr (cert_start, "-----END CERTIFICATE-----");
181 
182  if (cert_end == NULL)
183  return NULL;
184 
185  cert_end += strlen ("-----END CERTIFICATE-----");
186 
187  if (cert_end[0] == '\n')
188  cert_end++;
189 
190  return g_strndup (cert_start, cert_end - cert_start);
191  }
192  return NULL;
193 }
Here is the caller graph for this function:

◆ truncate_private_key()

gchar* truncate_private_key ( const gchar *  private_key)

Truncate a private key, removing extra data.

Parameters
[in]private_keyThe private key.
Returns
The truncated private key as a newly allocated string or NULL.

Definition at line 203 of file manage.c.

204 {
205  gchar *key_start, *key_end;
206  key_end = NULL;
207  key_start = strstr (private_key, "-----BEGIN RSA PRIVATE KEY-----");
208  if (key_start)
209  {
210  key_end = strstr (key_start, "-----END RSA PRIVATE KEY-----");
211 
212  if (key_end)
213  key_end += strlen ("-----END RSA PRIVATE KEY-----");
214  else
215  return NULL;
216  }
217  else
218  {
219  key_start = strstr (private_key, "-----BEGIN DSA PRIVATE KEY-----");
220  if (key_start)
221  {
222  key_end = strstr (key_start, "-----END DSA PRIVATE KEY-----");
223 
224  if (key_end)
225  key_end += strlen ("-----END DSA PRIVATE KEY-----");
226  else
227  return NULL;
228  }
229  }
230 
231  if (key_end && key_end[0] == '\n')
232  key_end++;
233 
234  if (key_start == NULL || key_end == NULL)
235  return NULL;
236  else
237  return g_strndup (key_start, key_end - key_start);
238 }

◆ type_columns()

char* type_columns ( const char *  ,
int   
)

Referenced by init_aggregate_iterator().

Here is the caller graph for this function:

◆ type_filter_columns()

const char** type_filter_columns ( const char *  ,
int   
)

Referenced by init_aggregate_iterator().

Here is the caller graph for this function:

◆ type_is_scap()

int type_is_scap ( const char *  type)

Check if a type is a SCAP type.

Parameters
[in]typeResource type.
Returns
Name of type.

Definition at line 474 of file manage.c.

475 {
476  return (strcasecmp (type, "cpe") == 0)
477  || (strcasecmp (type, "cve") == 0)
478  || (strcasecmp (type, "ovaldef") == 0);
479 }

◆ type_name()

const char* type_name ( const char *  type)

Return the name of a resource type.

Parameters
[in]typeResource type.
Returns
Name of type.

Definition at line 445 of file manage.c.

446 {
447  if (type == NULL)
448  return "ERROR";
449 
450  if (strcasecmp (type, "cpe") == 0)
451  return "CPE";
452  if (strcasecmp (type, "cve") == 0)
453  return "CVE";
454  if (strcasecmp (type, "cert_bund_adv") == 0)
455  return "CERT-Bund Advisory";
456  if (strcasecmp (type, "dfn_cert_adv") == 0)
457  return "DFN-CERT Advisory";
458  if (strcasecmp (type, "nvt") == 0)
459  return "NVT";
460  if (strcasecmp (type, "ovaldef") == 0)
461  return "OVAL Definition";
462 
463  return "ERROR";
464 }

◆ type_name_plural()

const char* type_name_plural ( const char *  type)

Return the plural name of a resource type.

Parameters
[in]typeResource type.
Returns
Plural name of type.

Definition at line 416 of file manage.c.

417 {
418  if (type == NULL)
419  return "ERROR";
420 
421  if (strcasecmp (type, "cpe") == 0)
422  return "CPEs";
423  if (strcasecmp (type, "cve") == 0)
424  return "CVEs";
425  if (strcasecmp (type, "cert_bund_adv") == 0)
426  return "CERT-Bund Advisories";
427  if (strcasecmp (type, "dfn_cert_adv") == 0)
428  return "DFN-CERT Advisories";
429  if (strcasecmp (type, "nvt") == 0)
430  return "NVTs";
431  if (strcasecmp (type, "ovaldef") == 0)
432  return "OVAL Definitions";
433 
434  return "ERROR";
435 }

◆ type_opts_table()

gchar* type_opts_table ( const char *  ,
int  ,
int  ,
int   
)

Referenced by init_aggregate_iterator().

Here is the caller graph for this function:

◆ type_table()

gchar* type_table ( const char *  ,
int   
)

◆ type_trash_columns()

char* type_trash_columns ( const char *  ,
int   
)

Referenced by init_aggregate_iterator().

Here is the caller graph for this function:

◆ update_duration_schedule_periods()

void update_duration_schedule_periods ( task_t  )

Referenced by manage_schedule().

Here is the caller graph for this function:

◆ user_can_everything()

int user_can_everything ( const char *  )

◆ user_can_super_everyone()

int user_can_super_everyone ( const char *  )

◆ user_count()

int user_count ( const get_data_t )

◆ user_group_iterator_name()

const char* user_group_iterator_name ( iterator_t )

◆ user_group_iterator_readable()

int user_group_iterator_readable ( iterator_t )

◆ user_group_iterator_uuid()

const char* user_group_iterator_uuid ( iterator_t )

◆ user_has_super()

int user_has_super ( const char *  ,
user_t   
)

◆ user_hosts()

gchar* user_hosts ( const char *  )

◆ user_hosts_allow()

int user_hosts_allow ( const char *  )

◆ user_ifaces()

gchar* user_ifaces ( const char *  )

◆ user_ifaces_allow()

int user_ifaces_allow ( const char *  )

◆ user_in_use()

int user_in_use ( user_t  )

◆ user_is_admin()

int user_is_admin ( const char *  )

◆ user_is_observer()

int user_is_observer ( const char *  )

◆ user_is_super_admin()

int user_is_super_admin ( const char *  uuid)

Check whether a user is a Super Admin.

Parameters
[in]uuidUuid of user.
Returns
1 if user is a Super Admin, else 0.

Definition at line 342 of file manage_acl.c.

References ROLE_UUID_SUPER_ADMIN, sql_int(), and sql_quote().

343 {
344  int ret;
345  gchar *quoted_uuid;
346 
347  quoted_uuid = sql_quote (uuid);
348  ret = sql_int ("SELECT count (*) FROM role_users"
349  " WHERE role = (SELECT id FROM roles"
350  " WHERE uuid = '" ROLE_UUID_SUPER_ADMIN "')"
351  " AND \"user\" = (SELECT id FROM users WHERE uuid = '%s');",
352  quoted_uuid);
353  g_free (quoted_uuid);
354  return ret;
355 }
int sql_int(char *sql,...)
Get a particular cell from a SQL query, as an int.
Definition: sql.c:438
#define ROLE_UUID_SUPER_ADMIN
Predefined role UUID.
Definition: manage_sql.h:193
gchar * sql_quote(const char *string)
Quotes a string to be passed to sql statements.
Definition: sql.c:121
Here is the call graph for this function:

◆ user_is_user()

int user_is_user ( const char *  )

◆ user_iterator_hosts()

const char* user_iterator_hosts ( iterator_t )

◆ user_iterator_hosts_allow()

int user_iterator_hosts_allow ( iterator_t )

◆ user_iterator_ifaces()

const char* user_iterator_ifaces ( iterator_t )

◆ user_iterator_ifaces_allow()

int user_iterator_ifaces_allow ( iterator_t )

◆ user_iterator_method()

const char* user_iterator_method ( iterator_t )

◆ user_iterator_role()

const char* user_iterator_role ( iterator_t )

◆ user_may()

int user_may ( const char *  )

◆ user_name()

gchar* user_name ( const char *  )

◆ user_resources_in_use()

int user_resources_in_use ( user_t  ,
const char *  ,
int(*)(resource_t ,
const char *  ,
int(*)(resource_t  
)

◆ user_role_iterator_name()

const char* user_role_iterator_name ( iterator_t )

◆ user_role_iterator_readable()

int user_role_iterator_readable ( iterator_t )

◆ user_role_iterator_uuid()

const char* user_role_iterator_uuid ( iterator_t )

◆ user_uuid()

char* user_uuid ( user_t  )

Referenced by check_generate_scripts(), and set_scheduled_user_uuid().

Here is the caller graph for this function:

◆ user_writable()

int user_writable ( user_t  )

◆ valid_db_resource_type()

int valid_db_resource_type ( const char *  type)

Check whether a resource type table name is valid.

Parameters
[in]typeType of resource.
Returns
1 yes, 0 no.

Definition at line 504 of file manage_utils.c.

Referenced by resource_exists(), resource_name(), resource_uuid(), and sql_resource_exists().

505 {
506  if (type == NULL)
507  return 0;
508 
509  return (strcasecmp (type, "agent") == 0)
510  || (strcasecmp (type, "alert") == 0)
511  || (strcasecmp (type, "config") == 0)
512  || (strcasecmp (type, "cpe") == 0)
513  || (strcasecmp (type, "credential") == 0)
514  || (strcasecmp (type, "cve") == 0)
515  || (strcasecmp (type, "cert_bund_adv") == 0)
516  || (strcasecmp (type, "dfn_cert_adv") == 0)
517  || (strcasecmp (type, "filter") == 0)
518  || (strcasecmp (type, "group") == 0)
519  || (strcasecmp (type, "host") == 0)
520  || (strcasecmp (type, "os") == 0)
521  || (strcasecmp (type, "note") == 0)
522  || (strcasecmp (type, "nvt") == 0)
523  || (strcasecmp (type, "ovaldef") == 0)
524  || (strcasecmp (type, "override") == 0)
525  || (strcasecmp (type, "port_list") == 0)
526  || (strcasecmp (type, "permission") == 0)
527  || (strcasecmp (type, "report") == 0)
528  || (strcasecmp (type, "report_format") == 0)
529  || (strcasecmp (type, "result") == 0)
530  || (strcasecmp (type, "role") == 0)
531  || (strcasecmp (type, "scanner") == 0)
532  || (strcasecmp (type, "schedule") == 0)
533  || (strcasecmp (type, "slave") == 0)
534  || (strcasecmp (type, "tag") == 0)
535  || (strcasecmp (type, "target") == 0)
536  || (strcasecmp (type, "task") == 0)
537  || (strcasecmp (type, "user") == 0);
538 }
Here is the caller graph for this function:

◆ verify_agent()

int verify_agent ( const char *  )

◆ verify_report_format()

int verify_report_format ( const char *  )

◆ verify_scanner()

int verify_scanner ( const char *  ,
char **   
)

◆ xsl_transform()

gchar* xsl_transform ( gchar *  stylesheet,
gchar *  xmlfile,
gchar **  param_names,
gchar **  param_values 
)

Run xsltproc in an external process.

Parameters
[in]stylesheetXSL stylesheet to use.
[in]xmlfileXML file to process.
[in]param_namesNULL terminated array of stringparam names (can be NULL).
[in]param_valuesNULL terminated array of stringparam values (can be NULL).
Returns
A dynamically allocated (to be g_free'd) string containing the result of the operation of NULL on failure.

Definition at line 7535 of file manage.c.

7537 {
7538  int i, param_idx;
7539  gchar **cmd, *cmd_full;
7540  gint exit_status;
7541  gboolean success;
7542  gchar *standard_out = NULL, *standard_err = NULL;
7543 
7544  param_idx = 0;
7545  if (param_names && param_values)
7546  while (param_names[param_idx] && param_values[param_idx])
7547  param_idx++;
7548 
7549  cmd = (gchar **)g_malloc ((4 + param_idx * 3) * sizeof (gchar *));
7550 
7551  i = 0;
7552  cmd[i++] = "xsltproc";
7553  if (param_idx)
7554  {
7555  int j;
7556 
7557  for (j = 0; j < param_idx; j++)
7558  {
7559  cmd[i++] = "--stringparam";
7560  cmd[i++] = param_names[j];
7561  cmd[i++] = param_values[j];
7562  }
7563  }
7564  cmd[i++] = stylesheet;
7565  cmd[i++] = xmlfile;
7566  cmd[i] = NULL;
7567 
7568 
7569  /* DEBUG: display the final command line. */
7570  cmd_full = g_strjoinv (" ", cmd);
7571  g_debug ("%s: Spawning in parent dir: %s\n",
7572  __FUNCTION__, cmd_full);
7573  g_free (cmd_full);
7574  /* --- */
7575 
7576  if ((g_spawn_sync (NULL,
7577  cmd,
7578  NULL, /* Environment. */
7579  G_SPAWN_SEARCH_PATH,
7580  NULL, /* Setup function. */
7581  NULL,
7582  &standard_out,
7583  &standard_err,
7584  &exit_status,
7585  NULL)
7586  == FALSE)
7587  || (WIFEXITED (exit_status) == 0)
7588  || WEXITSTATUS (exit_status))
7589  {
7590  g_debug ("%s: failed to transform the xml: %d (WIF %i, WEX %i)",
7591  __FUNCTION__,
7592  exit_status,
7593  WIFEXITED (exit_status),
7594  WEXITSTATUS (exit_status));
7595  g_debug ("%s: stderr: %s\n", __FUNCTION__, standard_err);
7596  g_debug ("%s: stdout: %s\n", __FUNCTION__, standard_out);
7597  success = FALSE;
7598  }
7599  else if (strlen (standard_out) == 0)
7600  success = FALSE; /* execution succeeded but nothing was found */
7601  else
7602  success = TRUE; /* execution succeeded and we have a result */
7603 
7604  /* Cleanup. */
7605  g_free (cmd);
7606  g_free (standard_err);
7607 
7608  if (success)
7609  return standard_out;
7610 
7611  g_free (standard_out);
7612  return NULL;
7613 }

Variable Documentation

◆ current_credentials

◆ current_report

report_t current_report

The report of the current task.

Definition at line 1003 of file manage.c.

Referenced by manage_reset_currents(), update_end_times(), and update_slave_progress().

◆ current_scanner_task

task_t current_scanner_task

The task currently running on the scanner.

Definition at line 998 of file manage.c.

Referenced by manage_check_current_task(), manage_cleanup_process_error(), manage_reset_currents(), stop_task_internal(), and update_end_times().

◆ omp_commands

command_t omp_commands[]

The OMP command list.

Definition at line 422 of file manage_sql.c.

Referenced by valid_omp_command().

◆ scanner_active

short scanner_active