@@ -807,6 +807,27 @@ scanner_type_supports_unix_sockets (scanner_type_t scanner_type)
807807 return 0 ;
808808}
809809
810+ /**
811+ * @brief Gets the type of a scanner given its uuid.
812+ *
813+ * @param[in] scanner_id UUID of the scanner
814+ *
815+ * @return The scanner type or SCANNER_TYPE_NONE if scanner could not be found.
816+ */
817+ scanner_type_t
818+ get_scanner_type_by_uuid (const char * scanner_id )
819+ {
820+ scanner_t scanner ;
821+ if (scanner_id == NULL )
822+ return SCANNER_TYPE_NONE ;
823+ if (find_resource_no_acl ("scanner" , scanner_id , & scanner ))
824+ {
825+ g_warning ("%s: Error finding scanner %s" , __func__ , scanner_id );
826+ return SCANNER_TYPE_NONE ;
827+ }
828+ return get_scanner_type (scanner );
829+ }
830+
810831
811832/* Severity related functions. */
812833
@@ -6172,7 +6193,6 @@ gvm_get_sync_script_feed_version (const gchar * sync_script,
61726193 return TRUE;
61736194}
61746195
6175- #if OPENVASD == 0
61766196/**
61776197 * @brief Get VTs feed information from a scanner.
61786198 *
@@ -6227,7 +6247,6 @@ nvts_feed_info_internal (const gchar *update_socket,
62276247
62286248 return 0 ;
62296249}
6230- #endif
62316250
62326251/**
62336252 * @brief Get VTs feed information from the scanner using VT update socket.
@@ -6244,20 +6263,32 @@ int
62446263nvts_feed_info (gchar * * vts_version , gchar * * feed_name , gchar * * feed_vendor ,
62456264 gchar * * feed_home )
62466265{
6266+ scanner_type_t sc_type = get_scanner_type_by_uuid (SCANNER_UUID_DEFAULT );
6267+ switch (sc_type )
6268+ {
6269+ case SCANNER_TYPE_OPENVAS :
6270+ return nvts_feed_info_internal (get_osp_vt_update_socket (),
6271+ vts_version ,
6272+ feed_name ,
6273+ feed_vendor ,
6274+ feed_home );
6275+ case SCANNER_TYPE_OPENVASD :
62476276#if OPENVASD == 1
6248- return nvts_feed_info_internal_from_openvasd (SCANNER_UUID_OPENVASD_DEFAULT ,
6249- vts_version );
6277+ return nvts_feed_info_internal_from_openvasd (SCANNER_UUID_DEFAULT ,
6278+ vts_version );
62506279#else
6251- return nvts_feed_info_internal (get_osp_vt_update_socket (),
6252- vts_version ,
6253- feed_name ,
6254- feed_vendor ,
6255- feed_home );
6256-
6280+ g_critical ("%s: Default scanner is an openvasd one,"
6281+ " but gvmd is not built to support this." ,
6282+ __func__ );
6283+ return -1 ;
62576284#endif
6285+ default :
6286+ g_critical ("%s: scanner type %d is not supported as default" ,
6287+ __func__ , sc_type );
6288+ return -1 ;
6289+ }
62586290}
62596291
6260- #if OPENVASD == 0
62616292/**
62626293 * @brief Check the VTs feed sync for information using a OSP socket.
62636294 *
@@ -6300,7 +6331,6 @@ nvts_check_feed_internal (const char *update_socket,
63006331
63016332 return 0 ;
63026333}
6303- #endif
63046334
63056335/**
63066336 * @brief Check the VTs feed sync for information using the default OSP socket.
@@ -6316,30 +6346,45 @@ nvts_check_feed (int *lockfile_in_use,
63166346 int * self_test_exit_error ,
63176347 char * * self_test_error_msg )
63186348{
6349+ scanner_type_t sc_type = get_scanner_type_by_uuid (SCANNER_UUID_DEFAULT );
6350+ switch (sc_type )
6351+ {
6352+ case SCANNER_TYPE_OPENVAS :
6353+ return nvts_check_feed_internal (get_osp_vt_update_socket (),
6354+ lockfile_in_use ,
6355+ self_test_exit_error ,
6356+ self_test_error_msg );
6357+ case SCANNER_TYPE_OPENVASD :
63196358#if OPENVASD == 1
6320- int ret = 0 ;
6321- char * vts_version = NULL ;
6322-
6323- ret = nvts_feed_info_internal_from_openvasd (SCANNER_UUID_OPENVASD_DEFAULT ,
6324- & vts_version );
6325- self_test_exit_error = 0 ;
6326- * self_test_error_msg = NULL ;
6327- if (ret == 0 && vts_version )
6328- lockfile_in_use = 0 ;
6329- else if (ret == 2 )
6330- {
6331- ret = 0 ;
6332- * lockfile_in_use = 1 ;
6333- }
6334-
6335- return ret ;
6359+ {
6360+ int ret = 0 ;
6361+ char * vts_version = NULL ;
6362+
6363+ ret = nvts_feed_info_internal_from_openvasd (SCANNER_UUID_DEFAULT ,
6364+ & vts_version );
6365+ self_test_exit_error = 0 ;
6366+ * self_test_error_msg = NULL ;
6367+ if (ret == 0 && vts_version )
6368+ lockfile_in_use = 0 ;
6369+ else if (ret == 2 )
6370+ {
6371+ ret = 0 ;
6372+ * lockfile_in_use = 1 ;
6373+ }
63366374
6375+ return ret ;
6376+ }
63376377#else
6338- return nvts_check_feed_internal ( get_osp_vt_update_socket (),
6339- lockfile_in_use ,
6340- self_test_exit_error ,
6341- self_test_error_msg ) ;
6378+ g_critical ( "%s: Default scanner is an openvasd one,"
6379+ " but gvmd is not built to support this." ,
6380+ __func__ );
6381+ return -1 ;
63426382#endif
6383+ default :
6384+ g_critical ("%s: scanner type %d is not supported as default" ,
6385+ __func__ , sc_type );
6386+ return -1 ;
6387+ }
63436388}
63446389
63456390/**
0 commit comments