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

Reply via email to