1
0
Fork 0
mirror of https://github.com/gocsaf/csaf.git synced 2025-12-22 11:55:40 +01:00
gocsaf/cmd/csaf_downloader/main.go
Sascha L. Teichmann 5459f10d39
Downloader: Add structured logging, fails storing and statistics
* add  forwarding support in downloader

* Raise needed Go version to 1.21+ so slog can be used.

* Introduce validation mode flag (strict, unsafe)

* Add structured logging and place log into the download folder.

* Improve some code comment (bernhardreiter)

* Add counting stats to downloader.
2023-08-28 15:03:01 +02:00

58 lines
1.2 KiB
Go

// This file is Free Software under the MIT License
// without warranty, see README.md and LICENSES/MIT.txt for details.
//
// SPDX-License-Identifier: MIT
//
// SPDX-FileCopyrightText: 2022 German Federal Office for Information Security (BSI) <https://www.bsi.bund.de>
// Software-Engineering: 2022 Intevation GmbH <https://intevation.de>
// Package main implements the csaf_downloader tool.
package main
import (
"context"
"log/slog"
"os"
"os/signal"
"github.com/csaf-poc/csaf_distribution/v2/internal/options"
)
func run(cfg *config, domains []string) error {
d, err := newDownloader(cfg)
if err != nil {
return err
}
defer d.close()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
ctx, stop := signal.NotifyContext(ctx, os.Interrupt)
defer stop()
if cfg.ForwardURL != "" {
f := newForwarder(cfg)
go f.run()
defer func() {
f.log()
f.close()
}()
d.forwarder = f
}
return d.run(ctx, domains)
}
func main() {
domains, cfg, err := parseArgsConfig()
options.ErrorCheck(err)
options.ErrorCheck(cfg.prepare())
if len(domains) == 0 {
slog.Info("No domains given.")
return
}
options.ErrorCheck(run(cfg, domains))
}