mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 11:55:40 +01:00
Write feed URLs in provider metadata.
This commit is contained in:
parent
1d0d8a6d03
commit
b82882eb09
3 changed files with 51 additions and 8 deletions
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,12 +38,13 @@ type Feed struct {
|
|||
}
|
||||
|
||||
type ROLIE struct {
|
||||
Categories []JsonURL `json:"categories"`
|
||||
Categories []JsonURL `json:"categories,omitempty"`
|
||||
Feeds []Feed `json:"feeds"` // required
|
||||
Services []JsonURL `json:"services,omitempty"`
|
||||
}
|
||||
|
||||
type Distribution struct {
|
||||
DirectoryURL string `json:"directory_url"`
|
||||
DirectoryURL string `json:"directory_url,omitempty"`
|
||||
Rolie []ROLIE `json:"rolie"`
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue