Browse Source

Basic concept working

master
Wesley Kerfoot 5 years ago
parent
commit
6241a613d6
  1. 13
      client.py
  2. 4
      server.rkt
  3. 9
      shelltalk.sh

13
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)

4
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)]

9
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"
Loading…
Cancel
Save