mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 18:15:42 +01:00
Remove the years flag from checker.
This commit is contained in:
parent
f4d00cd9d8
commit
468e91cb8b
4 changed files with 8 additions and 37 deletions
|
|
@ -10,7 +10,6 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
|
@ -38,7 +37,6 @@ type config struct {
|
||||||
Version bool `long:"version" description:"Display version of the binary" toml:"-"`
|
Version bool `long:"version" description:"Display version of the binary" toml:"-"`
|
||||||
Verbose bool `long:"verbose" short:"v" description:"Verbose output" toml:"verbose"`
|
Verbose bool `long:"verbose" short:"v" description:"Verbose output" toml:"verbose"`
|
||||||
Rate *float64 `long:"rate" short:"r" description:"The average upper limit of https operations per second (defaults to unlimited)" toml:"rate"`
|
Rate *float64 `long:"rate" short:"r" description:"The average upper limit of https operations per second (defaults to unlimited)" toml:"rate"`
|
||||||
Years *uint `long:"years" short:"y" description:"Number of years to look back from now" value-name:"YEARS" toml:"years"`
|
|
||||||
Range *models.TimeRange `long:"timerange" short:"t" description:"RANGE of time from which advisories to download" value-name:"RANGE" toml:"timerange"`
|
Range *models.TimeRange `long:"timerange" short:"t" description:"RANGE of time from which advisories to download" value-name:"RANGE" toml:"timerange"`
|
||||||
IgnorePattern []string `long:"ignorepattern" short:"i" description:"Do not download files if their URLs match any of the given PATTERNs" value-name:"PATTERN" toml:"ignorepattern"`
|
IgnorePattern []string `long:"ignorepattern" short:"i" description:"Do not download files if their URLs match any of the given PATTERNs" value-name:"PATTERN" toml:"ignorepattern"`
|
||||||
ExtraHeader http.Header `long:"header" short:"H" description:"One or more extra HTTP header fields" toml:"header"`
|
ExtraHeader http.Header `long:"header" short:"H" description:"One or more extra HTTP header fields" toml:"header"`
|
||||||
|
|
@ -49,7 +47,6 @@ type config struct {
|
||||||
Config string `short:"c" long:"config" description:"Path to config TOML file" value-name:"TOML-FILE" toml:"-"`
|
Config string `short:"c" long:"config" description:"Path to config TOML file" value-name:"TOML-FILE" toml:"-"`
|
||||||
|
|
||||||
clientCerts []tls.Certificate
|
clientCerts []tls.Certificate
|
||||||
ageAccept *models.TimeRange
|
|
||||||
ignorePattern filter.PatternMatcher
|
ignorePattern filter.PatternMatcher
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -125,7 +122,7 @@ func (cfg *config) prepare() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return cfg.prepareTimeRangeFilter()
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// compileIgnorePatterns compiles the configure patterns to be ignored.
|
// compileIgnorePatterns compiles the configure patterns to be ignored.
|
||||||
|
|
@ -148,20 +145,3 @@ func (cfg *config) prepareCertificates() error {
|
||||||
cfg.clientCerts = cert
|
cfg.clientCerts = cert
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// prepareTimeRangeFilter sets up the filter in which time range
|
|
||||||
// advisory should be considered for checking.
|
|
||||||
func (cfg *config) prepareTimeRangeFilter() error {
|
|
||||||
switch {
|
|
||||||
case cfg.Years != nil && cfg.Range != nil:
|
|
||||||
return errors.New(`"timerange" and "years" are both configured: only one allowed`)
|
|
||||||
|
|
||||||
case cfg.Years != nil:
|
|
||||||
years := models.NYears(*cfg.Years)
|
|
||||||
cfg.ageAccept = &years
|
|
||||||
|
|
||||||
case cfg.Range != nil:
|
|
||||||
cfg.ageAccept = cfg.Range
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -243,7 +243,7 @@ func (p *processor) run(domains []string) (*Report, error) {
|
||||||
report := Report{
|
report := Report{
|
||||||
Date: ReportTime{Time: time.Now().UTC()},
|
Date: ReportTime{Time: time.Now().UTC()},
|
||||||
Version: util.SemVersion,
|
Version: util.SemVersion,
|
||||||
TimeRange: p.cfg.ageAccept,
|
TimeRange: p.cfg.Range,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, d := range domains {
|
for _, d := range domains {
|
||||||
|
|
@ -546,7 +546,7 @@ func (p *processor) rolieFeedEntries(feed string) ([]csaf.AdvisoryFile, error) {
|
||||||
rfeed.Entries(func(entry *csaf.Entry) {
|
rfeed.Entries(func(entry *csaf.Entry) {
|
||||||
|
|
||||||
// Filter if we have date checking.
|
// Filter if we have date checking.
|
||||||
if accept := p.cfg.ageAccept; accept != nil {
|
if accept := p.cfg.Range; accept != nil {
|
||||||
if pub := time.Time(entry.Published); !pub.IsZero() && !accept.Contains(pub) {
|
if pub := time.Time(entry.Published); !pub.IsZero() && !accept.Contains(pub) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -667,7 +667,7 @@ func (p *processor) integrity(
|
||||||
if m := yearFromURL.FindStringSubmatch(u); m != nil {
|
if m := yearFromURL.FindStringSubmatch(u); m != nil {
|
||||||
year, _ := strconv.Atoi(m[1])
|
year, _ := strconv.Atoi(m[1])
|
||||||
// Check if we are in checking time interval.
|
// Check if we are in checking time interval.
|
||||||
if accept := p.cfg.ageAccept; accept != nil && !accept.Contains(
|
if accept := p.cfg.Range; accept != nil && !accept.Contains(
|
||||||
time.Date(
|
time.Date(
|
||||||
year, 12, 31, // Assume last day of year.
|
year, 12, 31, // Assume last day of year.
|
||||||
23, 59, 59, 0, // 23:59:59
|
23, 59, 59, 0, // 23:59:59
|
||||||
|
|
@ -973,7 +973,7 @@ func (p *processor) checkChanges(base string, mask whereType) error {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
// Apply date range filtering.
|
// Apply date range filtering.
|
||||||
if accept := p.cfg.ageAccept; accept != nil && !accept.Contains(t) {
|
if accept := p.cfg.Range; accept != nil && !accept.Contains(t) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
path := r[pathColumn]
|
path := r[pathColumn]
|
||||||
|
|
@ -990,7 +990,7 @@ func (p *processor) checkChanges(base string, mask whereType) error {
|
||||||
|
|
||||||
if len(files) == 0 {
|
if len(files) == 0 {
|
||||||
var filtered string
|
var filtered string
|
||||||
if p.cfg.ageAccept != nil {
|
if p.cfg.Range != nil {
|
||||||
filtered = " (maybe filtered out by time interval)"
|
filtered = " (maybe filtered out by time interval)"
|
||||||
}
|
}
|
||||||
p.badChanges.warn("no entries in changes.csv found" + filtered)
|
p.badChanges.warn("no entries in changes.csv found" + filtered)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ Application Options:
|
||||||
--version Display version of the binary
|
--version Display version of the binary
|
||||||
-v, --verbose Verbose output
|
-v, --verbose Verbose output
|
||||||
-r, --rate= The average upper limit of https operations per second (defaults to unlimited)
|
-r, --rate= The average upper limit of https operations per second (defaults to unlimited)
|
||||||
-y, --years=YEARS Number of years to look back from now
|
|
||||||
-t, --timerange=RANGE RANGE of time from which advisories to download
|
-t, --timerange=RANGE RANGE of time from which advisories to download
|
||||||
-i, --ignorepattern=PATTERN Do not download files if their URLs match any of the given PATTERNs
|
-i, --ignorepattern=PATTERN Do not download files if their URLs match any of the given PATTERNs
|
||||||
-H, --header= One or more extra HTTP header fields
|
-H, --header= One or more extra HTTP header fields
|
||||||
|
|
@ -51,7 +50,6 @@ insecure = false
|
||||||
# client_passphrase # not set by default
|
# client_passphrase # not set by default
|
||||||
verbose = false
|
verbose = false
|
||||||
# rate # not set by default
|
# rate # not set by default
|
||||||
# years # not set by default
|
|
||||||
# timerange # not set by default
|
# timerange # not set by default
|
||||||
# header # not set by default
|
# header # not set by default
|
||||||
# validator # not set by default
|
# validator # not set by default
|
||||||
|
|
@ -71,9 +69,9 @@ type 2: error
|
||||||
|
|
||||||
The checker result is a success if no checks resulted in type 2, and a failure otherwise.
|
The checker result is a success if no checks resulted in type 2, and a failure otherwise.
|
||||||
|
|
||||||
The options `years` and `timerange` allow to only check advisories from a given time interval.
|
The option `timerange` allows to only check advisories from a given time interval.
|
||||||
It is only allowed to specify one off them.
|
It is only allowed to specify one off them.
|
||||||
`years` looks number of years back from now. `timerange` values allow finer controls:
|
There are following variants:
|
||||||
|
|
||||||
1. Relative. If the given string follows the rules of being a [Go duration](https://pkg.go.dev/time@go1.20.6#ParseDuration)
|
1. Relative. If the given string follows the rules of being a [Go duration](https://pkg.go.dev/time@go1.20.6#ParseDuration)
|
||||||
the time interval from now minus that duration till now is used.
|
the time interval from now minus that duration till now is used.
|
||||||
|
|
|
||||||
|
|
@ -28,13 +28,6 @@ func NewTimeInterval(a, b time.Time) TimeRange {
|
||||||
return TimeRange{a, b}
|
return TimeRange{a, b}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NYears returns a time interval spanning the last years.
|
|
||||||
func NYears(years uint) TimeRange {
|
|
||||||
now := time.Now()
|
|
||||||
start := now.AddDate(-int(years), 0, 0)
|
|
||||||
return NewTimeInterval(start, now)
|
|
||||||
}
|
|
||||||
|
|
||||||
// guessDate tries to guess an RFC 3339 date time from a given string.
|
// guessDate tries to guess an RFC 3339 date time from a given string.
|
||||||
func guessDate(s string) (time.Time, bool) {
|
func guessDate(s string) (time.Time, bool) {
|
||||||
for _, layout := range []string{
|
for _, layout := range []string{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue