blob: 1120399cd67ced7953afddcf5c078e1998fd1213 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import json
import os
import socket
import struct
from pathlib import Path
ENV = os.environ.copy()
def ipc(method, data=None):
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
sock.settimeout(10)
sock.connect(ENV['WAYFIRE_SOCKET'])
payload = json.dumps({'method': method, 'data': data or {}}).encode()
sock.sendall(struct.pack('<I', len(payload)) + payload)
def read(n):
result = b''
while len(result) < n:
chunk = sock.recv(n - len(result))
if not chunk:
raise RuntimeError('IPC disconnected')
result += chunk
return result
return json.loads(read(struct.unpack('<I', read(4))[0]))
if __name__ == '__main__':
import sys
print(json.dumps(ipc(sys.argv[1], json.loads(sys.argv[2]) if len(sys.argv) > 2 else None), indent=2))
|