@(
vulnsAndVersionOption: Option[(Traversable[Vulnerability], String)],
cpes: Seq[String],
isDbOld: Boolean
)(implicit header: DefaultRequest, mainTemplateData: MainTemplateData)
@import helper._
@main(
title = "Vulnerabilities for a library"
){
@form(routes.Statistics.searchVulnerableSoftware(Seq(), None), 'onsubmit->
"""
|return (function(f){
| var selectedCpes = $(f.elements.versionlessCpes).filter(function(i, x){return x.checked;}).map(function(i, x){return x.value;}).toArray()
| if(selectedCpes.length == 0){
| alert("Choose at least one CPE, please!");
| return false;
| }
|})(this);
|""".stripMargin
){
Version:
@for((_, version) <- vulnsAndVersionOption){
Note that you are viewing results for version @version !
}
Include all trailing zeros, please. For example, if version number is 3.2.0, do not shorten it to 3.2.
Identifiers
If you think you are getting irrelevant vulnerabilities, you might want to review what identifiers to match.
Check
}
@if(isDbOld){
The vulnerability database seems to be outdated. Result might be thus inaccurate. Contact the administrator, please.
}
@vulnsAndVersionOption.fold{
Select desired version, please
}{ case (vulns, version) =>
@if(vulns.isEmpty){
No known vulnerabilities for version @version .
}else{
There @if(vulns.size == 1){is one known vulnerability}else{are some known vulnerabilities} for version @version . Consider @if(vulns.size==1){its}else{their} impact and relevancy before using the library or try a newer version (if available), please.
@for(vuln <- vulns.toIndexedSeq.sortBy(v => (v.cvssScore.map(-_), v.name))){
@vuln.name
@vulnerability("h3", s"vulnerability-${vuln.name}-details", vuln)
}
}
}
@*if(vulnsAndVersionOption.isEmpty){ *@
@* } *@
}