From 9c78abd7f365fdf342a6459abaa4f1061ef722c2 Mon Sep 17 00:00:00 2001 From: dece Date: Tue, 5 Jul 2022 23:35:58 +0200 Subject: [PATCH] shrlok: prefix message length --- edmond/bot.py | 2 +- edmond/plugins/shrlok.py | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/edmond/bot.py b/edmond/bot.py index 3d67b13..020ab0b 100644 --- a/edmond/bot.py +++ b/edmond/bot.py @@ -62,7 +62,7 @@ class Bot(irc.client.SimpleIRCClient, Logger): with open(self.config["storage_file"], "wt") as storage_file: json.dump(self.storage, storage_file, indent=2, sort_keys=True) self.log_d("Saved storage file.") - except (OSError, json.decoder.JSONEncodeError) as exc: + except OSError as exc: self.log_e(f"Could not save storage file: {exc}") def on_welcome(self, connection, event): diff --git a/edmond/plugins/shrlok.py b/edmond/plugins/shrlok.py index 7d98299..49335f2 100644 --- a/edmond/plugins/shrlok.py +++ b/edmond/plugins/shrlok.py @@ -4,7 +4,11 @@ from edmond.plugin import Plugin class ShrlokPlugin(Plugin): - """Use an available shrlok server to allow sharing longer stuff.""" + """Use an available shrlok server to allow sharing longer stuff. + + This plugin does not do anything on its own, but can be used from other + plugins to share longer texts through a Web portal. + """ def __init__(self, bot): super().__init__(bot) @@ -22,15 +26,18 @@ class ShrlokPlugin(Plugin): self.url_root = self.config["url_root"] self.bot.log_d(f"shrlok socket path '{self.socket}'") else: - self.bot.log_i("No socket path specified, shrlok plugin disabled.") + self.bot.log_d("No socket path specified, shrlok plugin disabled.") self.is_ready = False def post_text(self, content): try: - with socket.socket(socket.AF_UNIX, socket.SOCKET_STREAM) as sock: + with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock: sock.connect(self.socket) - sock.sendall(content.encode()) + data = b'{"type":"txt"}\0' + content.encode() + sock.sendall(str(len(data)).encode() + b"\0" + data) response = sock.recv(4096) except OSError as exc: - self.bot.log_e(f"Can't write text file: {exc}") - self.bot.log_i("socket replied with: " + response.decode()) + self.bot.log_e(f"Can't post text file: {exc}") + return None + url = response.decode().replace(self.file_root, self.url_root, count=1) + return url