From c6e8d563a1d0c43ae59926b9bf8925b27c2dfae6 Mon Sep 17 00:00:00 2001 From: rabbitali Date: Fri, 3 Nov 2023 23:27:25 +0800 Subject: [PATCH] fix email config invlid error and add api for querying file list --- ...n-prometheus-api-client-import-error.patch | 33 +- 0006-optimize-import.patch | 139 +++++++ 0007-add-an-api-for-querying-file-list.patch | 392 ++++++++++++++++++ ...ix-email-config-does-not-take-effect.patch | 75 ++++ 0009-fix-import-error.patch | 25 ++ aops-zeus.spec | 10 +- 6 files changed, 649 insertions(+), 25 deletions(-) create mode 100644 0006-optimize-import.patch create mode 100644 0007-add-an-api-for-querying-file-list.patch create mode 100644 0008-bugfix-email-config-does-not-take-effect.patch create mode 100644 0009-fix-import-error.patch diff --git a/0003-fix-python-prometheus-api-client-import-error.patch b/0003-fix-python-prometheus-api-client-import-error.patch index 63cc76e..c447ca4 100644 --- a/0003-fix-python-prometheus-api-client-import-error.patch +++ b/0003-fix-python-prometheus-api-client-import-error.patch @@ -1,10 +1,7 @@ -From 3ea95e9dcb73b0add7c7913dd64e67131ea5d9b0 Mon Sep 17 00:00:00 2001 -From: gongzt -Date: Wed, 18 Oct 2023 17:19:11 +0800 -Subject: fix python-prometheus-api-client import error -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +From cca4f59f2c68b20804fae06692179b8d3e181327 Mon Sep 17 00:00:00 2001 +From: rabbitali +Date: Mon, 6 Nov 2023 09:36:24 +0800 +Subject: [PATCH] fix python-prometheus-api-client import error --- zeus/conf/constant.py | 4 - @@ -12,8 +9,8 @@ Content-Transfer-Encoding: 8bit zeus/function/verify/metric.py | 28 -- zeus/metric_manager/__init__.py | 12 - zeus/metric_manager/view.py | 51 ---- - zeus/url.py | 14 +- - 6 files changed, 1 insertion(+), 566 deletions(-) + zeus/url.py | 9 - + 6 files changed, 562 deletions(-) delete mode 100644 zeus/database/proxy/metric.py delete mode 100644 zeus/function/verify/metric.py delete mode 100644 zeus/metric_manager/__init__.py @@ -608,7 +605,7 @@ index 4d98cf2..0000000 - status_code, result = callback.query_metric_list(params) - return self.response(code=status_code, data=result) diff --git a/zeus/url.py b/zeus/url.py -index 597dcc7..285e942 100644 +index 597dcc7..3ec8d21 100644 --- a/zeus/url.py +++ b/zeus/url.py @@ -43,9 +43,6 @@ from zeus.conf.constant import ( @@ -629,19 +626,7 @@ index 597dcc7..285e942 100644 from zeus.vulnerability_manage import view as vulnerability_view URLS = [] -@@ -84,10 +80,7 @@ SPECIFIC_URLS = { - (host_view.DeleteHostGroup, DELETE_GROUP), - (host_view.GetHostGroup, GET_GROUP), - ], -- "CONFIG_URLS": [ -- (config_view.CollectConfig, COLLECT_CONFIG), -- (config_view.SyncConfig, SYNC_CONFIG) -- ], -+ "CONFIG_URLS": [(config_view.CollectConfig, COLLECT_CONFIG), (config_view.SyncConfig, SYNC_CONFIG)], - 'AGENT_URLS': [ - (agent_view.AgentPluginInfo, AGENT_PLUGIN_INFO), - (agent_view.SetAgentPluginStatus, AGENT_PLUGIN_SET), -@@ -100,11 +93,6 @@ SPECIFIC_URLS = { +@@ -100,11 +96,6 @@ SPECIFIC_URLS = { (vulnerability_view.ExecuteCveFixTask, EXECUTE_CVE_FIX), (vulnerability_view.ExecuteCveRollbackTask, EXECUTE_CVE_ROLLBACK), ], @@ -654,5 +639,5 @@ index 597dcc7..285e942 100644 for _, value in SPECIFIC_URLS.items(): -- -2.27.0 +2.33.0 diff --git a/0006-optimize-import.patch b/0006-optimize-import.patch new file mode 100644 index 0000000..25676a3 --- /dev/null +++ b/0006-optimize-import.patch @@ -0,0 +1,139 @@ +From 6ba93db6c012b7547e80fc71e7dc3dd96d6f0aa4 Mon Sep 17 00:00:00 2001 +From: xuyongliang_01 +Date: Wed, 18 Oct 2023 02:49:04 +0000 +Subject: [PATCH 1/5] optimize Import +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: xuyongliang_01 +--- + zeus/config_manager/view.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/zeus/config_manager/view.py b/zeus/config_manager/view.py +index 6779153..0aa9682 100644 +--- a/zeus/config_manager/view.py ++++ b/zeus/config_manager/view.py +@@ -22,7 +22,6 @@ from typing import List, Dict + from vulcanus.multi_thread_handler import MultiThreadHandler + from vulcanus.restful.resp import state + from vulcanus.restful.response import BaseResponse +-from zeus.conf import configuration + from zeus.conf.constant import CERES_COLLECT_FILE, CERES_SYNC_CONF + from zeus.database.proxy.host import HostProxy + from zeus.function.model import ClientConnectArgs +-- +Gitee + + +From a43c526f7e8dcda9fe9b46ff6e1f80f370954259 Mon Sep 17 00:00:00 2001 +From: xuyongliang_01 +Date: Wed, 18 Oct 2023 02:56:33 +0000 +Subject: [PATCH 2/5] update zeus/tests/host_manager/test_add_host.py. + +Signed-off-by: xuyongliang_01 +--- + zeus/tests/host_manager/test_add_host.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/zeus/tests/host_manager/test_add_host.py b/zeus/tests/host_manager/test_add_host.py +index c51be95..6b8b1b0 100644 +--- a/zeus/tests/host_manager/test_add_host.py ++++ b/zeus/tests/host_manager/test_add_host.py +@@ -17,7 +17,6 @@ from io import BytesIO + from unittest import mock + + import paramiko +-import sqlalchemy + from paramiko import AuthenticationException + from sqlalchemy.orm.collections import InstrumentedList + +-- +Gitee + + +From d03456b27fdc16c868c0b871b3f43786cc383146 Mon Sep 17 00:00:00 2001 +From: xuyongliang_01 +Date: Wed, 18 Oct 2023 02:58:24 +0000 +Subject: [PATCH 3/5] update zeus/host_manager/ssh.py. + +Signed-off-by: xuyongliang_01 +--- + zeus/host_manager/ssh.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/zeus/host_manager/ssh.py b/zeus/host_manager/ssh.py +index 11f6383..a4e7628 100644 +--- a/zeus/host_manager/ssh.py ++++ b/zeus/host_manager/ssh.py +@@ -15,7 +15,6 @@ from io import StringIO + from typing import Tuple + + import paramiko +-from paramiko import sftp + + from vulcanus.log.log import LOGGER + from vulcanus.restful.resp import state +-- +Gitee + + +From 887b9525192140c5142b62c14b91c1656b3a657a Mon Sep 17 00:00:00 2001 +From: xuyongliang_01 +Date: Wed, 18 Oct 2023 02:59:12 +0000 +Subject: [PATCH 4/5] update zeus/tests/host_manager/test_delete_host.py. + +Signed-off-by: xuyongliang_01 +--- + zeus/tests/host_manager/test_delete_host.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/zeus/tests/host_manager/test_delete_host.py b/zeus/tests/host_manager/test_delete_host.py +index 59a4098..5a0aea6 100644 +--- a/zeus/tests/host_manager/test_delete_host.py ++++ b/zeus/tests/host_manager/test_delete_host.py +@@ -12,8 +12,6 @@ + # ******************************************************************************/ + from unittest import mock + +-import sqlalchemy +- + from vulcanus.exceptions import DatabaseConnectionFailed + from vulcanus.restful.resp import state + from vulcanus.restful.response import BaseResponse +-- +Gitee + + +From 089c24550ae9f5720629376692344870316e97a6 Mon Sep 17 00:00:00 2001 +From: xuyongliang_01 +Date: Wed, 18 Oct 2023 03:00:38 +0000 +Subject: [PATCH 5/5] update zeus/vulnerability_manage/view.py. + +Signed-off-by: xuyongliang_01 +--- + zeus/vulnerability_manage/view.py | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/zeus/vulnerability_manage/view.py b/zeus/vulnerability_manage/view.py +index 345978f..c56f672 100644 +--- a/zeus/vulnerability_manage/view.py ++++ b/zeus/vulnerability_manage/view.py +@@ -15,12 +15,11 @@ import time + import threading + from typing import Dict, Tuple + +-from flask import Response, request ++from flask import Response + import sqlalchemy + import gevent + + from vulcanus.log.log import LOGGER +-from vulcanus.multi_thread_handler import MultiThreadHandler + from vulcanus.restful.resp import state + from vulcanus.restful.response import BaseResponse + from zeus.conf import configuration +-- +Gitee + diff --git a/0007-add-an-api-for-querying-file-list.patch b/0007-add-an-api-for-querying-file-list.patch new file mode 100644 index 0000000..def8749 --- /dev/null +++ b/0007-add-an-api-for-querying-file-list.patch @@ -0,0 +1,392 @@ +From 318ad494e275d0404b2f1af768506a25c27028e2 Mon Sep 17 00:00:00 2001 +From: liulei <450962@qq.com> +Date: Tue, 31 Oct 2023 10:17:37 +0800 +Subject: [PATCH 1/2] Add an interface for querying file list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + zeus/conf/constant.py | 2 + + zeus/config_manager/view.py | 42 +++++++++++- + zeus/function/verify/config.py | 8 +++ + zeus/vulnerability_manage/url.py | 113 +++++++++++++++++++++++++++++++ + 4 files changed, 163 insertions(+), 2 deletions(-) + create mode 100644 zeus/vulnerability_manage/url.py + +diff --git a/zeus/conf/constant.py b/zeus/conf/constant.py +index df2948d..44065be 100644 +--- a/zeus/conf/constant.py ++++ b/zeus/conf/constant.py +@@ -34,6 +34,7 @@ CERES_CVE_SCAN = "aops-ceres apollo --scan '%s'" + CERES_CVE_FIX = "aops-ceres apollo --fix '%s'" + CERES_CVE_ROLLBACK = "aops-ceres apollo --rollback '%s'" + CERES_SYNC_CONF = "aops-ceres sync --conf '%s'" ++CERES_OBJECT_FILE_CONF = "aops-ceres ragdoll --list '%s'" + + # zeus route + ADD_HOST = "/manage/host/add" +@@ -56,6 +57,7 @@ GET_GROUP = "/manage/host/group/get" + + COLLECT_CONFIG = '/manage/config/collect' + SYNC_CONFIG = '/manage/config/sync' ++OBJECT_FILE_CONFIG = '/manage/config/objectfile' + + USER_LOGIN = "/manage/account/login" + LOGOUT = "/manage/account/logout" +diff --git a/zeus/config_manager/view.py b/zeus/config_manager/view.py +index 0aa9682..bde6dbf 100644 +--- a/zeus/config_manager/view.py ++++ b/zeus/config_manager/view.py +@@ -22,10 +22,10 @@ from typing import List, Dict + from vulcanus.multi_thread_handler import MultiThreadHandler + from vulcanus.restful.resp import state + from vulcanus.restful.response import BaseResponse +-from zeus.conf.constant import CERES_COLLECT_FILE, CERES_SYNC_CONF ++from zeus.conf.constant import CERES_COLLECT_FILE, CERES_SYNC_CONF, OBJECT_FILE_CONF, CERES_OBJECT_FILE_CONF + from zeus.database.proxy.host import HostProxy + from zeus.function.model import ClientConnectArgs +-from zeus.function.verify.config import CollectConfigSchema, SyncConfigSchema ++from zeus.function.verify.config import CollectConfigSchema, SyncConfigSchema, ObjectFileConfigSchema + from zeus.host_manager.ssh import execute_command_and_parse_its_result, execute_command_sftp_result + + +@@ -290,3 +290,41 @@ class SyncConfig(BaseResponse): + sync_result['sync_result'] = True + return self.response(code=state.SUCCEED, data={"resp": sync_result}) + return self.response(code=state.UNKNOWN_ERROR, data={"resp": sync_result}) ++ ++ ++class ObjectFileConfig(BaseResponse): ++ ++ @staticmethod ++ def object_file_config_content(host_info: Dict, file_directory: str): ++ command = CERES_OBJECT_FILE_CONF % file_directory ++ status, content = execute_command_and_parse_its_result( ++ ClientConnectArgs(host_info.get("host_ip"), host_info.get("ssh_port"), ++ host_info.get("ssh_user"), host_info.get("pkey")), command) ++ return status, content ++ ++ @BaseResponse.handle(schema=ObjectFileConfigSchema, token=False) ++ def post(self, **params): ++ object_file_result = { ++ "object_file_paths": list(), ++ "object_file_result": False ++ } ++ # Query host address from database ++ proxy = HostProxy() ++ if not proxy.connect(): ++ return self.response(code=state.DATABASE_CONNECT_ERROR, data={"resp": object_file_result}) ++ ++ status, host_list = proxy.get_host_info( ++ {"username": "admin", "host_list": [params.get('host_id')]}, True) ++ if status != state.SUCCEED: ++ return self.response(code=status, data={"resp": object_file_result}) ++ ++ host_info = host_list[0] ++ status, content = self.object_file_config_content(host_info, params.get('file_directory')) ++ if status == state.SUCCEED: ++ object_file_result['object_file_result'] = True ++ content_res = json.loads(content) ++ if content_res.get("resp"): ++ resp = content_res.get("resp") ++ object_file_result['object_file_paths'] = resp ++ return self.response(code=state.SUCCEED, data={"resp": object_file_result}) ++ return self.response(code=state.UNKNOWN_ERROR, data={"resp": object_file_result}) +diff --git a/zeus/function/verify/config.py b/zeus/function/verify/config.py +index 6e5bf64..1ef7b97 100644 +--- a/zeus/function/verify/config.py ++++ b/zeus/function/verify/config.py +@@ -45,3 +45,11 @@ class SyncConfigSchema(Schema): + host_id = fields.Integer(required=True, validate=lambda s: s > 0) + file_path = fields.String(required=True, validate=lambda s: len(s) > 0) + content = fields.String(required=True, validate=lambda s: len(s) > 0) ++ ++ ++class ObjectFileConfigSchema(Schema): ++ """ ++ validators for ObjectFileConfigSchema ++ """ ++ host_id = fields.Integer(required=True, validate=lambda s: s > 0) ++ file_directory = fields.String(required=True, validate=lambda s: len(s) > 0) +diff --git a/zeus/vulnerability_manage/url.py b/zeus/vulnerability_manage/url.py +new file mode 100644 +index 0000000..fe464ac +--- /dev/null ++++ b/zeus/vulnerability_manage/url.py +@@ -0,0 +1,113 @@ ++#!/usr/bin/python3 ++# ****************************************************************************** ++# Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved. ++# licensed under the Mulan PSL v2. ++# You can use this software according to the terms and conditions of the Mulan PSL v2. ++# You may obtain a copy of Mulan PSL v2 at: ++# http://license.coscl.org.cn/MulanPSL2 ++# THIS SOFTWARE IS PROVIDED ON AN 'AS IS' BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR ++# PURPOSE. ++# See the Mulan PSL v2 for more details. ++# ******************************************************************************/ ++""" ++Time: ++Author: ++Description: url set ++""" ++from zeus.account_manager import view as account_view ++from zeus.agent_manager import view as agent_view ++from zeus.conf.constant import ( ++ ADD_GROUP, ++ ADD_HOST, ++ ADD_HOST_BATCH, ++ ADD_USER, ++ AGENT_METRIC_SET, ++ AGENT_PLUGIN_INFO, ++ AGENT_PLUGIN_SET, ++ AUTH_REDIRECT_URL, ++ BIND_AUTH_ACCOUNT, ++ CHANGE_PASSWORD, ++ COLLECT_CONFIG, ++ DELETE_GROUP, ++ DELETE_HOST, ++ EXECUTE_CVE_FIX, ++ EXECUTE_CVE_ROLLBACK, ++ EXECUTE_CVE_SCAN, ++ EXECUTE_REPO_SET, ++ GET_GROUP, ++ GET_HOST_COUNT, ++ GET_HOST_TEMPLATE_FILE, ++ GITEE_AUTH_LOGIN, ++ HOST_SCENE_GET, ++ LOGOUT, ++ QUERY_HOST, ++ QUERY_HOST_DETAIL, ++ QUERY_METRIC_DATA, ++ QUERY_METRIC_LIST, ++ QUERY_METRIC_NAMES, ++ REFRESH_TOKEN, ++ UPDATE_HOST, ++ USER_LOGIN, ++ SYNC_CONFIG, ++ OBJECT_FILE_CONFIG ++) ++from zeus.config_manager import view as config_view ++from zeus.host_manager import view as host_view ++from zeus.metric_manager import view as metric_view ++from zeus.vulnerability_manage import view as vulnerability_view ++ ++URLS = [] ++ ++SPECIFIC_URLS = { ++ "ACCOUNT_URLS": [ ++ (account_view.Login, USER_LOGIN), ++ (account_view.ChangePassword, CHANGE_PASSWORD), ++ (account_view.AddUser, ADD_USER), ++ (account_view.GiteeAuthLogin, GITEE_AUTH_LOGIN), ++ (account_view.AuthRedirectUrl, AUTH_REDIRECT_URL), ++ (account_view.BindAuthAccount, BIND_AUTH_ACCOUNT), ++ (account_view.RefreshToken, REFRESH_TOKEN), ++ (account_view.Logout, LOGOUT), ++ ], ++ "HOST_URLS": [ ++ (host_view.AddHost, ADD_HOST), ++ (host_view.AddHostBatch, ADD_HOST_BATCH), ++ (host_view.DeleteHost, DELETE_HOST), ++ (host_view.UpdateHost, UPDATE_HOST), ++ (host_view.GetHost, QUERY_HOST), ++ (host_view.GetHostInfo, QUERY_HOST_DETAIL), ++ (host_view.GetHostCount, GET_HOST_COUNT), ++ (host_view.GetHostTemplateFile, GET_HOST_TEMPLATE_FILE), ++ ], ++ "HOST_GROUP_URLS": [ ++ (host_view.AddHostGroup, ADD_GROUP), ++ (host_view.DeleteHostGroup, DELETE_GROUP), ++ (host_view.GetHostGroup, GET_GROUP), ++ ], ++ "CONFIG_URLS": [ ++ (config_view.CollectConfig, COLLECT_CONFIG), ++ (config_view.SyncConfig, SYNC_CONFIG), ++ (config_view.ObjectFileConfig, OBJECT_FILE_CONFIG) ++ ], ++ 'AGENT_URLS': [ ++ (agent_view.AgentPluginInfo, AGENT_PLUGIN_INFO), ++ (agent_view.SetAgentPluginStatus, AGENT_PLUGIN_SET), ++ (agent_view.SetAgentMetricStatus, AGENT_METRIC_SET), ++ (agent_view.GetHostScene, HOST_SCENE_GET), ++ ], ++ 'CVE_URLS': [ ++ (vulnerability_view.ExecuteRepoSetTask, EXECUTE_REPO_SET), ++ (vulnerability_view.ExecuteCveScanTask, EXECUTE_CVE_SCAN), ++ (vulnerability_view.ExecuteCveFixTask, EXECUTE_CVE_FIX), ++ (vulnerability_view.ExecuteCveRollbackTask, EXECUTE_CVE_ROLLBACK), ++ ], ++ 'METRIC': [ ++ (metric_view.QueryHostMetricNames, QUERY_METRIC_NAMES), ++ (metric_view.QueryHostMetricData, QUERY_METRIC_DATA), ++ (metric_view.QueryHostMetricList, QUERY_METRIC_LIST), ++ ], ++} ++ ++for _, value in SPECIFIC_URLS.items(): ++ URLS.extend(value) +-- +Gitee + + +From bf654cd0d5086b29ab3e5b27cdc42cc0f8cc24ed Mon Sep 17 00:00:00 2001 +From: liulei <450962@qq.com> +Date: Tue, 31 Oct 2023 10:29:27 +0800 +Subject: [PATCH 2/2] Add an interface for querying file list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + zeus/url.py | 4 +- + zeus/vulnerability_manage/url.py | 113 ------------------------------- + 2 files changed, 3 insertions(+), 114 deletions(-) + delete mode 100644 zeus/vulnerability_manage/url.py + +diff --git a/zeus/url.py b/zeus/url.py +index 597dcc7..fe464ac 100644 +--- a/zeus/url.py ++++ b/zeus/url.py +@@ -50,6 +50,7 @@ from zeus.conf.constant import ( + UPDATE_HOST, + USER_LOGIN, + SYNC_CONFIG, ++ OBJECT_FILE_CONFIG + ) + from zeus.config_manager import view as config_view + from zeus.host_manager import view as host_view +@@ -86,7 +87,8 @@ SPECIFIC_URLS = { + ], + "CONFIG_URLS": [ + (config_view.CollectConfig, COLLECT_CONFIG), +- (config_view.SyncConfig, SYNC_CONFIG) ++ (config_view.SyncConfig, SYNC_CONFIG), ++ (config_view.ObjectFileConfig, OBJECT_FILE_CONFIG) + ], + 'AGENT_URLS': [ + (agent_view.AgentPluginInfo, AGENT_PLUGIN_INFO), +diff --git a/zeus/vulnerability_manage/url.py b/zeus/vulnerability_manage/url.py +deleted file mode 100644 +index fe464ac..0000000 +--- a/zeus/vulnerability_manage/url.py ++++ /dev/null +@@ -1,113 +0,0 @@ +-#!/usr/bin/python3 +-# ****************************************************************************** +-# Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved. +-# licensed under the Mulan PSL v2. +-# You can use this software according to the terms and conditions of the Mulan PSL v2. +-# You may obtain a copy of Mulan PSL v2 at: +-# http://license.coscl.org.cn/MulanPSL2 +-# THIS SOFTWARE IS PROVIDED ON AN 'AS IS' BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +-# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +-# PURPOSE. +-# See the Mulan PSL v2 for more details. +-# ******************************************************************************/ +-""" +-Time: +-Author: +-Description: url set +-""" +-from zeus.account_manager import view as account_view +-from zeus.agent_manager import view as agent_view +-from zeus.conf.constant import ( +- ADD_GROUP, +- ADD_HOST, +- ADD_HOST_BATCH, +- ADD_USER, +- AGENT_METRIC_SET, +- AGENT_PLUGIN_INFO, +- AGENT_PLUGIN_SET, +- AUTH_REDIRECT_URL, +- BIND_AUTH_ACCOUNT, +- CHANGE_PASSWORD, +- COLLECT_CONFIG, +- DELETE_GROUP, +- DELETE_HOST, +- EXECUTE_CVE_FIX, +- EXECUTE_CVE_ROLLBACK, +- EXECUTE_CVE_SCAN, +- EXECUTE_REPO_SET, +- GET_GROUP, +- GET_HOST_COUNT, +- GET_HOST_TEMPLATE_FILE, +- GITEE_AUTH_LOGIN, +- HOST_SCENE_GET, +- LOGOUT, +- QUERY_HOST, +- QUERY_HOST_DETAIL, +- QUERY_METRIC_DATA, +- QUERY_METRIC_LIST, +- QUERY_METRIC_NAMES, +- REFRESH_TOKEN, +- UPDATE_HOST, +- USER_LOGIN, +- SYNC_CONFIG, +- OBJECT_FILE_CONFIG +-) +-from zeus.config_manager import view as config_view +-from zeus.host_manager import view as host_view +-from zeus.metric_manager import view as metric_view +-from zeus.vulnerability_manage import view as vulnerability_view +- +-URLS = [] +- +-SPECIFIC_URLS = { +- "ACCOUNT_URLS": [ +- (account_view.Login, USER_LOGIN), +- (account_view.ChangePassword, CHANGE_PASSWORD), +- (account_view.AddUser, ADD_USER), +- (account_view.GiteeAuthLogin, GITEE_AUTH_LOGIN), +- (account_view.AuthRedirectUrl, AUTH_REDIRECT_URL), +- (account_view.BindAuthAccount, BIND_AUTH_ACCOUNT), +- (account_view.RefreshToken, REFRESH_TOKEN), +- (account_view.Logout, LOGOUT), +- ], +- "HOST_URLS": [ +- (host_view.AddHost, ADD_HOST), +- (host_view.AddHostBatch, ADD_HOST_BATCH), +- (host_view.DeleteHost, DELETE_HOST), +- (host_view.UpdateHost, UPDATE_HOST), +- (host_view.GetHost, QUERY_HOST), +- (host_view.GetHostInfo, QUERY_HOST_DETAIL), +- (host_view.GetHostCount, GET_HOST_COUNT), +- (host_view.GetHostTemplateFile, GET_HOST_TEMPLATE_FILE), +- ], +- "HOST_GROUP_URLS": [ +- (host_view.AddHostGroup, ADD_GROUP), +- (host_view.DeleteHostGroup, DELETE_GROUP), +- (host_view.GetHostGroup, GET_GROUP), +- ], +- "CONFIG_URLS": [ +- (config_view.CollectConfig, COLLECT_CONFIG), +- (config_view.SyncConfig, SYNC_CONFIG), +- (config_view.ObjectFileConfig, OBJECT_FILE_CONFIG) +- ], +- 'AGENT_URLS': [ +- (agent_view.AgentPluginInfo, AGENT_PLUGIN_INFO), +- (agent_view.SetAgentPluginStatus, AGENT_PLUGIN_SET), +- (agent_view.SetAgentMetricStatus, AGENT_METRIC_SET), +- (agent_view.GetHostScene, HOST_SCENE_GET), +- ], +- 'CVE_URLS': [ +- (vulnerability_view.ExecuteRepoSetTask, EXECUTE_REPO_SET), +- (vulnerability_view.ExecuteCveScanTask, EXECUTE_CVE_SCAN), +- (vulnerability_view.ExecuteCveFixTask, EXECUTE_CVE_FIX), +- (vulnerability_view.ExecuteCveRollbackTask, EXECUTE_CVE_ROLLBACK), +- ], +- 'METRIC': [ +- (metric_view.QueryHostMetricNames, QUERY_METRIC_NAMES), +- (metric_view.QueryHostMetricData, QUERY_METRIC_DATA), +- (metric_view.QueryHostMetricList, QUERY_METRIC_LIST), +- ], +-} +- +-for _, value in SPECIFIC_URLS.items(): +- URLS.extend(value) +-- +Gitee + diff --git a/0008-bugfix-email-config-does-not-take-effect.patch b/0008-bugfix-email-config-does-not-take-effect.patch new file mode 100644 index 0000000..e11149d --- /dev/null +++ b/0008-bugfix-email-config-does-not-take-effect.patch @@ -0,0 +1,75 @@ +From 2ccba1565c7d2ad5e4bb821f05f09a3b63edbd8b Mon Sep 17 00:00:00 2001 +From: rabbitali +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 + diff --git a/0009-fix-import-error.patch b/0009-fix-import-error.patch new file mode 100644 index 0000000..389fcfb --- /dev/null +++ b/0009-fix-import-error.patch @@ -0,0 +1,25 @@ +From 1e49007ac150ef9d51f8e1feff106ebb22dd9e96 Mon Sep 17 00:00:00 2001 +From: rabbitali +Date: Sat, 4 Nov 2023 00:28:30 +0800 +Subject: [PATCH] fix import error + +--- + zeus/config_manager/view.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/zeus/config_manager/view.py b/zeus/config_manager/view.py +index bde6dbf..b012c62 100644 +--- a/zeus/config_manager/view.py ++++ b/zeus/config_manager/view.py +@@ -22,7 +22,7 @@ from typing import List, Dict + from vulcanus.multi_thread_handler import MultiThreadHandler + from vulcanus.restful.resp import state + from vulcanus.restful.response import BaseResponse +-from zeus.conf.constant import CERES_COLLECT_FILE, CERES_SYNC_CONF, OBJECT_FILE_CONF, CERES_OBJECT_FILE_CONF ++from zeus.conf.constant import CERES_COLLECT_FILE, CERES_SYNC_CONF, CERES_OBJECT_FILE_CONF + from zeus.database.proxy.host import HostProxy + from zeus.function.model import ClientConnectArgs + from zeus.function.verify.config import CollectConfigSchema, SyncConfigSchema, ObjectFileConfigSchema +-- +2.33.0 + diff --git a/aops-zeus.spec b/aops-zeus.spec index 8abbe6a..ddda898 100644 --- a/aops-zeus.spec +++ b/aops-zeus.spec @@ -1,6 +1,6 @@ Name: aops-zeus Version: v1.3.1 -Release: 4 +Release: 5 Summary: A host and user manager service which is the foundation of aops. License: MulanPSL2 URL: https://gitee.com/openeuler/%{name} @@ -10,6 +10,10 @@ Patch0002: 0002-add-key-authentication-for-add-host-api.patch Patch0003: 0003-fix-python-prometheus-api-client-import-error.patch Patch0004: 0004-update-the-template-file-contents-for-adding-hosts.patch Patch0005: 0005-bugfix-update-host-api-request-error.patch +Patch0006: 0006-optimize-import.patch +Patch0007: 0007-add-an-api-for-querying-file-list.patch +Patch0008: 0008-bugfix-email-config-does-not-take-effect.patch +Patch0009: 0009-fix-import-error.patch BuildRequires: python3-setuptools @@ -50,6 +54,10 @@ cp -r database %{buildroot}/opt/aops/ %changelog +* Mon Nov 06 2023 wenxin - v1.3.1-5 +- Bugfix: email config does not take effect +- Add an interface for querying file list + * Fri Oct 27 2023 liulei<450962@qq.com> - v1.3.1-4 - Bugfix: update host api request error when changing username -- Gitee