option to disable log reader

This commit is contained in:
Maxim Devaev 2022-09-19 00:44:11 +03:00
parent 0afc513de8
commit 6f4131c3f6
4 changed files with 16 additions and 3 deletions

View File

@ -381,6 +381,10 @@ def _get_config_scheme() -> dict:
},
},
"log_reader": {
"enabled": Option(True, type=valid_bool),
},
"hid": {
"type": Option("", type=valid_stripped_string_not_empty),

View File

@ -82,7 +82,7 @@ def main(argv: (list[str] | None)=None) -> None:
enabled=config.auth.enabled,
),
info_manager=InfoManager(global_config),
log_reader=LogReader(),
log_reader=(LogReader() if config.log_reader.enabled else None),
user_gpio=UserGpio(config.gpio, global_config.otg),
ocr=TesseractOcr(**config.ocr._unpack()),

View File

@ -23,6 +23,8 @@
from aiohttp.web import Request
from aiohttp.web import StreamResponse
from ....errors import OperationError
from ....htserver import exposed_http
from ....htserver import start_streaming
@ -33,14 +35,21 @@ from ..logreader import LogReader
# =====
class LogReaderDisabledError(OperationError):
def __init__(self) -> None:
super().__init__("LogReader is disabled")
class LogApi:
def __init__(self, log_reader: LogReader) -> None:
def __init__(self, log_reader: (LogReader | None)) -> None:
self.__log_reader = log_reader
# =====
@exposed_http("GET", "/log")
async def __log_handler(self, request: Request) -> StreamResponse:
if self.__log_reader is None:
raise LogReaderDisabledError()
seek = valid_log_seek(request.query.get("seek", 0))
follow = valid_bool(request.query.get("follow", False))
response = await start_streaming(request, "text/plain")

View File

@ -128,7 +128,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
self,
auth_manager: AuthManager,
info_manager: InfoManager,
log_reader: LogReader,
log_reader: (LogReader | None),
user_gpio: UserGpio,
ocr: TesseractOcr,