|
|
|
@ -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
|
|
|
|
|