aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/clef/docs/qubes/qubes-client.py
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/clef/docs/qubes/qubes-client.py')
-rw-r--r--cmd/clef/docs/qubes/qubes-client.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/cmd/clef/docs/qubes/qubes-client.py b/cmd/clef/docs/qubes/qubes-client.py
new file mode 100644
index 000000000..93a74b899
--- /dev/null
+++ b/cmd/clef/docs/qubes/qubes-client.py
@@ -0,0 +1,23 @@
+"""
+This implements a dispatcher which listens to localhost:8550, and proxies
+requests via qrexec to the service qubes.EthSign on a target domain
+"""
+
+import http.server
+import socketserver,subprocess
+
+PORT=8550
+TARGET_DOMAIN= 'debian-work'
+
+class Dispatcher(http.server.BaseHTTPRequestHandler):
+ def do_POST(self):
+ post_data = self.rfile.read(int(self.headers['Content-Length']))
+ p = subprocess.Popen(['/usr/bin/qrexec-client-vm',TARGET_DOMAIN,'qubes.Clefsign'],stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+ output = p.communicate(post_data)[0]
+ self.wfile.write(output)
+
+
+with socketserver.TCPServer(("",PORT), Dispatcher) as httpd:
+ print("Serving at port", PORT)
+ httpd.serve_forever()
+