dependency-track 初始化源码解析

因项目的关键因素,需查看dependency-check源码流程。个人学习用。自己读代码可以根据web.xml的几个listener来debug。

1、org.dependencytrack.RequirementsVerifier 校验java版本,内存等运行时环境。

2、org.dependencytrack.upgrade.UpgradeInitializer作用 create 数据库并生成表结构,并将db文件放置在指定或者默认的目录下,默认的目录(~/.dependency-track),然后检验当前机器H2数据库的版本,根据不同的版本进行升级操作。

dependency-track 初始化源码解析

3、org.dependencytrack.event.EventSubsystemInitializer 为不同的事件注册不同的定时器,然后初始化org.dependencytrack.tasks.TaskScheduler,定义调用频率和延迟时间后执行若干个event。

4、org.dependencytrack.persistence.DefaultObjectGenerator,执行IndexEvent,NistEvent等,在服务器的bin目录下生成~/.dependency-track/index文件夹,并下载生成对应文件。

dependency-track 初始化源码解析

然后初始化H2默认数据(Permissions,Personas(用户密码和team,admin,admin),License(遍历解析resources目录下的license-list-data.json的details目录和exception目录),Repositories(一些库的url等配置信息),NotificationPublisher(模板格式),ConfigProperties(代码中的常量配置信息),解析resources/nist/cwec_v3.3.xml,并将解析的cwe信息(共1188条)保存(cweId和name))

 

Task解析:

NistMirrorTask : 下载cve.json到服务器的默认nist目录下

dependency-track 初始化源码解析

MetricsUpdateTask :

1、更新project的Metric信息,比如组件的数量,license的数量等(1小时1次)

2、更新Vulnerabilities的Metric信息,按年月日统计的Vulnerabilities的数量等(1小时1次)

 

VulnerabilityAnalysisTask :

1、更新漏洞信息,来源cpe,Npm,Oss,VulnDb(6小时1次)