From 92337cb0004081492f4cf371129a8ae62d8dbd2f Mon Sep 17 00:00:00 2001 From: Samuel Sloniker Date: Sat, 10 Jul 2021 18:51:15 -0700 Subject: [PATCH] Add SaaS backend This backend works just like the X11 backend, except it starts HamClock on its own rather than relying on an existing instance. As the name implies, it is intended for SaaS environments where multiple HamClocks may be running on a single machine, and running unused instances would be a significant waste of resources. --- server/backends/saas.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 server/backends/saas.py diff --git a/server/backends/saas.py b/server/backends/saas.py new file mode 100644 index 0000000..3b17b0d --- /dev/null +++ b/server/backends/saas.py @@ -0,0 +1,38 @@ +import os +import subprocess +import threading +import time + + +def _long_touch(x, y): + os.environ['DISPLAY'] = config['display'] + subprocess.run(['xdotool', 'mousemove', str(x), str(y), 'mousedown', '1']) + time.sleep(2) + subprocess.run(['xdotool', 'mouseup', '1']) + + +def get_img(): + os.environ['DISPLAY'] = config['display'] + xwd = subprocess.Popen(['xwd', '-root', '-silent'], stdout=subprocess.PIPE) + convert = subprocess.Popen(['convert', 'xwd:-', 'bmp:img.bmp'], stdin=xwd.stdout) + convert.wait() + return 'img.bmp' + + +def touch(x, y, is_long): + os.environ['DISPLAY'] = config['display'] + if is_long: + threading.Thread(target=_long_touch, args=(x, y,)).start() + else: + subprocess.run(['xdotool', 'mousemove', str(x), str(y), 'click', '1']) + + +def connect(): + global _hamclock + os.environ['DISPLAY'] = config['display'] + _hamclock = subprocess.Popen(config['hamclock_bin']) + + +def disconnect(): + _hamclock.terminate() + _hamclock.wait()