一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件虚拟仓库的缺陷组件阻断方法和系统与流程

2022-03-09 07:55:08 来源:中国专利 TAG:


1.本发明涉及互联网软件领域的组件管理技术领域,特别涉及一种软件虚拟仓库的缺陷组件阻断方法和系统。


背景技术:

2.目前现有技术中,软件的虚拟仓库有jfrog artifactory和sonatype nexus私服仓库,上述现有的私服仓库可以实现中心仓库到私服仓库的管控,然而上述现有技术存在如下技术缺陷:私服仓库主要通过防火墙进行缺陷开源组件阻断,其阻断的成本较高;私服仓库只在私服仓库和中心仓库之间对缺陷开源组件进行阻断和管控,使得阻断和管控的范围不够全面容易造成遗漏;私服仓库插件的形式需要对每类私服的不同版本进行适配,配置过程复杂,增加了配置难度。


技术实现要素:

3.本发明其中一个发明目的在于提供一种软件虚拟仓库的缺陷组件阻断方法和系统,所述方法和系统通过构建策略库的方式阻断缺陷开源组件,策略库通过识别开源组件的流量路径来判断是否是缺陷开源组件,进一步执行缺陷开源组件的流量阻断操作,相比于传统的防火墙技术可以节约成本和提高效率。
4.本发明另一个发明目的在于提供一种软件虚拟仓库的缺陷组件阻断方法和系统,所述方法和系统通过异步请求的方式请求替换的url,在请求的同时解析url,可以提高所述系统的处理效率。
5.本发明另一个发明目的在于提供一种软件虚拟仓库的缺陷组件阻断方法和系统,所述方法和系统包括超时控制策略,在包管理器中设置响应时间阈值,若超过所述阈值,则向虚拟库重新发送请求,并实时监控异步请求是否成功,可以提高系统对缺陷开源组件的有效阻断和管控。
6.为了实现至少一个上述发明目的,本发明进一步提供一种软件虚拟仓库的缺陷组件阻断方法,所述方法包括如下步骤:
7.获取项目特征文件,根据所述项目特征文件生成需要的开源组件名和版本;
8.根据所述需要的开源组件名和版本向中心仓库或虚拟库发送组件请求;
9.策略库建立缺陷开源组件流量路径清单,将所述组件请求后向所述策略库查询是否命中策略库的开源组件流量路径;
10.若在策略库中命中开源组件流量路径,则生成阻断信息以阻断和中心仓库的交互。
11.根据本发明其中一个较佳实施例,在所述策略库配置流量阻断开关,当所述流量阻断开关关闭时,所述组件请求直接访问中心仓库,并从所述中心仓库获取对应的开源组件,若所述流量阻断开关打开时,则将请求中的开源组件路径信息和所述策略库对比,存在命中的路径信息则阻断获取请求对应的开源组件。
12.根据本发明另一个较佳实施例,所述特征文件包括requirements.txt文件、pom.xml文件、composer.json文件和package.json中的至少一种,其中所述特征文件记录开源组件名和版本信息,包管理器根据所述特征文件记录的开源组件名和版本信息导入到私服仓库中。
13.根据本发明另一个较佳实施例,所述阻断方法包括构建web监听服务,设置http路由*path进行通配符匹配,用于监听所有发往该路由端口的get请求。
14.根据本发明另一个较佳实施例,所述阻断方法还包括:所述阻断方法还包括:所述web监听服务获取路由端口的流量数据,记录get请求的url地址,将所述url地址替换为镜像的源地址,并判断get请求替换的url地址是否为源码url。
15.根据本发明另一个较佳实施例,所述阻断方法包括:获取所述get请求的url地址,并判断所述get请求的url地址的格式,并根据所述url地址的格式判断是否为系统url或源码url。
16.根据本发明另一个较佳实施例,所述阻断方法还包括对策略库的异步请求,具体步骤包括:
17.创建内容接收器、退出信号channel和取消context;
18.启动goroutine异步请求获取所述被替换的url地址;
19.解析所述被替换的url地址,并根据所述解析的url地址在策略库中查找对应的路径信息。
20.根据本发明另一个较佳实施例,所述阻断方法包括请求的超时控制,具体包括如下步骤:
21.使用go语言的select分别监听异步请求时设置的退出信号channel和携带阈值的时间channel;
22.若监听到所述退出信号channel,判断所述退出信号channel内容为成功,虚拟库执行向包管理器传输body数据;
23.若监听到所述携带阈值的时间channel,则生成重定向请求数据,并关闭当前异步请求。
24.为了实现至少一个上述发明目的,本发明进一步提供一种软件虚拟仓库的缺陷组件阻断系统,所述系统执行所述一种软件虚拟仓库的缺陷组件阻断方法。
25.本发明进一步提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,所述计算机程序可被处理器执行所述一种软件虚拟仓库的缺陷组件阻断方法。
附图说明
26.图1显示的是本发明一种软件虚拟仓库的缺陷组件阻断方法的流程示意图。
27.图2显示的是本发明一种软件虚拟仓库的缺陷组件阻断系统的一个较佳实施例示意图。
28.图3显示的是本发明一种软件虚拟仓库的缺陷组件阻断系统的另一个较佳实施例示意图。
1.1.30.jar,其中192.168.20.12是虚拟库的主机ip,2222是虚拟库设置web服务监听的端口,替换之后变成:
37.https://repo.maven.apache.org/maven2/com/alibaba/fastjson/1.1.30/fastjson-1.1.30.jar,进一步判断替换后的url是否为源码url。
38.需要说明的是,由于请求中对应的url可能为系统自身的url,比如系统自身的url可能对应的格式包括但不仅限于json格式或.pom格式,可以通过对系统自身url的剔除来判断获取源码url。在完成所述源码url的获取并保存后,进一步建立异步请求,所述异步请求的建立方法包括:创建内容接收器,退出信号channel和取消context,之后启动一个goroutine异步请求被替换的所述源码url地址,在所述goroutine执行异步请求的同时解析该url地址,从所述url地址中提取出对应的开源组件名称、版本信息和路径信息,进一步将提取的开源组件名称、版本信息和路径信息在所述策略库中查找,若查找到相同的开源组件名称、版本信息和路径信息,则判定该开源组件为缺陷组件,同时阻止所述缺陷组件导入到私服仓库中。若将所述开源组件名称、版本信息和路径信息在所述策略库中查找后并未命中,则判定所述开源组件为正常组件,所述包管理器执行将所述正常组件导入到正常的私服仓库中。
39.由于所述组件请求可能因为各种故障存在超时,因此本发明进一步提供一种组件请求的超时控制方法,包括如下步骤:
40.采用go语言的select监听两个channel,其中一个监听对象为异步请求时设置的退出信号channel,另一个监听对象为携带时间阈值的定时器channel,当监听到所述退出信号channel时,需要判断监听到的所述退出信号channel的内容,若所述退出信号channel的内容为nil,则说明异步请求成功,当所述异步请求成功后所述虚拟库记录一个write,需要说明的是所述write为虚拟向所述包管理器直接发送异步请求到的body数据。当所监听到所述退出信号channel的内容非nil,则说明异步请求失败,返回失败信息。为了当组件的异步请求未命中策略库中的任意一个阻断策略时能正常进行项目构建,本发明进一步监听携带所述时间阈值的定时器channel,并设置一个redirect(重定向信息),其中当select监听到定时器channel时,则说明所述异步请求超过了设定的时间阈值,且该异步请求还未结束,其中该异步请求未结束的原因包括但不仅限于:请求包过大或网络延时等。所述虚拟库向所述包管理器发送一个重定向信息redirect,所述包管理器向其他私服仓库发请求,其他私服仓库根据包管理器的请求生成组件请求发送给虚拟库。
41.需要说明的是,当获取的url被判定为源码url时,虚拟库执行向私服仓库的导入操作,若获取的url被判定为非源码url,则在所述虚拟库中执行上述的write/redirect操作,也就是说,当虚拟库检测到的url为源码url,虚拟库记录一个write,虚拟向所述包管理器直接发送异步请求到的body数据,否则返回502的错误信息,中断项目构建。或者无论获取的url是否为源码url,当检测到异步请求超过时间阈值,则虚拟库向所述包管理器发送一个重定向信息redirect,所述包管理器向其他私服仓库发请求。
42.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质
被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本技术的方法中限定的上述功能。需要说明的是,本技术上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、rf等等,或者上述的任意合适的组合。
43.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
44.本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献