diff --git a/0003-Solving-the-query-problem-of-leaving-the-page-polling-interface.patch b/0003-Solving-the-query-problem-of-leaving-the-page-polling-interface.patch new file mode 100644 index 0000000..5b5c41a --- /dev/null +++ b/0003-Solving-the-query-problem-of-leaving-the-page-polling-interface.patch @@ -0,0 +1,155 @@ +From c8f6d03755791bea887cc915099344df1c16d19b Mon Sep 17 00:00:00 2001 +From: wkl505997900 <2313665567@qq.com> +Date: Thu, 21 Sep 2023 14:33:45 +0800 +Subject: [PATCH] fix an polling issue + +--- + src/views/leaks/HostLeakDetail.vue | 7 +++++++ + src/views/leaks/LeakTaskDetail.vue | 21 +++++++++++++-------- + src/views/leaks/LeakTaskList.vue | 7 +++++++ + src/views/leaks/components/CvesTable.vue | 6 ------ + src/views/leaks/components/HostTable.vue | 5 ++--- + 5 files changed, 29 insertions(+), 17 deletions(-) + +diff --git a/src/views/leaks/HostLeakDetail.vue b/src/views/leaks/HostLeakDetail.vue +index 477df57..3327f80 100644 +--- a/src/views/leaks/HostLeakDetail.vue ++++ b/src/views/leaks/HostLeakDetail.vue +@@ -257,6 +257,13 @@ export default { + mounted: function () { + this.getDetail(); + this.getScanStatue(); ++ }, ++ beforeDestroy() { ++ // 离开页面前,若当前存在轮询,清除轮询 ++ if (this.getScanStatusTimeout) { ++ clearInterval(this.getScanStatusTimeout); ++ this.getScanStatusTimeout = null; ++ } + } + }; + +diff --git a/src/views/leaks/LeakTaskDetail.vue b/src/views/leaks/LeakTaskDetail.vue +index 28b7272..f4c84c6 100644 +--- a/src/views/leaks/LeakTaskDetail.vue ++++ b/src/views/leaks/LeakTaskDetail.vue +@@ -285,6 +285,8 @@ export default { + expandedRowKeys: [], + rpmrecord: {}, + propType: '', ++ // 轮询计时器 ++ CveScanStatueTimeout: null, + progressUpdateCaller: null, + reportvisible: false, + runningCveIds: [], +@@ -544,6 +546,7 @@ export default { + updateProgress(taskList) { + const _this = this; + this.progressLoading = true; ++ clearTimeout(this.progressUpdateCaller); + getTaskProgress({taskList}) + .then(function (res) { + _this.detail.statuses = res.data.result && res.data.result[_this.taskId]; +@@ -628,6 +631,7 @@ export default { + updateCveProgress(taskId, cveList) { + const _this = this; + this.cveProgressIsLoading = true; ++ clearTimeout(this.CveScanStatueTimeout); + getCveProgressUnderCveTask({ + taskId, + cveList +@@ -637,7 +641,7 @@ export default { + _this.runningCveIds = _this.getRunningCve(res.data.result); + _this.reportvisible = _this.getReportVisible(res.data.result); + if (_this.runningCveIds.length > 0) { +- setTimeout(function () { ++ _this.CveScanStatueTimeout = setTimeout(function () { + _this.updateCveProgress(taskId, cveList); + }, configs.taskProgressUpdateInterval); + } else { +@@ -860,16 +864,17 @@ export default { + }); + } + }, +- beforeRouteLeave(to, from, next) { +- // 路由跳转前,清除轮询 +- if (this.progressUpdateCaller) { ++ mounted: function () { ++ this.getInitalData(); ++ }, ++ beforeDestroy() { ++ // 离开页面前,若当前存在轮询,清除轮询 ++ if (this.progressUpdateCaller || this.CveScanStatueTimeout) { + clearInterval(this.progressUpdateCaller); ++ clearInterval(this.CveScanStatueTimeout); + this.progressUpdateCaller = null; ++ this.CveScanStatueTimeout = null; + } +- next(); +- }, +- mounted: function () { +- this.getInitalData(); + } + }; + +diff --git a/src/views/leaks/LeakTaskList.vue b/src/views/leaks/LeakTaskList.vue +index 262fa42..df8869a 100644 +--- a/src/views/leaks/LeakTaskList.vue ++++ b/src/views/leaks/LeakTaskList.vue +@@ -419,6 +419,13 @@ export default { + }, + mounted: function () { + this.getTaskList(); ++ }, ++ beforeDestroy() { ++ // 离开页面前,若当前存在轮询,清除轮询 ++ if (this.progressUpdateCaller) { ++ clearInterval(this.progressUpdateCaller); ++ this.progressUpdateCaller = null; ++ } + } + }; + +diff --git a/src/views/leaks/components/CvesTable.vue b/src/views/leaks/components/CvesTable.vue +index 47eed62..84e23fb 100644 +--- a/src/views/leaks/components/CvesTable.vue ++++ b/src/views/leaks/components/CvesTable.vue +@@ -146,7 +146,6 @@ + :row-key="innerrecord => fixed ? record.cve_id + innerrecord.installed_rpm : record.cve_id + innerrecord.available_rpm + innerrecord.installed_rpm" + :columns="fixed ? (standalone ? ainnerColumns : binnerColumns) : (standalone ? aloneinnerColumns : innerColumns)" + :data-source="record.rpms || []" +- :locale="tablenodata" + :rowSelection="innerRowSelection" + :pagination="false"> +
{{ getFixedWay(fixed_way, innerrecord) }}
+@@ -491,11 +490,6 @@ export default { + }, + data() { + return { +- tablenodata: {emptyText: () => ( +-
暂无可修复的rpm包, 可能原因为:
+-
1. 界面未刷新
+-
2. 冷补丁修复kernel后界面未重启
+- )}, + selectedRows: [], // 选中行的row + searchKey: '', + innerCveList: [], +diff --git a/src/views/leaks/components/HostTable.vue b/src/views/leaks/components/HostTable.vue +index 0302e0f..327a4a9 100644 +--- a/src/views/leaks/components/HostTable.vue ++++ b/src/views/leaks/components/HostTable.vue +@@ -974,9 +974,8 @@ export default { + this.getRepoList(); + } + }, +- beforeRouteLeave(to, from, next) { +- next(); +- // 路由跳转前,清除轮询 ++ beforeDestroy() { ++ // 离开页面前,若当前存在轮询,清除轮询 + if (this.scanStatueAllTimeout) { + clearInterval(this.scanStatueAllTimeout); + this.scanStatueAllTimeout = null; +-- +Gitee + diff --git a/0004-Solving-the-problem-of-cve-fix-params.patch b/0004-Solving-the-problem-of-cve-fix-params.patch new file mode 100644 index 0000000..6de47a9 --- /dev/null +++ b/0004-Solving-the-problem-of-cve-fix-params.patch @@ -0,0 +1,25 @@ +From e85c02c4300dcea0b0546c1a18b83a1c99f617d9 Mon Sep 17 00:00:00 2001 +From: wkl505997900 <2313665567@qq.com> +Date: Tue, 26 Sep 2023 10:27:14 +0800 +Subject: [PATCH] fix issue + +--- + src/views/leaks/components/CvesTable.vue | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/views/leaks/components/CvesTable.vue b/src/views/leaks/components/CvesTable.vue +index 84e23fb..24245d9 100644 +--- a/src/views/leaks/components/CvesTable.vue ++++ b/src/views/leaks/components/CvesTable.vue +@@ -864,7 +864,7 @@ export default { + } + this.selectedRowsAll = getSelectedRow(this.selectedRowKeys, this.selectedRowsAll, this.standalone ? this.tableData : this.propData, 'cve_id'); + } else { +- const index = target.rpms.findIndex(item => item.installed_rpm === record.installed_rpm) ++ const index = target.rpms.findIndex(item => item.installed_rpm === record.installed_rpm && item.available_rpm === record.available_rpm) + target.rpms.splice(index, 1) + if (target.rpms.length === 0) { + const dindex = this.innerCveList.findIndex(it => it.cve_id === record.cve_id) +-- +Gitee + diff --git a/0005-Add-login-key-to-asset-management-module.patch b/0005-Add-login-key-to-asset-management-module.patch new file mode 100644 index 0000000..f147fc7 --- /dev/null +++ b/0005-Add-login-key-to-asset-management-module.patch @@ -0,0 +1,427 @@ +From c5a59c0e103a711ce5377a24554ac7c79e2fae54 Mon Sep 17 00:00:00 2001 +From: wkl505997900 <2313665567@qq.com> +Date: Tue, 17 Oct 2023 16:59:32 +0800 +Subject: [PATCH] update code + +--- + src/api/assest.js | 3 +- + src/api/leaks.js | 1 - + src/views/assests/HostEdition.vue | 41 ++++++++++++++-- + src/views/assests/components/EditableCell.vue | 5 +- + src/views/assests/components/addMoreHost.vue | 25 ++++++++-- + .../components/CreateRepairTaskDrawer.vue | 3 -- + src/views/leaks/components/CvesTable.vue | 48 ++++--------------- + src/views/leaks/components/HostTable.vue | 5 +- + vue.config.js | 14 +++--- + 9 files changed, 81 insertions(+), 64 deletions(-) + +diff --git a/src/api/assest.js b/src/api/assest.js +index af1b125..69b12e2 100644 +--- a/src/api/assest.js ++++ b/src/api/assest.js +@@ -124,7 +124,8 @@ export function addHost(parameter) { + ssh_port: parameter.ssh_port, + management: parameter.management, + ssh_user: parameter.ssh_user, +- password: parameter.password ++ password: parameter.password === undefined ? '' : parameter.password, ++ ssh_pkey: parameter.ssh_pkey === undefined ? '' : parameter.ssh_pkey + } + }); + } +diff --git a/src/api/leaks.js b/src/api/leaks.js +index cd59dda..097d790 100644 +--- a/src/api/leaks.js ++++ b/src/api/leaks.js +@@ -4,7 +4,6 @@ + + import request from '@/vendor/ant-design-pro/utils/request'; + // import { getNotEmptyObjectOrNull } from '@/vendor/ant-design-pro/utils/util'; +- + const api = { + getCveOverview: '/vulnerability/cve/overview', + getCveList: '/vulnerability/cve/list/get', +diff --git a/src/views/assests/HostEdition.vue b/src/views/assests/HostEdition.vue +index db6a7ee..de6253e 100644 +--- a/src/views/assests/HostEdition.vue ++++ b/src/views/assests/HostEdition.vue +@@ -93,13 +93,39 @@ + + + +- +- ++ ++ ++ 主机登录密码 ++ ++ ++ 主机登录公钥 ++ ++ ++ ++ ++ ++ ++ + + + 取消 +@@ -133,10 +159,13 @@ import {PageHeaderWrapper} from '@ant-design-vue/pro-layout'; + import AddHostGroupModal from './components/AddHostGroupModal'; + + import {hostGroupList, addHost, getHostDetail, editHost} from '@/api/assest'; ++import DescriptionTips from '@/components/DescriptionTips'; ++ + export default { + components: { + PageHeaderWrapper, +- AddHostGroupModal ++ AddHostGroupModal, ++ DescriptionTips + }, + data() { + return { +@@ -148,7 +177,8 @@ export default { + form: this.$form.createForm(this), + submitLoading: false, + PortRequired: false, +- UserRequired: false ++ UserRequired: false, ++ identificaWay: 1 // 认证方式, + }; + }, + computed: { +@@ -194,6 +224,9 @@ export default { + } + }, + methods: { ++ onChange(e) { ++ this.identificaWay = e.target.value; ++ }, + handleUserChange(value) { + if (this.pageType === 'edit') { + value.target.value === this.basicHostInfo.ssh_user ? this.UserRequired = false : this.UserRequired = true +diff --git a/src/views/assests/components/EditableCell.vue b/src/views/assests/components/EditableCell.vue +index 282ba8c..28f0f62 100644 +--- a/src/views/assests/components/EditableCell.vue ++++ b/src/views/assests/components/EditableCell.vue +@@ -8,7 +8,7 @@ +
+ + +- ++ + + +
+ +- {{ countStar(form[formkey]) }} ++ {{ countStar(form[formkey]) }} + {{ value || ' ' }} +
+ +@@ -97,6 +97,7 @@ export default { + ssh_port: [{required: true, message: '请输入端口'}, {validator: checkSSHPort}], + ssh_user: [{ validator: validateUser, trigger: 'change' }], + password: [{ required: true, message: 'password不能为空', trigger: 'change' }], ++ ssh_pkey: [{ required: true, message: 'ssh_pkey不能为空', trigger: 'change' }], + host_name: [{ validator: checkNameInput, trigger: 'change' }], + host_group_name: [{ required: true, message: 'host_group_name不能为空', trigger: 'change' }], + management: [{ validator: checkmanagement, trigger: 'change' }] +diff --git a/src/views/assests/components/addMoreHost.vue b/src/views/assests/components/addMoreHost.vue +index 055f1b9..818ffa6 100644 +--- a/src/views/assests/components/addMoreHost.vue ++++ b/src/views/assests/components/addMoreHost.vue +@@ -1,7 +1,7 @@ + ++ +