Files

29 lines
949 B
Python

"""Bounded JSON RPC over a private Unix socket; no shell commands exposed."""
import json
import socket
import sys
SOCKET = '/run/deck/control.sock'
def request(data):
with socket.socket(socket.AF_UNIX) as sock:
sock.settimeout(25)
sock.connect(SOCKET)
sock.sendall(json.dumps(data).encode()+b'\n')
with sock.makefile('rb') as stream:
raw = stream.readline(65537)
if len(raw)>65536:
raise ValueError('Ungültige Helper-Antwort.')
result = json.loads(raw)
if 'error' in result and 'installed' not in result:
raise ValueError(result['error'])
return result
if __name__ == '__main__':
try:
data = json.loads(sys.stdin.buffer.readline(32769))
print(json.dumps(request(data)))
except Exception:
print(json.dumps({'error':'Netzwerkaktion fehlgeschlagen. Konfiguration und Verbindung prüfen.'}))
sys.exit(1)