1 /* Copyright (C) 2009-2021 Greenbone Networks GmbH 2 * 3 * SPDX-License-Identifier: AGPL-3.0-or-later 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU Affero General Public License as 7 * published by the Free Software Foundation, either version 3 of the 8 * License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Affero General Public License for more details. 14 * 15 * You should have received a copy of the GNU Affero General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 /* 20 * @file manage.h 21 * @brief Headers for Greenbone Vulnerability Manager: the Manage library. 22 */ 23 24 #ifndef _GVMD_MANAGE_H 25 #define _GVMD_MANAGE_H 26 27 #include "iterator.h" 28 #include "manage_configs.h" 29 #include "manage_get.h" 30 #include "utils.h" 31 32 #include <stdio.h> 33 #include <glib.h> 34 #include <gnutls/gnutls.h> 35 36 #include <gvm/base/array.h> 37 #include <gvm/base/credentials.h> 38 #include <gvm/base/nvti.h> 39 #include <gvm/base/networking.h> 40 #include <gvm/util/serverutils.h> 41 #include <gvm/util/authutils.h> 42 #include <gvm/osp/osp.h> 43 44 /** 45 * @brief Data structure for info used to connect to the database 46 */ 47 typedef struct { 48 gchar *name; ///< The database name 49 gchar *host; ///< The database host or socket directory 50 gchar *port; ///< The database port or socket file extension 51 gchar *user; ///< The database user name 52 } db_conn_info_t; 53 54 /** 55 * @brief OID of ping_host.nasl 56 */ 57 #define OID_PING_HOST "1.3.6.1.4.1.25623.1.0.100315" 58 59 /** 60 * @brief OID of ssh_authorization_init.nasl 61 */ 62 #define OID_SSH_AUTH "1.3.6.1.4.1.25623.1.0.103591" 63 64 /** 65 * @brief OID of smb_authorization.nasl 66 */ 67 #define OID_SMB_AUTH "1.3.6.1.4.1.25623.1.0.90023" 68 69 /** 70 * @brief OID of gb_esxi_authorization.nasl 71 */ 72 #define OID_ESXI_AUTH "1.3.6.1.4.1.25623.1.0.105058" 73 74 /** 75 * @brief OID of gb_snmp_authorization.nasl 76 */ 77 #define OID_SNMP_AUTH "1.3.6.1.4.1.25623.1.0.105076" 78 79 /** 80 * @brief OID of find_services.nasl 81 */ 82 #define OID_SERVICES "1.3.6.1.4.1.25623.1.0.10330" 83 84 /** 85 * @brief OID of logins.nasl 86 */ 87 #define OID_LOGINS "1.3.6.1.4.1.25623.1.0.10870" 88 89 /** 90 * @brief OID of global_settings.nasl 91 */ 92 #define OID_GLOBAL_SETTINGS "1.3.6.1.4.1.25623.1.0.12288" 93 94 /** 95 * @brief Flag with all Glib log levels. 96 */ 97 #define ALL_LOG_LEVELS (G_LOG_LEVEL_MASK \ 98 | G_LOG_FLAG_FATAL \ 99 | G_LOG_FLAG_RECURSION) 100 101 /** 102 * @brief Defines g_info for glib versions older than 2.40. 103 */ 104 #ifndef g_info 105 #define g_info(...) g_log (G_LOG_DOMAIN, \ 106 G_LOG_LEVEL_INFO, \ 107 __VA_ARGS__) 108 #endif /* g_info not defined */ 109 110 /** 111 * @brief Name value pair. 112 */ 113 typedef struct 114 { 115 gchar *name; ///< Name. 116 gchar *value; ///< Param value. 117 } name_value_t; 118 119 /** 120 * @brief Fork helper function type. 121 */ 122 typedef int (*manage_connection_forker_t) (gvm_connection_t * conn, 123 const gchar* uuid); 124 125 int 126 init_manage (GSList*, const db_conn_info_t *, int, int, int, int, 127 manage_connection_forker_t, int); 128 129 int 130 init_manage_helper (GSList *, const db_conn_info_t *, int); 131 132 void 133 init_manage_process (const db_conn_info_t*); 134 135 void 136 cleanup_manage_process (gboolean); 137 138 void 139 manage_cleanup_process_error (int); 140 141 void 142 manage_reset_currents (); 143 144 145 /* Commands. */ 146 147 /** 148 * @brief A command. 149 */ 150 typedef struct 151 { 152 gchar *name; ///< Command name. 153 gchar *summary; ///< Summary of command. 154 } command_t; 155 156 /** 157 * @brief The GMP command list. 158 */ 159 extern command_t gmp_commands[]; 160 161 162 /* Certificate and key management. */ 163 164 gchar* 165 truncate_certificate (const gchar*); 166 167 gchar* 168 truncate_private_key (const gchar*); 169 170 int 171 get_certificate_info (const gchar *, 172 gssize, 173 time_t *, 174 time_t *, 175 gchar **, 176 gchar **, 177 gchar **, 178 gchar **, 179 gchar **, 180 gnutls_x509_crt_fmt_t *); 181 182 gchar * 183 certificate_iso_time (time_t); 184 185 const gchar * 186 certificate_time_status (time_t, time_t); 187 188 void 189 parse_ssldetails (const char *, time_t *, time_t *, gchar **, gchar **); 190 191 const char* 192 tls_certificate_format_str (gnutls_x509_crt_fmt_t certificate_format); 193 194 195 /* Credentials. */ 196 197 extern credentials_t current_credentials; 198 199 int 200 authenticate (credentials_t*); 201 202 203 /* Database. */ 204 205 int 206 manage_db_supported_version (); 207 208 int 209 manage_db_version (); 210 211 int 212 manage_scap_db_supported_version (); 213 214 int 215 manage_scap_db_version (); 216 217 int 218 manage_cert_db_supported_version (); 219 220 int 221 manage_cert_db_version (); 222 223 void 224 set_db_version (int version); 225 226 int 227 manage_migrate (GSList*, const db_conn_info_t*); 228 229 int 230 manage_encrypt_all_credentials (GSList *, const db_conn_info_t *); 231 232 int 233 manage_decrypt_all_credentials (GSList *, const db_conn_info_t *); 234 235 void 236 manage_session_set_timezone (const char *); 237 238 void 239 manage_transaction_start (); 240 241 void 242 manage_transaction_stop (gboolean); 243 244 245 /* Task structures. */ 246 247 /** 248 * @brief Task statuses, also used as scan/report statuses. 249 * 250 * These numbers are used in the database, so if the number associated with 251 * any symbol changes then a migrator must be added to update existing data. 252 */ 253 typedef enum 254 { 255 TASK_STATUS_DELETE_REQUESTED = 0, 256 TASK_STATUS_DONE = 1, 257 TASK_STATUS_NEW = 2, 258 TASK_STATUS_REQUESTED = 3, 259 TASK_STATUS_RUNNING = 4, 260 TASK_STATUS_STOP_REQUESTED = 10, 261 TASK_STATUS_STOP_WAITING = 11, 262 TASK_STATUS_STOPPED = 12, 263 TASK_STATUS_INTERRUPTED = 13, 264 TASK_STATUS_DELETE_ULTIMATE_REQUESTED = 14, 265 /* 15 was removed (TASK_STATUS_STOP_REQUESTED_GIVEUP). */ 266 TASK_STATUS_DELETE_WAITING = 16, 267 TASK_STATUS_DELETE_ULTIMATE_WAITING = 17, 268 TASK_STATUS_QUEUED = 18 269 } task_status_t; 270 271 /** 272 * Minimum value for number of reports to keep on auto_delete 273 */ 274 #define AUTO_DELETE_KEEP_MIN 2 275 276 /** 277 * Maximum value for number of reports to keep on auto_delete 278 */ 279 #define AUTO_DELETE_KEEP_MAX 1200 280 281 282 /** 283 * @brief Alive tests. 284 * 285 * These numbers are used in the database, so if the number associated with 286 * any symbol changes then a migrator must be added to update existing data. 287 */ 288 typedef enum 289 { 290 ALIVE_TEST_TCP_ACK_SERVICE = 1, 291 ALIVE_TEST_ICMP = 2, 292 ALIVE_TEST_ARP = 4, 293 ALIVE_TEST_CONSIDER_ALIVE = 8, 294 ALIVE_TEST_TCP_SYN_SERVICE = 16 295 } alive_test_t; 296 297 /** 298 * @brief Scanner types. 299 * 300 * These numbers are used in the database, so if the number associated with 301 * any symbol changes then a migrator must be added to update existing data. 302 */ 303 typedef enum scanner_type 304 { 305 SCANNER_TYPE_NONE = 0, 306 SCANNER_TYPE_OSP = 1, 307 SCANNER_TYPE_OPENVAS = 2, 308 SCANNER_TYPE_CVE = 3, 309 /* 4 was removed (SCANNER_TYPE_GMP). */ 310 SCANNER_TYPE_OSP_SENSOR = 5, 311 SCANNER_TYPE_MAX = 6, 312 } scanner_type_t; 313 314 int 315 scanner_type_valid (scanner_type_t); 316 317 typedef resource_t credential_t; 318 typedef resource_t alert_t; 319 typedef resource_t filter_t; 320 typedef resource_t group_t; 321 typedef resource_t host_t; 322 typedef resource_t tag_t; 323 typedef resource_t target_t; 324 typedef resource_t task_t; 325 typedef resource_t ticket_t; 326 typedef resource_t tls_certificate_t; 327 typedef resource_t result_t; 328 typedef resource_t report_t; 329 typedef resource_t report_host_t; 330 typedef resource_t report_format_t; 331 typedef resource_t report_format_param_t; 332 typedef resource_t role_t; 333 typedef resource_t note_t; 334 typedef resource_t nvt_t; 335 typedef resource_t override_t; 336 typedef resource_t permission_t; 337 typedef resource_t port_list_t; 338 typedef resource_t port_range_t; 339 typedef resource_t schedule_t; 340 typedef resource_t scanner_t; 341 typedef resource_t setting_t; 342 typedef resource_t user_t; 343 344 345 /* GMP GET support. 346 * 347 * The standalone parts of the GET support are in manage_get.h. */ 348 349 resource_t 350 get_iterator_resource (iterator_t*); 351 352 user_t 353 get_iterator_owner (iterator_t*); 354 355 356 /* Resources. */ 357 358 int 359 manage_resource_name (const char *, const char *, char **); 360 361 int 362 manage_trash_resource_name (const char *, const char *, char **); 363 364 int 365 resource_count (const char *, const get_data_t *); 366 367 int 368 resource_id_exists (const char *, const char *); 369 370 int 371 trash_id_exists (const char *, const char *); 372 373 gboolean 374 find_resource (const char*, const char*, resource_t*); 375 376 const char * 377 type_name_plural (const char*); 378 379 const char * 380 type_name (const char*); 381 382 int 383 type_is_scap (const char*); 384 385 int 386 delete_resource (const char *, const char *, int); 387 388 389 /* Events and Alerts. */ 390 391 /** 392 * @brief Data about a report sent by an alert. 393 */ 394 typedef struct { 395 gchar *local_filename; ///< Path to the local report file. 396 gchar *remote_filename; ///< Path or filename to send to / as. 397 gchar *content_type; ///< The MIME content type of the report. 398 gchar *report_format_name; ///< Name of the report format used. 399 } alert_report_data_t; 400 401 void 402 alert_report_data_free (alert_report_data_t *); 403 404 void 405 alert_report_data_reset (alert_report_data_t *); 406 407 /** 408 * @brief Default format string for alert email, when including report. 409 */ 410 #define ALERT_MESSAGE_INCLUDE \ 411 "Task '$n': $e\n" \ 412 "\n" \ 413 "After the event $e,\n" \ 414 "the following condition was met: $c\n" \ 415 "\n" \ 416 "This email escalation is configured to apply report format '$r'.\n" \ 417 "Full details and other report formats are available on the scan engine.\n" \ 418 "\n" \ 419 "$t" \ 420 "\n" \ 421 "$i" \ 422 "\n" \ 423 "\n" \ 424 "Note:\n" \ 425 "This email was sent to you as a configured security scan escalation.\n" \ 426 "Please contact your local system administrator if you think you\n" \ 427 "should not have received it.\n" 428 429 /** 430 * @brief Default format string for SecInfo alert email, when including report. 431 */ 432 #define SECINFO_ALERT_MESSAGE_INCLUDE \ 433 "Task '$n': $e\n" \ 434 "\n" \ 435 "After the event $e,\n" \ 436 "the following condition was met: $c\n" \ 437 "\n" \ 438 "This email escalation is configured to apply report format '$r'.\n" \ 439 "Full details and other report formats are available on the scan engine.\n" \ 440 "\n" \ 441 "$t" \ 442 "\n" \ 443 "$i" \ 444 "\n" \ 445 "\n" \ 446 "Note:\n" \ 447 "This email was sent to you as a configured security scan escalation.\n" \ 448 "Please contact your local system administrator if you think you\n" \ 449 "should not have received it.\n" 450 451 /** 452 * @brief Default format string for alert email, when attaching report. 453 */ 454 #define ALERT_MESSAGE_ATTACH \ 455 "Task '$n': $e\n" \ 456 "\n" \ 457 "After the event $e,\n" \ 458 "the following condition was met: $c\n" \ 459 "\n" \ 460 "This email escalation is configured to attach report format '$r'.\n" \ 461 "Full details and other report formats are available on the scan engine.\n" \ 462 "\n" \ 463 "$t" \ 464 "\n" \ 465 "Note:\n" \ 466 "This email was sent to you as a configured security scan escalation.\n" \ 467 "Please contact your local system administrator if you think you\n" \ 468 "should not have received it.\n" 469 470 /** 471 * @brief Default format string for SecInfo alert email, when attaching report. 472 */ 473 #define SECINFO_ALERT_MESSAGE_ATTACH \ 474 "Task '$n': $e\n" \ 475 "\n" \ 476 "After the event $e,\n" \ 477 "the following condition was met: $c\n" \ 478 "\n" \ 479 "This email escalation is configured to attach report format '$r'.\n" \ 480 "Full details and other report formats are available on the scan engine.\n" \ 481 "\n" \ 482 "$t" \ 483 "\n" \ 484 "Note:\n" \ 485 "This email was sent to you as a configured security scan escalation.\n" \ 486 "Please contact your local system administrator if you think you\n" \ 487 "should not have received it.\n" 488 489 /** 490 * @brief Default description format string for vFire alert. 491 */ 492 #define ALERT_VFIRE_CALL_DESCRIPTION \ 493 "GVM Task '$n': $e\n" \ 494 "\n" \ 495 "After the event $e,\n" \ 496 "the following condition was met: $c\n" \ 497 "\n" \ 498 "This ticket includes reports in the following format(s):\n" \ 499 "$r.\n" \ 500 "Full details and other report formats are available on the scan engine.\n" \ 501 "\n" \ 502 "$t" \ 503 "\n" \ 504 "Note:\n" \ 505 "This ticket was created automatically as a security scan escalation.\n" \ 506 "Please contact your local system administrator if you think it\n" \ 507 "was created or assigned erroneously.\n" 508 509 /** 510 * @brief Types of task events. 511 */ 512 typedef enum 513 { 514 EVENT_ERROR, 515 EVENT_TASK_RUN_STATUS_CHANGED, 516 EVENT_NEW_SECINFO, 517 EVENT_UPDATED_SECINFO, 518 EVENT_TICKET_RECEIVED, 519 EVENT_ASSIGNED_TICKET_CHANGED, 520 EVENT_OWNED_TICKET_CHANGED 521 } event_t; 522 523 /** 524 * @brief Types of alerts. 525 */ 526 typedef enum 527 { 528 ALERT_METHOD_ERROR, 529 ALERT_METHOD_EMAIL, 530 ALERT_METHOD_HTTP_GET, 531 ALERT_METHOD_SOURCEFIRE, 532 ALERT_METHOD_START_TASK, 533 ALERT_METHOD_SYSLOG, 534 ALERT_METHOD_VERINICE, 535 ALERT_METHOD_SEND, 536 ALERT_METHOD_SCP, 537 ALERT_METHOD_SNMP, 538 ALERT_METHOD_SMB, 539 ALERT_METHOD_TIPPINGPOINT, 540 ALERT_METHOD_VFIRE, 541 } alert_method_t; 542 543 /** 544 * @brief Types of alert conditions. 545 */ 546 typedef enum 547 { 548 ALERT_CONDITION_ERROR, 549 ALERT_CONDITION_ALWAYS, 550 ALERT_CONDITION_SEVERITY_AT_LEAST, 551 ALERT_CONDITION_SEVERITY_CHANGED, 552 ALERT_CONDITION_FILTER_COUNT_AT_LEAST, 553 ALERT_CONDITION_FILTER_COUNT_CHANGED 554 } alert_condition_t; 555 556 int 557 manage_check_alerts (GSList *, const db_conn_info_t *); 558 559 int 560 create_alert (const char*, const char*, const char*, const char*, event_t, 561 GPtrArray*, alert_condition_t, GPtrArray*, alert_method_t, 562 GPtrArray*, alert_t*); 563 564 int 565 copy_alert (const char*, const char*, const char*, alert_t*); 566 567 int 568 modify_alert (const char*, const char*, const char*, const char*, 569 const char*, event_t, GPtrArray*, alert_condition_t, GPtrArray*, 570 alert_method_t, GPtrArray*); 571 572 int 573 delete_alert (const char *, int); 574 575 char * 576 alert_uuid (alert_t); 577 578 gboolean 579 find_alert_with_permission (const char *, alert_t *, const char *); 580 581 int 582 manage_alert (const char *, const char *, event_t, const void*, gchar **); 583 584 int 585 manage_test_alert (const char *, gchar **); 586 587 int 588 alert_in_use (alert_t); 589 590 int 591 trash_alert_in_use (alert_t); 592 593 int 594 alert_writable (alert_t); 595 596 int 597 trash_alert_writable (alert_t); 598 599 int 600 alert_count (const get_data_t *); 601 602 int 603 init_alert_iterator (iterator_t*, const get_data_t*); 604 605 int 606 alert_iterator_event (iterator_t*); 607 608 int 609 alert_iterator_condition (iterator_t*); 610 611 int 612 alert_iterator_method (iterator_t*); 613 614 char * 615 alert_iterator_filter_uuid (iterator_t*); 616 617 char * 618 alert_iterator_filter_name (iterator_t*); 619 620 int 621 alert_iterator_filter_trash (iterator_t*); 622 623 int 624 alert_iterator_filter_readable (iterator_t*); 625 626 int 627 alert_iterator_active (iterator_t*); 628 629 const char* 630 alert_condition_name (alert_condition_t); 631 632 gchar* 633 alert_condition_description (alert_condition_t, alert_t); 634 635 const char* 636 event_name (event_t); 637 638 gchar* 639 event_description (event_t, const void *, const char *); 640 641 const char* 642 alert_method_name (alert_method_t); 643 644 alert_condition_t 645 alert_condition_from_name (const char*); 646 647 event_t 648 event_from_name (const char*); 649 650 alert_method_t 651 alert_method_from_name (const char*); 652 653 void 654 init_alert_data_iterator (iterator_t *, alert_t, int, const char *); 655 656 const char* 657 alert_data_iterator_name (iterator_t*); 658 659 const char* 660 alert_data_iterator_data (iterator_t*); 661 662 void 663 init_alert_task_iterator (iterator_t*, alert_t, int); 664 665 const char* 666 alert_task_iterator_name (iterator_t*); 667 668 const char* 669 alert_task_iterator_uuid (iterator_t*); 670 671 int 672 alert_task_iterator_readable (iterator_t*); 673 674 void 675 init_task_alert_iterator (iterator_t*, task_t); 676 677 const char* 678 task_alert_iterator_uuid (iterator_t*); 679 680 const char* 681 task_alert_iterator_name (iterator_t*); 682 683 684 /* Task global variables and preprocessor variables. */ 685 686 /** 687 * @brief The task currently running on the scanner. 688 */ 689 extern task_t current_scanner_task; 690 691 extern report_t global_current_report; 692 693 694 /* Task code specific to the representation of tasks. */ 695 696 unsigned int 697 task_count (const get_data_t *); 698 699 int 700 init_task_iterator (iterator_t*, const get_data_t *); 701 702 task_status_t 703 task_iterator_run_status (iterator_t*); 704 705 const char * 706 task_iterator_run_status_name (iterator_t*); 707 708 int 709 task_iterator_total_reports (iterator_t*); 710 711 int 712 task_iterator_finished_reports (iterator_t *); 713 714 const char * 715 task_iterator_first_report (iterator_t*); 716 717 const char * 718 task_iterator_last_report (iterator_t *); 719 720 report_t 721 task_iterator_current_report (iterator_t *); 722 723 const char * 724 task_iterator_hosts_ordering (iterator_t *); 725 726 scanner_t 727 task_iterator_scanner (iterator_t *); 728 729 const char * 730 task_iterator_usage_type (iterator_t *); 731 732 int 733 task_uuid (task_t, char **); 734 735 int 736 task_in_trash (task_t); 737 738 int 739 task_in_trash_id (const gchar *); 740 741 int 742 task_in_use (task_t); 743 744 int 745 trash_task_in_use (task_t); 746 747 int 748 task_writable (task_t); 749 750 int 751 task_alterable (task_t); 752 753 int 754 trash_task_writable (task_t); 755 756 int 757 task_average_scan_duration (task_t); 758 759 char* 760 task_owner_name (task_t); 761 762 char* 763 task_name (task_t); 764 765 char* 766 task_comment (task_t); 767 768 char* 769 task_hosts_ordering (task_t); 770 771 scanner_t 772 task_scanner (task_t); 773 774 int 775 task_scanner_in_trash (task_t); 776 777 config_t 778 task_config (task_t); 779 780 char* 781 task_config_uuid (task_t); 782 783 char* 784 task_config_name (task_t); 785 786 int 787 task_config_in_trash (task_t); 788 789 void 790 set_task_config (task_t, config_t); 791 792 target_t 793 task_target (task_t); 794 795 int 796 task_target_in_trash (task_t); 797 798 void 799 set_task_target (task_t, target_t); 800 801 void 802 set_task_hosts_ordering (task_t, const char *); 803 804 void 805 set_task_scanner (task_t, scanner_t); 806 807 void 808 set_task_usage_type (task_t, const char *); 809 810 char* 811 task_description (task_t); 812 813 void 814 set_task_description (task_t, char*, gsize); 815 816 task_status_t 817 task_run_status (task_t); 818 819 void 820 set_task_run_status (task_t, task_status_t); 821 822 int 823 task_result_count (task_t, int); 824 825 report_t 826 task_running_report (task_t); 827 828 int 829 task_upload_progress (task_t); 830 831 void 832 set_task_start_time_epoch (task_t, int); 833 834 void 835 set_task_start_time_ctime (task_t, char*); 836 837 void 838 set_task_end_time (task_t task, char* time); 839 840 void 841 set_task_end_time_epoch (task_t, time_t); 842 843 void 844 add_task_alert (task_t, alert_t); 845 846 void 847 set_task_alterable (task_t, int); 848 849 int 850 set_task_groups (task_t, array_t*, gchar**); 851 852 int 853 set_task_schedule (task_t, schedule_t, int); 854 855 int 856 set_task_schedule_periods (const gchar *, int); 857 858 int 859 set_task_schedule_periods_id (task_t, int); 860 861 unsigned int 862 task_report_count (task_t); 863 864 int 865 task_last_report (task_t, report_t*); 866 867 const char * 868 task_iterator_trend_counts (iterator_t *, int, int, int, double, int, int, int, 869 double); 870 871 int 872 task_schedule_periods (task_t); 873 874 int 875 task_schedule_periods_uuid (const gchar *); 876 877 schedule_t 878 task_schedule (task_t); 879 880 schedule_t 881 task_schedule_uuid (const gchar *); 882 883 int 884 task_schedule_in_trash (task_t); 885 886 time_t 887 task_schedule_next_time_uuid (const gchar *); 888 889 int 890 task_schedule_next_time (task_t); 891 892 int 893 task_debugs_size (task_t); 894 895 int 896 task_holes_size (task_t); 897 898 int 899 task_infos_size (task_t); 900 901 int 902 task_logs_size (task_t); 903 904 int 905 task_warnings_size (task_t); 906 907 int 908 task_false_positive_size (task_t); 909 910 task_t 911 make_task (char*, char*, int, int); 912 913 void 914 make_task_complete (task_t); 915 916 int 917 copy_task (const char*, const char*, const char *, int, task_t*); 918 919 void 920 set_task_name (task_t, const char *); 921 922 gboolean 923 find_task_with_permission (const char*, task_t*, const char *); 924 925 gboolean 926 find_trash_task_with_permission (const char*, task_t*, const char *); 927 928 void 929 reset_task (task_t); 930 931 int 932 set_task_parameter (task_t, const char*, char*); 933 934 char* 935 task_observers (task_t); 936 937 int 938 set_task_observers (task_t, const gchar *); 939 940 int 941 request_delete_task_uuid (const char *, int); 942 943 int 944 request_delete_task (task_t*); 945 946 int 947 delete_task (task_t, int); 948 949 void 950 append_to_task_comment (task_t, const char*, int); 951 952 void 953 add_task_description_line (task_t, const char*, size_t); 954 955 void 956 set_scan_ports (report_t, const char*, unsigned int, unsigned int); 957 958 void 959 append_task_open_port (task_t task, const char *, const char*); 960 961 int 962 manage_task_update_file (const gchar *, const char *, const void *); 963 964 int 965 manage_task_remove_file (const gchar *, const char *); 966 967 int 968 modify_task (const gchar *, const gchar *, const gchar *, const gchar *, 969 const gchar *, const gchar *, const gchar *, array_t *, 970 const gchar *, array_t *, const gchar *, const gchar *, 971 array_t *, const gchar *, gchar **, gchar **); 972 973 void 974 init_config_file_iterator (iterator_t*, const char*, const char*); 975 976 const char* 977 config_file_iterator_content (iterator_t*); 978 979 int 980 config_file_iterator_length (iterator_t*); 981 982 void 983 init_config_task_iterator (iterator_t*, config_t, int); 984 985 const char* 986 config_task_iterator_name (iterator_t*); 987 988 const char* 989 config_task_iterator_uuid (iterator_t*); 990 991 int 992 config_task_iterator_readable (iterator_t*); 993 994 995 /* General severity related facilities. */ 996 997 int 998 severity_in_level (double, const char *); 999 1000 const char* 1001 severity_to_level (double, int); 1002 1003 const char* 1004 severity_to_type (double); 1005 1006 /** 1007 * @brief Severity data for result count cache. 1008 */ 1009 typedef struct 1010 { 1011 int* counts; ///< Counts. 1012 int total; ///< Total. 1013 double max; ///< Max. 1014 } severity_data_t; 1015 1016 double 1017 severity_data_value (int); 1018 1019 void 1020 init_severity_data (severity_data_t*); 1021 1022 void 1023 cleanup_severity_data (severity_data_t*); 1024 1025 void 1026 severity_data_add (severity_data_t*, double); 1027 1028 void 1029 severity_data_add_count (severity_data_t*, double, int); 1030 1031 void 1032 severity_data_level_counts (const severity_data_t*, 1033 int*, int*, int*, int*, int*, int*); 1034 1035 1036 /* General task facilities. */ 1037 1038 const char* 1039 run_status_name (task_status_t); 1040 1041 int 1042 start_task (const char *, char**); 1043 1044 int 1045 stop_task (const char *); 1046 1047 int 1048 resume_task (const char *, char **); 1049 1050 int 1051 move_task (const char*, const char*); 1052 1053 1054 /* Access control. */ 1055 1056 int 1057 user_may (const char *); 1058 1059 extern int 1060 user_can_everything (const char *); 1061 1062 extern int 1063 user_can_super_everyone (const char *); 1064 1065 extern int 1066 user_has_super (const char *, user_t); 1067 1068 1069 /* Results. */ 1070 1071 /** 1072 * @brief SQL list of LSC families. 1073 */ 1074 #define LSC_FAMILY_LIST \ 1075 "'AIX Local Security Checks'," \ 1076 " 'Amazon Linux Local Security Checks'," \ 1077 " 'CentOS Local Security Checks'," \ 1078 " 'Citrix Xenserver Local Security Checks'," \ 1079 " 'Debian Local Security Checks'," \ 1080 " 'F5 Local Security Checks'," \ 1081 " 'Fedora Local Security Checks'," \ 1082 " 'FortiOS Local Security Checks'," \ 1083 " 'FreeBSD Local Security Checks'," \ 1084 " 'Gentoo Local Security Checks'," \ 1085 " 'HP-UX Local Security Checks'," \ 1086 " 'Huawei EulerOS Local Security Checks'," \ 1087 " 'JunOS Local Security Checks'," \ 1088 " 'Mac OS X Local Security Checks'," \ 1089 " 'Mageia Linux Local Security Checks'," \ 1090 " 'Mandrake Local Security Checks'," \ 1091 " 'Oracle Linux Local Security Checks'," \ 1092 " 'Palo Alto PAN-OS Local Security Checks'," \ 1093 " 'Red Hat Local Security Checks'," \ 1094 " 'Slackware Local Security Checks'," \ 1095 " 'Solaris Local Security Checks'," \ 1096 " 'SuSE Local Security Checks'," \ 1097 " 'VMware Local Security Checks'," \ 1098 " 'Ubuntu Local Security Checks'," \ 1099 " 'Windows : Microsoft Bulletins'" 1100 1101 /** 1102 * @brief Whole only families. 1103 */ 1104 #define FAMILIES_WHOLE_ONLY \ 1105 { "CentOS Local Security Checks", \ 1106 "Debian Local Security Checks", \ 1107 "Fedora Local Security Checks", \ 1108 "Huawei EulerOS Local Security Checks", \ 1109 "Oracle Linux Local Security Checks", \ 1110 "Red Hat Local Security Checks", \ 1111 "SuSE Local Security Checks", \ 1112 "Ubuntu Local Security Checks", \ 1113 NULL } 1114 1115 gboolean 1116 find_result_with_permission (const char*, result_t*, const char *); 1117 1118 int 1119 result_uuid (result_t, char **); 1120 1121 int 1122 result_detection_reference (result_t, report_t, const char *, const char *, 1123 const char *, char **, char **, char **, char **, 1124 char **); 1125 1126 /* Reports. */ 1127 1128 /** @todo How is this documented? */ 1129 #define OVAS_MANAGE_REPORT_ID_LENGTH UUID_LEN_STR 1130 1131 /** 1132 * @brief Default apply_overrides setting 1133 */ 1134 #define APPLY_OVERRIDES_DEFAULT 0 1135 1136 /** 1137 * @brief Default quality of detection percentage. 1138 */ 1139 #define QOD_DEFAULT 75 1140 1141 /** 1142 * @brief Default min quality of detection percentage for filters. 1143 */ 1144 #define MIN_QOD_DEFAULT 70 1145 1146 void 1147 reports_clear_count_cache_for_override (override_t, int); 1148 1149 void 1150 init_report_counts_build_iterator (iterator_t *, report_t, int, int, 1151 const char*); 1152 1153 double 1154 report_severity (report_t, int, int); 1155 1156 int 1157 report_host_count (report_t); 1158 1159 int 1160 report_result_host_count (report_t, int); 1161 1162 char * 1163 report_finished_hosts_str (report_t); 1164 1165 gboolean 1166 find_report_with_permission (const char *, report_t *, const char *); 1167 1168 report_t 1169 make_report (task_t, const char *, task_status_t); 1170 1171 int 1172 qod_from_type (const char *); 1173 1174 result_t 1175 make_result (task_t, const char*, const char*, const char*, const char*, 1176 const char*, const char*, const char*); 1177 1178 result_t 1179 make_osp_result (task_t, const char*, const char*, const char*, const char*, 1180 const char *, const char *, const char *, int, const char*); 1181 1182 result_t 1183 make_cve_result (task_t, const char*, const char*, double, const char*); 1184 1185 /** 1186 * @brief A CREATE_REPORT result. 1187 */ 1188 typedef struct 1189 { 1190 char *description; ///< Description of NVT. 1191 char *host; ///< Host. 1192 char *hostname; ///< Hostname. 1193 char *nvt_oid; ///< OID of NVT. 1194 char *scan_nvt_version; ///< Version of NVT used at scan time. 1195 char *port; ///< Port. 1196 char *qod; ///< QoD (quality of detection). 1197 char *qod_type; ///< QoD type. 1198 char *severity; ///< Severity score. 1199 char *threat; ///< Threat. 1200 } create_report_result_t; 1201 1202 /** 1203 * @brief A host detail for create_report. 1204 */ 1205 typedef struct 1206 { 1207 char *ip; ///< IP. 1208 char *name; ///< Detail name. 1209 char *source_desc; ///< Source description. 1210 char *source_name; ///< Source name. 1211 char *source_type; ///< Source type. 1212 char *value; ///< Detail value. 1213 } host_detail_t; 1214 1215 1216 /** 1217 * @brief A detection detail for create_report. 1218 */ 1219 typedef struct 1220 { 1221 char *product; ///< product of detection in result. 1222 char *source_name; ///< source_name of detection in result. 1223 char *source_oid; ///< source_oid of detection in result. 1224 char *location; ///< location of detection in result. 1225 } detection_detail_t; 1226 1227 void 1228 host_detail_free (host_detail_t *); 1229 1230 void 1231 insert_report_host_detail (report_t, const char *, const char *, const char *, 1232 const char *, const char *, const char *); 1233 1234 int 1235 manage_report_host_detail (report_t, const char *, const char *); 1236 1237 void 1238 hosts_set_identifiers (report_t); 1239 1240 void 1241 hosts_set_max_severity (report_t, int*, int*); 1242 1243 void 1244 hosts_set_details (report_t report); 1245 1246 void 1247 clear_duration_schedules (task_t); 1248 1249 void 1250 update_duration_schedule_periods (task_t); 1251 1252 int 1253 create_report (array_t*, const char *, const char *, const char *, const char *, 1254 array_t*, array_t*, array_t*, char **); 1255 1256 void 1257 report_add_result (report_t, result_t); 1258 1259 void 1260 report_add_results_array (report_t, GArray *); 1261 1262 char* 1263 report_uuid (report_t); 1264 1265 int 1266 task_last_resumable_report (task_t, report_t *); 1267 1268 gchar* 1269 task_second_last_report_id (task_t); 1270 1271 gchar* 1272 report_path_task_uuid (gchar*); 1273 1274 gboolean 1275 report_task (report_t, task_t*); 1276 1277 void 1278 report_compliance_by_uuid (const char *, int *, int *, int *); 1279 1280 int 1281 report_scan_result_count (report_t, const char*, const char*, int, const char*, 1282 const char*, int, int, int*); 1283 1284 int 1285 report_counts (const char*, int*, int*, int*, int*, int*, double*, 1286 int, int); 1287 1288 int 1289 report_counts_id (report_t, int*, int*, int*, int*, int*, double*, 1290 const get_data_t*, const char*); 1291 1292 int 1293 report_counts_id_no_filt (report_t, int*, int*, int*, int*, int*, int*, 1294 double*, const get_data_t*, const char*); 1295 1296 get_data_t* 1297 report_results_get_data (int, int, int, int); 1298 1299 int 1300 scan_start_time_epoch (report_t); 1301 1302 char* 1303 scan_start_time_uuid (const char *); 1304 1305 char* 1306 scan_end_time_uuid (const char *); 1307 1308 void 1309 set_scan_start_time_ctime (report_t, const char*); 1310 1311 void 1312 set_scan_start_time_epoch (report_t, time_t); 1313 1314 void 1315 set_scan_end_time (report_t, const char*); 1316 1317 void 1318 set_scan_end_time_ctime (report_t, const char*); 1319 1320 void 1321 set_scan_end_time_epoch (report_t, time_t); 1322 1323 void 1324 set_scan_host_start_time_ctime (report_t, const char*, const char*); 1325 1326 int 1327 scan_host_end_time (report_t, const char*); 1328 1329 void 1330 set_scan_host_end_time (report_t, const char*, const char*); 1331 1332 void 1333 set_scan_host_end_time_ctime (report_t, const char*, const char*); 1334 1335 int 1336 report_timestamp (const char*, gchar**); 1337 1338 int 1339 delete_report (const char *, int); 1340 1341 int 1342 report_count (const get_data_t *); 1343 1344 int 1345 init_report_iterator (iterator_t*, const get_data_t *); 1346 1347 void 1348 init_report_iterator_task (iterator_t*, task_t); 1349 1350 void 1351 init_report_errors_iterator (iterator_t*, report_t); 1352 1353 const char* 1354 report_iterator_uuid (iterator_t*); 1355 1356 int 1357 result_count (const get_data_t *, report_t, const char*); 1358 1359 int 1360 init_result_get_iterator (iterator_t*, const get_data_t *, report_t, 1361 const char*, const gchar *); 1362 1363 gboolean 1364 next_report (iterator_t*, report_t*); 1365 1366 result_t 1367 result_iterator_result (iterator_t*); 1368 1369 const char* 1370 result_iterator_host (iterator_t*); 1371 1372 const char* 1373 result_iterator_port (iterator_t*); 1374 1375 const char* 1376 result_iterator_nvt_oid (iterator_t*); 1377 1378 const char* 1379 result_iterator_nvt_name (iterator_t *); 1380 1381 const char* 1382 result_iterator_nvt_summary (iterator_t *); 1383 1384 const char* 1385 result_iterator_nvt_insight (iterator_t *); 1386 1387 const char* 1388 result_iterator_nvt_affected (iterator_t *); 1389 1390 const char* 1391 result_iterator_nvt_impact (iterator_t *); 1392 1393 const char* 1394 result_iterator_nvt_solution (iterator_t *); 1395 1396 const char* 1397 result_iterator_nvt_solution_type (iterator_t *); 1398 1399 const char* 1400 result_iterator_nvt_solution_method (iterator_t *); 1401 1402 const char* 1403 result_iterator_nvt_detection (iterator_t *); 1404 1405 const char* 1406 result_iterator_nvt_family (iterator_t *); 1407 1408 const char* 1409 result_iterator_nvt_cvss_base (iterator_t *); 1410 1411 const char* 1412 result_iterator_nvt_tag (iterator_t *); 1413 1414 const char* 1415 result_iterator_descr (iterator_t*); 1416 1417 task_t 1418 result_iterator_task (iterator_t*); 1419 1420 report_t 1421 result_iterator_report (iterator_t*); 1422 1423 const char* 1424 result_iterator_scan_nvt_version (iterator_t*); 1425 1426 const char* 1427 result_iterator_original_severity (iterator_t*); 1428 1429 const char* 1430 result_iterator_severity (iterator_t *); 1431 1432 double 1433 result_iterator_severity_double (iterator_t *); 1434 1435 const char* 1436 result_iterator_original_level (iterator_t*); 1437 1438 const char* 1439 result_iterator_level (iterator_t*); 1440 1441 const char* 1442 result_iterator_solution_type (iterator_t*); 1443 1444 const char* 1445 result_iterator_qod (iterator_t*); 1446 1447 const char* 1448 result_iterator_qod_type (iterator_t*); 1449 1450 const char* 1451 result_iterator_hostname (iterator_t*); 1452 1453 const char* 1454 result_iterator_date (iterator_t*); 1455 1456 const char* 1457 result_iterator_path (iterator_t*); 1458 1459 const char* 1460 result_iterator_asset_host_id (iterator_t*); 1461 1462 int 1463 result_iterator_may_have_notes (iterator_t*); 1464 1465 int 1466 result_iterator_may_have_overrides (iterator_t*); 1467 1468 int 1469 result_iterator_may_have_tickets (iterator_t*); 1470 1471 gchar ** 1472 result_iterator_cert_bunds (iterator_t*); 1473 1474 gchar ** 1475 result_iterator_dfn_certs (iterator_t*); 1476 1477 int 1478 cleanup_result_nvts (); 1479 1480 void 1481 init_report_host_iterator (iterator_t*, report_t, const char *, report_host_t); 1482 1483 const char* 1484 host_iterator_host (iterator_t*); 1485 1486 const char* 1487 host_iterator_start_time (iterator_t*); 1488 1489 const char* 1490 host_iterator_end_time (iterator_t*); 1491 1492 int 1493 host_iterator_current_port (iterator_t*); 1494 1495 int 1496 host_iterator_max_port (iterator_t*); 1497 1498 int 1499 collate_message_type (void* data, int, const void*, int, const void*); 1500 1501 void 1502 trim_partial_report (report_t); 1503 1504 int 1505 report_progress (report_t); 1506 1507 gchar * 1508 manage_report (report_t, report_t, const get_data_t *, report_format_t, 1509 int, int, gsize *, gchar **, gchar **, gchar **, gchar **, 1510 gchar **); 1511 1512 int 1513 manage_send_report (report_t, report_t, report_format_t, const get_data_t *, 1514 int, int, int, int, int, int, 1515 gboolean (*) (const char *, 1516 int (*) (const char*, void*), 1517 void*), 1518 int (*) (const char *, void*), void *, const char *, 1519 const gchar *); 1520 1521 1522 1523 /* Reports. */ 1524 1525 void 1526 init_app_locations_iterator (iterator_t*, report_host_t, const gchar *); 1527 1528 const char * 1529 app_locations_iterator_location (iterator_t *); 1530 1531 void 1532 init_host_prognosis_iterator (iterator_t*, report_host_t); 1533 1534 double 1535 prognosis_iterator_cvss_double (iterator_t*); 1536 1537 const char* 1538 prognosis_iterator_cpe (iterator_t*); 1539 1540 const char* 1541 prognosis_iterator_cve (iterator_t*); 1542 1543 const char* 1544 prognosis_iterator_description (iterator_t*); 1545 1546 1547 /* Targets. */ 1548 1549 /** 1550 * @brief Absolute maximum number of IPs per target. 1551 * 1552 * The number of 70000 is chosen to cover "192.168.0.0-192.168.255.255". 1553 */ 1554 #define MANAGE_ABSOLUTE_MAX_IPS_PER_TARGET 70000 1555 1556 /** 1557 * @brief Default maximum number of hosts a target may specify. 1558 */ 1559 #define MANAGE_MAX_HOSTS 4095 1560 1561 /** 1562 * @brief Default maximum number of hosts a user host access may specify. 1563 */ 1564 #define MANAGE_USER_MAX_HOSTS 16777216 1565 1566 int 1567 manage_max_hosts (); 1568 1569 void 1570 manage_filter_controls (const gchar *, int *, int *, gchar **, int *); 1571 1572 void 1573 manage_report_filter_controls (const gchar *, int *, int *, gchar **, int *, 1574 int *, gchar **, gchar **, gchar **, gchar **, 1575 int *, int *, int *, int *, gchar **); 1576 1577 gchar * 1578 manage_clean_filter (const gchar *); 1579 1580 gchar * 1581 manage_clean_filter_remove (const gchar *, const gchar *); 1582 1583 int 1584 manage_count_hosts (const char *, const char *); 1585 1586 gboolean 1587 find_target_with_permission (const char *, target_t *, const char *); 1588 1589 int 1590 create_target (const char*, const char*, const char*, const char*, const char*, 1591 const char *, const char*, credential_t, credential_t, 1592 const char *, credential_t, credential_t, credential_t, 1593 const char *, const char *, const char *, const char *, 1594 target_t*); 1595 1596 int 1597 copy_target (const char*, const char*, const char *, target_t*); 1598 1599 int 1600 modify_target (const char*, const char*, const char*, const char*, const char*, 1601 const char*, const char*, const char*, const char*, const char*, 1602 const char*, const char*, const char*, const char*, const char*, 1603 const char*); 1604 1605 int 1606 delete_target (const char*, int); 1607 1608 int 1609 target_count (const get_data_t *); 1610 1611 void 1612 init_user_target_iterator (iterator_t*, target_t); 1613 1614 void 1615 init_target_iterator_one (iterator_t*, target_t); 1616 1617 int 1618 init_target_iterator (iterator_t*, const get_data_t *); 1619 1620 const char* 1621 target_iterator_hosts (iterator_t*); 1622 1623 const char* 1624 target_iterator_exclude_hosts (iterator_t*); 1625 1626 const char* 1627 target_iterator_reverse_lookup_only (iterator_t*); 1628 1629 const char* 1630 target_iterator_reverse_lookup_unify (iterator_t*); 1631 1632 const char* 1633 target_iterator_comment (iterator_t*); 1634 1635 int 1636 target_iterator_ssh_credential (iterator_t*); 1637 1638 const char* 1639 target_iterator_ssh_port (iterator_t*); 1640 1641 int 1642 target_iterator_smb_credential (iterator_t*); 1643 1644 int 1645 target_iterator_esxi_credential (iterator_t*); 1646 1647 int 1648 target_iterator_snmp_credential (iterator_t*); 1649 1650 int 1651 target_iterator_ssh_elevate_credential (iterator_t*); 1652 1653 int 1654 target_iterator_ssh_trash (iterator_t*); 1655 1656 int 1657 target_iterator_smb_trash (iterator_t*); 1658 1659 int 1660 target_iterator_esxi_trash (iterator_t*); 1661 1662 int 1663 target_iterator_snmp_trash (iterator_t*); 1664 1665 int 1666 target_iterator_ssh_elevate_trash (iterator_t*); 1667 1668 const char* 1669 target_iterator_allow_simultaneous_ips (iterator_t*); 1670 1671 const char* 1672 target_iterator_port_list_uuid (iterator_t*); 1673 1674 const char* 1675 target_iterator_port_list_name (iterator_t*); 1676 1677 int 1678 target_iterator_port_list_trash (iterator_t*); 1679 1680 const char* 1681 target_iterator_alive_tests (iterator_t*); 1682 1683 char* 1684 target_uuid (target_t); 1685 1686 char* 1687 trash_target_uuid (target_t); 1688 1689 char* 1690 target_name (target_t); 1691 1692 char* 1693 trash_target_name (target_t); 1694 1695 int 1696 trash_target_readable (target_t); 1697 1698 char* 1699 target_hosts (target_t); 1700 1701 char* 1702 target_exclude_hosts (target_t); 1703 1704 char* 1705 target_reverse_lookup_only (target_t); 1706 1707 char* 1708 target_reverse_lookup_unify (target_t); 1709 1710 char* 1711 target_allow_simultaneous_ips (target_t); 1712 1713 char* 1714 target_port_range (target_t); 1715 1716 char* 1717 target_ssh_port (target_t); 1718 1719 int 1720 target_in_use (target_t); 1721 1722 int 1723 trash_target_in_use (target_t); 1724 1725 int 1726 target_writable (target_t); 1727 1728 int 1729 trash_target_writable (target_t); 1730 1731 char* 1732 target_ssh_credential_name (const char *); 1733 1734 void 1735 init_target_task_iterator (iterator_t*, target_t); 1736 1737 const char* 1738 target_task_iterator_name (iterator_t*); 1739 1740 const char* 1741 target_task_iterator_uuid (iterator_t*); 1742 1743 int 1744 target_task_iterator_readable (iterator_t*); 1745 1746 credential_t 1747 target_credential (target_t, const char*); 1748 1749 int 1750 target_login_port (target_t, const char*); 1751 1752 1753 /* Configs. 1754 * 1755 * These are here because they need definitions that are still in manage.h. */ 1756 1757 scanner_t 1758 config_iterator_scanner (iterator_t*); 1759 1760 int 1761 create_task_check_config_scanner (config_t, scanner_t); 1762 1763 int 1764 modify_task_check_config_scanner (task_t, const char *, const char *); 1765 1766 1767 /* NVT's. */ 1768 1769 char * 1770 manage_nvt_name (nvt_t); 1771 1772 char * 1773 nvt_name (const char *); 1774 1775 char* 1776 nvts_feed_version (); 1777 1778 time_t 1779 nvts_feed_version_epoch (); 1780 1781 void 1782 set_nvts_feed_version (const char*); 1783 1784 gboolean 1785 find_nvt (const char*, nvt_t*); 1786 1787 int 1788 init_nvt_info_iterator (iterator_t*, get_data_t*, const char*); 1789 1790 int 1791 nvt_info_count (const get_data_t *); 1792 1793 int 1794 nvt_info_count_after (const get_data_t *, time_t, gboolean); 1795 1796 void 1797 init_nvt_iterator (iterator_t*, nvt_t, config_t, const char*, const char*, int, 1798 const char*); 1799 1800 void 1801 init_cve_nvt_iterator (iterator_t*, const char *, int, const char*); 1802 1803 const char* 1804 nvt_iterator_oid (iterator_t*); 1805 1806 const char* 1807 nvt_iterator_version (iterator_t*); 1808 1809 const char* 1810 nvt_iterator_name (iterator_t*); 1811 1812 const char* 1813 nvt_iterator_summary (iterator_t*); 1814 1815 const char* 1816 nvt_iterator_insight (iterator_t*); 1817 1818 const char* 1819 nvt_iterator_affected (iterator_t*); 1820 1821 const char* 1822 nvt_iterator_impact (iterator_t*); 1823 1824 const char* 1825 nvt_iterator_description (iterator_t*); 1826 1827 const char* 1828 nvt_iterator_tag (iterator_t*); 1829 1830 int 1831 nvt_iterator_category (iterator_t*); 1832 1833 const char* 1834 nvt_iterator_family (iterator_t*); 1835 1836 const char* 1837 nvt_iterator_cvss_base (iterator_t*); 1838 1839 const char* 1840 nvt_iterator_detection (iterator_t*); 1841 1842 const char* 1843 nvt_iterator_qod (iterator_t*); 1844 1845 const char* 1846 nvt_iterator_qod_type ( iterator_t *iterator ); 1847 1848 const char* 1849 nvt_iterator_solution (iterator_t*); 1850 1851 const char* 1852 nvt_iterator_solution_type (iterator_t*); 1853 1854 const char* 1855 nvt_iterator_solution_method (iterator_t*); 1856 1857 char* 1858 nvt_default_timeout (const char *); 1859 1860 int 1861 family_nvt_count (const char *); 1862 1863 1864 /* NVT selectors. */ 1865 1866 /** 1867 * @brief NVT selector type for "all" rule. 1868 */ 1869 #define NVT_SELECTOR_TYPE_ALL 0 1870 1871 /** 1872 * @brief NVT selector type for "family" rule. 1873 */ 1874 #define NVT_SELECTOR_TYPE_FAMILY 1 1875 1876 /** 1877 * @brief NVT selector type for "NVT" rule. 1878 */ 1879 #define NVT_SELECTOR_TYPE_NVT 2 1880 1881 /** 1882 * @brief Special NVT selector type for selecting all types in interfaces. 1883 */ 1884 #define NVT_SELECTOR_TYPE_ANY 999 1885 1886 void 1887 init_family_iterator (iterator_t*, int, const char*, int); 1888 1889 const char* 1890 family_iterator_name (iterator_t*); 1891 1892 int 1893 nvt_selector_family_growing (const char *, const char *, int); 1894 1895 int 1896 nvt_selector_family_count (const char*, int); 1897 1898 int 1899 nvt_selector_nvt_count (const char *, const char *, int); 1900 1901 void 1902 init_nvt_selector_iterator (iterator_t*, const char*, config_t, int); 1903 1904 const char* 1905 nvt_selector_iterator_nvt (iterator_t*); 1906 1907 const char* 1908 nvt_selector_iterator_name (iterator_t*); 1909 1910 int 1911 nvt_selector_iterator_include (iterator_t*); 1912 1913 int 1914 nvt_selector_iterator_type (iterator_t*); 1915 1916 1917 /* NVT preferences. */ 1918 1919 void 1920 manage_nvt_preference_add (const char*, const char*); 1921 1922 void 1923 manage_nvt_preferences_enable (); 1924 1925 void 1926 init_nvt_preference_iterator (iterator_t*, const char*); 1927 1928 const char* 1929 nvt_preference_iterator_name (iterator_t*); 1930 1931 const char* 1932 nvt_preference_iterator_value (iterator_t*); 1933 1934 char* 1935 nvt_preference_iterator_config_value (iterator_t*, config_t); 1936 1937 char* 1938 nvt_preference_iterator_real_name (iterator_t*); 1939 1940 char* 1941 nvt_preference_iterator_type (iterator_t*); 1942 1943 char* 1944 nvt_preference_iterator_oid (iterator_t*); 1945 1946 char* 1947 nvt_preference_iterator_id (iterator_t*); 1948 1949 int 1950 nvt_preference_count (const char *); 1951 1952 void 1953 xml_append_nvt_refs (GString *, const char *, int *); 1954 1955 gchar* 1956 get_nvt_xml (iterator_t*, int, int, int, const char*, config_t, int); 1957 1958 char* 1959 task_preference_value (task_t, const char *); 1960 1961 int 1962 set_task_preferences (task_t, array_t *); 1963 1964 void 1965 init_task_group_iterator (iterator_t *, task_t); 1966 1967 const char* 1968 task_group_iterator_name (iterator_t*); 1969 1970 const char* 1971 task_group_iterator_uuid (iterator_t*); 1972 1973 void 1974 init_task_role_iterator (iterator_t *, task_t); 1975 1976 const char* 1977 task_role_iterator_name (iterator_t*); 1978 1979 const char* 1980 task_role_iterator_uuid (iterator_t*); 1981 1982 /* NVT severities */ 1983 void 1984 init_nvt_severity_iterator (iterator_t *, const char *); 1985 1986 const char * 1987 nvt_severity_iterator_type (iterator_t *); 1988 1989 const char * 1990 nvt_severity_iterator_origin (iterator_t *); 1991 1992 const char * 1993 nvt_severity_iterator_date (iterator_t *); 1994 1995 double 1996 nvt_severity_iterator_score (iterator_t *); 1997 1998 const char * 1999 nvt_severity_iterator_value (iterator_t *); 2000 2001 2002 /* Credentials. */ 2003 2004 /** 2005 * @brief Export formats for credentials 2006 */ 2007 typedef enum 2008 { 2009 CREDENTIAL_FORMAT_NONE = 0, /// normal XML output 2010 CREDENTIAL_FORMAT_KEY = 1, /// public key 2011 CREDENTIAL_FORMAT_RPM = 2, /// RPM package 2012 CREDENTIAL_FORMAT_DEB = 3, /// DEB package 2013 CREDENTIAL_FORMAT_EXE = 4, /// EXE installer 2014 CREDENTIAL_FORMAT_PEM = 5, /// Certificate PEM 2015 CREDENTIAL_FORMAT_ERROR = -1 /// Error / Invalid format 2016 } credential_format_t; 2017 2018 int 2019 check_private_key (const char *, const char *); 2020 2021 gboolean 2022 find_credential_with_permission (const char*, credential_t*, const char*); 2023 2024 int 2025 create_credential (const char*, const char*, const char*, const char*, 2026 const char*, const char*, const char*, const char*, 2027 const char*, const char*, const char*, const char*, 2028 const char*, credential_t*); 2029 2030 int 2031 copy_credential (const char*, const char*, const char*, 2032 credential_t*); 2033 2034 int 2035 modify_credential (const char*, const char*, const char*, const char*, 2036 const char*, const char*, const char*, const char*, 2037 const char*, const char*, const char*, const char*, 2038 const char*); 2039 2040 int 2041 delete_credential (const char *, int); 2042 2043 int 2044 credential_count (const get_data_t *); 2045 2046 void 2047 set_credential_privacy_algorithm (credential_t, const char *); 2048 2049 void 2050 set_credential_public_key (credential_t, const char *); 2051 2052 void 2053 init_credential_iterator_one (iterator_t*, credential_t); 2054 2055 int 2056 init_credential_iterator (iterator_t*, const get_data_t *); 2057 2058 const char* 2059 credential_iterator_login (iterator_t*); 2060 2061 const char* 2062 credential_iterator_auth_algorithm (iterator_t*); 2063 2064 const char* 2065 credential_iterator_privacy_algorithm (iterator_t*); 2066 2067 const char* 2068 credential_iterator_password (iterator_t*); 2069 2070 const char* 2071 credential_iterator_community (iterator_t*); 2072 2073 const char* 2074 credential_iterator_privacy_password (iterator_t*); 2075 2076 const char* 2077 credential_iterator_public_key (iterator_t*); 2078 2079 const char* 2080 credential_iterator_private_key (iterator_t*); 2081 2082 const char* 2083 credential_iterator_type (iterator_t*); 2084 2085 int 2086 credential_iterator_allow_insecure (iterator_t*); 2087 2088 const char* 2089 credential_full_type (const char*); 2090 2091 char* 2092 credential_iterator_rpm (iterator_t*); 2093 2094 char* 2095 credential_iterator_deb (iterator_t*); 2096 2097 char* 2098 credential_iterator_exe (iterator_t*); 2099 2100 const char* 2101 credential_iterator_certificate (iterator_t*); 2102 2103 gboolean 2104 credential_iterator_format_available (iterator_t*, credential_format_t); 2105 2106 gchar * 2107 credential_iterator_formats_xml (iterator_t* iterator); 2108 2109 char* 2110 credential_uuid (credential_t); 2111 2112 char* 2113 trash_credential_uuid (credential_t); 2114 2115 char* 2116 credential_name (credential_t); 2117 2118 char* 2119 trash_credential_name (credential_t); 2120 2121 char* 2122 credential_type (credential_t); 2123 2124 void 2125 init_credential_target_iterator (iterator_t*, credential_t, int); 2126 2127 const char* 2128 credential_target_iterator_uuid (iterator_t*); 2129 2130 const char* 2131 credential_target_iterator_name (iterator_t*); 2132 2133 int 2134 credential_target_iterator_readable (iterator_t*); 2135 2136 void 2137 init_credential_scanner_iterator (iterator_t*, credential_t, int); 2138 2139 const char* 2140 credential_scanner_iterator_uuid (iterator_t*); 2141 2142 const char* 2143 credential_scanner_iterator_name (iterator_t*); 2144 2145 int 2146 credential_scanner_iterator_readable (iterator_t*); 2147 2148 int 2149 trash_credential_in_use (credential_t); 2150 2151 int 2152 credential_in_use (credential_t); 2153 2154 int 2155 trash_credential_writable (credential_t); 2156 2157 int 2158 credential_writable (credential_t); 2159 2160 int 2161 trash_credential_readable (credential_t); 2162 2163 gchar* 2164 credential_value (credential_t, const char*); 2165 2166 gchar* 2167 credential_encrypted_value (credential_t, const char*); 2168 2169 2170 2171 /* Assets. */ 2172 2173 char * 2174 result_host_asset_id (const char *, result_t); 2175 2176 char* 2177 host_uuid (resource_t); 2178 2179 host_t 2180 host_notice (const char *, const char *, const char *, const char *, 2181 const char *, int, int); 2182 2183 void 2184 init_host_identifier_iterator (iterator_t*, host_t, int, const char*); 2185 2186 const char* 2187 host_identifier_iterator_value (iterator_t *); 2188 2189 const char* 2190 host_identifier_iterator_source_type (iterator_t *); 2191 2192 const char* 2193 host_identifier_iterator_source_id (iterator_t *); 2194 2195 const char* 2196 host_identifier_iterator_source_data (iterator_t *); 2197 2198 int 2199 host_identifier_iterator_source_orphan (iterator_t *); 2200 2201 const char* 2202 host_identifier_iterator_os_id (iterator_t *); 2203 2204 const char* 2205 host_identifier_iterator_os_title (iterator_t *); 2206 2207 int 2208 init_asset_host_iterator (iterator_t *, const get_data_t *); 2209 2210 int 2211 asset_iterator_writable (iterator_t *); 2212 2213 int 2214 asset_iterator_in_use (iterator_t *); 2215 2216 const char* 2217 asset_host_iterator_severity (iterator_t *); 2218 2219 int 2220 asset_host_count (const get_data_t *); 2221 2222 int 2223 init_asset_os_iterator (iterator_t *, const get_data_t *); 2224 2225 const char* 2226 asset_os_iterator_title (iterator_t *); 2227 2228 int 2229 asset_os_iterator_installs (iterator_t *); 2230 2231 const char* 2232 asset_os_iterator_latest_severity (iterator_t *); 2233 2234 const char* 2235 asset_os_iterator_highest_severity (iterator_t *); 2236 2237 const char* 2238 asset_os_iterator_average_severity (iterator_t *); 2239 2240 int 2241 asset_os_count (const get_data_t *); 2242 2243 int 2244 total_asset_count (const get_data_t *); 2245 2246 void 2247 init_os_host_iterator (iterator_t *, resource_t); 2248 2249 const char* 2250 os_host_iterator_severity (iterator_t *); 2251 2252 void 2253 init_host_detail_iterator (iterator_t *, resource_t); 2254 2255 const char* 2256 host_detail_iterator_name (iterator_t *); 2257 2258 const char* 2259 host_detail_iterator_value (iterator_t *); 2260 2261 const char* 2262 host_detail_iterator_source_type (iterator_t *); 2263 2264 const char* 2265 host_detail_iterator_source_id (iterator_t *); 2266 2267 int 2268 modify_asset (const char *, const char *); 2269 2270 int 2271 delete_asset (const char *, const char *, int); 2272 2273 int 2274 create_asset_report (const char *, const char *); 2275 2276 int 2277 create_asset_host (const char *, const char *, resource_t* ); 2278 2279 int 2280 add_assets_from_host_in_report (report_t report, const char *host); 2281 2282 2283 /* Notes. */ 2284 2285 gboolean 2286 find_note_with_permission (const char*, note_t*, const char *); 2287 2288 int 2289 create_note (const char*, const char*, const char*, const char*, const char*, 2290 const char*, const char*, task_t, result_t, note_t*); 2291 2292 int 2293 copy_note (const char*, note_t*); 2294 2295 int 2296 delete_note (const char *, int); 2297 2298 int 2299 note_uuid (note_t, char **); 2300 2301 int 2302 modify_note (const gchar *, const char *, const char *, const char *, 2303 const char *, const char *, const char *, const char *, 2304 const gchar *, const gchar *); 2305 2306 int 2307 note_count (const get_data_t *, nvt_t, result_t, task_t); 2308 2309 int 2310 init_note_iterator (iterator_t*, const get_data_t*, nvt_t, result_t, task_t); 2311 2312 const char* 2313 note_iterator_nvt_oid (iterator_t*); 2314 2315 time_t 2316 note_iterator_creation_time (iterator_t*); 2317 2318 time_t 2319 note_iterator_modification_time (iterator_t*); 2320 2321 const char* 2322 note_iterator_text (iterator_t*); 2323 2324 const char* 2325 note_iterator_hosts (iterator_t*); 2326 2327 const char* 2328 note_iterator_port (iterator_t*); 2329 2330 const char* 2331 note_iterator_threat (iterator_t*); 2332 2333 task_t 2334 note_iterator_task (iterator_t*); 2335 2336 result_t 2337 note_iterator_result (iterator_t*); 2338 2339 time_t 2340 note_iterator_end_time (iterator_t*); 2341 2342 int 2343 note_iterator_active (iterator_t*); 2344 2345 const char* 2346 note_iterator_nvt_name (iterator_t *); 2347 2348 const char * 2349 note_iterator_nvt_type (iterator_t *); 2350 2351 const char* 2352 note_iterator_severity (iterator_t *); 2353 2354 2355 /* Overrides. */ 2356 2357 gboolean 2358 find_override_with_permission (const char*, override_t*, const char *); 2359 2360 int 2361 create_override (const char*, const char*, const char*, const char*, 2362 const char*, const char*, const char*, const char*, 2363 const char*, task_t, result_t, override_t*); 2364 2365 int 2366 override_uuid (override_t, char **); 2367 2368 int 2369 copy_override (const char*, override_t*); 2370 2371 int 2372 delete_override (const char *, int); 2373 2374 int 2375 modify_override (const gchar *, const char *, const char *, const char *, 2376 const char *, const char *, const char *, const char *, 2377 const char *, const char *, const gchar *, const gchar *); 2378 2379 int 2380 override_count (const get_data_t *, nvt_t, result_t, task_t); 2381 2382 int 2383 init_override_iterator (iterator_t*, const get_data_t*, nvt_t, result_t, 2384 task_t); 2385 2386 const char* 2387 override_iterator_nvt_oid (iterator_t*); 2388 2389 time_t 2390 override_iterator_creation_time (iterator_t*); 2391 2392 time_t 2393 override_iterator_modification_time (iterator_t*); 2394 2395 const char* 2396 override_iterator_text (iterator_t*); 2397 2398 const char* 2399 override_iterator_hosts (iterator_t*); 2400 2401 const char* 2402 override_iterator_port (iterator_t*); 2403 2404 const char* 2405 override_iterator_threat (iterator_t*); 2406 2407 const char* 2408 override_iterator_new_threat (iterator_t*); 2409 2410 task_t 2411 override_iterator_task (iterator_t*); 2412 2413 result_t 2414 override_iterator_result (iterator_t*); 2415 2416 time_t 2417 override_iterator_end_time (iterator_t*); 2418 2419 int 2420 override_iterator_active (iterator_t*); 2421 2422 const char* 2423 override_iterator_nvt_name (iterator_t *); 2424 2425 const char * 2426 override_iterator_nvt_type (iterator_t *); 2427 2428 const char* 2429 override_iterator_severity (iterator_t *); 2430 2431 const char* 2432 override_iterator_new_severity (iterator_t *); 2433 2434 2435 /* System reports. */ 2436 2437 /** 2438 * @brief A system report type iterator. 2439 */ 2440 typedef struct 2441 { 2442 gchar **start; ///< First type. 2443 gchar **current; ///< Current type. 2444 } report_type_iterator_t; 2445 2446 int 2447 init_system_report_type_iterator (report_type_iterator_t*, const char*, 2448 const char*); 2449 2450 void 2451 cleanup_report_type_iterator (report_type_iterator_t*); 2452 2453 gboolean 2454 next_report_type (report_type_iterator_t*); 2455 2456 const char* 2457 report_type_iterator_name (report_type_iterator_t*); 2458 2459 const char* 2460 report_type_iterator_title (report_type_iterator_t*); 2461 2462 int 2463 manage_system_report (const char *, const char *, const char *, const char *, 2464 const char *, char **); 2465 2466 2467 /* Scanners. */ 2468 2469 /** 2470 * @brief Default for max auto retry on connection to scanner lost. 2471 */ 2472 #define SCANNER_CONNECTION_RETRY_DEFAULT 3 2473 2474 int 2475 manage_create_scanner (GSList *, const db_conn_info_t *, const char *, 2476 const char *, const char *, const char *, const char *, 2477 const char *, const char *, const char *); 2478 2479 int 2480 manage_modify_scanner (GSList *, const db_conn_info_t *, const char *, 2481 const char *, const char *, const char *, const char *, 2482 const char *, const char *, const char *, const char *); 2483 2484 int 2485 manage_delete_scanner (GSList *, const db_conn_info_t *, const gchar *); 2486 2487 int 2488 manage_verify_scanner (GSList *, const db_conn_info_t *, const gchar *); 2489 2490 int 2491 manage_get_scanners (GSList *, const db_conn_info_t *); 2492 2493 int 2494 create_scanner (const char*, const char *, const char *, const char *, 2495 const char *, scanner_t *, const char *, const char *); 2496 2497 int 2498 copy_scanner (const char*, const char*, const char *, scanner_t *); 2499 2500 int 2501 modify_scanner (const char*, const char*, const char*, const char *, 2502 const char *, const char *, const char *, const char *); 2503 2504 int 2505 delete_scanner (const char *, int); 2506 2507 gboolean 2508 find_scanner_with_permission (const char *, scanner_t *, const char *); 2509 2510 int 2511 scanner_in_use (scanner_t); 2512 2513 int 2514 trash_scanner_readable (scanner_t); 2515 2516 int 2517 trash_scanner_in_use (scanner_t); 2518 2519 int 2520 trash_scanner_writable (scanner_t); 2521 2522 int 2523 scanner_writable (scanner_t); 2524 2525 const char * 2526 scanner_uuid_default (); 2527 2528 char * 2529 scanner_host (scanner_t); 2530 2531 int 2532 scanner_port (scanner_t); 2533 2534 int 2535 scanner_type (scanner_t); 2536 2537 char * 2538 scanner_ca_pub (scanner_t); 2539 2540 char * 2541 scanner_key_pub (scanner_t); 2542 2543 char * 2544 scanner_key_priv (scanner_t); 2545 2546 char* 2547 scanner_login (scanner_t); 2548 2549 char* 2550 scanner_password (scanner_t); 2551 2552 int 2553 scanner_count (const get_data_t *); 2554 2555 char * 2556 openvas_default_scanner_host (); 2557 2558 int 2559 init_scanner_iterator (iterator_t*, const get_data_t *); 2560 2561 const char* 2562 scanner_iterator_host (iterator_t*); 2563 2564 int 2565 scanner_iterator_port (iterator_t*); 2566 2567 int 2568 scanner_iterator_type (iterator_t*); 2569 2570 const char* 2571 scanner_iterator_credential_name (iterator_t *); 2572 2573 credential_t 2574 scanner_iterator_credential (iterator_t *); 2575 2576 int 2577 scanner_iterator_credential_trash (iterator_t*); 2578 2579 const char* 2580 scanner_iterator_ca_pub (iterator_t *); 2581 2582 const char* 2583 scanner_iterator_key_pub (iterator_t *); 2584 2585 const char* 2586 scanner_iterator_credential_type (iterator_t *); 2587 2588 void 2589 init_scanner_config_iterator (iterator_t*, scanner_t); 2590 2591 const char* 2592 scanner_config_iterator_uuid (iterator_t *); 2593 2594 const char* 2595 scanner_config_iterator_name (iterator_t *); 2596 2597 int 2598 scanner_config_iterator_readable (iterator_t *); 2599 2600 void 2601 init_scanner_task_iterator (iterator_t*, scanner_t); 2602 2603 const char* 2604 scanner_task_iterator_uuid (iterator_t *); 2605 2606 const char* 2607 scanner_task_iterator_name (iterator_t *); 2608 2609 int 2610 scanner_task_iterator_readable (iterator_t *); 2611 2612 char * 2613 scanner_name (scanner_t); 2614 2615 char * 2616 scanner_uuid (scanner_t); 2617 2618 char * 2619 trash_scanner_name (scanner_t); 2620 2621 char * 2622 trash_scanner_uuid (scanner_t); 2623 2624 int 2625 osp_get_version_from_iterator (iterator_t *, char **, char **, char **, char **, 2626 char **, char **); 2627 2628 int 2629 osp_get_details_from_iterator (iterator_t *, char **, GSList **); 2630 2631 osp_connection_t * 2632 osp_connect_with_data (const char *, 2633 int, 2634 const char *, 2635 const char *, 2636 const char *); 2637 2638 osp_connection_t * 2639 osp_scanner_connect (scanner_t); 2640 2641 int 2642 get_scanner_connection_retry (); 2643 2644 void 2645 set_scanner_connection_retry (int); 2646 2647 int 2648 verify_scanner (const char *, char **); 2649 2650 const char * 2651 get_relay_mapper_path (); 2652 2653 void 2654 set_relay_mapper_path (const char *); 2655 2656 int 2657 get_relay_migrate_sensors (); 2658 2659 void 2660 set_relay_migrate_sensors (int); 2661 2662 gboolean 2663 relay_supports_scanner_type (const char *, int, scanner_type_t); 2664 2665 int 2666 slave_get_relay (const char *, 2667 int, 2668 const char *, 2669 const char *, 2670 gchar **, 2671 int *, 2672 gchar **); 2673 2674 int 2675 slave_relay_connection (gvm_connection_t *, gvm_connection_t *); 2676 2677 /* Scheduling. */ 2678 2679 /** 2680 * @brief Seconds between calls to manage_schedule. 2681 */ 2682 #define SCHEDULE_PERIOD 10 2683 2684 /** 2685 * @brief Minimum schedule timeout seconds. 2686 * This value must be greater than SCHEDULE_PERIOD. 2687 */ 2688 #define SCHEDULE_TIMEOUT_MIN_SECS 20 2689 2690 /** 2691 * @brief Default for schedule_timeout in minutes. 2692 */ 2693 #define SCHEDULE_TIMEOUT_DEFAULT 60 2694 2695 gboolean 2696 find_schedule_with_permission (const char*, schedule_t*, const char*); 2697 2698 int 2699 create_schedule (const char *, const char*, const char *, 2700 const char*, schedule_t *, gchar**); 2701 2702 int 2703 copy_schedule (const char*, const char*, const char *, schedule_t *); 2704 2705 int 2706 delete_schedule (const char*, int); 2707 2708 void 2709 manage_auth_allow_all (int); 2710 2711 const gchar* 2712 get_scheduled_user_uuid (); 2713 2714 void 2715 set_scheduled_user_uuid (const gchar* uuid); 2716 2717 void 2718 manage_sync (sigset_t *, int (*fork_update_nvt_cache) (), gboolean); 2719 2720 int 2721 manage_rebuild_gvmd_data_from_feed (const char *, 2722 GSList *, 2723 const db_conn_info_t *, 2724 gchar **); 2725 2726 int 2727 manage_schedule (manage_connection_forker_t, 2728 gboolean, 2729 sigset_t *); 2730 2731 char * 2732 schedule_uuid (schedule_t); 2733 2734 char * 2735 trash_schedule_uuid (schedule_t); 2736 2737 char * 2738 schedule_name (schedule_t); 2739 2740 char * 2741 trash_schedule_name (schedule_t); 2742 2743 int 2744 schedule_duration (schedule_t); 2745 2746 int 2747 schedule_period (schedule_t); 2748 2749 int 2750 schedule_info (schedule_t, int, gchar **, gchar **); 2751 2752 int 2753 init_schedule_iterator (iterator_t*, const get_data_t *); 2754 2755 const char* 2756 schedule_iterator_timezone (iterator_t *); 2757 2758 const char* 2759 schedule_iterator_icalendar (iterator_t *); 2760 2761 int 2762 trash_schedule_in_use (schedule_t); 2763 2764 int 2765 schedule_in_use (schedule_t); 2766 2767 int 2768 trash_schedule_writable (schedule_t); 2769 2770 int 2771 trash_schedule_readable (schedule_t); 2772 2773 int 2774 schedule_writable (schedule_t); 2775 2776 int 2777 schedule_count (const get_data_t *); 2778 2779 void 2780 init_schedule_task_iterator (iterator_t*, schedule_t); 2781 2782 const char* 2783 schedule_task_iterator_uuid (iterator_t *); 2784 2785 const char* 2786 schedule_task_iterator_name (iterator_t *); 2787 2788 int 2789 schedule_task_iterator_readable (iterator_t*); 2790 2791 int 2792 modify_schedule (const char *, const char *, const char *, const char*, 2793 const char *, gchar **); 2794 2795 int 2796 get_schedule_timeout (); 2797 2798 void 2799 set_schedule_timeout (int); 2800 2801 2802 /* Groups. */ 2803 2804 int 2805 init_group_iterator (iterator_t *, const get_data_t *); 2806 2807 int 2808 copy_group (const char *, const char *, const char *, group_t *); 2809 2810 int 2811 create_group (const char *, const char *, const char *, int, group_t *); 2812 2813 int 2814 delete_group (const char *, int); 2815 2816 char* 2817 group_uuid (group_t); 2818 2819 gchar * 2820 group_users (group_t); 2821 2822 int 2823 trash_group_in_use (group_t); 2824 2825 int 2826 group_in_use (group_t); 2827 2828 int 2829 trash_group_writable (group_t); 2830 2831 int 2832 group_writable (group_t); 2833 2834 int 2835 group_count (const get_data_t*); 2836 2837 int 2838 modify_group (const char *, const char *, const char *, const char *); 2839 2840 2841 /* Permissions. */ 2842 2843 int 2844 create_permission (const char *, const char *, const char *, const char *, 2845 const char *, const char *, permission_t *); 2846 2847 int 2848 copy_permission (const char*, const char *, permission_t *); 2849 2850 char* 2851 permission_uuid (permission_t); 2852 2853 int 2854 permission_is_admin (const char *); 2855 2856 int 2857 permission_in_use (permission_t); 2858 2859 int 2860 trash_permission_in_use (permission_t); 2861 2862 int 2863 permission_writable (permission_t); 2864 2865 int 2866 trash_permission_writable (permission_t); 2867 2868 int 2869 permission_count (const get_data_t *); 2870 2871 int 2872 init_permission_iterator (iterator_t*, const get_data_t *); 2873 2874 const char* 2875 permission_iterator_resource_type (iterator_t*); 2876 2877 const char* 2878 permission_iterator_resource_uuid (iterator_t*); 2879 2880 const char* 2881 permission_iterator_resource_name (iterator_t*); 2882 2883 int 2884 permission_iterator_resource_in_trash (iterator_t*); 2885 2886 int 2887 permission_iterator_resource_orphan (iterator_t*); 2888 2889 int 2890 permission_iterator_resource_readable (iterator_t*); 2891 2892 const char* 2893 permission_iterator_subject_type (iterator_t*); 2894 2895 const char* 2896 permission_iterator_subject_uuid (iterator_t*); 2897 2898 const char* 2899 permission_iterator_subject_name (iterator_t*); 2900 2901 int 2902 permission_iterator_subject_in_trash (iterator_t*); 2903 2904 int 2905 permission_iterator_subject_readable (iterator_t*); 2906 2907 int 2908 delete_permission (const char*, int); 2909 2910 int 2911 modify_permission (const char *, const char *, const char *, const char *, 2912 const char *, const char *, const char *); 2913 2914 /* Permission caching */ 2915 2916 void 2917 delete_permissions_cache_for_resource (const char*, resource_t); 2918 2919 void 2920 delete_permissions_cache_for_user (user_t); 2921 2922 2923 /* Roles. */ 2924 2925 int 2926 manage_get_roles (GSList *, const db_conn_info_t *, int); 2927 2928 int 2929 init_role_iterator (iterator_t *, const get_data_t *); 2930 2931 int 2932 copy_role (const char *, const char *, const char *, role_t *); 2933 2934 int 2935 create_role (const char *, const char *, const char *, role_t *); 2936 2937 int 2938 delete_role (const char *, int); 2939 2940 char* 2941 role_uuid (role_t); 2942 2943 gchar * 2944 role_users (role_t); 2945 2946 int 2947 trash_role_in_use (role_t); 2948 2949 int 2950 role_in_use (role_t); 2951 2952 int 2953 trash_role_writable (role_t); 2954 2955 int 2956 role_writable (role_t); 2957 2958 int 2959 role_count (const get_data_t*); 2960 2961 int 2962 modify_role (const char *, const char *, const char *, const char *); 2963 2964 2965 /* Filter Utilities. */ 2966 2967 /** 2968 * @brief Keyword type. 2969 */ 2970 typedef enum 2971 { 2972 KEYWORD_TYPE_UNKNOWN, 2973 KEYWORD_TYPE_INTEGER, 2974 KEYWORD_TYPE_DOUBLE, 2975 KEYWORD_TYPE_STRING 2976 } keyword_type_t; 2977 2978 /** 2979 * @brief Comparison returns. 2980 */ 2981 typedef enum 2982 { 2983 KEYWORD_RELATION_APPROX, 2984 KEYWORD_RELATION_COLUMN_ABOVE, 2985 KEYWORD_RELATION_COLUMN_APPROX, 2986 KEYWORD_RELATION_COLUMN_EQUAL, 2987 KEYWORD_RELATION_COLUMN_BELOW, 2988 KEYWORD_RELATION_COLUMN_REGEXP 2989 } keyword_relation_t; 2990 2991 /** 2992 * @brief Keyword. 2993 */ 2994 struct keyword 2995 { 2996 gchar *column; ///< The column prefix, or NULL. 2997 int approx; ///< Whether the keyword is like "~example". 2998 int equal; ///< Whether the keyword is like "=example". 2999 int integer_value; ///< Integer value of the keyword. 3000 double double_value; ///< Floating point value of the keyword. 3001 int quoted; ///< Whether the keyword was quoted. 3002 gchar *string; ///< The keyword string, outer quotes removed. 3003 keyword_type_t type; ///< Type of keyword. 3004 keyword_relation_t relation; ///< The relation. 3005 }; 3006 3007 /** 3008 * @brief Keyword type. 3009 */ 3010 typedef struct keyword keyword_t; 3011 3012 int 3013 keyword_special (keyword_t *); 3014 3015 const char * 3016 keyword_relation_symbol (keyword_relation_t); 3017 3018 void 3019 filter_free (array_t*); 3020 3021 array_t * 3022 split_filter (const gchar*); 3023 3024 3025 /* Filters. */ 3026 3027 /** 3028 * @brief filt_id value to use term or built-in default filter. 3029 */ 3030 #define FILT_ID_NONE "0" 3031 3032 /** 3033 * @brief filt_id value to use the filter in the user setting if possible. 3034 */ 3035 #define FILT_ID_USER_SETTING "-2" 3036 3037 gboolean 3038 find_filter (const char*, filter_t*); 3039 3040 gboolean 3041 find_filter_with_permission (const char*, filter_t*, const char*); 3042 3043 char* 3044 filter_uuid (filter_t); 3045 3046 char* 3047 filter_name (filter_t); 3048 3049 gchar* 3050 filter_term (const char *); 3051 3052 gchar* 3053 filter_term_value (const char *, const char *); 3054 3055 int 3056 filter_term_apply_overrides (const char *); 3057 3058 int 3059 filter_term_min_qod (const char *); 3060 3061 int 3062 create_filter (const char*, const char*, const char*, const char*, filter_t*); 3063 3064 int 3065 copy_filter (const char*, const char*, const char*, filter_t*); 3066 3067 int 3068 delete_filter (const char *, int); 3069 3070 int 3071 trash_filter_in_use (filter_t); 3072 3073 int 3074 filter_in_use (filter_t); 3075 3076 int 3077 trash_filter_writable (filter_t); 3078 3079 int 3080 filter_writable (filter_t); 3081 3082 int 3083 filter_count (const get_data_t*); 3084 3085 int 3086 init_filter_iterator (iterator_t*, const get_data_t*); 3087 3088 const char* 3089 filter_iterator_type (iterator_t*); 3090 3091 const char* 3092 filter_iterator_term (iterator_t*); 3093 3094 void 3095 init_filter_alert_iterator (iterator_t*, filter_t); 3096 3097 const char* 3098 filter_alert_iterator_name (iterator_t*); 3099 3100 const char* 3101 filter_alert_iterator_uuid (iterator_t*); 3102 3103 int 3104 filter_alert_iterator_readable (iterator_t*); 3105 3106 int 3107 modify_filter (const char*, const char*, const char*, const char*, const char*); 3108 3109 3110 /* Schema. */ 3111 3112 int 3113 manage_schema (gchar *, gchar **, gsize *, gchar **, gchar **); 3114 3115 3116 /* Trashcan. */ 3117 3118 int 3119 manage_restore (const char *); 3120 3121 int 3122 manage_empty_trashcan (); 3123 3124 3125 /* SecInfo */ 3126 3127 int 3128 manage_read_info (gchar *, gchar *, gchar *, gchar **); 3129 3130 int 3131 info_name_count (const gchar *, const gchar *); 3132 3133 /* SCAP. */ 3134 3135 int 3136 manage_scap_loaded (); 3137 3138 const char * 3139 manage_scap_update_time (); 3140 3141 /* CPE. */ 3142 3143 void 3144 init_cpe_cve_iterator (iterator_t *, const char *, int, const char *); 3145 3146 int 3147 init_cpe_info_iterator (iterator_t*, get_data_t*, const char*); 3148 3149 int 3150 cpe_info_count (const get_data_t *get); 3151 3152 const char* 3153 cpe_info_iterator_title (iterator_t*); 3154 3155 const char* 3156 cpe_info_iterator_status (iterator_t*); 3157 3158 const char * 3159 cpe_info_iterator_severity (iterator_t*); 3160 3161 const char* 3162 cpe_info_iterator_deprecated_by_id (iterator_t*); 3163 3164 const char* 3165 cpe_info_iterator_cve_refs (iterator_t*); 3166 3167 const char* 3168 cpe_info_iterator_nvd_id (iterator_t*); 3169 3170 /* CVE. */ 3171 3172 const char* 3173 cve_iterator_name (iterator_t*); 3174 3175 const char* 3176 cve_iterator_cvss_score (iterator_t*); 3177 3178 const char* 3179 cve_info_iterator_severity (iterator_t*); 3180 3181 const char* 3182 cve_info_iterator_vector (iterator_t*); 3183 3184 const char* 3185 cve_info_iterator_description (iterator_t*); 3186 3187 const char* 3188 cve_info_iterator_products (iterator_t*); 3189 3190 int 3191 init_cve_info_iterator (iterator_t*, get_data_t*, const char*); 3192 3193 int 3194 cve_info_count (const get_data_t *get); 3195 3196 gchar * 3197 cve_cvss_base (const gchar *); 3198 3199 /* OVAL definitions */ 3200 int 3201 init_ovaldef_info_iterator (iterator_t*, get_data_t*, const char*); 3202 3203 int 3204 ovaldef_info_count (const get_data_t *get); 3205 3206 const char* 3207 ovaldef_info_iterator_version (iterator_t*); 3208 3209 const char* 3210 ovaldef_info_iterator_deprecated (iterator_t*); 3211 3212 const char* 3213 ovaldef_info_iterator_class (iterator_t*); 3214 3215 const char* 3216 ovaldef_info_iterator_title (iterator_t*); 3217 3218 const char* 3219 ovaldef_info_iterator_description (iterator_t*); 3220 3221 const char* 3222 ovaldef_info_iterator_file (iterator_t*); 3223 3224 const char* 3225 ovaldef_info_iterator_status (iterator_t*); 3226 3227 const char* 3228 ovaldef_info_iterator_severity (iterator_t*); 3229 3230 const char* 3231 ovaldef_info_iterator_cve_refs (iterator_t*); 3232 3233 char * 3234 ovaldef_severity (const char *); 3235 3236 char * 3237 ovaldef_version (const char *); 3238 3239 char * 3240 ovaldef_uuid (const char *, const char *); 3241 3242 char * 3243 ovaldef_cves (const char *); 3244 3245 /* CERT data */ 3246 int 3247 manage_cert_loaded (); 3248 3249 /* CERT-Bund */ 3250 3251 int 3252 init_cert_bund_adv_info_iterator (iterator_t*, get_data_t*, const char*); 3253 3254 int 3255 cert_bund_adv_info_count (const get_data_t *get); 3256 3257 const char* 3258 cert_bund_adv_info_iterator_title (iterator_t*); 3259 3260 const char* 3261 cert_bund_adv_info_iterator_summary (iterator_t*); 3262 3263 const char* 3264 cert_bund_adv_info_iterator_cve_refs (iterator_t*); 3265 3266 const char* 3267 cert_bund_adv_info_iterator_severity (iterator_t*); 3268 3269 void 3270 init_cve_cert_bund_adv_iterator (iterator_t*, const char*, int, const char*); 3271 3272 void 3273 init_nvt_cert_bund_adv_iterator (iterator_t*, const char*); 3274 3275 const char* 3276 nvt_cert_bund_adv_iterator_name (iterator_t*); 3277 3278 /* DFN-CERT */ 3279 3280 int 3281 init_dfn_cert_adv_info_iterator (iterator_t*, get_data_t*, const char*); 3282 3283 int 3284 dfn_cert_adv_info_count (const get_data_t *get); 3285 3286 const char* 3287 dfn_cert_adv_info_iterator_title (iterator_t*); 3288 3289 const char* 3290 dfn_cert_adv_info_iterator_summary (iterator_t*); 3291 3292 const char* 3293 dfn_cert_adv_info_iterator_cve_refs (iterator_t*); 3294 3295 const char* 3296 dfn_cert_adv_info_iterator_severity (iterator_t*); 3297 3298 void 3299 init_cve_dfn_cert_adv_iterator (iterator_t*, const char*, int, const char*); 3300 3301 void 3302 init_nvt_dfn_cert_adv_iterator (iterator_t*, const char*); 3303 3304 const char* 3305 nvt_dfn_cert_adv_iterator_name (iterator_t*); 3306 3307 /* All SecInfo Data */ 3308 3309 int 3310 secinfo_count_after (const get_data_t *, const char *, time_t, gboolean); 3311 3312 void 3313 init_ovaldi_file_iterator (iterator_t*); 3314 3315 const char* 3316 ovaldi_file_iterator_name (iterator_t*); 3317 3318 3319 /* Settings. */ 3320 3321 int 3322 manage_max_rows (int); 3323 3324 int 3325 setting_count (const char *); 3326 3327 int 3328 setting_is_default_ca_cert (const gchar *); 3329 3330 char * 3331 setting_filter (const char *); 3332 3333 void 3334 init_setting_iterator (iterator_t *, const char *, const char *, int, int, int, 3335 const char *); 3336 3337 const char* 3338 setting_iterator_uuid (iterator_t*); 3339 3340 const char* 3341 setting_iterator_name (iterator_t*); 3342 3343 const char* 3344 setting_iterator_comment (iterator_t*); 3345 3346 const char* 3347 setting_iterator_value (iterator_t*); 3348 3349 int 3350 modify_setting (const gchar *, const gchar *, const gchar *, gchar **); 3351 3352 int 3353 manage_modify_setting (GSList *, const db_conn_info_t *, const gchar *, 3354 const gchar *, const char *); 3355 3356 char * 3357 manage_default_ca_cert (); 3358 3359 3360 /* Users. */ 3361 3362 gboolean 3363 find_user_by_name_with_permission (const char *, user_t *, const char *); 3364 3365 int 3366 manage_create_user (GSList *, const db_conn_info_t *, const gchar *, 3367 const gchar *, const gchar *); 3368 3369 int 3370 manage_delete_user (GSList *, const db_conn_info_t *, const gchar *, 3371 const gchar *); 3372 3373 int 3374 manage_get_users (GSList *, const db_conn_info_t *, const gchar *, int); 3375 3376 report_host_t 3377 manage_report_host_add (report_t, const char *, time_t, time_t); 3378 3379 int 3380 report_host_noticeable (report_t, const gchar *); 3381 3382 void 3383 report_host_set_end_time (report_host_t, time_t); 3384 3385 gchar* 3386 host_routes_xml (host_t); 3387 3388 int 3389 manage_set_password (GSList *, const db_conn_info_t *, const gchar *, 3390 const gchar *); 3391 3392 gchar * 3393 manage_user_hash (const gchar *); 3394 3395 gchar * 3396 manage_user_uuid (const gchar *, auth_method_t); 3397 3398 int 3399 manage_user_exists (const gchar *, auth_method_t); 3400 3401 int 3402 copy_user (const char*, const char*, const char*, user_t*); 3403 3404 gchar * 3405 keyfile_to_auth_conf_settings_xml (const gchar *); 3406 3407 int 3408 init_user_iterator (iterator_t*, const get_data_t*); 3409 3410 const char* 3411 user_iterator_role (iterator_t*); 3412 3413 const char* 3414 user_iterator_method (iterator_t*); 3415 3416 const char* 3417 user_iterator_hosts (iterator_t*); 3418 3419 int 3420 user_iterator_hosts_allow (iterator_t*); 3421 3422 const char* 3423 user_iterator_ifaces (iterator_t*); 3424 3425 int 3426 user_iterator_ifaces_allow (iterator_t*); 3427 3428 void 3429 init_user_group_iterator (iterator_t *, user_t); 3430 3431 const char* 3432 user_group_iterator_uuid (iterator_t*); 3433 3434 const char* 3435 user_group_iterator_name (iterator_t*); 3436 3437 int 3438 user_group_iterator_readable (iterator_t*); 3439 3440 void 3441 init_user_role_iterator (iterator_t *, user_t); 3442 3443 const char* 3444 user_role_iterator_uuid (iterator_t*); 3445 3446 const char* 3447 user_role_iterator_name (iterator_t*); 3448 3449 int 3450 user_role_iterator_readable (iterator_t*); 3451 3452 int 3453 create_user (const gchar *, const gchar *, const gchar *, const gchar *, 3454 int, const gchar *, int, const array_t *, array_t *, gchar **, 3455 array_t *, gchar **, gchar **, user_t *, int); 3456 3457 int 3458 delete_user (const char *, const char *, int, int, const char*, const char*); 3459 3460 int 3461 modify_user (const gchar *, gchar **, const gchar *, const gchar *, 3462 const gchar*, const gchar *, int, const gchar *, int, 3463 const array_t *, array_t *, gchar **, array_t *, gchar **, 3464 gchar **); 3465 3466 int 3467 user_in_use (user_t); 3468 3469 int 3470 trash_user_in_use (user_t); 3471 3472 int 3473 user_writable (user_t); 3474 3475 int 3476 trash_user_writable (user_t); 3477 3478 int 3479 user_count (const get_data_t*); 3480 3481 gchar* 3482 user_name (const char *); 3483 3484 char* 3485 user_uuid (user_t); 3486 3487 gchar* 3488 user_ifaces (const char *); 3489 3490 int 3491 user_ifaces_allow (const char *); 3492 3493 gchar* 3494 user_hosts (const char *); 3495 3496 int 3497 user_hosts_allow (const char *); 3498 3499 int 3500 init_vuln_iterator (iterator_t*, const get_data_t*); 3501 3502 int 3503 vuln_iterator_results (iterator_t*); 3504 3505 time_t 3506 vuln_iterator_oldest (iterator_t*); 3507 3508 time_t 3509 vuln_iterator_newest (iterator_t*); 3510 3511 const char* 3512 vuln_iterator_type (iterator_t*); 3513 3514 int 3515 vuln_iterator_hosts (iterator_t*); 3516 3517 double 3518 vuln_iterator_severity (iterator_t*); 3519 3520 int 3521 vuln_iterator_qod (iterator_t*); 3522 3523 int 3524 vuln_count (const get_data_t*); 3525 3526 void 3527 manage_get_ldap_info (int *, gchar **, gchar **, int *, gchar **); 3528 3529 void 3530 manage_set_ldap_info (int, gchar *, gchar *, int, gchar *); 3531 3532 void 3533 manage_get_radius_info (int *, char **, char **); 3534 3535 void 3536 manage_set_radius_info (int, gchar *, gchar *); 3537 3538 3539 /* Tags */ 3540 3541 char* 3542 tag_uuid (target_t); 3543 3544 int 3545 copy_tag (const char*, const char*, const char*, tag_t*); 3546 3547 int 3548 create_tag (const char *, const char *, const char *, const char *, 3549 array_t *, const char *, const char *, tag_t *, gchar **); 3550 3551 int 3552 delete_tag (const char *, int); 3553 3554 int 3555 modify_tag (const char *, const char *, const char *, const char *, 3556 const char *, array_t *, const char *, const char *, const char*, 3557 gchar **); 3558 3559 int 3560 init_tag_iterator (iterator_t*, const get_data_t*); 3561 3562 int 3563 tag_count (const get_data_t *get); 3564 3565 const char* 3566 tag_iterator_resource_type (iterator_t*); 3567 3568 int 3569 tag_iterator_active (iterator_t*); 3570 3571 const char* 3572 tag_iterator_value (iterator_t*); 3573 3574 int 3575 tag_iterator_resources (iterator_t*); 3576 3577 resource_t 3578 tag_resource_iterator_id (iterator_t*); 3579 3580 const char* 3581 tag_resource_iterator_uuid (iterator_t*); 3582 3583 int 3584 tag_resource_iterator_location (iterator_t*); 3585 3586 const char* 3587 tag_resource_iterator_name (iterator_t*); 3588 3589 int 3590 tag_resource_iterator_readable (iterator_t*); 3591 3592 int 3593 init_tag_name_iterator (iterator_t*, const get_data_t*); 3594 3595 const char* 3596 tag_name_iterator_name (iterator_t*); 3597 3598 int 3599 init_resource_tag_iterator (iterator_t*, const char*, resource_t, int, 3600 const char*, int); 3601 3602 const char* 3603 resource_tag_iterator_uuid (iterator_t*); 3604 3605 const char* 3606 resource_tag_iterator_name (iterator_t*); 3607 3608 const char* 3609 resource_tag_iterator_value (iterator_t*); 3610 3611 const char* 3612 resource_tag_iterator_comment (iterator_t*); 3613 3614 int 3615 resource_tag_exists (const char*, resource_t, int); 3616 3617 int 3618 resource_tag_count (const char*, resource_t, int); 3619 3620 int 3621 tag_in_use (tag_t); 3622 3623 int 3624 trash_tag_in_use (tag_t); 3625 3626 int 3627 tag_writable (tag_t); 3628 3629 int 3630 trash_tag_writable (tag_t); 3631 3632 3633 /* Resource aggregates */ 3634 3635 /** 3636 * @brief Sort data for aggregates commands. 3637 */ 3638 typedef struct { 3639 gchar *field; ///< The field to sort by. 3640 gchar *stat; ///< The statistic to sort by. 3641 int order; ///< The sort order. 3642 } sort_data_t; 3643 3644 void 3645 sort_data_free (sort_data_t*); 3646 3647 int 3648 init_aggregate_iterator (iterator_t*, const char *, const get_data_t *, int, 3649 GArray *, const char *, const char*, GArray*, GArray*, 3650 int, int, const char *, const char *); 3651 3652 int 3653 aggregate_iterator_count (iterator_t*); 3654 3655 double 3656 aggregate_iterator_min (iterator_t*, int); 3657 3658 double 3659 aggregate_iterator_max (iterator_t*, int); 3660 3661 double 3662 aggregate_iterator_mean (iterator_t*, int); 3663 3664 double 3665 aggregate_iterator_sum (iterator_t*, int); 3666 3667 const char* 3668 aggregate_iterator_text (iterator_t*, int, int); 3669 3670 const char* 3671 aggregate_iterator_value (iterator_t*); 3672 3673 const char* 3674 aggregate_iterator_subgroup_value (iterator_t*); 3675 3676 3677 /* Feeds. */ 3678 3679 #define NVT_FEED 1 3680 #define SCAP_FEED 2 3681 #define CERT_FEED 3 3682 #define GVMD_DATA_FEED 4 3683 3684 gboolean 3685 manage_gvmd_data_feed_dir_exists (const char *); 3686 3687 gboolean 3688 manage_gvmd_data_feed_dirs_exist (); 3689 3690 const gchar * 3691 get_feed_lock_path (); 3692 3693 void 3694 set_feed_lock_path (const char *); 3695 3696 int 3697 get_feed_lock_timeout (); 3698 3699 void 3700 set_feed_lock_timeout (int); 3701 3702 void 3703 write_sync_start (int); 3704 3705 int 3706 feed_lockfile_lock (lockfile_t *); 3707 3708 int 3709 feed_lockfile_lock_timeout (lockfile_t*); 3710 3711 int 3712 feed_lockfile_unlock (lockfile_t *); 3713 3714 int 3715 gvm_migrate_secinfo (int); 3716 3717 gboolean 3718 gvm_sync_script_perform_selftest (const gchar *, gchar **); 3719 3720 gboolean 3721 gvm_get_sync_script_identification (const gchar *, gchar **, int); 3722 3723 gboolean 3724 gvm_get_sync_script_description (const gchar *, gchar **); 3725 3726 gboolean 3727 gvm_get_sync_script_feed_version (const gchar *, gchar **); 3728 3729 int 3730 manage_update_nvts_osp (const gchar *); 3731 3732 int 3733 manage_rebuild (GSList *, const db_conn_info_t *); 3734 3735 int 3736 manage_dump_vt_verification (GSList *, const db_conn_info_t *); 3737 3738 3739 /* Wizards. */ 3740 3741 int 3742 manage_run_wizard (const gchar *, int (*) (void*, gchar*, gchar**), 3743 void *, array_t *, int, const char*, 3744 gchar **, gchar **, gchar **); 3745 3746 3747 /* Helpers. */ 3748 3749 gchar * 3750 xml_escape_text_truncated (const char *, size_t, const char *); 3751 3752 int 3753 column_is_timestamp (const char*); 3754 3755 char* 3756 type_columns (const char *); 3757 3758 char* 3759 type_trash_columns (const char *); 3760 3761 gboolean 3762 manage_migrate_needs_timezone (GSList *, const db_conn_info_t *); 3763 3764 3765 /* Optimize. */ 3766 3767 int 3768 manage_optimize (GSList *, const db_conn_info_t *, const gchar *); 3769 3770 3771 /* Signal management */ 3772 3773 int 3774 sql_cancel (); 3775 3776 3777 /* General settings */ 3778 const char * 3779 get_vt_verification_collation (); 3780 3781 void 3782 set_vt_verification_collation (const char *); 3783 3784 #endif /* not _GVMD_MANAGE_H */ 3785