Author: mattm Date: 2017-08-10 11:12:48 +0200 (Thu, 10 Aug 2017) New Revision: 29333
Modified: trunk/gvm/ChangeLog trunk/gvm/src/gmpd.c trunk/gvm/src/manage.c trunk/gvm/src/manage.h trunk/gvm/src/manage_sql_nvts.c trunk/gvm/src/manage_sql_nvts.h trunk/gvm/src/otp.c Log: Automatically update the NVTs in the db when the feed on disk updates. * src/gmpd.c (serve_gmp): Handle process_otp_scanner_input return when NVTs are up to date already. * src/manage.c (manage_schedule): Add forker arg. Call NVT syncer. * src/manage.h: Update header accordingly. * src/manage_sql_nvts.c (manage_sync_nvts): New function. * src/manage_sql_nvts.h: Add header accordingly. * src/otp.c (process_otp_scanner_input): In SCANNER_NVT_INFO, if the feed is the same as the feed in the db, then exit, so that serve_gmp can skip the update. Modified: trunk/gvm/ChangeLog =================================================================== --- trunk/gvm/ChangeLog 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/ChangeLog 2017-08-10 09:12:48 UTC (rev 29333) @@ -1,3 +1,22 @@ +2017-08-10 Matthew Mundell <matthew.mund...@greenbone.net> + + Automatically update the NVTs in the db when the feed on disk updates. + + * src/gmpd.c (serve_gmp): Handle process_otp_scanner_input return when + NVTs are up to date already. + + * src/manage.c (manage_schedule): Add forker arg. Call NVT syncer. + + * src/manage.h: Update header accordingly. + + * src/manage_sql_nvts.c (manage_sync_nvts): New function. + + * src/manage_sql_nvts.h: Add header accordingly. + + * src/otp.c (process_otp_scanner_input): In SCANNER_NVT_INFO, if the feed + is the same as the feed in the db, then exit, so that serve_gmp can skip + the update. + 2017-08-09 Matthew Mundell <matthew.mund...@greenbone.net> * src/manage_sql_secinfo.c (manage_feed_timestamp): Remove debug log. Modified: trunk/gvm/src/gmpd.c =================================================================== --- trunk/gvm/src/gmpd.c 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/src/gmpd.c 2017-08-10 09:12:48 UTC (rev 29333) @@ -978,6 +978,12 @@ return 1; openvas_scanner_close (); } + else if (ret == 4) + { + /* NVT update requested and NVTS are already at that version. */ + assert (gmpd_nvt_cache_mode); + return 0; + } else if (ret == -1) { /* Error. */ Modified: trunk/gvm/src/manage.c =================================================================== --- trunk/gvm/src/manage.c 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/src/manage.c 2017-08-10 09:12:48 UTC (rev 29333) @@ -6697,7 +6697,8 @@ int manage_schedule (int (*fork_connection) (gvm_connection_t *, gchar *), gboolean run_tasks, - sigset_t *sigmask_current) + sigset_t *sigmask_current, + int (*fork_update_nvt_cache) ()) { iterator_t schedules; GSList *starts, *stops; @@ -6709,6 +6710,7 @@ previous_start_task = 0; previous_stop_task = 0; + manage_sync_nvts (fork_update_nvt_cache); manage_sync_scap (sigmask_current); manage_sync_cert (sigmask_current); Modified: trunk/gvm/src/manage.h =================================================================== --- trunk/gvm/src/manage.h 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/src/manage.h 2017-08-10 09:12:48 UTC (rev 29333) @@ -2831,7 +2831,8 @@ int manage_schedule (int (*) (gvm_connection_t *, gchar *), gboolean, - sigset_t *); + sigset_t *, + int (*) ()); char * schedule_uuid (schedule_t); Modified: trunk/gvm/src/manage_sql_nvts.c =================================================================== --- trunk/gvm/src/manage_sql_nvts.c 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/src/manage_sql_nvts.c 2017-08-10 09:12:48 UTC (rev 29333) @@ -1215,3 +1215,15 @@ if (progress) progress (); } + +/** + * @brief Sync NVTs if newer NVTs are available. + * + * @param[in] fork_update_nvt_cache Function to do the update. + */ +void +manage_sync_nvts (int (*fork_update_nvt_cache) ()) +{ + fork_update_nvt_cache (); + return; +} Modified: trunk/gvm/src/manage_sql_nvts.h =================================================================== --- trunk/gvm/src/manage_sql_nvts.h 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/src/manage_sql_nvts.h 2017-08-10 09:12:48 UTC (rev 29333) @@ -103,4 +103,7 @@ int check_config_families (); +void +manage_sync_nvts (int (*) ()); + #endif /* not _GVMD_MANAGE_SQL_NVTS_H */ Modified: trunk/gvm/src/otp.c =================================================================== --- trunk/gvm/src/otp.c 2017-08-09 20:32:41 UTC (rev 29332) +++ trunk/gvm/src/otp.c 2017-08-10 09:12:48 UTC (rev 29333) @@ -1255,11 +1255,19 @@ } case SCANNER_NVT_INFO: { - char* feed_version = g_strdup (field); + char *feed_version, *db_feed_version; + + feed_version = g_strdup (field); g_debug (" scanner got nvti_info: %s\n", feed_version); if (plugins_feed_version) g_free (plugins_feed_version); plugins_feed_version = feed_version; + db_feed_version = nvts_feed_version (); + if (db_feed_version + && (strcmp (plugins_feed_version, db_feed_version) == 0)) + /* NVTs are at this version already. */ + return 4; + g_info (" Updating NVT cache.\n"); set_scanner_state (SCANNER_DONE); switch (parse_scanner_done (&messages)) { _______________________________________________ Openvas-commits mailing list Openvas-commits@wald.intevation.org https://lists.wald.intevation.org/cgi-bin/mailman/listinfo/openvas-commits