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

Write feed URLs in provider metadata.

This commit is contained in:
Sascha L. Teichmann 2021-11-17 11:47:09 +01:00
parent 1d0d8a6d03
commit b82882eb09
3 changed files with 51 additions and 8 deletions

View file

@ -248,19 +248,23 @@ func (c *controller) upload(rw http.ResponseWriter, r *http.Request) {
return err
}
feedURL := csaf.JsonURL(
c.cfg.Domain + "/.well-known/csaf/" + ts + "/" + feedName)
tlpLabel := csaf.TLPLabel(strings.ToUpper(ts))
// Create new if does not exists.
if rolie == nil {
feedURL := c.cfg.Domain +
"/.well-known/csaf/" + ts + "/" + feedName
rolie = &csaf.ROLIEFeed{
ID: "csaf-feed-tlp-" + ts,
Title: "CSAF feed (TLP:" + strings.ToUpper(ts) + ")",
Title: "CSAF feed (TLP:" + string(tlpLabel) + ")",
Link: []csaf.Link{{
Rel: "rel",
HRef: feedURL,
HRef: string(feedURL),
}},
}
}
rolie.Updated = csaf.TimeStamp(time.Now())
year := strconv.Itoa(ex.currentReleaseDate.Year())

View file

@ -3,10 +3,49 @@ package main
import (
"os"
"path/filepath"
"strings"
"github.com/Intevation/csaf_trusted/csaf"
)
func newProviderMetadata(cfg *config) *csaf.ProviderMetadata {
pmd := csaf.NewProviderMetadata(
cfg.Domain + "/.wellknown/csaf/provider-metadata.json")
// Register feeds.
var feeds []csaf.Feed
for _, t := range cfg.TLPs {
if t == tlpCSAF {
continue
}
var (
ts = string(t)
feedName = "csaf-feed-tlp-" + ts + ".json"
feedURL = csaf.JsonURL(
cfg.Domain + "/.well-known/csaf/" + ts + "/" + feedName)
tlpLabel = csaf.TLPLabel(strings.ToUpper(ts))
)
feeds = append(feeds, csaf.Feed{
Summary: "TLP:" + string(tlpLabel) + " advisories",
TLPLabel: &tlpLabel,
URL: &feedURL,
})
}
if len(feeds) > 0 {
pmd.Distributions = []csaf.Distribution{{
Rolie: []csaf.ROLIE{{
Feeds: feeds,
}},
}}
}
return pmd
}
func doTransaction(
cfg *config,
t tlp,
@ -21,8 +60,7 @@ func doTransaction(
f, err := os.Open(metadata)
if err != nil {
if os.IsNotExist(err) {
return csaf.NewProviderMetadata(
cfg.Domain + "/.wellknown/csaf/provider-metadata.json"), nil
return newProviderMetadata(cfg), nil
}
return nil, err
}