{"id":20286111,"url":"https://github.com/chaoticbyte/wid-notifier","last_synced_at":"2025-12-24T17:29:53.346Z","repository":{"id":199815561,"uuid":"703734731","full_name":"ChaoticByte/wid-notifier","owner":"ChaoticByte","description":"A service that waits for security notices from wid.cert-bund.de and wid.lsi.bayern.de and sends configurable email notifications","archived":false,"fork":false,"pushed_at":"2024-07-22T18:11:58.000Z","size":62,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-08T07:55:04.871Z","etag":null,"topics":["advisories","bsi","cert-bund","email","federal-bureau-of-information-security","filter","go","golang","lsi-bayern","mail-notification","notices","notifications","security","security-notices","wid"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChaoticByte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-11T20:04:38.000Z","updated_at":"2024-07-22T17:59:26.000Z","dependencies_parsed_at":"2023-10-12T18:13:24.365Z","dependency_job_id":"6f13bec1-18fd-4b2d-8185-f8e3bfda703c","html_url":"https://github.com/ChaoticByte/wid-notifier","commit_stats":null,"previous_names":["chaoticbyte/wid-notifier"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChaoticByte%2Fwid-notifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChaoticByte%2Fwid-notifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChaoticByte%2Fwid-notifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChaoticByte%2Fwid-notifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChaoticByte","download_url":"https://codeload.github.com/ChaoticByte/wid-notifier/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243307333,"owners_count":20270256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["advisories","bsi","cert-bund","email","federal-bureau-of-information-security","filter","go","golang","lsi-bayern","mail-notification","notices","notifications","security","security-notices","wid"],"created_at":"2024-11-14T14:31:06.823Z","updated_at":"2025-12-24T17:29:53.340Z","avatar_url":"https://github.com/ChaoticByte.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WidNotifier\n\nThe German [BSI](https://www.bsi.bund.de/) and [LSI Bavaria](https://lsi.bayern.de/) each have a page listing current security notices.  \nThis software queries the APIs of these services for new security notices and sends configurable email notifications.\n\n## API Endpoints\n\n|     | ID     | Portal URL                                            |\n|-----|--------|-------------------------------------------------------|\n| BSI | `bund` | https://wid.cert-bund.de/portal/wid/kurzinformationen |\n| LSI | `bay`  | https://wid.lsi.bayern.de/portal/wid/warnmeldungen    |\n\n## Supported Platforms\n\nThis Software only supports Linux.\n\n# Build\n\nTo cross-compile the software for `i386`, `amd64`, `arm` and `arm64`, run `build.sh`.  \nYou need Go 1.22.x and git.\n\n# Usage\n\n```bash\n./wid-notifier \u003cconfigfile\u003e\n```\n\nwhere `\u003cconfigfile\u003e` is the path of your configuration file. If you don't have a config file yet, the software will create an initial config at the given location. See [Configuration](#configuration) for more info.\n\n# Configuration\n\nExample:\n\n```json\n{\n  \"api_fetch_interval\": 600,\n  \"enabled_api_endpoints\": [\n    \"bay\",\n    \"bund\"\n  ],\n  \"datafile\": \"data.json\",\n  \"loglevel\": 2,\n  \"lists\": [\n    {\n      \"name\": \"Example List\",\n      \"recipients\": [\"someone@example.org\"],\n      \"filter\": [\n        {\"classification\": \"hoch\", \"title_contains\": \"Microsoft\"},\n        {\"classification\": \"kritisch\"}\n      ]\n    }\n  ],\n  \"smtp\": {\n    \"from\": \"user@localhost\",\n    \"host\": \"127.0.0.1\",\n    \"port\": 587,\n    \"user\": \"user@localhost\",\n    \"password\": \"change me :)\"\n  },\n  \"template\": {\n    \"subject\": \"\",\n    \"body\": \"\"\n  }\n}\n```\n\nTo show debug messages, set the `loglevel` to `3`.\n\n## Filters\n\nYou define filters for notices to be sent (per recipient). Multiple filters can be set per recipient and multiple criteria can be used per filter. The configuration field for those filters is `include`. See [Configuration](#configuration) for an example.\n\nIf a notice is included is determined by the following logic:\n\n```\n{criteria, criteria, ... ALL APPLY}\nOR {criteria, criteria, ... ALL APPLY}\nOR ...\n```\n\nThe following criteria are available. Criteria marked with * are 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 criteria in filters.\n\n```json\n\"include\": [\n  {\n    \"any\": false,\n    \"title_contains\": \"\",\n    \"classification\": \"\",\n    \"min_basescore\": 0,\n    \"status\": \"\",\n    \"products_contain\": \"\",\n    \"no_patch\": \"\",\n    \"api_endpoint\": \"\"\n  },\n  ...\n]\n```\n\n### any\n\nIncludes all notices if set to `true`.\n\n```json\n\"any\": true\n```\n\n### title_contains\n\nInclude notices whose title contains this text.\n\n```json\n\"title_contains\": \"Denial Of Service\"\n```\nIf set to `\"\"`, this criteria will be ignored.\n\n### classification\n\nInclude notices whose classification is in this list.  \nClassification can be `\"kritisch\"`, `\"hoch\"`, `\"mittel\"` or `\"niedrig\"`.\n\n```json\n\"classification\": \"hoch\"\n```\nIf set to `\"\"`, this criteria will be ignored.\n\n### min_basescore *\n\nInclude notices whose basescore (`0` - `100`) is \u003e= `min_basescore`.\n\n```json\n\"min_basescore\": 40\n```\nThis criteria will be ignored if set to `0`.\n\n### status *\n\nInclude notices with this status. This is usually either `NEU` or `UPDATE`.\n\n```json\n\"status\": \"NEU\"\n```\nIf set to `\"\"`, this criteria will be ignored.\n\n### products_contain *\n\nInclude notices whose product list contains this text.\n\n```json\n\"products_contain\": \"Debian Linux\"\n```\nIf set to `\"\"`, this criteria will be ignored.\n\n### no_patch *\n\nIf set to `\"true\"`, notices where no patch is available will be included.\n\n```json\n\"no_patch\": \"true\"\n```\n\nIf set to `\"false\"`, notices where no patch is available will be included.\n\n```json\n\"no_patch\": \"false\"\n```\n\nIf set to `\"\"`, this criteria will be ignored.\n\n### api_endpoint\n\nIncludes notices from the given [API Endpoint](#api-endpoints).\n\n```json\n\"api_endpoint\": \"bund\"\n```\n\nIf set to `\"\"`, this criteria will be ignored.\n\n## Templates\n\nIf you don't like the default appearance of the notification mails, you can write your own templates for the mail subject and body.\n\nThe syntax for the mail templates is described [here](https://pkg.go.dev/text/template).\n\nAll fields from the WidNotice struct can be used.\n\n```go\ntype WidNotice struct {\n  Uuid string\n  Name string\n  Title string\n  Published time.Time\n  Classification string\n  // optional fields (only fully supported by cert-bund)\n  Basescore int // -1 = unknown\n  Status string // \"\" = unknown\n  ProductNames []string // empty = unknown\n  Cves []string // empty = unknown\n  NoPatch string // \"\" = unknown\n  // metadata\n  ApiEndpointId string\n  PortalUrl string\n}\n```\n\nAdditionally, the field `WidNotifierVersion` holds the version of the software.\n\nFor an example, take a look at `DEFAULT_SUBJECT_TEMPLATE` and `DEFAULT_BODY_TEMPLATE` in [template.go](./template.go).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaoticbyte%2Fwid-notifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchaoticbyte%2Fwid-notifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaoticbyte%2Fwid-notifier/lists"}