diff options
-rw-r--r-- | kvmd/aioproc.py | 10 | ||||
-rw-r--r-- | kvmd/apps/kvmd/server.py | 4 | ||||
-rw-r--r-- | kvmd/plugins/hid/otg/device.py | 8 | ||||
-rw-r--r-- | kvmd/plugins/hid/serial.py | 7 | ||||
-rw-r--r-- | testenv/tests/plugins/auth/test_pam.py | 2 |
5 files changed, 17 insertions, 14 deletions
diff --git a/kvmd/aioproc.py b/kvmd/aioproc.py index a778141d..4c503bca 100644 --- a/kvmd/aioproc.py +++ b/kvmd/aioproc.py @@ -27,6 +27,8 @@ import signal from typing import Tuple from typing import List +import setproctitle + # ===== async def run_process(cmd: List[str], err_to_null: bool=False) -> asyncio.subprocess.Process: # pylint: disable=no-member @@ -34,7 +36,7 @@ async def run_process(cmd: List[str], err_to_null: bool=False) -> asyncio.subpro *cmd, stdout=asyncio.subprocess.PIPE, stderr=(asyncio.subprocess.DEVNULL if err_to_null else asyncio.subprocess.STDOUT), - preexec_fn=preexec_ignore_sigint, + preexec_fn=ignore_sigint, )) @@ -44,5 +46,9 @@ async def read_process(cmd: List[str], err_to_null: bool=False) -> Tuple[asyncio return (proc, stdout.decode(errors="ignore").strip()) -def preexec_ignore_sigint() -> None: +def ignore_sigint() -> None: signal.signal(signal.SIGINT, signal.SIG_IGN) + + +def rename_process(suffix: str, prefix: str="kvmd") -> None: + setproctitle.setproctitle(f"{prefix}/{suffix}: {setproctitle.getproctitle()}") diff --git a/kvmd/apps/kvmd/server.py b/kvmd/apps/kvmd/server.py index 423e77dc..aa4cd83b 100644 --- a/kvmd/apps/kvmd/server.py +++ b/kvmd/apps/kvmd/server.py @@ -37,7 +37,6 @@ from typing import Any import aiohttp import aiohttp.web -import setproctitle from ...logging import get_logger @@ -56,6 +55,7 @@ from ...validators.kvm import valid_stream_quality from ...validators.kvm import valid_stream_fps from ... import aiotools +from ... import aioproc from .auth import AuthManager from .info import InfoManager @@ -215,7 +215,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins def run(self, **kwargs: Any) -> None: # type: ignore # pylint: disable=arguments-differ self.__hid.start() - setproctitle.setproctitle(f"kvmd/main: {setproctitle.getproctitle()}") + aioproc.rename_process("main") super().run(**kwargs) async def _make_app(self) -> aiohttp.web.Application: diff --git a/kvmd/plugins/hid/otg/device.py b/kvmd/plugins/hid/otg/device.py index d1a2c86c..44c286cb 100644 --- a/kvmd/plugins/hid/otg/device.py +++ b/kvmd/plugins/hid/otg/device.py @@ -22,7 +22,6 @@ import os import select -import signal import multiprocessing import multiprocessing.queues import queue @@ -31,11 +30,10 @@ import time from typing import Dict -import setproctitle - from ....logging import get_logger from .... import aiomulti +from .... import aioproc # ===== @@ -78,8 +76,8 @@ class BaseDeviceProcess(multiprocessing.Process): # pylint: disable=too-many-in logger = get_logger(0) logger.info("Started HID-%s pid=%d", self.__name, os.getpid()) - signal.signal(signal.SIGINT, signal.SIG_IGN) - setproctitle.setproctitle(f"kvmd/hid-{self.__name}: {setproctitle.getproctitle()}") + aioproc.ignore_sigint() + aioproc.rename_process(f"hid-{self.__name}") while not self.__stop_event.is_set(): try: diff --git a/kvmd/plugins/hid/serial.py b/kvmd/plugins/hid/serial.py index 0af31eca..6f92d9e4 100644 --- a/kvmd/plugins/hid/serial.py +++ b/kvmd/plugins/hid/serial.py @@ -21,7 +21,6 @@ import os -import signal import asyncio import multiprocessing import multiprocessing.queues @@ -35,7 +34,6 @@ from typing import Dict from typing import AsyncGenerator import serial -import setproctitle from ...logging import get_logger @@ -43,6 +41,7 @@ from ...keyboard.mappings import KEYMAP from ... import aiotools from ... import aiomulti +from ... import aioproc from ... import gpio from ...yamlconf import Option @@ -278,8 +277,8 @@ class Plugin(BaseHid, multiprocessing.Process): # pylint: disable=too-many-inst logger = get_logger(0) logger.info("Started HID pid=%d", os.getpid()) - signal.signal(signal.SIGINT, signal.SIG_IGN) - setproctitle.setproctitle(f"kvmd/hid: {setproctitle.getproctitle()}") + aioproc.ignore_sigint() + aioproc.rename_process("hid") while not self.__stop_event.is_set(): try: diff --git a/testenv/tests/plugins/auth/test_pam.py b/testenv/tests/plugins/auth/test_pam.py index e3e7fc99..a2cc32fa 100644 --- a/testenv/tests/plugins/auth/test_pam.py +++ b/testenv/tests/plugins/auth/test_pam.py @@ -45,7 +45,7 @@ async def _run_process(cmd: str, input: Optional[str]=None) -> None: # pylint: proc = await asyncio.create_subprocess_exec( *cmd.split(" "), stdin=(asyncio.subprocess.PIPE if input is not None else None), - preexec_fn=aioproc.preexec_ignore_sigint, + preexec_fn=aioproc.ignore_sigint, ) await proc.communicate(input.encode() if input is not None else None) assert proc.returncode == 0 |