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

Added stubs for checks.

This commit is contained in:
Sascha L. Teichmann 2021-12-10 15:44:01 +01:00
parent 712b4ad856
commit 6966e125ac
3 changed files with 219 additions and 12 deletions

View file

@ -21,19 +21,21 @@ type check interface {
report(*state, *Domain)
}
func run(domains []string, checks []check) (*Report, error) {
type checks []check
func (cs checks) run(domains []string) (*Report, error) {
var report Report
for _, d := range domains {
state := newState(d)
for _, ch := range checks {
for _, ch := range cs {
if err := ch.run(state); err != nil {
return nil, err
}
}
domain := &Domain{Name: d}
for _, ch := range checks {
for _, ch := range cs {
ch.report(state, domain)
}
report.Domains = append(report.Domains, domain)
@ -41,3 +43,195 @@ func run(domains []string, checks []check) (*Report, error) {
return &report, nil
}
type baseCheck struct {
num int
description string
}
type tlsCheck struct {
baseCheck
}
type redirectsCheck struct {
baseCheck
}
type providerMetadataCheck struct {
baseCheck
}
type securityCheck struct {
baseCheck
}
type wellknownMetadataCheck struct {
baseCheck
}
type dnsPathCheck struct {
baseCheck
}
type oneFolderPerYearCheck struct {
baseCheck
}
type indexCheck struct {
baseCheck
}
type changesCheck struct {
baseCheck
}
type directoryListingsCheck struct {
baseCheck
}
type integrityCheck struct {
baseCheck
}
type signaturesCheck struct {
baseCheck
}
type publicPGPKeyCheck struct {
baseCheck
}
func (bc *baseCheck) report(_ *state, domain *Domain) {
req := &Requirement{Num: bc.num, Description: bc.description}
domain.Requirements = append(domain.Requirements, req)
}
func (tc *tlsCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (tc *tlsCheck) report(state *state, domain *Domain) {
tc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (rc *redirectsCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (rc *redirectsCheck) report(state *state, domain *Domain) {
rc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (pmdc *providerMetadataCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (pmdc *providerMetadataCheck) report(state *state, domain *Domain) {
pmdc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (sc *securityCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (sc *securityCheck) report(state *state, domain *Domain) {
sc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (wmdc *wellknownMetadataCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (wmdc *wellknownMetadataCheck) report(state *state, domain *Domain) {
wmdc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (dpc *dnsPathCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (dpc *dnsPathCheck) report(state *state, domain *Domain) {
dpc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (ofpyc *oneFolderPerYearCheck) report(state *state, domain *Domain) {
ofpyc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (ofpyc *oneFolderPerYearCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (ic *indexCheck) report(state *state, domain *Domain) {
ic.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (ic *indexCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (cc *changesCheck) report(state *state, domain *Domain) {
cc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (cc *changesCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (dlc *directoryListingsCheck) report(state *state, domain *Domain) {
dlc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (dlc *directoryListingsCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (ic *integrityCheck) report(state *state, domain *Domain) {
ic.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (ic *integrityCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (sc *signaturesCheck) report(state *state, domain *Domain) {
sc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (sc *signaturesCheck) run(*state) error {
// TODO: Implement me!
return nil
}
func (ppkc *publicPGPKeyCheck) report(state *state, domain *Domain) {
ppkc.baseCheck.report(state, domain)
// TODO: Implement me!
}
func (ppkc *publicPGPKeyCheck) run(*state) error {
// TODO: Implement me!
return nil
}

View file

@ -28,10 +28,6 @@ type options struct {
Format string `short:"f" long:"format" choice:"json" choice:"html" description:"Format of report" default:"json"`
}
var checks = []check{
// TODO: Implement me!
}
func errCheck(err error) {
if err != nil {
if e, ok := err.(*flags.Error); ok && e.Type == flags.ErrHelp {
@ -101,6 +97,24 @@ func writeReport(report *Report, opts *options) error {
return writer(report, w)
}
func buildChecks() checks {
return checks{
&tlsCheck{baseCheck{3, "TLS"}},
&redirectsCheck{baseCheck{6, "Redirects"}},
&providerMetadataCheck{baseCheck{7, "provider-metadata.json"}},
&securityCheck{baseCheck{8, "security.txt"}},
&wellknownMetadataCheck{baseCheck{9, "/.well-known/csaf/provider-metadata.json"}},
&dnsPathCheck{baseCheck{10, "DNS path"}},
&oneFolderPerYearCheck{baseCheck{11, "One folder per year"}},
&indexCheck{baseCheck{12, "index.txt"}},
&changesCheck{baseCheck{13, "changes.csv"}},
&directoryListingsCheck{baseCheck{14, "Directory listings"}},
&integrityCheck{baseCheck{18, "Integrity"}},
&signaturesCheck{baseCheck{19, "Signatures"}},
&publicPGPKeyCheck{baseCheck{20, "Public PGP Key"}},
}
}
func main() {
opts := new(options)
@ -112,7 +126,7 @@ func main() {
return
}
report, err := run(domains, checks)
report, err := buildChecks().run(domains)
errCheck(err)
errCheck(writeReport(report, opts))

View file

@ -7,15 +7,14 @@
</head>
<body>
<h1>CSAF-Checker - Report</h1>
{{ range .Domains }}
{{- range .Domains }}
<h2>{{ .Name }}</h2>
Requirements:
<dl>
{{ range .Requirements }}
<dt>{{ .Num }} - {{ .Description }}</dt>
<dt><strong>Requirement {{ .Num }}: {{ .Description }}</strong></dt>
{{ range .Messages }}
{{ end }}
<dd>- {{ . }}</dd>
{{ end }}
{{ end }}
</dl>
{{ end }}