minor vnc fixes

This commit is contained in:
Devaev Maxim 2020-03-20 04:47:21 +03:00
parent 0ac8b0c3e4
commit 8164594b92
3 changed files with 28 additions and 26 deletions

View File

@ -41,6 +41,7 @@ depends=(
python-pam
python-pillow
python-xlib
freetype2
v4l-utils
nginx-mainline
openssl

View File

@ -352,12 +352,12 @@ class RfbClient: # pylint: disable=too-many-instance-attributes
"middle": bool(buttons & 0x2),
},
wheel={
"x": (32 if buttons & 0x40 else (-32 if buttons & 0x20 else 0)),
"y": (32 if buttons & 0x10 else (-32 if buttons & 0x8 else 0)),
"x": (-4 if buttons & 0x40 else (4 if buttons & 0x20 else 0)),
"y": (-4 if buttons & 0x10 else (4 if buttons & 0x8 else 0)),
},
move={
"x": round(to_x / self._width * 65535 + -32768),
"y": round(to_y / self._width * 65535 + -32768),
"y": round(to_y / self._height * 65535 + -32768),
},
)

View File

@ -24,6 +24,7 @@ import asyncio
import asyncio.queues
import socket
import dataclasses
import contextlib
import json
from typing import Dict
@ -281,31 +282,31 @@ class VncServer:
logger = get_logger(0)
logger.info("Listening VNC on TCP [%s]:%d ...", self.__host, self.__port)
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, False)
sock.bind((self.__host, self.__port))
with contextlib.closing(socket.socket(socket.AF_INET6, socket.SOCK_STREAM)) as sock:
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, False)
sock.bind((self.__host, self.__port))
loop = asyncio.get_event_loop()
server = loop.run_until_complete(asyncio.start_server(
client_connected_cb=self.__handle_client,
sock=sock,
backlog=self.__max_clients,
loop=loop,
))
loop = asyncio.get_event_loop()
server = loop.run_until_complete(asyncio.start_server(
client_connected_cb=self.__handle_client,
sock=sock,
backlog=self.__max_clients,
loop=loop,
))
try:
loop.run_forever()
except (SystemExit, KeyboardInterrupt):
pass
finally:
server.close()
loop.run_until_complete(server.wait_closed())
tasks = asyncio.Task.all_tasks()
for task in tasks:
task.cancel()
loop.run_until_complete(asyncio.gather(*tasks, return_exceptions=True))
loop.close()
logger.info("Bye-bye")
try:
loop.run_forever()
except (SystemExit, KeyboardInterrupt):
pass
finally:
server.close()
loop.run_until_complete(server.wait_closed())
tasks = asyncio.Task.all_tasks()
for task in tasks:
task.cancel()
loop.run_until_complete(asyncio.gather(*tasks, return_exceptions=True))
loop.close()
logger.info("Bye-bye")
async def __handle_client(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
await _Client(reader, writer, self.__kvmd, self.__streamer, self.__symmap, self.__shared_params).run()