175 lines
3.7 KiB
Markdown
175 lines
3.7 KiB
Markdown
# WID Notifier
|
|
|
|
A tool that sends configurable email notifications for
|
|
|
|
- https://wid.cert-bund.de/portal/wid/kurzinformationen
|
|
- https://wid.lsi.bayern.de/portal/wid/warnmeldungen
|
|
|
|
## Supported Platforms
|
|
|
|
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:
|
|
|
|
```json
|
|
{
|
|
"api_fetch_interval": 600,
|
|
"enabled_api_endpoints": [
|
|
"bay",
|
|
"bund"
|
|
],
|
|
"datafile": "data",
|
|
"recipients": [
|
|
{
|
|
"address": "guenther@example.org",,
|
|
"include": [
|
|
{"classification": "kritisch"},
|
|
{"title_contains": "jQuery"}
|
|
]
|
|
}
|
|
],
|
|
"smtp": {
|
|
"from": "from@example.org",
|
|
"host": "example.org",
|
|
"port": 587,
|
|
"user": "from@example.org",
|
|
"password": "SiEhAbEnMiChInSgEsIcHtGeFiLmTdAsDüRfEnSiEnIcHt"
|
|
},
|
|
"template": {
|
|
"subject": "",
|
|
"body": ""
|
|
}
|
|
}
|
|
```
|
|
|
|
## Filters
|
|
|
|
You must filter the notices to be sent per user. Multiple filters can be set per user and multiple criteria can be defined per filter.
|
|
|
|
```json
|
|
"include": [
|
|
{
|
|
"any": false,
|
|
"title_contains": "",
|
|
"classification": "",
|
|
"min_basescore": 0,
|
|
"status": "",
|
|
"products_contain": "",
|
|
"no_patch": "",
|
|
"api_endpoint": ""
|
|
},
|
|
...
|
|
]
|
|
```
|
|
|
|
The following filter criteria are supported. Criteria marked with `*` are for optional fields that are not supported by every API endpoint (e.g. https://wid.lsi.bayern.de) - notices from those endpoints will therefore not be included when using those filters.
|
|
|
|
### any
|
|
|
|
Includes all notices if set to `true`.
|
|
|
|
```json
|
|
{"any": true}
|
|
```
|
|
|
|
### title_contains
|
|
|
|
Include notices whose title contains this text.
|
|
|
|
```json
|
|
{"title_contains": "Denial Of Service"}
|
|
```
|
|
If set to `""`, this criteria will be ignored.
|
|
|
|
### classification
|
|
|
|
Include notices whose classification is in this list.
|
|
Classification can be `"kritisch"`, `"hoch"`, `"mittel"` or `"niedrig"`.
|
|
|
|
```json
|
|
{"classification": "hoch"}
|
|
```
|
|
If set to `""`, this criteria will be ignored.
|
|
|
|
### min_basescore `*`
|
|
|
|
Include notices whose basescore (`0` - `100`) is >= `min_basescore`.
|
|
|
|
```json
|
|
{"min_basescore": 40}
|
|
```
|
|
This criteria will be ignored if set to `0`.
|
|
|
|
### status `*`
|
|
|
|
Include notices with this status. This is usually either `NEU` or `UPDATE`.
|
|
|
|
```json
|
|
{"status": "NEU"}
|
|
```
|
|
If set to `""`, this criteria will be ignored.
|
|
|
|
### products_contain `*`
|
|
|
|
Include notices whose product list contains this text.
|
|
|
|
```json
|
|
{"products_contain": "Debian Linux"}
|
|
```
|
|
If set to `""`, this criteria will be ignored.
|
|
|
|
### no_patch `*`
|
|
|
|
If set to `"true"`, notices where no patch is available will be included.
|
|
|
|
```json
|
|
{"no_patch": "true"}
|
|
```
|
|
|
|
If set to `"false"`, notices where no patch is available will be included.
|
|
|
|
```json
|
|
{"no_patch": "false"}
|
|
```
|
|
|
|
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).
|
|
|
|
All fields from the WidNotice struct can be used.
|
|
|
|
```go
|
|
type WidNotice struct {
|
|
Uuid string
|
|
Name string
|
|
Title string
|
|
Published time.Time
|
|
Classification string
|
|
// optional fields (only fully supported by cert-bund)
|
|
Basescore int // -1 = unknown
|
|
Status string // "" = unknown
|
|
ProductNames []string // empty = unknown
|
|
Cves []string // empty = unknown
|
|
NoPatch string // "" = unknown
|
|
// metadata
|
|
ApiEndpointId string
|
|
PortalUrl string
|
|
}
|
|
```
|
|
|
|
For an example, take a look at `DEFAULT_SUBJECT_TEMPLATE` and `DEFAULT_BODY_TEMPLATE` in [template.go](./template.go).
|