From 3747738424415616453ef7ad3b416c4ea2158461 Mon Sep 17 00:00:00 2001 From: Simon Meggle Date: Fri, 21 Oct 2022 10:15:57 +0200 Subject: [PATCH 1/7] README, FRAGEN, Badge --- FRAGEN.md | 21 ++++++++++++++++ README.md | 71 ++++++++++++++++++++++++++----------------------------- 2 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 FRAGEN.md diff --git a/FRAGEN.md b/FRAGEN.md new file mode 100644 index 0000000..536aee5 --- /dev/null +++ b/FRAGEN.md @@ -0,0 +1,21 @@ +# FRAGEN + +(Eigene Fragen/Überlegungen als [Issue](https://github.com/elabit/checkmk_gematik_tikonn/issues) stellen oder per [Pull Request](https://github.com/elabit/checkmk_gematik_tikonn/pulls) direkt in [](./FRAGEN.md) aufnehmen) + +- Der Agent wurde gegen die Spezifikation der Gematik entwickelt, jedoch nur mit "kocobox"-Konnektoren getestet. +🙋‍♂️ **Funktioniert er auch mit Geräten von RISE und Secunet?** +- Der Agent wurde im Code (und auch im Web-Setup) darauf vorbereitet, gleichzeitig mit verschiedenen WSDL-Versionen umgehen zu können. +🙋‍♂️ **Welche Versionen sind da draußen im Einsatz**? +- Je Konnektor werden auch die zugehörigen Kartenterminals (durch den DCD) angelegt. +🙋‍♂️ **Ist es hilfreich, auch die Kartenterminals im Monitoring zu haben? Aktuell wird nur ein informeller Check "SysInfo" generiert - welche Checks könnten noch nützlich sein?** (siehe Dump der Datenstruktur unten) +🙋‍♂️ **Wie gelingt es, die Kartenterminals mit IP-Adresse anzulegen? (Das wird vom DCD nativ nicht unterstützt)** +- Aktuell sind keine Tests implementiert. **Wer kann diese beisteuern?** +- **Welche anderen Features bzw. Werte könnten noch implementiert werden?** +- Ist es ggf. notwendig, einzelne Kertenterminals zu blacklisten? + +## Appendix + +### Kartenterminal-Info + +![](img/kt_data.png) + diff --git a/README.md b/README.md index 74dea88..6adf3fd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Checkmk Monitoring für Gematik TI-Konnektoren +[![MKP-Build](https://github.com/elabit/checkmk_gematik_tikonn/actions/workflows/mkp-build.yml/badge.svg)](https://github.com/elabit/checkmk_gematik_tikonn/actions/workflows/mkp-build.yml) [![MKP-Build-Release](https://github.com/elabit/checkmk_gematik_tikonn/actions/workflows/mkp-build-release.yml/badge.svg)](https://github.com/elabit/checkmk_gematik_tikonn/actions/workflows/mkp-build-release.yml) [![MD TOC](https://github.com/elabit/checkmk_gematik_tikonn/actions/workflows/md-toc.yml/badge.svg)](https://github.com/elabit/checkmk_gematik_tikonn/actions/workflows/md-toc.yml) + Bitte zuerst lesen 👉 https://forms.gle/13fGKvo98pCev1Cs9 ## Beschreibung @@ -13,30 +15,30 @@ Der Agent wurde vom [Krankenhaus des Landkreises Weilheim-Schongau](https://www. ## Inhalt -* [Checkmk Monitoring für Gematik TI-Konnektoren](#checkmk-monitoring-für-gematik-ti-konnektoren) - * [Beschreibung](#beschreibung) - * [Inhalt](#inhalt) - * [Features](#features) - * [DISCLAIMER](#disclaimer) - * [Tester gesucht! 👨‍🔬](#tester-gesucht-) - * [DEVELOPMENT](#development) - * [Voraussetzungen und Installation](#voraussetzungen-und-installation) - * [Python-Modul "zeep"](#python-modul-zeep) - * [WSDL](#wsdl) - * [Installation des MKPs](#installation-des-mkps) - * [Betrieb](#betrieb) - * [Datasource-Regel](#datasource-regel) - * [Discovery-Regel](#discovery-regel) - * [Logs / Events](#logs--events) - * [DCD / Kartenterminals](#dcd--kartenterminals) - * [Glossar](#glossar) - * [Weiterführende Informationen](#weiterführende-informationen) - * [Hersteller](#hersteller) - * [Dokumente](#dokumente) - * [CREDITS](#credits) +- [Checkmk Monitoring für Gematik TI-Konnektoren](#checkmk-monitoring-für-gematik-ti-konnektoren) + - [Beschreibung](#beschreibung) + - [Inhalt](#inhalt) + - [Features](#features) + - [DISCLAIMER](#disclaimer) + - [Tester gesucht! 👨‍🔬](#tester-gesucht-) + - [DEVELOPMENT](#development) + - [Voraussetzungen und Installation](#voraussetzungen-und-installation) + - [Python-Modul "zeep"](#python-modul-zeep) + - [WSDL](#wsdl) + - [Installation des MKPs](#installation-des-mkps) + - [Betrieb](#betrieb) + - [Datasource-Regel](#datasource-regel) + - [Discovery-Regel](#discovery-regel) + - [Logs / Events](#logs--events) + - [DCD / Kartenterminals](#dcd--kartenterminals) + - [Glossar](#glossar) + - [Weiterführende Informationen](#weiterführende-informationen) + - [Hersteller](#hersteller) + - [Dokumente](#dokumente) + - [CREDITS](#credits) - + @@ -64,25 +66,20 @@ Der Agent wurde vom [Krankenhaus des Landkreises Weilheim-Schongau](https://www. ## Tester gesucht! 👨‍🔬 -Bis zum ersten stabilen Release sind noch folgende Fragen offen. Wer hat Zeit und Lust, diesen Check gegen Konnektoren in seiner (Test!)-Umgebung laufen zu lassen? +Installiere das MKP und lass den Special Agent gegen "Deine" Konnektoren laufen. -Zu klären ist unter anderem: +Es gibt mehrere Möglichkeiten, das Projekt zu unterstützen: -- Der Agent wurde gegen die Spezifikation der Gematik entwickelt, jedoch nur mit "kocobox"-Konnektoren getestet. -🙋‍♂️ **Funktioniert er auch mit Geräten von RISE und Secunet?** -- Der Agent wurde im Code (und auch im Web-Setup) darauf vorbereitet, gleichzeitig mit verschiedenen WSDL-Versionen umgehen zu können. -🙋‍♂️ **Welche Versionen sind da draußen im Einsatz**? -- Je Konnektor werden auch die zugehörigen Kartenterminals (durch den DCD) angelegt. -🙋‍♂️ **Ist es hilfreich, auch die Kartenterminals im Monitoring zu haben? Aktuell wird nur ein informeller Check generiert - welche Checks könnten noch nützlich sein?** (siehe Dump der Datenstruktur unten) -🙋‍♂️ **Wie gelingt es, die Kartenterminals mit IP-Adresse anzulegen? (Das wird vom DCD nativ nicht unterstützt)** -- Aktuell sind keine Tests implementiert. **Wer kann diese beisteuern?** -- **Welche anderen Features bzw. Werte könnten noch implementiert werden?** +- Grundsätzliche Fragen/Überlegungen/Feature Requests beisteuern: + - per [Issue](https://github.com/elabit/checkmk_gematik_tikonn/issues) + - per [Pull Request](https://github.com/elabit/checkmk_gematik_tikonn/pulls) direkt in [FRAGEN.md](./FRAGEN.md) aufnehmen +- Dokumentation (README, Inline-Help, ...) +- Coding (siehe [Development](#development)) Für einen besseren Überblick über die Hersteller- und Versionsabdeckung bitte ich alle Tester, vorab das folgende Formular auszufüllen: https://forms.gle/13fGKvo98pCev1Cs9 -Rückmeldungen jeglicher Art - Probleme, Bugs, Bugfixes, Feature Requests... - bitte ausschließlich über den Issue Tracker oder Pull Requests dieses Projekts. Jede aktive Mithilfe, die das Projekt nach vorn bringt, wird mit einem **Robotmk-LED-Gyrotwister** (limitierte Auflage!) belohnt! 🚀 🎉 @@ -90,9 +87,6 @@ Jede aktive Mithilfe, die das Projekt nach vorn bringt, wird mit einem **Robotmk -![](img/kt_data.png) - - ## DEVELOPMENT Kurzanleitung zum Entwickeln/Debuggen: @@ -115,6 +109,9 @@ Die Kommunikation mit der SOAP-Schnittstelle der Konnektoren erfolgt über das [ ```bash OMD[testsite]:~$ python3 -m pip install zeep ``` + +💡 Die Installation von Python-Modulen per `pip` ist analog auch in einer CMK-Appliance möglich (SSH-Zugriff vorausgesetzt). + ### WSDL Der Special Agent benötigt zur Kommunikation mit der SOAP-Schnittstelle ferner eine [WSDL-Servicebeschreibung](https://de.wikipedia.org/wiki/Web_Services_Description_Language). From 8d7c37d1765edb33eb93e122ed874857449acde6 Mon Sep 17 00:00:00 2001 From: simonmeggle Date: Fri, 21 Oct 2022 08:31:07 +0000 Subject: [PATCH 2/7] Auto update markdown TOC --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6adf3fd..ec1c6dd 100644 --- a/README.md +++ b/README.md @@ -15,30 +15,30 @@ Der Agent wurde vom [Krankenhaus des Landkreises Weilheim-Schongau](https://www. ## Inhalt -- [Checkmk Monitoring für Gematik TI-Konnektoren](#checkmk-monitoring-für-gematik-ti-konnektoren) - - [Beschreibung](#beschreibung) - - [Inhalt](#inhalt) - - [Features](#features) - - [DISCLAIMER](#disclaimer) - - [Tester gesucht! 👨‍🔬](#tester-gesucht-) - - [DEVELOPMENT](#development) - - [Voraussetzungen und Installation](#voraussetzungen-und-installation) - - [Python-Modul "zeep"](#python-modul-zeep) - - [WSDL](#wsdl) - - [Installation des MKPs](#installation-des-mkps) - - [Betrieb](#betrieb) - - [Datasource-Regel](#datasource-regel) - - [Discovery-Regel](#discovery-regel) - - [Logs / Events](#logs--events) - - [DCD / Kartenterminals](#dcd--kartenterminals) - - [Glossar](#glossar) - - [Weiterführende Informationen](#weiterführende-informationen) - - [Hersteller](#hersteller) - - [Dokumente](#dokumente) - - [CREDITS](#credits) +* [Checkmk Monitoring für Gematik TI-Konnektoren](#checkmk-monitoring-für-gematik-ti-konnektoren) + * [Beschreibung](#beschreibung) + * [Inhalt](#inhalt) + * [Features](#features) + * [DISCLAIMER](#disclaimer) + * [Tester gesucht! 👨‍🔬](#tester-gesucht-) + * [DEVELOPMENT](#development) + * [Voraussetzungen und Installation](#voraussetzungen-und-installation) + * [Python-Modul "zeep"](#python-modul-zeep) + * [WSDL](#wsdl) + * [Installation des MKPs](#installation-des-mkps) + * [Betrieb](#betrieb) + * [Datasource-Regel](#datasource-regel) + * [Discovery-Regel](#discovery-regel) + * [Logs / Events](#logs--events) + * [DCD / Kartenterminals](#dcd--kartenterminals) + * [Glossar](#glossar) + * [Weiterführende Informationen](#weiterführende-informationen) + * [Hersteller](#hersteller) + * [Dokumente](#dokumente) + * [CREDITS](#credits) - + From a14a28bd041b19fe4b7cde398a956f3f3602639c Mon Sep 17 00:00:00 2001 From: Simon Meggle Date: Fri, 21 Oct 2022 11:03:21 +0200 Subject: [PATCH 3/7] =?UTF-8?q?VPN-Status=20Zeitstempel:=20ge=C3=A4ndert?= =?UTF-8?q?=20auf=20letzte=20Status=C3=A4nderung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 6 ++++++ README.md | 2 +- agent_based/gematik_tikonn.py | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7005e0..20c7e03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- VPN-Status Zeitstempel: geändert auf "letzte Statusänderung" + ## 0.1-beta - 2022-10-21 Initial release diff --git a/README.md b/README.md index ec1c6dd..3f1b4e7 100644 --- a/README.md +++ b/README.md @@ -228,7 +228,7 @@ Auf Wunsch kann der [DCD](https://docs.checkmk.com/latest/de/dcd.html) eingesetz - v2.3.24 - Gematik - Konnektor-info allgemein: https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/konnektor - - Spezifikation Konnektor: https://www.ina.gematik.de/standard/formhandler/324/gemSpec_Kon_V5_8_0.pdf + - Spezifikation Konnektor: https://fachportal.gematik.de/fachportal-import/files/gemSpec_Kon_V5.9.5.pdf - Implementierungsleitfaden: https://fachportal.gematik.de/fachportal-import/files/gemILF_PS_V2.14.0.pdf - Forum: https://fachportal.gematik.de - Telematik Github Repo der Gematik: https://github.com/gematik/api-telematik diff --git a/agent_based/gematik_tikonn.py b/agent_based/gematik_tikonn.py index 6c31676..b7bcecb 100644 --- a/agent_based/gematik_tikonn.py +++ b/agent_based/gematik_tikonn.py @@ -61,9 +61,10 @@ def check_gematik_tikonn(item, params, section): LOCAL_TZ ) vpn_connected_time_str = vpn_connected_time.strftime("%H:%M Uhr (%d.%m.%Y)") + # Siehe Spezifikation, TAB_KON_568 yield Result( state=vpn_status, - summary="{} ist {} - Letzte Verbindung: {}".format( + summary="{} ist {} - Letzte Statusänderung: {}".format( item, vpn["ConnectionStatus"], vpn_connected_time_str ), ) From 613c8e5f971e2e4214d73bde72571f6bb2037bad Mon Sep 17 00:00:00 2001 From: simonmeggle Date: Fri, 21 Oct 2022 09:04:52 +0000 Subject: [PATCH 4/7] Auto update markdown TOC --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f1b4e7..c8e7576 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Der Agent wurde vom [Krankenhaus des Landkreises Weilheim-Schongau](https://www. * [CREDITS](#credits) - + From 3c0e78d55a5de7f9dbfcbe5c871d224daaee41f3 Mon Sep 17 00:00:00 2001 From: Simon Meggle Date: Mon, 24 Oct 2022 15:35:48 +0200 Subject: [PATCH 5/7] =?UTF-8?q?Default=20params=20f=C3=BCr=20Discovery=20e?= =?UTF-8?q?rg=C3=A4nzt=20(closes=20#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 13 +++++++++++++ agent_based/gematik_tikonn.py | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20c7e03..af919bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +### Changed + +### Fixed + +- Default params für Discovery ergänzt (#3) +### Removed + +### Deprecated + + + ### Changed - VPN-Status Zeitstempel: geändert auf "letzte Statusänderung" diff --git a/agent_based/gematik_tikonn.py b/agent_based/gematik_tikonn.py index b7bcecb..8c55407 100644 --- a/agent_based/gematik_tikonn.py +++ b/agent_based/gematik_tikonn.py @@ -90,7 +90,7 @@ def check_gematik_tikonn(item, params, section): service_name="TI-Konnektor %s", discovery_function=discovery_gematik_tikonn, # Default: TI=ja, SIS=nein - discovery_default_parameters={"vpn": (True, False)}, + discovery_default_parameters={"vpn": (True, False), "peripherie": (True, True)}, discovery_ruleset_name="discovery_gematik_tikonn", check_function=check_gematik_tikonn, # check_ruleset_name="check_params_gematik_tikonn", From 2d7c0af8a38bb003e22e57d34c5ba53723f12fd7 Mon Sep 17 00:00:00 2001 From: Simon Meggle Date: Mon, 24 Oct 2022 15:37:39 +0200 Subject: [PATCH 6/7] HTTP/TLS Support (closes #1 and #4) --- CHANGELOG.md | 9 ++-- agents/special/agent_gematik_tikonn | 42 ++++++++++++------- checks/agent_gematik_tikonn | 7 ++++ web/plugins/wato/datasource_gematik_tikonn.py | 34 ++++++++++++++- 4 files changed, 70 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af919bf..ffd8b5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,16 +9,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -### Changed +- HTTPS/TLS support (#4) + ### Fixed - Default params für Discovery ergänzt (#3) -### Removed - -### Deprecated - - +- Custom HTTP port übergabe gefixt (#1) ### Changed diff --git a/agents/special/agent_gematik_tikonn b/agents/special/agent_gematik_tikonn index 463e3fe..9bc3619 100755 --- a/agents/special/agent_gematik_tikonn +++ b/agents/special/agent_gematik_tikonn @@ -12,6 +12,9 @@ import re import os import sys from zeep import helpers, Client, Settings +from requests import Session +from zeep.transports import Transport + import zeep import datetime import hashlib @@ -48,6 +51,7 @@ class AgentGematikKonnektor: parser.add_argument( "-p", "--port", dest="port", default=80, required=False, help="TCP Port" ) + parser.add_argument("--verifyssl", default=False, action="store_true") parser.add_argument( "-m", "--mandant", @@ -73,6 +77,10 @@ class AgentGematikKonnektor: return parser.parse_args(argv) def main(self, args: Args): + if not args.verifyssl: + os.environ.pop("REQUESTS_CA_BUNDLE", None) + os.environ.pop("CURL_CA_BUNDLE", None) + kontexts = [ Kontext(args.mandant_id, args.client_id, workplace_id) for workplace_id in args.workplace_ids.split(",") @@ -81,11 +89,11 @@ class AgentGematikKonnektor: # Todo Section manager strategy = EventServiceGetResourceInformation() - session = Session(konnektor, strategy, kontexts) + session = KonnektorSession(konnektor, strategy, kontexts, args.port) session.produce_output() strategy = EventServiceGetCardTerminals() - session = Session(konnektor, strategy, kontexts) + session = KonnektorSession(konnektor, strategy, kontexts, args.port) session.produce_output() @@ -127,16 +135,12 @@ class Konnektor(object): else: self.sds_path = sds_path - # self.last_request = "" - # self.last_response = "" - # self.last_statuscode = 0 - # self.last_message = "" - # self.last_reply_headers = "" - # self.last_reply_body = "" - @property def url(self): - return "http://" + self.ip_address + ":" + str(self.port) + if self.port == "443": + return "https://" + self.ip_address + ":" + str(self.port) + else: + return "http://" + self.ip_address + ":" + str(self.port) def zeep2dict(f_wrapped): @@ -489,14 +493,15 @@ class PiggybackGroup: # Context -class Session: - def __init__(self, konnektor: Konnektor, service: EventService, kontexts): +class KonnektorSession: + def __init__(self, konnektor: Konnektor, service: EventService, kontexts, port): self.service = service self.konnektor = konnektor if not type(kontexts) == list: self.kontexts = [kontexts] else: self.kontexts = kontexts + self.port = port self.zeep_settings = Settings(forbid_entities=False) self._client = None @@ -523,9 +528,16 @@ class Session: @property def client(self): if self._client is None: - # TODO: How can WSDL be loaded from variable? - # HEREIWAS - self._client = Client(str(self.service.wsdl), settings=self.zeep_settings) + # SSL support + transport = None + if self.port == "443": + sess = Session() + sess.verify = False + transport = Transport(session=sess) + + self._client = Client( + str(self.service.wsdl), transport=transport, settings=self.zeep_settings + ) return self._client @property diff --git a/checks/agent_gematik_tikonn b/checks/agent_gematik_tikonn index 1c91500..672dab8 100644 --- a/checks/agent_gematik_tikonn +++ b/checks/agent_gematik_tikonn @@ -9,9 +9,12 @@ def agent_gematik_tikonn_arguments(params, hostname, ipaddress): wsdl_v_eventservice = params["wsdl_versions"][0] wsdl_v_signatureservice = params["wsdl_versions"][1] workplace_ids = ",".join(params["workplace_ids"]) + args = [ "--hostname", ipaddress, + "--port", + str(params["port"]), "--mandant", params["mandant_id"], "--client", @@ -23,6 +26,10 @@ def agent_gematik_tikonn_arguments(params, hostname, ipaddress): "--wsdlversion", "SignatureService:{}".format(wsdl_v_signatureservice), ] + + if params["verify_ssl"]: + args.append("--verifyssl") + return args diff --git a/web/plugins/wato/datasource_gematik_tikonn.py b/web/plugins/wato/datasource_gematik_tikonn.py index 1c6c97d..d70509c 100644 --- a/web/plugins/wato/datasource_gematik_tikonn.py +++ b/web/plugins/wato/datasource_gematik_tikonn.py @@ -15,8 +15,13 @@ DropdownChoice, Tuple, ListOfStrings, + FixedValue, + Transform, + Alternative, ) +from cmk.gui.log import logger + # FIXME: Dokumentation versch. Rulespecs! from cmk.gui.plugins.wato.datasource_programs import ( RulespecGroupDatasourceProgramsHardware, @@ -27,6 +32,18 @@ # return TextAscii(title=_("Sector name")) +def forth(data): + if not "verify_ssl" in data: + # logger.critical("BEFORE: " + str(data)) + data["verify_ssl"] = True + # logger.critical("AFTER: " + str(data)) + return data + + +def _transform_valuespec_special_agents_gematik_tikonn(): + return Transform(_valuespec_special_agents_gematik_tikonn(), forth=forth) + + def _valuespec_special_agents_gematik_tikonn(): return Dictionary( title=_("Gematik TI-Konnektor"), @@ -44,6 +61,21 @@ def _valuespec_special_agents_gematik_tikonn(): default_value=80, ), ), + ( + "verify_ssl", + # Transform( + Alternative( + title=_("Gültigkeit des SSL-Zertifikats"), + default_value=True, + elements=[ + FixedValue(True, title=_("überprüfen"), totext=""), + FixedValue(False, title=_("nicht überprüfen"), totext=""), + ], + ), + # forth=lambda v: v if isinstance(v, dict) else {""}), + # forth=forth, + # ), + ), ( "wsdl_versions", Tuple( @@ -121,7 +153,7 @@ def _valuespec_special_agents_gematik_tikonn(): HostRulespec( group=RulespecGroupDatasourceProgramsHardware, name="special_agents:gematik_tikonn", - valuespec=_valuespec_special_agents_gematik_tikonn, + valuespec=_transform_valuespec_special_agents_gematik_tikonn, ) ) ) From 09e829773d63818ef903cb921ed011b65f7a2c97 Mon Sep 17 00:00:00 2001 From: Simon Meggle Date: Mon, 24 Oct 2022 15:41:18 +0200 Subject: [PATCH 7/7] CHANGELOG: v0.1.1-beta --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffd8b5c..117da36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.1.1-beta - 2022-10-24 ### Added