1
0
Fork 0
mirror of https://github.com/gocsaf/csaf.git synced 2025-12-22 11:55:40 +01:00

Add support for remote validation services. (#185)

* Simple tool to test the remote validation

* Added remote validator support to provider.

* Added remote validation to aggregator.

* Calm golint

* Removed csaf_remote_validator tool as it was only for dev.

* Re-added csaf_remote_validator tool. Testing is not done.

* Embed the document entirely

* Include testing the remote validator in the Itests

* Change permission of the script

* Remove code for Itests

* As these will be done in another branch

Co-authored-by: Fadi Abbud <fadi.abbud@intevation.de>
This commit is contained in:
Sascha L. Teichmann 2022-06-21 14:47:06 +02:00 committed by GitHub
parent 7cbbb4bf81
commit 78d8b89aca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 466 additions and 43 deletions

View file

@ -36,7 +36,7 @@ func (w *worker) setupProviderFull(provider *provider) error {
w.provider = provider
// Each job needs a separate client.
w.client = w.cfg.httpClient(provider)
w.client = w.processor.cfg.httpClient(provider)
// We need the provider metadata in all cases.
if err := w.locateProviderMetadata(provider.Domain); err != nil {
@ -83,6 +83,22 @@ func (p *processor) full() error {
var doWork fullWorkFunc
if p.cfg.runAsMirror() {
// check if we need to setup a remote validator
if p.cfg.RemoteValidatorOptions != nil {
validator, err := p.cfg.RemoteValidatorOptions.Open()
if err != nil {
return err
}
// Not sure if we really need it to be serialized.
p.remoteValidator = csaf.SynchronizedRemoteValidator(validator)
defer func() {
p.remoteValidator.Close()
p.remoteValidator = nil
}()
}
doWork = (*worker).mirror
log.Println("Running in aggregator mode")
} else {
@ -96,7 +112,7 @@ func (p *processor) full() error {
log.Printf("Starting %d workers.\n", p.cfg.Workers)
for i := 1; i <= p.cfg.Workers; i++ {
wg.Add(1)
w := newWorker(i, p.cfg)
w := newWorker(i, p)
go w.fullWork(&wg, doWork, queue)
}