mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 05:40:11 +01:00
Add remote validator support to downloader.
This commit is contained in:
parent
1d0499ddea
commit
bcc31c0cd6
3 changed files with 65 additions and 13 deletions
|
|
@ -39,12 +39,37 @@ type downloader struct {
|
|||
directory string
|
||||
keys []*crypto.KeyRing
|
||||
eval *util.PathEval
|
||||
validator csaf.RemoteValidator
|
||||
}
|
||||
|
||||
func newDownloader(opts *options) *downloader {
|
||||
func newDownloader(opts *options) (*downloader, error) {
|
||||
|
||||
var validator csaf.RemoteValidator
|
||||
|
||||
if opts.RemoteValidator != "" {
|
||||
validatorOptions := csaf.RemoteValidatorOptions{
|
||||
URL: opts.RemoteValidator,
|
||||
Presets: opts.RemoteValidatorPresets,
|
||||
Cache: opts.RemoteValidatorCache,
|
||||
}
|
||||
var err error
|
||||
if validator, err = validatorOptions.Open(); err != nil {
|
||||
return nil, fmt.Errorf(
|
||||
"preparing remote validator failed: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return &downloader{
|
||||
opts: opts,
|
||||
eval: util.NewPathEval(),
|
||||
opts: opts,
|
||||
eval: util.NewPathEval(),
|
||||
validator: validator,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (d *downloader) close() {
|
||||
if d.validator != nil {
|
||||
d.validator.Close()
|
||||
d.validator = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -330,6 +355,19 @@ func (d *downloader) downloadFiles(label csaf.TLPLabel, files []csaf.AdvisoryFil
|
|||
continue
|
||||
}
|
||||
|
||||
// Validate against remote validator
|
||||
if d.validator != nil {
|
||||
ok, err := d.validator.Validate(doc)
|
||||
if err != nil {
|
||||
return fmt.Errorf(
|
||||
"calling remote validator on %q failed: %w",
|
||||
file.URL(), err)
|
||||
}
|
||||
if !ok {
|
||||
log.Printf("Remote validation of %q failed\n", file.URL())
|
||||
}
|
||||
}
|
||||
|
||||
if err := d.eval.Extract(`$.document.tracking.initial_release_date`, dateExtract, false, doc); err != nil {
|
||||
log.Printf("Cannot extract initial_release_date from advisory '%s'\n", file.URL())
|
||||
initialReleaseDate = time.Now()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue