From 2ccba1565c7d2ad5e4bb821f05f09a3b63edbd8b Mon Sep 17 00:00:00 2001
From: rabbitali <wenxin32@foxmail.com>
Date: Tue, 31 Oct 2023 18:03:40 +0800
Subject: [PATCH] bugfix: email config does not take effect

---
 zeus/vulnerability_manage/view.py | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

diff --git a/zeus/vulnerability_manage/view.py b/zeus/vulnerability_manage/view.py
index c56f672..34a33c9 100644
--- a/zeus/vulnerability_manage/view.py
+++ b/zeus/vulnerability_manage/view.py
@@ -15,7 +15,7 @@ import time
 import threading
 from typing import Dict, Tuple
 
-from flask import Response
+from flask import Response, request
 import sqlalchemy
 import gevent
 
@@ -301,14 +301,13 @@ class ExecuteCveScanTask(BaseResponse, BaseExcuteTask):
         you can turn it off by modifying email config configuration in aops-private-config.ini, but it will still be
         triggered during scheduled cve scan.
         """
-        if configuration.email.get("ENABLED") or self._header.get("exempt_authentication"):
-            self.get_response(
-                "post",
-                f'http://{configuration.apollo.get("IP")}:{ configuration.apollo.get("PORT")}{VUL_TASK_CVE_SCAN_NOTICE}',
-                {},
-                self._header,
-                timeout=10,
-            )
+        self.get_response(
+            "post",
+            f'http://{configuration.apollo.get("IP")}:{ configuration.apollo.get("PORT")}{VUL_TASK_CVE_SCAN_NOTICE}',
+            {},
+            self._header,
+            timeout=10,
+        )
 
     @BaseResponse.handle(schema=CveScanSchema)
     def post(self, **params) -> Response:
@@ -330,6 +329,13 @@ class ExecuteCveScanTask(BaseResponse, BaseExcuteTask):
         Returns:
             response body
         """
+
+        def execute_task(host_infos, need_to_send_email):
+            gevent.joinall([gevent.spawn(self._execute_task, host) for host in host_infos])
+            if need_to_send_email:
+                LOGGER.info("Plan to request the interface for sending emails")
+                self._execute_send_email()
+
         # Query host basic info from database
         status_code, host_infos = query_host_basic_info(params.get('total_hosts'), params.get('username'))
         if status_code != state.SUCCEED:
@@ -340,10 +346,9 @@ class ExecuteCveScanTask(BaseResponse, BaseExcuteTask):
         self._task_id = params.get("task_id")
         self._check_items = params.get('check_items')
         # Execute task
-        threading.Thread(
-            target=lambda: gevent.joinall([gevent.spawn(self._execute_task, host) for host in host_infos.values()])
-        ).start()
-        threading.Thread(target=self._execute_send_email).start()
+        need_to_send_email = request.headers.get("exempt_authentication") or configuration.email.get("ENABLED")
+        threading.Thread(target=execute_task, args=(host_infos.values(), need_to_send_email)).start()
+
         return self.response(code=state.SUCCEED)
 
 
-- 
Gitee

