mirror of
https://github.com/gocsaf/csaf.git
synced 2025-12-22 11:55:40 +01:00
Added files from the first prototype.
This commit is contained in:
parent
c2a483fc95
commit
fed66c4e27
13 changed files with 1529 additions and 0 deletions
92
cmd/csaf_provider/config.go
Normal file
92
cmd/csaf_provider/config.go
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
const (
|
||||
configEnv = "CSAF_CONFIG"
|
||||
defaultConfigPath = "/usr/lib/casf/config.toml"
|
||||
defaultFolder = "/var/www/"
|
||||
defaultWeb = "/var/www/html"
|
||||
defaultPGPURL = "http://pgp.mit.edu/pks/lookup?search=${KEY}&op=index"
|
||||
)
|
||||
|
||||
type config struct {
|
||||
Key string `toml:"key"`
|
||||
Folder string `toml:"folder"`
|
||||
Web string `toml:"web"`
|
||||
TLPs []tlp `toml:"tlps"`
|
||||
UploadSignature bool `toml:"upload_signature"`
|
||||
PGPURL string `toml:"pgp_url"`
|
||||
Domain string `toml:"domain"`
|
||||
}
|
||||
|
||||
type tlp string
|
||||
|
||||
const (
|
||||
tlpCSAF tlp = "csaf"
|
||||
tlpWhite tlp = "white"
|
||||
tlpGreen tlp = "green"
|
||||
tlpAmber tlp = "amber"
|
||||
tlpRed tlp = "red"
|
||||
)
|
||||
|
||||
func (t tlp) valid() bool {
|
||||
switch t {
|
||||
case tlpCSAF, tlpWhite, tlpGreen, tlpAmber, tlpRed:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func (t *tlp) UnmarshalText(text []byte) error {
|
||||
if s := tlp(text); s.valid() {
|
||||
*t = s
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cfg *config) GetPGPURL(key string) string {
|
||||
return strings.ReplaceAll(cfg.PGPURL, "${KEY}", key)
|
||||
}
|
||||
|
||||
func loadConfig() (*config, error) {
|
||||
path := os.Getenv(configEnv)
|
||||
if path == "" {
|
||||
path = defaultConfigPath
|
||||
}
|
||||
var cfg config
|
||||
if _, err := toml.DecodeFile(path, &cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Preset defaults
|
||||
|
||||
if cfg.Folder == "" {
|
||||
cfg.Folder = defaultFolder
|
||||
}
|
||||
|
||||
if cfg.Web == "" {
|
||||
cfg.Web = defaultWeb
|
||||
}
|
||||
|
||||
if cfg.Domain == "" {
|
||||
cfg.Domain = "http://" + os.Getenv("SERVER_NAME")
|
||||
}
|
||||
|
||||
if cfg.TLPs == nil {
|
||||
cfg.TLPs = []tlp{tlpCSAF, tlpWhite, tlpGreen, tlpAmber, tlpRed}
|
||||
}
|
||||
|
||||
if cfg.PGPURL == "" {
|
||||
cfg.PGPURL = defaultPGPURL
|
||||
}
|
||||
|
||||
return &cfg, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue