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.
This commit is contained in:
parent
98bcce60e3
commit
92337cb000
38
server/backends/saas.py
Normal file
38
server/backends/saas.py
Normal file
|
@ -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()
|
Loading…
Reference in New Issue
Block a user