diff --git a/shrlok/shrlok.py b/shrlok/shrlok.py index a40f9b1..273333b 100644 --- a/shrlok/shrlok.py +++ b/shrlok/shrlok.py @@ -48,6 +48,9 @@ class Handler(socketserver.StreamRequestHandler): print("Unknown type.") return + if not file_name: + return + print(f"{len(data)} bytes — {header} — '{file_name}'.") self.request.sendall(file_name.encode()) @@ -57,7 +60,8 @@ def write_text(data: bytes, title=None): html = HTML_TEMPLATE.format(title=title or "?", content=content) path = str(Path(ARGS.root) / "txt") if not os.path.isdir(path): - os.makedirs(path) + print(f"Missing '{path}' folder.") + return None with tempfile.NamedTemporaryFile( mode="wt", dir=path, @@ -65,19 +69,27 @@ def write_text(data: bytes, title=None): delete=False ) as output_file: output_file.write(html) + os.chmod(output_file.name, 0o644) return output_file.name def main(): - argp = argparse.ArgumentParser() + argp = argparse.ArgumentParser(description="Share stuff through a socket.") argp.add_argument("root", help="root path where to put files") + argp.add_argument("-s", "--socket", help="socket path") global ARGS ARGS = argp.parse_args() - uid = os.getuid() - socket_path = f"/run/user/{uid}/shr.sock" + socket_path = ARGS.socket + if not socket_path: + runtime_dir = os.environ.get("RUNTIME_DIRECTORY") + if not runtime_dir: + exit("No socket path nor runtime directory specified.") + socket_path = os.path.join(runtime_dir, "shr.sock") + print("Socket path:", socket_path) if os.path.exists(socket_path): os.unlink(socket_path) + try: with socketserver.UnixStreamServer(socket_path, Handler) as server: server.serve_forever()