From 9c84fef17409fc163416a98bc4b5d8d343f2034b Mon Sep 17 00:00:00 2001 From: 19834788996 Date: Fri, 22 Jul 2022 14:46:55 +0800 Subject: [PATCH] pr test --- cve-agency-manager/cve_tracking/.gitignore | 2 + cve-agency-manager/cve_tracking/README.md | 29 +- .../cve_tracking/cli/__init__.py | 4 +- .../cve_tracking/cli/comment.py | 5 +- .../cve_tracking/cli/findp_adaptive_patch.py | 106 ++++++++ cve-agency-manager/cve_tracking/cli/save.py | 15 +- cve-agency-manager/cve_tracking/cli/verify.py | 14 +- .../cve_tracking/conf/setting.py | 15 +- cve-agency-manager/cve_tracking/config.ini | 7 +- .../core/comment/issue_comment.py | 27 +- .../cve_tracking/core/crawler/patch.py | 122 ++++++--- .../cve_tracking/core/download/save.py | 41 ++- .../cve_tracking/core/feedback/issue_mode.py | 2 + .../core/platform/cve_platform.py | 38 +-- .../cve_tracking/core/verification/apply.py | 35 ++- .../cve_tracking/core/verification/common.sh | 0 .../cve_tracking/core/verification/packing.sh | 1 + .../cve_tracking/core/verification/run.sh | 249 +++++++++++++++--- .../cve_tracking/core/verification/trash.sh | 16 ++ .../cve_tracking/cve-tracking.yaml | 55 +++- ...0\345\217\221\350\247\206\345\233\276.png" | Bin 92664 -> 69749 bytes ...1\345\261\225\350\256\276\350\256\241.png" | Bin 33321 -> 43063 bytes cve-agency-manager/cve_tracking/main.py | 65 +++-- cve-agency-manager/cve_tracking/request.py | 46 +++- .../cve_tracking/util/__init__.py | 8 +- 25 files changed, 690 insertions(+), 212 deletions(-) create mode 100644 cve-agency-manager/cve_tracking/cli/findp_adaptive_patch.py mode change 100644 => 100755 cve-agency-manager/cve_tracking/core/verification/common.sh mode change 100644 => 100755 cve-agency-manager/cve_tracking/core/verification/packing.sh mode change 100644 => 100755 cve-agency-manager/cve_tracking/core/verification/run.sh create mode 100755 cve-agency-manager/cve_tracking/core/verification/trash.sh diff --git a/cve-agency-manager/cve_tracking/.gitignore b/cve-agency-manager/cve_tracking/.gitignore index 11614af..5f9908e 100644 --- a/cve-agency-manager/cve_tracking/.gitignore +++ b/cve-agency-manager/cve_tracking/.gitignore @@ -8,6 +8,7 @@ __pycache__/ # Distribution / packaging .Python +.xlsx build/ develop-eggs/ dist/ @@ -95,6 +96,7 @@ venv/ ENV/ env.bak/ venv.bak/ +.vscode/ # Spyder project settings .spyderproject diff --git a/cve-agency-manager/cve_tracking/README.md b/cve-agency-manager/cve_tracking/README.md index 45d962b..adeaaf3 100644 --- a/cve-agency-manager/cve_tracking/README.md +++ b/cve-agency-manager/cve_tracking/README.md @@ -48,7 +48,7 @@ python 可执行代码 > > -i 需要评论的 issue 编号 > - > 注意:默认仓库为 src-openeuler,如果要更改,请修改 main.py 同目录下 constant.py 中的 DEFAULT_OWNER 的值。 + > 注意:请修改 main.py 同目录下 cve-tracking.yaml 中的 # 访问api的私人令牌 token 的值与 config.ini 中的 DEFAULT_OWNER 的值 2. 补丁查找及下载(验证) @@ -88,7 +88,32 @@ python 可执行代码 > > -nd 是否需要下载源代码,默认为需要下载,若无需下载添加该参数 -4. 意见反馈 +4. 查找下载验证及评论 + + ```shell + python3 main.py findp_adaptive_patch -c cve_num -r rpm_name -f patch_save_path -s source_path -p -b branch [-nd] -i issue_num + ``` + + + > 参数说明: + > + > -c cve 的编号 + > + > -r rpm 包名称 + > + > -f 补丁文件的下载目录,不设置默认为/opt/cve_tracking/patches + > + > -s 源码包下载路径,不设置默认为/opt/cve_tracking/source_code + > + > -b 源码包所在的 gitee 的 src-openeuler 仓库的分支,默认为 master + > + > -p 是否进行补丁应用,默认为不应用,若需要应用,添加该参数。 + > + > -i 需要评论的 issue 编号 + > + > 注意:请修改 main.py 同目录下 cve-tracking.yaml 中的 # 访问api的私人令牌 token 的值与 config.ini 中的 DEFAULT_OWNER FEEDBACK_ISSUE_OWNER FEEDBACK_ISSUE_REPO 的值 + +5. 意见反馈 若工具没有查找到补丁且人工查找到补丁信息,可通过该功能进行反馈,将会在配置的平台中提交 issue。将发现新 patch 的平台信息上报至指定的仓库,便于 CVE 修复人员完善工具的查找。指定的仓库可以在 conf.ini 配置文件的【FEEDBACK】中进行配置 diff --git a/cve-agency-manager/cve_tracking/cli/__init__.py b/cve-agency-manager/cve_tracking/cli/__init__.py index 41ef326..9242bb9 100644 --- a/cve-agency-manager/cve_tracking/cli/__init__.py +++ b/cve-agency-manager/cve_tracking/cli/__init__.py @@ -15,9 +15,11 @@ from .comment import CommentCommand from .feedback import FeedbackCommand from .save import SaveCommand from .verify import VerifyCommand +from .findp_adaptive_patch import FindAdaptivePatch __all__ = ("CveTrackingCommand", "CommentCommand", "SaveCommand", "VerifyCommand", - "FeedbackCommand") + "FeedbackCommand", + "FindAdaptivePatch") diff --git a/cve-agency-manager/cve_tracking/cli/comment.py b/cve-agency-manager/cve_tracking/cli/comment.py index b451863..5f9e22b 100644 --- a/cve-agency-manager/cve_tracking/cli/comment.py +++ b/cve-agency-manager/cve_tracking/cli/comment.py @@ -50,7 +50,8 @@ class CommentCommand(CveTrackingCommand): """ logger.info("Start to perform search and comment functions") if not all([args.cve_num, args.rpm_name, args.issue]): - raise InputError(msg="Comment command parameters: cve_num/rpm_name/issue") + raise InputError( + msg="Comment command parameters: cve_num/rpm_name/issue") # find patch detail patch_obj = Patch(cve_num=args.cve_num, rpm_name=args.rpm_name) @@ -59,5 +60,5 @@ class CommentCommand(CveTrackingCommand): # comment cve issue gitee = Gitee() gitee.set_attr(owner=CONFIG.DEFAULT_OWNER, repo=args.rpm_name) - await issue_comment(patch_details=patch_details, number=args.issue, gitee=gitee) + await issue_comment(patch_details=patch_details, number=args.issue, gitee=gitee, packing=False) logger.info("End to perform search and comment functions") diff --git a/cve-agency-manager/cve_tracking/cli/findp_adaptive_patch.py b/cve-agency-manager/cve_tracking/cli/findp_adaptive_patch.py new file mode 100644 index 0000000..ccfa4df --- /dev/null +++ b/cve-agency-manager/cve_tracking/cli/findp_adaptive_patch.py @@ -0,0 +1,106 @@ +#!/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. +# ******************************************************************************/ +from cli.base import CveTrackingCommand +from conf import CONFIG +from core.crawler.patch import Patch +from core.download import save +from core.comment.issue_comment import issue_comment +from exception import InputError +from logger import logger +from util.gitee_api import Gitee + + +class FindAdaptivePatch(CveTrackingCommand): + """ + Execute the command line to find the patch and save the patch file + """ + + def __init__(self): + super(FindAdaptivePatch, self).__init__() + self.parser = CveTrackingCommand.sub_parse.add_parser('findp_adaptive_patch', + help="Search for patches, download patch files, verify and comment on patches") + self._add_common_param() + self._add_params() + + def _add_params(self): + """ + Add the unique parameters of the command + :return: None + """ + self.parser.add_argument('-f', '--patch_path', metavar='patch_patch', type=str, action='store', required=False, + default=CONFIG.PATCH_SAVE_PATH, + help='Path to save the patch file, the default is"/opt/cve_tracking/patches"') + self.parser.add_argument('-s', '--source_path', metavar='source_patch', type=str, action='store', + required=False, default=CONFIG.SOURCE_CODE_PATH, + help='Source download path, the default is: "/opt/cve_tracking/source_code"') + self.parser.add_argument('-p', '--packing', action='store_true', required=False, default=False, + help='Whether to package the verification patch') + self.parser.add_argument('-b', '--branch', metavar='branch', type=str, action='store', required=False, + default='master', help='Branch of rpm, default is "master"') + self.parser.add_argument( + "-i" + , + "--issue", + metavar="issue", + type=str, + required=True, + action="store", + default=None, + help="CVE related issue number", + ) + @staticmethod + async def run_command(args): + """ + Search patch, save file function execution entry + :param args: command line params + :return: None + """ + logger.info(f'Start to execute the download command, cve: {args.cve_num}, ' + f'rpm: {args.rpm_name}, patch save path: {args.patch_path}') + if not all([args.rpm_name, args.cve_num, args.patch_path]): + raise InputError('Download command parameter error, please confirm "rpm_name"/cve_num/patch_path"') + if args.packing and not all([args.source_path, args.branch]): + raise InputError('Download command parameter error, please confirm "source_path/branch"') + + # find patch info + patch = Patch(cve_num=args.cve_num, rpm_name=args.rpm_name) + patch_detail_info = await patch.find_patches_detail() + # download patch file + + #TODO 写函数优化 + patch_url_state = save.save_patch(patch_details=patch_detail_info, cve=args.cve_num, path=args.patch_path,args=args) + for patch in patch_detail_info: + for issue_info in patch.get("details", list()): + patch_url_state = _issue_info(issue_info,patch_url_state) + + + # comment cve issue + gitee = Gitee() + gitee.set_attr(owner=CONFIG.DEFAULT_OWNER, repo=args.rpm_name) + await issue_comment(patch_details=patch_detail_info, number=args.issue, gitee=gitee, packing=True) + logger.info("End to perform search and comment and download and packing functions") + +def _issue_info(issue_info,patch_url_state): + for prs in issue_info["issue"].get("prs", list()): + for url in prs.get("commits", []): + patch_url_state = _patch_url_state(prs,url,patch_url_state) + return patch_url_state + +def _patch_url_state(prs,url,patch_url_state): + for key, value in patch_url_state.items(): + if key == url: + if not prs.get("application"): + prs["application"] = patch_url_state[key] + else: + prs["application"] = prs["application"] + "
" + patch_url_state[key] + return patch_url_state diff --git a/cve-agency-manager/cve_tracking/cli/save.py b/cve-agency-manager/cve_tracking/cli/save.py index 2d9d5b8..d27ba3c 100644 --- a/cve-agency-manager/cve_tracking/cli/save.py +++ b/cve-agency-manager/cve_tracking/cli/save.py @@ -14,7 +14,6 @@ from cli.base import CveTrackingCommand from conf import CONFIG from core.crawler.patch import Patch from core.download import save -from core.verification.apply import PathApply from exception import InputError from logger import logger @@ -45,7 +44,7 @@ class SaveCommand(CveTrackingCommand): self.parser.add_argument('-p', '--packing', action='store_true', required=False, default=False, help='Whether to package the verification patch') self.parser.add_argument('-b', '--branch', metavar='branch', type=str, action='store', required=False, - default='master', help='Branch of rpm, default is "master"') + default='master', help='Branch of rpm, default is "master"') @staticmethod async def run_command(args): @@ -64,12 +63,8 @@ class SaveCommand(CveTrackingCommand): # find patch info patch = Patch(cve_num=args.cve_num, rpm_name=args.rpm_name) patch_detail_info = await patch.find_patches_detail() - # download patch file - save.save_patch(patch_details=patch_detail_info, cve=args.cve_num, path=args.patch_path) - logger.info(f'End to execute the save file, patch save path:{args.patch_path}') - # apply patch - if args.packing: - patch_apply = PathApply(rpm_name=args.rpm_name, patch_path=args.patch_path, - source_path=args.source_path, branch_rpm=args.branch) - patch_apply.packing_source() + # download patch file and apply patch + patch_url_state = save.save_patch(patch_details=patch_detail_info, cve=args.cve_num, path=args.patch_path,args=args) + logger.info(f'End to execute the save file, patch save path:{args.patch_path}') + logger.info(f'Result is {patch_url_state}') diff --git a/cve-agency-manager/cve_tracking/cli/verify.py b/cve-agency-manager/cve_tracking/cli/verify.py index ace288d..2bd20a8 100644 --- a/cve-agency-manager/cve_tracking/cli/verify.py +++ b/cve-agency-manager/cve_tracking/cli/verify.py @@ -13,7 +13,7 @@ from cli.base import CveTrackingCommand from conf import CONFIG from core.verification.apply import PathApply - +from logger import logger class VerifyCommand(CveTrackingCommand): """ @@ -24,17 +24,17 @@ class VerifyCommand(CveTrackingCommand): super(VerifyCommand, self).__init__() self.parser = CveTrackingCommand.sub_parse.add_parser('packing', help='Test patch file application results') self._add_params() + self._add_common_param() + def _add_params(self): """ Add the unique parameters of the command :return: None """ - self.parser.add_argument('-r', '--rpm_name', metavar='rpm_name', type=str, required=True, default=None, - help='Source rpm name') self.parser.add_argument('-f', '--patch_path', metavar='patch_path', type=str, action='store', required=True, default=None, help='Path of patch file') - self.parser.add_argument('-s', '--source_path', metavar='source_path', type=str, action='store', required=False, + self.parser.add_argument('-s', '--source_path', metavar='source_path', type=str, action='store',required=False, default=CONFIG.SOURCE_CODE_PATH, help='Source download path, the default is: "/opt/cve_tracking/source_code"') self.parser.add_argument('-b', '--branch', metavar='branch', type=str, action='store', required=False, @@ -52,5 +52,7 @@ class VerifyCommand(CveTrackingCommand): """ branch = "no" if args.no_download else args.branch patch_apply = PathApply(rpm_name=args.rpm_name, branch_rpm=branch, patch_path=args.patch_path, - source_path=args.source_path) - patch_apply.packing_source() + source_path=args.source_path,cve_num=args.cve_num) + status = patch_apply.packing_source() + patch_apply.clear_trash() + logger.info("End of adaptation Process,resule is %s"%status) \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/conf/setting.py b/cve-agency-manager/cve_tracking/conf/setting.py index d9a5152..9e3fd8e 100644 --- a/cve-agency-manager/cve_tracking/conf/setting.py +++ b/cve-agency-manager/cve_tracking/conf/setting.py @@ -25,7 +25,7 @@ class DefaultConfig: # Log related # ********** # level of LOG - LOGGER_LEVEL = "INFO" + LOGGER_LEVEL = "ERROR" # Log file path LOGGER_PATH = "/var/log/cve_tracking" # Log file name @@ -48,14 +48,14 @@ class DefaultConfig: # Feedback issue related configuration # ********** - FEEDBACK_PLATFORM = "github" + FEEDBACK_PLATFORM = "gitee" # Feedback to the owner of the issue - FEEDBACK_ISSUE_OWNER = "liheavy" + FEEDBACK_ISSUE_OWNER = "song-jintang" # Feedback to the repo of the issue - FEEDBACK_ISSUE_REPO = "cve_tracking" + FEEDBACK_ISSUE_REPO = "song-jintang" # The owner of the comment function submits the comment - DEFAULT_OWNER = "src-openeuler" + DEFAULT_OWNER = "song-jintang" class Config: @@ -163,8 +163,11 @@ class YamlConfiguration: else: regulars = filter(lambda x: x["label"] == label, self.regex) return [regx for reg in regulars for regx in reg["regular"]] - + def token(self, name): + """ + get and match gitee github gitlab token + """ token = filter(lambda x: x["name"] == name, self.authentication) if token: return list(token)[-1]["token"] diff --git a/cve-agency-manager/cve_tracking/config.ini b/cve-agency-manager/cve_tracking/config.ini index ccd7f58..e4638ea 100644 --- a/cve-agency-manager/cve_tracking/config.ini +++ b/cve-agency-manager/cve_tracking/config.ini @@ -13,6 +13,7 @@ ;Log related configuration [LOG] ;level of LOG +; LOGGER_LEVEL = CRITICAL LOGGER_LEVEL = INFO ; Log file path LOGGER_PATH = /var/log/cve_tracking @@ -33,7 +34,7 @@ SOURCE_CODE_PATH = /opt/cve_tracking/source_code ;Comment function related configuration [COMMENT] ;The owner of the comment function submits the comment -DEFAULT_OWNER = src-openeuler +DEFAULT_OWNER = song-jintang ;Feedback issue related configuration [FEEDBACK] @@ -41,6 +42,6 @@ DEFAULT_OWNER = src-openeuler ;Please configure the token of the corresponding platform synchronously in cve-tracking.yaml FEEDBACK_PLATFORM = gitee ;Feedback to the owner of the issue -FEEDBACK_ISSUE_OWNER = liheavy +FEEDBACK_ISSUE_OWNER = song-jintang ;Feedback to the repo of the issue -FEEDBACK_ISSUE_REPO = cve_tracking \ No newline at end of file +FEEDBACK_ISSUE_REPO = kernel \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/core/comment/issue_comment.py b/cve-agency-manager/cve_tracking/core/comment/issue_comment.py index f5fdfbc..1137aac 100644 --- a/cve-agency-manager/cve_tracking/core/comment/issue_comment.py +++ b/cve-agency-manager/cve_tracking/core/comment/issue_comment.py @@ -36,7 +36,7 @@ class Table: def _rowspan(num, platform): return """{}""".format(str(num), platform) - def span_content(self, pr_url, pr_status, commits): + def span_content(self, packing, pr_url, pr_status, commits, application): """ Splicing comment content :param pr_url: pull request url @@ -45,15 +45,21 @@ class Table: :return: content spliced """ hyperlink_commits = [f"{commit}" for commit in commits] - contents = self._td(pr_url) + self._td(pr_status) + self._td("
".join(hyperlink_commits)) + if packing: + contents = self._td(pr_url) + self._td(pr_status) + self._td("
".join(hyperlink_commits))+self._td(application) + else: + contents = self._td(pr_url) + self._td(pr_status) + self._td("
".join(hyperlink_commits)) return contents - def _table_name(self): + def _table_name(self,packing): """ Splicing header :return: header """ - table_names = ["参考网址", "关联pr", "状态", "补丁链接"] + if packing: + table_names = ["参考网址", "关联pr", "状态", "补丁链接","验证结果    "] + else: + table_names = ["参考网址", "关联pr", "状态", "补丁链接"] table_names = " ".join(map(self._th, table_names)) return self._tr(table_names) @@ -64,7 +70,8 @@ class Table: number += len(issues["issue"].get("prs", list())) return number - def table(self, lst): + def table(self, lst,packing): + """ Splicing table :param lst: cve info @@ -82,13 +89,14 @@ class Table: if not details: none_tr = self._tr(self._td(platform) + self._td("") * 3) contents += none_tr - for issue_info in details: for pr in issue_info["issue"].get("prs", list()): content = self.span_content( + packing, pr["url"], pr["status"], pr.get("commits", []), + pr.get("application") ) if platform_index == 0: rowspan_content = rowspan_content + content @@ -97,11 +105,10 @@ class Table: else: span_content = self._tr(content) contents += span_content - - return self._table(self._table_name() + contents) + return self._table(self._table_name(packing) + contents) -async def issue_comment(patch_details, number, gitee: Gitee): +async def issue_comment(patch_details, number, gitee: Gitee,packing): """ Call gitee's api to add issue comments :param patch_details: patch detail @@ -109,7 +116,7 @@ async def issue_comment(patch_details, number, gitee: Gitee): :param gitee: gitee instance :return: None """ - table = Table().table(patch_details) + table = Table().table(patch_details,packing) instruction = "\n" * 2 + "> 说明:抱歉,当前工具暂未找到推荐补丁,请人工查找或者之后评论'/find-patch'尝试再次查找。\n" \ "若人工查找到补丁,烦请在此issue下评论 '/report-patch 参考网址 补丁链接1,补丁链接2' 便于我们不断优化工具,不胜感激。\n" \ "如 /report-patch https://security-tracker.debian.org/tracker/CVE-2021-3997 https://github.com/systemd/systemd/commit/5b1cf7a9be37e20133c0208005274ce4a5b5c6a1" diff --git a/cve-agency-manager/cve_tracking/core/crawler/patch.py b/cve-agency-manager/cve_tracking/core/crawler/patch.py index 97c44ff..ef1c438 100644 --- a/cve-agency-manager/cve_tracking/core/crawler/patch.py +++ b/cve-agency-manager/cve_tracking/core/crawler/patch.py @@ -13,7 +13,6 @@ import re import asyncio from collections import namedtuple - from constant import Constant from core.platform import CvePlatform from logger import logger @@ -36,8 +35,12 @@ class Patch: self.pr_status_dict = dict() self.github_api = Github() self.gitlab_api = Gitlab() - self._SummaryInfo = namedtuple("SummaryInfo", ["pr_list", "issues_list"]) + self._SummaryInfo = namedtuple( + "SummaryInfo", ["pr_list", "issues_list"]) self._PatchDetail = namedtuple("PatchDetail", ["platform", "details"]) + self.zero_num = 0 + self.platform_num = 2 + self.platform_re_num = 2 @property def issue_relation_info(self): @@ -47,44 +50,75 @@ class Patch: def pr_relation_info(self): return {"url": None, "status": None, "commits": []} + def get_detail(self, detail, detail_num): + """ + String splicing + """ + if detail["details"] != [] and detail["details"][self.zero_num]["issue"]["prs"] != [] and detail["details"][self.zero_num]["issue"]["prs"][self.zero_num]["commits"] != []: + commit_num = 0 + for commit in detail["details"][self.zero_num]["issue"]["prs"][self.zero_num]["commits"]: + self.patch_detail_list[detail_num]["details"][self.zero_num]["issue"]["prs"][self.zero_num]["commits"][commit_num] = settings.get_platform()[ + self.platform_num]["redirect"][self.platform_re_num]["prefix"] + commit + commit_num += 1 + return detail, detail_num + async def find_patches_detail(self): """ Further analyze the obtained patch information to get the final patch link :return: self.patch_detail_list """ - await self._find_patches_info() - # commit,pr,issue summary structure,convenient for deduplication and concurrent search - summary_info = self._SummaryInfo(pr_list=list(), issues_list=list()) - for patch_info in self.patch_info_list: - summary_info.pr_list.extend(patch_info.get("pr", [])) - summary_info.issues_list.extend(patch_info.get("issue", [])) - - # Find issue linked pr and add it to the pr list obtained earlier - if summary_info.issues_list: - issue_task_list = await self._create_async_task( - self._get_issue_link_pr, summary_info.issues_list - ) - issue_done_task, _ = await asyncio.wait(issue_task_list) - for task in issue_done_task: - summary_info.pr_list.extend(task.result()) - - if summary_info.pr_list: - # Query pr status - pr_status_task_list = await self._create_async_task( - self._get_pr_status, summary_info.pr_list - ) - await asyncio.wait(pr_status_task_list) - # Find pr contain commits - pr_task_list = await self._create_async_task( - self._get_pr_contain_commits, summary_info.pr_list + specialrpms = settings.specialrpm + sp_name_list = [sp_detail.get("name") for sp_detail in specialrpms] + if self.rpm_name not in sp_name_list: + await self._find_patches_info() + # commit,pr,issue summary structure,convenient for deduplication and concurrent search + summary_info = self._SummaryInfo( + pr_list=list(), issues_list=list()) + for patch_info in self.patch_info_list: + summary_info.pr_list.extend(patch_info.get("pr", [])) + summary_info.issues_list.extend(patch_info.get("issue", [])) + + # Find issue linked pr and add it to the pr list obtained earlier + if summary_info.issues_list: + issue_task_list = await self._create_async_task( + self._get_issue_link_pr, summary_info.issues_list + ) + issue_done_task, _ = await asyncio.wait(issue_task_list) + for task in issue_done_task: + summary_info.pr_list.extend(task.result()) + + if summary_info.pr_list: + # Query pr status + pr_status_task_list = await self._create_async_task( + self._get_pr_status, summary_info.pr_list + ) + await asyncio.wait(pr_status_task_list) + # Find pr contain commits + pr_task_list = await self._create_async_task( + self._get_pr_contain_commits, summary_info.pr_list + ) + await asyncio.wait(pr_task_list) + # Generate the final information that needs to be output + self._convert_path_detail() + logger.info( + f'Find the patch information of cve "{self.cve_num}" as: \n{self.patch_detail_list}' ) - await asyncio.wait(pr_task_list) - - # Generate the final information that needs to be output - self._convert_path_detail() - logger.info( - f'Find the patch information of cve "{self.cve_num}" as: \n{self.patch_detail_list}' - ) + # Adding a Special Platform + else: + for sp_name in specialrpms: + if self.rpm_name == sp_name.get("name") and sp_name.get("request") is False: + # patch_detail_list.append() + sp_name["patch_url"] = sp_name.get( + "patch_url").format(self.cve_num) + self.patch_detail_list.append({'platform': '{}'.format(sp_name["url"]), 'details': [{'issue': { + 'url': None, 'prs': [{'url': None, 'status': None, 'commits': ['{}'.format(sp_name["patch_url"])]}]}}]}) + + detail_num = 0 + # 修改ghostscript,path链接 + if self.rpm_name == "ghostscript": + for detail in self.patch_detail_list: + detail, detail_num = self.get_detail(detail, detail_num) + detail_num += 1 return self.patch_detail_list async def _find_patches_info(self): @@ -136,19 +170,22 @@ class Patch: elif Constant.GITLAB in issue: try: issue_info = issue.split("/") - self.gitlab_api.set_attr(owner=issue_info[-5], repo=issue_info[-4]) + self.gitlab_api.set_attr( + owner=issue_info[-5], repo=issue_info[-4]) self._set_gitlab_host(issue) issue_num = issue_info[-1] response = await self.gitlab_api.issue_relevance_pull( issue_id=issue_num ) - pr_list = self._convert_api_response(response, url_key="web_url") + pr_list = self._convert_api_response( + response, url_key="web_url") except IndexError: logger.warning( f"The issue link: {issue} does not conform to the standard format" ) else: - logger.warning(f"Issue {issue} failed to match the relevant code platform") + logger.warning( + f"Issue {issue} failed to match the relevant code platform") # Record the relationship between issue and pr to facilitate subsequent patch information processing logger.info(f"According to issue {issue} get pr: {str(pr_list)}") @@ -196,7 +233,8 @@ class Patch: ) commits_list = self._convert_api_response(response, "web_url") - logger.info(f"According to pull {pr} get commits: {str(commits_list)}") + logger.info( + f"According to pull {pr} get commits: {str(commits_list)}") self.issue_pr_dict[pr] = commits_list @@ -214,7 +252,8 @@ class Patch: elif Constant.GITLAB in pr: self.gitlab_api.set_attr(owner=pr_info[-5], repo=pr_info[-4]) else: - logger.warning(f"Pr {pr} failed to match the relevant code platform") + logger.warning( + f"Pr {pr} failed to match the relevant code platform") return None except IndexError: logger.warning( @@ -245,7 +284,8 @@ class Patch: :param issue_pr: issue or pull :return: None """ - _host_match = re.search(pattern=Constant.GITLAB_HOST_REGEX, string=issue_pr) + _host_match = re.search( + pattern=Constant.GITLAB_HOST_REGEX, string=issue_pr) _host = _host_match.group() self.gitlab_api.host = _host @@ -294,4 +334,4 @@ class Patch: patch_detail.details.append(issue_relation_info) - self.patch_detail_list.append(dict(patch_detail._asdict())) + self.patch_detail_list.append(dict(patch_detail._asdict())) \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/core/download/save.py b/cve-agency-manager/cve_tracking/core/download/save.py index 329b4ce..5ef1f81 100644 --- a/cve-agency-manager/cve_tracking/core/download/save.py +++ b/cve-agency-manager/cve_tracking/core/download/save.py @@ -15,7 +15,7 @@ import re from conf import CONFIG, settings from logger import logger from request import http - +from core.verification.apply import PathApply def _file(cve, file): """ @@ -28,7 +28,7 @@ def _file(cve, file): os.makedirs(file, exist_ok=True) file_name = ( "fix-cve-" - + str(sum([os.path.isfile(list_index) for list_index in os.listdir(file)]) + 1) + + str(sum([os.path.isfile(file+"/"+list_index) for list_index in os.listdir(file)]) + 1) + ".patch" ) return os.path.join(file, file_name) @@ -50,7 +50,7 @@ def _patch_url(url): return url + target_regex[-1] -def save_patch(patch_details, cve, path=CONFIG.PATCH_SAVE_PATH): +def save_patch(patch_details, cve, path=CONFIG.PATCH_SAVE_PATH,args=None): """ Download and save the patch file :param patch_details: patch info @@ -63,15 +63,32 @@ def save_patch(patch_details, cve, path=CONFIG.PATCH_SAVE_PATH): for issue_info in patch.get("details", list()): for pr in issue_info["issue"].get("prs", list()): commits.update(pr.get("commits", [])) - - # download patch - for url in commits: - out_file = _file(cve=cve, file=path) - patch_url = _patch_url(url=url) or url - file = http.download(url=patch_url, out_fname=out_file) - if not file: - logger.error("Failed to download the file: %s" % patch_url) - + if not args.packing: + # download patch + for url in commits: + out_file = _file(cve=cve, file=path) + patch_url = _patch_url(url=url) or url + file = http.download(url=patch_url, out_fname=out_file) + if not file: + logger.error("Failed to download the file: %s" % patch_url) + return None + else: + patch_url_state={} + for url in commits: + patch_url_state[url] = "" + for url in commits: + out_file = _file(cve=cve, file=path) + patch_url = _patch_url(url=url) or url + file = http.download(url=patch_url, out_fname=out_file) + if not file: + logger.error("Failed to download the file: %s" % patch_url) + patch_url_state[url] = "不适配" + patch_apply = PathApply(rpm_name=args.rpm_name, patch_path=args.patch_path, + source_path=args.source_path, branch_rpm=args.branch,cve_num=args.cve_num) + stat = patch_apply.packing_source() + patch_apply.clear_trash() + patch_url_state[url] = stat + return patch_url_state __all__ = ("save_patch",) diff --git a/cve-agency-manager/cve_tracking/core/feedback/issue_mode.py b/cve-agency-manager/cve_tracking/core/feedback/issue_mode.py index ec2250d..5932369 100644 --- a/cve-agency-manager/cve_tracking/core/feedback/issue_mode.py +++ b/cve-agency-manager/cve_tracking/core/feedback/issue_mode.py @@ -17,6 +17,8 @@ from util.github_api import Github from util.gitlab_api import Gitlab + + class IssueMode: """ Feedback by creating an issue diff --git a/cve-agency-manager/cve_tracking/core/platform/cve_platform.py b/cve-agency-manager/cve_tracking/core/platform/cve_platform.py index a057edf..fe51657 100644 --- a/cve-agency-manager/cve_tracking/core/platform/cve_platform.py +++ b/cve-agency-manager/cve_tracking/core/platform/cve_platform.py @@ -17,8 +17,6 @@ from collections import namedtuple from functools import wraps from bs4 import BeautifulSoup - -from constant import Constant from exception import RequestError from logger import logger from request import http @@ -68,7 +66,7 @@ class CvePlatform: self.cve_num = cve_num self.base_url = base_url self._format = format_text - self._Patch = namedtuple("Patch", ["platform", "commits", "pr", "issue"]) + self._patch = namedtuple("Patch", ["platform", "commits", "pr", "issue"]) @property def crawler_url(self): @@ -84,16 +82,16 @@ class CvePlatform: Structure of cve patch information :return: instance of _Patch """ - return self._Patch(platform=self.crawler_url, commits=[], pr=[], issue=[]) + return self._patch(platform=self.crawler_url, commits=[], pr=[], issue=[]) - async def _rule_redirect(self, response): + async def _rule_redirect(self, _response_text): """ Page multi layer jump data parsing :param response: http response data :return: response data """ for redirect_rule in self._platform.get("redirect", []): - format_text = self.format_text(response.text) + format_text = self.format_text(_response_text) target_val = list( set( re.findall( @@ -108,7 +106,6 @@ class CvePlatform: response = await self._method(redirect_rule)( url, data=redirect_rule.get("body") ) - return response @staticmethod @@ -125,26 +122,29 @@ class CvePlatform: _response = await self._method(self._platform)( self.crawler_url, data=self._platform.get("body") ) + _response_text = _response.text if "redirect" in self._platform: - _response = await self._rule_redirect(response=_response) + redirect_response = await self._rule_redirect(_response_text=_response_text) + if not redirect_response.text: + redirect_response.text = "" + _response_text += redirect_response.text except RequestError: return None - - if _response.error or not _response.text: + if _response.error or not _response_text: logger.error( f"Failed to access URL {self.crawler_url}, detail: {_response.error}" ) return None - + formatted_text = ( - self.format_text(_response.text) + self.format_text(_response_text) if self._format == "text" - else self.json(_response.text) + else self.json(_response_text) ) if formatted_text is None: - logger.error(f"Failed to format string {_response.text}") + logger.error(f"Failed to format string {_response_text}") return None - + patch_info_dict = self.match_patch( formatted_text, dict(self.patch_info._asdict()) ) @@ -162,12 +162,14 @@ class CvePlatform: :return: None """ # Matching url de-duplication + for key, value in patch_info.items(): if isinstance(value, list): patch_info[key] = list(set(value)) - logger.info(f"Find patch: {patch_info}") + return patch_info + # def specialrpms_match_patch(): @staticmethod def format_text(text): @@ -190,9 +192,9 @@ class CvePlatform: try: text_dict = json.loads(text) return json.dumps(text_dict, indent=4) - except JSONDecodeError as e: + except JSONDecodeError as errors: logger.error( f"The format of the content obtained by bugzilla website is incorrect, " - f"content is {text}, message is {e.msg}" + f"content is {text}, message is {errors.msg}" ) return None diff --git a/cve-agency-manager/cve_tracking/core/verification/apply.py b/cve-agency-manager/cve_tracking/core/verification/apply.py index 6cf5b53..58e5e4d 100644 --- a/cve-agency-manager/cve_tracking/core/verification/apply.py +++ b/cve-agency-manager/cve_tracking/core/verification/apply.py @@ -11,7 +11,6 @@ # See the Mulan PSL v2 for more details. # ******************************************************************************/ import os.path -import stat import subprocess from exception import ConfigNotFoundError, PathNotExistError, PathEmptyError @@ -24,13 +23,12 @@ class PathApply: """ Patch verification class """ - - def __init__(self, rpm_name, patch_path, source_path, branch_rpm): + def __init__(self, rpm_name, patch_path, source_path, branch_rpm,cve_num): self.rpm_name = rpm_name self.patch_path = patch_path self.source_path = source_path self.branch_rpm = branch_rpm - + self.cve_num = cve_num def packing_source(self): """ Package verification implementation class @@ -43,15 +41,23 @@ class PathApply: run_shell = os.path.join(CURRENT_PATH, 'run.sh') try: output = subprocess.check_output( - [run_shell, self.rpm_name, self.branch_rpm, self.patch_path, self.source_path], + [run_shell, self.rpm_name, self.branch_rpm, self.patch_path, self.source_path,self.cve_num], stderr=subprocess.STDOUT, shell=False) apply_result = output.decode('utf-8') logger.info(f'Patch verification process:\n{apply_result}') - logger.info(f'Apply patch successfully, log is {self.source_path}/{self.rpm_name}/result.log') - except subprocess.CalledProcessError as e: - logger.info(f'Patch verification process:\n{e.output.decode("utf-8")}') - logger.error(f'Apply patch failed, log is {self.source_path}/{self.rpm_name}/result.log') + return "完全适配" + except subprocess.CalledProcessError as grepexc: + apply_result = grepexc.output.decode('utf-8') + if "200" in apply_result: + logger.info(f'Patch verification process:\n{apply_result}') + return "完全适配" + elif "202" in apply_result: + logger.info(f'Patch verification process:\n{apply_result}') + return "不完全适配" + else: + logger.info(f'Patch verification process:\n{apply_result}') + return "不适配" def _validate_path(self): """ @@ -84,3 +90,14 @@ class PathApply: for file in os.listdir(CURRENT_PATH): if str(file).endswith('.sh'): os.chmod(os.path.join(CURRENT_PATH, file), 0o0755) + + def clear_trash(self): + """ + clear patch_path,rpmbuild/SPEC and rpmbuild/SOURCE + """ + run_shell = os.path.join(CURRENT_PATH, 'trash.sh') + try: + subprocess.check_output([run_shell,self.patch_path],stderr=subprocess.STDOUT,shell=False) + logger.info(f'Clear successfully !') + except subprocess.CalledProcessError as errors: + logger.error('Clear failed %s!!'%errors) \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/core/verification/common.sh b/cve-agency-manager/cve_tracking/core/verification/common.sh old mode 100644 new mode 100755 diff --git a/cve-agency-manager/cve_tracking/core/verification/packing.sh b/cve-agency-manager/cve_tracking/core/verification/packing.sh old mode 100644 new mode 100755 index 8ab7db4..75312a3 --- a/cve-agency-manager/cve_tracking/core/verification/packing.sh +++ b/cve-agency-manager/cve_tracking/core/verification/packing.sh @@ -78,6 +78,7 @@ function update_spec() { echo "[INFO] Start to update spec file" cd ${source_path} spec_file=$(ls | grep *.spec | grep -v *.bak | grep -v *.update) + spec_f = $(pwd) if [[ -z ${spec_file} ]]; then echo "[ERROR] spec file is not found" exit 1 diff --git a/cve-agency-manager/cve_tracking/core/verification/run.sh b/cve-agency-manager/cve_tracking/core/verification/run.sh old mode 100644 new mode 100755 index 9b9f073..c7e9e59 --- a/cve-agency-manager/cve_tracking/core/verification/run.sh +++ b/cve-agency-manager/cve_tracking/core/verification/run.sh @@ -1,63 +1,236 @@ #!/bin/bash # shellcheck disable=SC2068 # shellcheck disable=SC2164 -# shellcheck disable=SC2002 -# shellcheck disable=SC2045 -# shellcheck disable=SC2115 +# shellcheck disable=SC2010 +# shellcheck disable=SC2063 +# shellcheck disable=SC2062 +# shellcheck disable=SC2035 rpm_name=$1 -remote_branch=$2 -patch_path=$3 +rpm_branch=$2 +patches_path=$3 source_path=$4 +cve_num=$5 +path_file_name="" +install_retry_count=0 +# The rpm package that needs to be installed when compiling +requires_rpms="" +spec_file="" +home_path=$( + cd ~ + pwd -P +) +root_build_path=${home_path}/"rpmbuild" current_path=$( cd "$(dirname "$0")" pwd ) . ${current_path}/common.sh -function check() { - # Check input legitimacy - if [[ -z ${rpm_name} ]] || [[ -z ${remote_branch} ]]; then - echo "[ERROR] rpm name or gitee branch not specified" +function check_patch() { + if [[ -z ${patches_path} ]]; then + echo "400[ERROR] Input patch is null" + exit 1 + fi + for patch in ${patches_path[@]}/$cve_num; do + if [[ ! -d ${patch} ]]; then + echo "[ERROR] ${patch} is not found" + exit 1 + fi + done + if [ "`ls -A ${patches_path}/$cve_num`" = "" ];then + echo "400补丁未下载" + exit 1 + fi + for patch in `ls ${patches_path[@]}/$cve_num`; do + if [[ ${patch} == fix*.tmp ]]; then + echo "400补丁下载错误" + rm -f $patches_path/$cve_num/$patch + exit 1 + fi + done + +} + +function check_local() { + if [[ ! -d ${source_path} ]]; then + echo "400[ERROR] The source package path ${source_path} does not exist" exit 1 fi - # Check if the path exists - if [[ ! -d ${patch_path} ]] || [[ ! -d ${source_path} ]]; then - echo "[ERROR] The patch file directory: ${patch_path} or the source code download directory: ${source_path} does not exist is not exist" +} + +function check_remote() { + if [[ -z ${rpm_name} ]] || [[ -z ${rpm_branch} ]]; then + echo "400[ERROR] Incorrect input,Please use [ /bin/bash add_patch.sh 'name of package' 'branch of package' 'path of patch file']" exit 1 fi } -function run() { - patch_files=$(ls ${patch_path}) - patch_ids="" - new_patches="" - for patch_file in ${patch_files[@]}; do - patch_file=${patch_path}/${patch_file} - git_patch_ids=$(cat "${patch_file}" | git patch-id --stable) - if [[ ! ${patch_ids} =~ ${git_patch_ids} ]]; then - new_patches="${new_patches} ${patch_file}" - patch_ids="${patch_ids} ${git_patch_ids}" +function pre_env_build() { + echo "[INFO] Create root path of rpmbuild" + if [[ ! -d ${root_build_path} ]]; then + mkdir -p ${root_build_path}/{BUILD,BUILDROOT,RPMS,SPECS,SOURCES,SRPMS} + fi +} + +function git_clone() { + echo "[INFO] Start to git clone ${rpm_name}" + cd ${source_path} + git clone -b ${rpm_branch} https://gitee.com/src-openeuler/${rpm_name}.git >/dev/null 2>&1 + rpm_path=$(ls | grep ${rpm_name}) + if [[ -z ${rpm_path} ]]; then + echo "400[ERROR] Access https://gitee.com/src-openeuler/${rpm_name}.git clone ${rpm_name} failed, please check path ${source_path}" + exit 1 + fi + + source_path=${source_path}/${rpm_name} +} + +function update_spec() { + echo "[INFO] Start to update spec file" + cd ${root_build_path}/SOURCES + spec_file=$(ls | grep *.spec | grep -v *.bak | grep -v *.update) + if [[ -z ${spec_file} ]]; then + echo "400[ERROR] spec file is not found" + exit 1 + fi + # backup spec + /bin/cp -rf ${spec_file} ${spec_file}.bak + # update Release + release_version=$(grep "Release:" ${spec_file} | awk -F " " '{print $NF}' | tr -cd "[0-9]") + new_release=$(expr ${release_version} + 1) + sed -i "s/Release:.*${release_version}/Release: ${new_release}/" ${spec_file} + # add Patch*** + last_patch=$(grep "Patch.*:" ${spec_file} | sed -n '$p') + if [[ -z ${last_patch} ]]; then + source_row=$(grep -n "Source.*:" ${spec_file} | sed -n '$p' | awk -F ':' '{print $1}') + sed -i -e "${source_row}G;${source_row}a Patch0000: ${path_file_name}" ${spec_file} + else + last_patch_row=$(grep -n "${last_patch}" ${spec_file} | awk -F ':' '{print $1}') + last_patch_num=$(echo ${last_patch} | awk -F ':' '{print $1}' | awk -F 'Patch' '{print $2}') + patch_name_len=${#last_patch_num} + new_patch_num=$(expr ${last_patch_num} + 1) + new_patch_num=$(printf "%0${patch_name_len}d" ${new_patch_num}) + sed -i "${last_patch_row}a Patch${new_patch_num}: ${path_file_name}" ${spec_file} + fi + # add %patch + last_patch_apply=$(grep "%patch.* " ${spec_file} | sed -n '$p') + if [[ -n ${last_patch_apply} ]]; then + last_patch_apply_row=$(grep -n "${last_patch_apply}" ${spec_file} | awk -F ':' '{print $1}') + last_patch_apply_num=$(echo ${last_patch_apply} | awk -F ' ' '{print $1}' | awk -F 'patch' '{print $2}') + ignore_level_num=$(echo ${last_patch_apply} | awk -F ' ' '{print $2}') + new_patch_apply_num=$(expr ${last_patch_apply_num} + 1) + sed -i "${last_patch_apply_row}a %patch${new_patch_apply_num} ${ignore_level_num} " ${spec_file} + fi + # add changelog + change_log_row=$(grep -n '%changelog' ${spec_file} | sed -n '$p' | awk -F ':' '{print $1}') + date_now=$(env LANG=en_US.UTF-8 date "+%a %b %d %Y") + version=$(grep 'Version:' ${spec_file} | awk -F ' ' '{print $NF}') + log_description="- add ${path_file_name}" + log_title="* ${date_now} robot - ${version}-${new_release}" + sed -i "${change_log_row}G" ${spec_file} + sed -i "${change_log_row}a ${log_description}" ${spec_file} + sed -i "${change_log_row}a ${log_title}" ${spec_file} + /bin/cp -rf ${root_build_path}/SOURCES/*.spec ${root_build_path}/SPECS + echo "[INFO] Update spec file success" +} + +function mv_source_file() { + echo "[INFO] Copy source file to ${root_build_path}" + cd ${source_path} + spec_file=$(ls | grep *.spec | grep -v *.bak | grep -v *.update) + /bin/cp -rf ${patches_path}/${cve_num}/* ${root_build_path}/SOURCES + /bin/cp -rf * ${root_build_path}/SOURCES +} + +function rpm_build() { + echo "[INFO] Start to rpmbuild" + install_rpm rpm-build rpm + apt-get -y build-dep ${rpm_name} >/dev/null 2>&1 + dnf builddep -y ${root_build_path}/SPECS/${spec_file} >/dev/null 2>&1 + if [[ $? -eq 0 ]]; then + echo "[INFO] build dependencies success !!!" + fi + rpmbuild -bp ${root_build_path}/SPECS/${spec_file} >./result.log 2>&1 + if [[ $? -eq 0 ]]; then + log_path="${root_build_path}/SOURCES/result.log" + fix_load=$(awk '(/fix-cve/){print $0}' $log_path) + if [[ -n ${fix_load} ]];then + echo "[INFO] build success !!!" + exit 0 else - echo "[INFO] ${patch_file} duplicate content" + echo "400补丁未能正确加载,请检查spec文件" + exit 1 fi - done - # Perform code download, modify spec file, package verification operation - /bin/bash ${current_path}/packing.sh "${rpm_name}" "${remote_branch}" "${new_patches}" "${source_path}" - add_patch_result=$? - if [[ ${add_patch_result} -eq 0 ]]; then - echo "[INFO] rpm: \"${rpm_name}\" of branch: \"${remote_branch}\" apply patch \"${new_patches}\" successfully" - exit 0 + elif [[ -n $(grep "Failed build dependencies" ./result.log) ]] && [[ ${install_retry_count} -le 2 ]]; then + requires_rpms=$(grep -r "is needed by" ./result.log | awk -F " " '{print $1}') + echo "${requires_rpms}" >./requires_rpms.log + for rpm in ${requires_rpms[@]}; do + install_rpm ${rpm} ${rpm} + done + install_retry_count=$(expr ${install_retry_count} + 1) + rpm_build else - echo "[ERROR] rpm: \"${rpm_name}\" of branch: \"${remote_branch}\" failed to apply patch \"${new_patches}\"" - exit 1 + # mv -f ${source_path}/${spec_file} ${source_path}/${spec_file}.update + echo "[ERROR] build failed,log is ${root_build_path}/SOURCES/result.log" + # exit 1 fi } -function main() { - # Executive total entrance - check - install_rpm git git - run +function get_error_msq(){ + echo "[INFO] Start to get_error_msq" + log_path="${root_build_path}/SOURCES/result.log" + error_msg=$(awk '(/^[0-9]{1,}/){print $0}' $log_path) + insert_num=$(awk '(/^[0-9]{1,}/){print $1}' $log_path) + local_num=$(awk '(/^[0-9]{1,}/){print $4}' $log_path) + fix_load=$(awk '(/fix-cve/){print $0}' $log_path) + download_right=$(awk '(/Only garbage was found in the patch input/){print $0}' $log_path) + if [[ -n ${fix_load} ]];then + : + if [[ -z ${download_right} ]];then + : + if [[ -n ${error_msg} ]]; then + : + if [[ "$insert_num" == "$local_num" ]];then + echo "400版本不受影响或补丁错误" + else + if [[ ${#insert_num} == 1 ]];then + echo "202补丁部分可用" + else + echo "400版本不受影响或补丁错误" + fi + fi + fi + else + echo "400补丁未能正确加载,请检查补丁内容是否正确下载" + fi + else + echo "400补丁未能正确加载,请检查spec文件中" + fi + exit 1 } -main +function main() { + check_patch + if [[ ${rpm_branch} == "no" ]]; then + check_local + pre_env_build + else + check_remote + pre_env_build + git_clone + fi + mv_source_file + if [[ -n `ls $patches_path/$cve_num` ]]; then + for patch in `ls ${patches_path[@]}/$cve_num`; do + if [[ ${patch} == fix-cve-*.patch ]]; then + path_file_name=$(echo "${patch}" | awk -F "/" '{print $NF}' | awk -F "\\" '{print $NF}') + update_spec + fi + done + rpm_build + get_error_msq + else + echo "400补丁未能下载,请尝试手动下载" + fi +} +main \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/core/verification/trash.sh b/cve-agency-manager/cve_tracking/core/verification/trash.sh new file mode 100755 index 0000000..306ed0c --- /dev/null +++ b/cve-agency-manager/cve_tracking/core/verification/trash.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# shellcheck disable=SC2068 +# shellcheck disable=SC2164 +# shellcheck disable=SC2010 +# shellcheck disable=SC2063 +# shellcheck disable=SC2062 +# shellcheck disable=SC2035 +patch_path=$1 +home_path=$( + cd ~ + pwd -P +) +root_build_path=${home_path}/"rpmbuild" +rm $root_build_path/SOURCES/* -rf +rm $root_build_path/SPECS/* -rf +rm $patch_path/* -r \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/cve-tracking.yaml b/cve-agency-manager/cve_tracking/cve-tracking.yaml index 6e28739..4579837 100644 --- a/cve-agency-manager/cve_tracking/cve-tracking.yaml +++ b/cve-agency-manager/cve_tracking/cve-tracking.yaml @@ -1,4 +1,7 @@ # Regular expression to match cve patch info +# rpm列表 +# platform: +# - ghostscript # 匹配cve补丁信息的正则表达式 regex: # A tag that matches the type of content, currently only "commit" "pr" "issue" is supported @@ -7,15 +10,26 @@ regex: # Regular expressions that match specific types of content, you can set multiple matching rules # 匹配特定类型内容的正则表达式,可以设置多个匹配规则 regular: - - http[s]?://(?:[-\w.\/;?])+(?:/rev|/ci|/commit[s]?)/(?:\?id=)?[0-9a-z]{8,40} - - http[s]?://(?:[-\w.\/;=&?])+a=commit(?:[\w;&?])+h=[0-9a-z]{8,40} + - http[s]?://(?:[-\w.\/;?\~?])+(?:/rev|/ci|/commit[s]?|/linus|/qtbase/\+|/c|/revision)/(?:\?id=)?[0-9a-z-]{1,40} + - /\?p=ghostpdl.git;a=commitdiff;h=[a-z0-9]{40};?(?:hp=[0-9a-z;=]{40})? + - http[s]?://[\w.\/\+]+patch_to_fix_[0-9]{0,8} - label: pr regular: - http[s]?://(?:[-\w.\/;?])+(?:pull[s]?|merge_requests)/[1-9][0-9]* - label: issue regular: - - http[s]?://(?:[-\w.\/;?])+issues/[0-9A-Z]+ + - http[s]?://(?:[-\w.\/;?])+issue[s]?/[0-9A-Z]+ +specialrpm: + - name: strongswan + url: https://download.strongswan.org/security + patch_url: https://download.strongswan.org/security/{}/ + request: false + - name: log4j12 + url: https://sources.debian.org/src/apache-log4j1.2 + patch_url: https://sources.debian.org/src/apache-log4j1.2/1.2.17-11/debian/patches/{}.patch/ + request: false + # Platforms to find bug fixes for cve, such as Debian, Bugzilla, Nvd, etc. # 查找cve漏洞修复的平台,例如 Debian、Bugzilla、Nvd等 platform: @@ -24,7 +38,7 @@ platform: - name: Cnnvd # The request address for finding cve details, "{cve num}" is a placeholder for string replacement in python (required) # 查找cve详情信息的请求地址,“{cve_num}”是python中字符串替换的占位符(必配项) - url: http://cnnvd.org.cn/web/vulnerability/queryLds.tag?qcvCnnvdid={cve_num} + url: http://www.cnnvd.org.cn/web/vulnerability/queryLds.tag?qcvCnnvdid={cve_num} # The method of sending the request, the default is get request, and it can also be specified as post request. # When the request method is get, it can not be configured here. # 发送请求的方式,默认为get请求,还可以指定为post请求,当请求方式为get时,此处可不配置 @@ -43,7 +57,7 @@ platform: # The prefix of the jump address, generally the domain name of the jump page, if the jump address matched by # the regular expression has a complete domain name + path, this configuration item can be left blank # 跳转地址的前缀,一般情况下为跳转页面的域名,如果正则表达式匹配到的跳转地址中有完整的域名+路径,此配置项可以不填写 - - prefix: http://cnnvd.org.cn + - prefix: http://www.cnnvd.org.cn # The regular expression that matches the page jump address, if it matches multiple values, get the last match # 匹配页面跳转地址的正则表达式,如果匹配多个值,则获取最后一个匹配项 regex: /web/xxk/ldxqById\.tag\?CNNVD=CNNVD[0-9-]+ @@ -54,11 +68,30 @@ platform: # If the request method is post and there is a request body, the body is required and must be in json format # 若请求方式为post且存在请求体时,body为必填项,且必须为json格式 body: - + - name: opencve + url: https://www.opencve.io/cve/{cve_num} + format: text + - name: Debian url: https://security-tracker.debian.org/tracker/{cve_num} + method: get + # body: format: text - + redirect: + - prefix: https://bugs.launchpad.net + regex: /mailman/\+bug/[0-9]{0,8} + method: get + body: + - prefix: https://community.otrs.com + regex: /security-advisory-[0-9]{4}-[0-9]{2} + method: get + body: + - prefix: https://git.ghostscript.com + regex: /\?p=ghostpdl.git;a=(?:commit|commitdiff);h=[a-z0-9]{40};?(?:hp=[0-9a-z;=]{40})? + method: get + body: + + - name: Ubuntn url: https://ubuntu.com/security/{cve_num} format: text @@ -75,6 +108,10 @@ platform: url: https://bugzilla.suse.com/show_bug.cgi?id={cve_num} format: text + - name: Redhat + url: https://bugzilla.redhat.com/show_bug.cgi?id={cve_num} + format: text + # Private token for api access, currently only supports "gitee" "github" "gitlab" # api访问时的私人令牌,当前只支持"gitee"/"github"/"gitlab" authentication: @@ -83,9 +120,9 @@ authentication: - name: gitee # A private token for accessing the api, which can be manually obtained and changed later # 访问api的私人令牌,可以手动获取后更改 - token: + token: 2be60f57f6eaef9efbac94f342685b59 - name: github - token: + token: 9c2290c567bd16064219cbbc0f61c8dc - name: gitlab token: glpat-24DGxkuTA8nTR1YQsXvZ diff --git "a/cve-agency-manager/cve_tracking/doc/images/\345\274\200\345\217\221\350\247\206\345\233\276.png" "b/cve-agency-manager/cve_tracking/doc/images/\345\274\200\345\217\221\350\247\206\345\233\276.png" index a1da01a4592a933bece141ed77d370be3b86eaa4..fa3ce2cdea002ca03ce3ad418cf98bacbb756511 100644 GIT binary patch literal 69749 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

o+BLlZxx;V6evn@)5Z8&%EA}tF5LqEae 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 XM5e&}ElVqj1^ivsH@jG+>vrp(3;ts5 literal 33321 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 MqLxCroJGL@0^YCehX4Qo diff --git a/cve-agency-manager/cve_tracking/main.py b/cve-agency-manager/cve_tracking/main.py index 88cf323..8eb4003 100644 --- a/cve-agency-manager/cve_tracking/main.py +++ b/cve-agency-manager/cve_tracking/main.py @@ -1,33 +1,32 @@ -#!/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. -# ******************************************************************************/ -""" -Tool execution total entrance -""" -import asyncio - -from cli.base import CveTrackingCommand -from conf import CONFIG -from exception import CveException -from logger import logger - -try: - # Register all subcommands - for sub_class in CveTrackingCommand.__subclasses__(): - CveTrackingCommand.register_command(sub_class()) - - # Parallel execution of corresponding functions - loop = asyncio.get_event_loop() - loop.run_until_complete(CveTrackingCommand.run()) -except CveException as e: - logger.error( - f'Execution failed, message is : {e.message}, detail in {CONFIG.LOGGER_PATH}/{CONFIG.LOGGER_FILE_NAME}') +#!/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. +# ******************************************************************************/ +""" +Tool execution total entrance +""" +import asyncio +from cli.base import CveTrackingCommand +from conf import CONFIG +from exception import CveException +from logger import logger + +try: + # Register all subcommands + for sub_class in CveTrackingCommand.__subclasses__(): + CveTrackingCommand.register_command(sub_class()) + + # Parallel execution of corresponding functions + loop = asyncio.get_event_loop() + loop.run_until_complete(CveTrackingCommand.run()) +except CveException as errors: + logger.error( + f'Execution failed, message is : {errors.message}, detail in {CONFIG.LOGGER_PATH}/{CONFIG.LOGGER_FILE_NAME}') \ No newline at end of file diff --git a/cve-agency-manager/cve_tracking/request.py b/cve-agency-manager/cve_tracking/request.py index b2859f4..4e16b55 100644 --- a/cve-agency-manager/cve_tracking/request.py +++ b/cve-agency-manager/cve_tracking/request.py @@ -11,20 +11,21 @@ # See the Mulan PSL v2 for more details. # ******************************************************************************/ import json -from asyncio import TimeoutError from http.client import RemoteDisconnected from urllib.error import HTTPError, URLError - +from asyncio import TimeoutError import aiohttp import wget from fake_useragent import UserAgent from retrying import retry - from constant import Constant from exception import RequestError class Response: + """ + Process the Response + """ def __init__(self, error=None, response: aiohttp.ClientResponse = None, text=None) -> None: self.error = error self.response = response @@ -32,14 +33,23 @@ class Response: @property def success(self): + """ + return successful response and status + """ return self.response and (self.response.status == 200 or self.response.status == 201) @property def status_code(self): + """ + return reponse and status + """ return self.response and self.response.status @property def json(self): + """ + return json + """ if not self.response: return None try: @@ -70,6 +80,9 @@ class Http: @property def headers(self): + """ + constitute headers + """ headers = { "User-Agent": self.user_agent.random } @@ -84,6 +97,9 @@ class Http: "Content-Type", "application/json") async def _get(self, url, params=None, **kwargs): + """ + get Methods using + """ self._set_headers(request_header=kwargs) @retry(stop_max_attempt_number=self._max_attempt_number, stop_max_delay=self._stop_max_delay) @@ -94,6 +110,9 @@ class Http: @classmethod async def get(cls, url, **kwargs) -> "Response": + """ + call _get + """ async with cls() as self: await self._get(url, **kwargs) return self._response @@ -104,12 +123,14 @@ class Http: self._response.text = await self._response.response.text() except aiohttp.ClientError as error: self._response.error = error - except TimeoutError as e: - raise RequestError(f'Call url timeout: {e}') + except TimeoutError as error: + raise RequestError(f'Call url timeout: {error}') async def _post(self, url, data=None, **kwargs): + """ + post Methods using + """ # self._set_headers(request_header=kwargs) - @retry(stop_max_attempt_number=self._max_attempt_number, stop_max_delay=self._stop_max_delay) async def _http_request(): return await self.session.post(url, data=data, timeout=Constant.CALL_MAX_DELAY, **kwargs) @@ -118,6 +139,9 @@ class Http: @classmethod async def post(cls, url, data=None, **kwargs) -> "Response": + """ + call _post + """ async with cls() as self: await self._post(url, data, **kwargs) return self._response @@ -127,19 +151,25 @@ class Http: def getfile(): file_name = wget.download(url, out_fname) if not file_name: - raise + raise return file_name return getfile() @staticmethod def download(url, out_fname, **kwargs): + """ + patch url downlad + """ max_attempt_number = kwargs.get("max_attempt_number", Constant.MAX_RETRY) stop_max_delay = kwargs.get("stop_max_delay", Constant.MAX_DOWNLOAD_DELAY) @retry(stop_max_attempt_number=max_attempt_number, stop_max_delay=stop_max_delay) def _dw(): - file_name = wget.download(url, out_fname) + try: + file_name = wget.download(url, out_fname) + except Exception as error: + return None if not file_name: raise RequestError(f'Call url:"{url}" failed') return file_name diff --git a/cve-agency-manager/cve_tracking/util/__init__.py b/cve-agency-manager/cve_tracking/util/__init__.py index 5a7ebcd..064ef9b 100644 --- a/cve-agency-manager/cve_tracking/util/__init__.py +++ b/cve-agency-manager/cve_tracking/util/__init__.py @@ -33,8 +33,8 @@ class Api: """ try: response = await http.post(url=url, data=values, **kwargs) - except RequestError as e: - logger.error(f'Call url {url} failed, message: {e.message}') + except RequestError as errors: + logger.error(f'Call url {url} failed, message: {errors.message}') return None if not response.success: @@ -55,8 +55,8 @@ class Api: """ try: response = await http.get(url=url, params=params, **kwargs) - except RequestError as e: - logger.error(f'Call url {url} failed, message: {e.message}') + except RequestError as errors: + logger.error(f'Call url {url} failed, message: {errors.message}') return None if not response.success: -- Gitee

T~bGB=`6{)@F_@(vO_x9TI?B|2a)bD(a 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