From 6241a613d61af1db54fa372f574c298aefa8a603 Mon Sep 17 00:00:00 2001 From: Wesley Kerfoot Date: Fri, 14 Jun 2019 23:50:26 -0400 Subject: [PATCH] Basic concept working --- client.py | 13 ++++++++----- server.rkt | 4 ++++ shelltalk.sh | 9 +++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 shelltalk.sh diff --git a/client.py b/client.py index a35948a..0fa1414 100755 --- a/client.py +++ b/client.py @@ -3,6 +3,7 @@ import socket import argparse +from base64 import b64encode, b64decode from contextlib import closing from json import loads @@ -19,7 +20,7 @@ def read_log(pid): if b"\n" in chunk: break - return loads(b"".join(buf).decode("utf-8")) + return [b64decode(l) for l in loads(b"".join(buf).decode("utf-8"))] def spawn(pid): with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s: @@ -29,7 +30,8 @@ def spawn(pid): def write(pid, msg): with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as s: s.connect("/tmp/shelltalk.sock") - s.send(("write {0} {1}\n".format(pid, msg)).encode("utf-8")) + message = b64encode(msg.encode("utf-8")) + s.send(("write {0} {1}\n".format(pid, message.decode("utf-8"))).encode("utf-8")) parser = argparse.ArgumentParser() @@ -51,10 +53,11 @@ parser.add_argument("-R", args = parser.parse_args() if args.spawn: - print(spawn(*args.spawn)) + spawn(*args.spawn) if args.write: - print(write(*args.write)) + write(*args.write) if args.read: - print(read_log(*args.read)) + for line in read_log(*args.read): + print(line) diff --git a/server.rkt b/server.rkt index 1e34d65..c82c4f8 100755 --- a/server.rkt +++ b/server.rkt @@ -33,6 +33,7 @@ ;; Message handling functions (define (write-to entries out) + (displayln entries) (with-handlers ([exn:fail? (const '())]) (write-json entries out) (display "\n" out))) @@ -89,6 +90,7 @@ (match (string-split input-string) [(list "spawn" pid) (displayln "got spawn") + (displayln pid) (thread-send message-handler (cons 'spawn pid)) (handle-connection in out)] @@ -99,6 +101,8 @@ [(list "write" pid message) (displayln "got write") + (displayln pid) + (displayln message) (thread-send message-handler (list 'log pid message)) (handle-connection in out)] diff --git a/shelltalk.sh b/shelltalk.sh new file mode 100644 index 0000000..e834b8b --- /dev/null +++ b/shelltalk.sh @@ -0,0 +1,9 @@ +# Place this in your ~/.bashrc file + +function log() { + /home/wes/code/shelltalk/client.py -W "$$" "$(history 1)" > /dev/null 2>&1 +} + +/home/wes/code/shelltalk/client.py -S $$ + +export PROMPT_COMMAND="$PROMPT_COMMAND; log"