mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 11:55:40 +01:00
Empty rolie (#357)
* Create ROLIE feed if summaries are empty * Formatting, Remove sorting of 0 elements * Handle minimum entry length error as warning in checker * Use empty array instead of creating an empty array to reference * Change schema to allow for empty entry arrays * Use https://raw.githubusercontent.com/oasis-tcs/csaf/81b2663697958bc5f85d14372712a40028fb8338/csaf_2.0/json_schema/ROLIE_feed_json_schema.json as schema for ROLIE feeds * Change label name from empty to undefined * Change default of create_service_document for csaf_provider to true * Config * Count entries in csaf-checker, warn if there are none. * Add Comments to csaf/rolie.go's CountEntries function * Delete index.txt and changes.csv in aggregator if there are no entries. * Create an empty ROLIE feed document when setting up folders during create * nit: set update time stamp in structure init. * Instantiate label checker only once. * Ignore domain not having roles. * provider: Create empty entry section in ROLIE feed. * Stop check for domain if PMD check fails * Add missing continue statement * Report missing ROLIE feed entries in ROLIE feed, not Provider Metadata * Do not ommit empty entries in ROLIE feeds. * Fixed error handling problem introduced by faulty merge. Removed unused errStop handling while there. --------- Co-authored-by: JanHoefelmeyer <hoefelmeyer.jan@gmail.com> Co-authored-by: Sascha L. Teichmann <sascha.teichmann@intevation.de> Co-authored-by: JanHoefelmeyer <Jan Höfelmeyer jhoefelmeyer@intevation.de>
This commit is contained in:
parent
540d02d367
commit
b61912410a
8 changed files with 194 additions and 43 deletions
|
|
@ -17,6 +17,7 @@ import (
|
|||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
"unicode"
|
||||
|
||||
"github.com/ProtonMail/gopenpgp/v2/crypto"
|
||||
|
|
@ -153,10 +154,56 @@ func createFeedFolders(c *config, wellknown string) error {
|
|||
return err
|
||||
}
|
||||
}
|
||||
// Create an empty ROLIE feed document
|
||||
if err := createROLIEfeed(c, t, tlpLink); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// createROLIEfeed creates an empty ROLIE feed
|
||||
func createROLIEfeed(c *config, t tlp, folder string) error {
|
||||
ts := string(t)
|
||||
feedName := "csaf-feed-tlp-" + ts + ".json"
|
||||
|
||||
feed := filepath.Join(folder, feedName)
|
||||
|
||||
feedURL := csaf.JSONURL(
|
||||
c.CanonicalURLPrefix +
|
||||
"/.well-known/csaf/" + ts + "/" + feedName)
|
||||
|
||||
tlpLabel := csaf.TLPLabel(strings.ToUpper(ts))
|
||||
|
||||
links := []csaf.Link{{
|
||||
Rel: "self",
|
||||
HRef: string(feedURL),
|
||||
}}
|
||||
// If we have a service document we need to link it.
|
||||
if c.ServiceDocument {
|
||||
links = append(links, csaf.Link{
|
||||
Rel: "service",
|
||||
HRef: c.CanonicalURLPrefix + "/.well-known/csaf/service.json",
|
||||
})
|
||||
}
|
||||
rolie := &csaf.ROLIEFeed{
|
||||
Feed: csaf.FeedData{
|
||||
ID: "csaf-feed-tlp-" + ts,
|
||||
Title: "CSAF feed (TLP:" + string(tlpLabel) + ")",
|
||||
Link: links,
|
||||
Category: []csaf.ROLIECategory{{
|
||||
Scheme: "urn:ietf:params:rolie:category:information-type",
|
||||
Term: "csaf",
|
||||
}},
|
||||
Updated: csaf.TimeStamp(time.Now().UTC()),
|
||||
Entry: []*csaf.Entry{},
|
||||
},
|
||||
}
|
||||
|
||||
return util.WriteToFile(feed, rolie)
|
||||
|
||||
}
|
||||
|
||||
// createOpenPGPFolder creates an openpgp folder besides
|
||||
// the provider-metadata.json in the csaf folder.
|
||||
func createOpenPGPFolder(c *config, wellknown string) error {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue