From de139b14b87a6ac756c73d1f1a820d1183c43566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sun, 12 Dec 2021 16:37:35 +0200 Subject: [PATCH 1/3] Bye Freenode --- bot.conf.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.conf.example b/bot.conf.example index accc678..7bd40a1 100644 --- a/bot.conf.example +++ b/bot.conf.example @@ -1,5 +1,5 @@ [server] -host = irc.freenode.net +host = irc.libera.chat port = 6667 nick = o3-base username = o3-base From ed314735f9da6f8bea545d137f419c9b758a5f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sun, 12 Dec 2021 16:37:58 +0200 Subject: [PATCH 2/3] Disable interactive console if stdin is not a tty --- ircbot.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ircbot.py b/ircbot.py index 848e1a9..0fc25f9 100644 --- a/ircbot.py +++ b/ircbot.py @@ -2,6 +2,7 @@ import configparser import select import socket +import sys import threading import time from collections import namedtuple @@ -16,7 +17,8 @@ import line_handling Server = namedtuple('Server', ['host', 'port', 'nick', 'username', 'realname', 'channels']) class LoggerThread(threading.Thread): - def __init__(self, logging_channel, dead_notify_channel): + def __init__(self, interactive_console, logging_channel, dead_notify_channel): + self.interactive_console = interactive_console self.logging_channel = logging_channel self.dead_notify_channel = dead_notify_channel @@ -29,11 +31,11 @@ class LoggerThread(threading.Thread): # Lines that were sent between server and client if message_type == logmessage_types.sent: assert len(message_data) == 1 - print('>' + message_data[0]) + if self.interactive_console: print('>' + message_data[0]) elif message_type == logmessage_types.received: assert len(message_data) == 1 - print('<' + message_data[0]) + if self.interactive_console: print('<' + message_data[0]) # Messages that are from internal components elif message_type == logmessage_types.internal: @@ -391,12 +393,12 @@ def spawn_serverthread(server, auth, cron_control_channel, logging_channel): ServerThread(server, auth, control_channel, cron_control_channel, logging_channel).start() return control_channel -# spawn_loggerthread() → logging_channel, dead_notify_channel +# spawn_loggerthread(interactive_console) → logging_channel, dead_notify_channel # Spawn logger thread and returns the channel it logs and the channel it uses to notify about quiting -def spawn_loggerthread(): +def spawn_loggerthread(interactive_console): logging_channel = channel.Channel() dead_notify_channel = channel.Channel() - LoggerThread(logging_channel, dead_notify_channel).start() + LoggerThread(interactive_console, logging_channel, dead_notify_channel).start() return logging_channel, dead_notify_channel # read_config() → config, server @@ -423,15 +425,17 @@ def read_config(): return config, server, (user, password) if __name__ == '__main__': + interactive_console = sys.stdin.isatty() + config, server, auth = read_config() botcmd.initialize(config = config) cron_control_channel = cron.start() - logging_channel, dead_notify_channel = spawn_loggerthread() + logging_channel, dead_notify_channel = spawn_loggerthread(interactive_console) control_channel = spawn_serverthread(server, auth, cron_control_channel, logging_channel) - while True: + while interactive_console: message = dead_notify_channel.recv(blocking = False) if message is not None: if message[0] == controlmessage_types.quit: From 424e6c7b67e34b278cec113fcb285d490775cf8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sun, 12 Dec 2021 16:45:52 +0200 Subject: [PATCH 3/3] Log connection attempts to server --- constants.py | 2 +- ircbot.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/constants.py b/constants.py index 402a494..7b624cc 100644 --- a/constants.py +++ b/constants.py @@ -4,7 +4,7 @@ class logmessage_types(enum.Enum): sent, received, internal, status = range(4) class internal_submessage_types(enum.Enum): - quit, error = range(2) + quit, error, server = range(3) class controlmessage_types(enum.Enum): quit, reconnect, send_line, ping, ping_timeout = range(5) diff --git a/ircbot.py b/ircbot.py index 0fc25f9..e964149 100644 --- a/ircbot.py +++ b/ircbot.py @@ -50,6 +50,11 @@ class LoggerThread(threading.Thread): assert len(message_data) == 2 print('--- Error', message_data[1]) + elif message_data[0] == internal_submessage_types.server: + assert len(message_data) == 2 + assert len(message_data[1]) == 2 + print(f'--- Connecting to server {message_data[1][0]}:{message_data[1][1]}') + else: print('--- ???', message_data) @@ -295,6 +300,7 @@ class ServerThread(threading.Thread): while True: # Connect to given server address = (self.server.host, self.server.port) + self.logging_channel.send((logmessage_types.internal, internal_submessage_types.server, address)) try: self.server_socket = socket.create_connection(address) except (ConnectionRefusedError, socket.gaierror):