Added an api endpoint filter and updated the README

This commit is contained in:
ChaoticByte 2023-10-13 19:58:24 +02:00
parent 1fe6bacbc2
commit eef075e899
4 changed files with 20 additions and 1 deletions

View file

@ -9,6 +9,13 @@ A tool that sends configurable email notifications for
This Software only supports Linux.
## Supported API Endpoints
| ID | Portal URL |
|--------|-------------------------------------------------------|
| `bund` | https://wid.cert-bund.de/portal/wid/kurzinformationen |
| `bay` | https://wid.lsi.bayern.de/portal/wid/warnmeldungen |
# Config
Example:
@ -57,7 +64,8 @@ You must filter the notices to be sent per user. Multiple filters can be set per
"min_basescore": 0,
"status": "",
"products_contain": "",
"no_patch": ""
"no_patch": "",
"api_endpoint": ""
},
...
]
@ -135,6 +143,10 @@ If set to `"false"`, notices where no patch is available will be included.
If set to `""`, this criteria will be ignored.
### api_endpoint
Includes notices from the given [API Endpoint](#supported-api-endpoints).
## Templates
The syntax for the mail templates is described [here](https://pkg.go.dev/text/template).
@ -155,6 +167,7 @@ type WidNotice struct {
Cves []string // empty = unknown
NoPatch string // "" = unknown
// metadata
ApiEndpointId string
PortalUrl string
}
```

View file

@ -12,6 +12,7 @@ type Filter struct {
Status string `json:"status"`
ProductsContain string `json:"products_contain"`
NoPatch string `json:"no_patch"`
ApiEndpointId string `json:"api_endpoint"`
}
func (f Filter) filter(notices []WidNotice) []WidNotice {
@ -40,6 +41,9 @@ func (f Filter) filter(notices []WidNotice) []WidNotice {
if f.NoPatch != "" {
matches = append(matches, f.NoPatch == n.NoPatch)
}
if f.ApiEndpointId != "" {
matches = append(matches, f.ApiEndpointId == n.ApiEndpointId)
}
}
allMatch := len(matches) > 0
for _, m := range matches {

View file

@ -19,6 +19,7 @@ type WidNotice struct {
Cves []string `json:"cves"` // empty = unknown
NoPatch string `json:"noPatch"` // "" = unknown
// metadata
ApiEndpointId string
PortalUrl string
}

View file

@ -98,6 +98,7 @@ func parseApiResponse(data map[string]interface{}, apiEndpoint ApiEndpoint) []Wi
Name: d["name"].(string),
Title: d["title"].(string),
Classification: d["classification"].(string),
ApiEndpointId: apiEndpoint.Id,
}
published, err := time.Parse(PUBLISHED_TIME_FORMAT, d["published"].(string))
if err != nil {