diff --git a/src/derp/bot.py b/src/derp/bot.py index 22a4940..cde2a18 100644 --- a/src/derp/bot.py +++ b/src/derp/bot.py @@ -24,6 +24,7 @@ class Bot: host=config["server"]["host"], port=config["server"]["port"], tls=config["server"]["tls"], + tls_verify=config["server"].get("tls_verify", True), ) self.nick: str = config["server"]["nick"] self.prefix: str = config["bot"]["prefix"] diff --git a/src/derp/irc.py b/src/derp/irc.py index 305d611..de4bcc3 100644 --- a/src/derp/irc.py +++ b/src/derp/irc.py @@ -84,10 +84,12 @@ def format_msg(command: str, *params: str) -> str: class IRCConnection: """Async TCP/TLS connection to an IRC server.""" - def __init__(self, host: str, port: int, tls: bool = True) -> None: + def __init__(self, host: str, port: int, tls: bool = True, + tls_verify: bool = True) -> None: self.host = host self.port = port self.tls = tls + self.tls_verify = tls_verify self._reader: asyncio.StreamReader | None = None self._writer: asyncio.StreamWriter | None = None @@ -96,6 +98,9 @@ class IRCConnection: ssl_ctx = None if self.tls: ssl_ctx = ssl.create_default_context() + if not self.tls_verify: + ssl_ctx.check_hostname = False + ssl_ctx.verify_mode = ssl.CERT_NONE log.info("connecting to %s:%d (tls=%s)", self.host, self.port, self.tls) self._reader, self._writer = await asyncio.open_connection(