mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 18:15:42 +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
|
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.
|
// Create new if does not exists.
|
||||||
if rolie == nil {
|
if rolie == nil {
|
||||||
feedURL := c.cfg.Domain +
|
|
||||||
"/.well-known/csaf/" + ts + "/" + feedName
|
|
||||||
rolie = &csaf.ROLIEFeed{
|
rolie = &csaf.ROLIEFeed{
|
||||||
ID: "csaf-feed-tlp-" + ts,
|
ID: "csaf-feed-tlp-" + ts,
|
||||||
Title: "CSAF feed (TLP:" + strings.ToUpper(ts) + ")",
|
Title: "CSAF feed (TLP:" + string(tlpLabel) + ")",
|
||||||
Link: []csaf.Link{{
|
Link: []csaf.Link{{
|
||||||
Rel: "rel",
|
Rel: "rel",
|
||||||
HRef: feedURL,
|
HRef: string(feedURL),
|
||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rolie.Updated = csaf.TimeStamp(time.Now())
|
rolie.Updated = csaf.TimeStamp(time.Now())
|
||||||
|
|
||||||
year := strconv.Itoa(ex.currentReleaseDate.Year())
|
year := strconv.Itoa(ex.currentReleaseDate.Year())
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,49 @@ package main
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/Intevation/csaf_trusted/csaf"
|
"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(
|
func doTransaction(
|
||||||
cfg *config,
|
cfg *config,
|
||||||
t tlp,
|
t tlp,
|
||||||
|
|
@ -21,8 +60,7 @@ func doTransaction(
|
||||||
f, err := os.Open(metadata)
|
f, err := os.Open(metadata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
return csaf.NewProviderMetadata(
|
return newProviderMetadata(cfg), nil
|
||||||
cfg.Domain + "/.wellknown/csaf/provider-metadata.json"), nil
|
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,13 @@ type Feed struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ROLIE struct {
|
type ROLIE struct {
|
||||||
Categories []JsonURL `json:"categories"`
|
Categories []JsonURL `json:"categories,omitempty"`
|
||||||
Feeds []Feed `json:"feeds"` // required
|
Feeds []Feed `json:"feeds"` // required
|
||||||
|
Services []JsonURL `json:"services,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Distribution struct {
|
type Distribution struct {
|
||||||
DirectoryURL string `json:"directory_url"`
|
DirectoryURL string `json:"directory_url,omitempty"`
|
||||||
Rolie []ROLIE `json:"rolie"`
|
Rolie []ROLIE `json:"rolie"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue