修复 kvmd 国际化带来的错误

This commit is contained in:
mofeng-git 2024-08-06 22:04:11 +08:00
parent 20927c7226
commit 4fc188dbc8
5 changed files with 77 additions and 15 deletions

View File

@ -26,6 +26,8 @@ from ...plugins.hid import get_hid_class
from ...plugins.atx import get_atx_class
from ...plugins.msd import get_msd_class
from ...lanuages import Lanuages
from .. import init
from .auth import AuthManager
@ -110,4 +112,4 @@ def main(argv: (list[str] | None)=None) -> None:
stream_forever=config.streamer.forever,
).run(**config.server._unpack())
get_logger(0).info("Bye-bye")
get_logger(0).info(Lanuages().gettext("Bye-bye"))

View File

@ -34,6 +34,7 @@ from ...plugins.auth import get_auth_service_class
from ...htserver import HttpExposed
from ...lanuages import Lanuages
# =====
class AuthManager:
@ -51,31 +52,32 @@ class AuthManager:
totp_secret_path: str,
) -> None:
_ = translation(domain="message",localedir="/kvmd/i18n",languages=["zh"]).gettext
self.gettext=Lanuages().gettext
self.__enabled = enabled
if not enabled:
get_logger().warning(_("AUTHORIZATION IS DISABLED"))
get_logger().warning(self.gettext("AUTHORIZATION IS DISABLED"))
self.__unauth_paths = frozenset(unauth_paths) # To speed up
for path in self.__unauth_paths:
get_logger().warning(_("Authorization is disabled for API %r"), path)
get_logger().warning(self.gettext("Authorization is disabled for API %r"), path)
self.__internal_service: (BaseAuthService | None) = None
if enabled:
self.__internal_service = get_auth_service_class(internal_type)(**internal_kwargs)
get_logger().info(_("Using internal auth service %r"), self.__internal_service.get_plugin_name())
get_logger().info(self.gettext("Using internal auth service %r"), self.__internal_service.get_plugin_name())
self.__force_internal_users = force_internal_users
self.__external_service: (BaseAuthService | None) = None
if enabled and external_type:
self.__external_service = get_auth_service_class(external_type)(**external_kwargs)
get_logger().info(_("Using external auth service %r"), self.__external_service.get_plugin_name())
get_logger().info(self.gettext("Using external auth service %r"), self.__external_service.get_plugin_name())
self.__totp_secret_path = totp_secret_path
self.__tokens: dict[str, str] = {} # {token: user}
def is_auth_enabled(self) -> bool:
return self.__enabled
@ -98,7 +100,7 @@ class AuthManager:
if secret:
code = passwd[-6:]
if not pyotp.TOTP(secret).verify(code):
get_logger().error(_("Got access denied for user %r by TOTP"), user)
get_logger().error(self.gettext("Got access denied for user %r by TOTP"), user)
return False
passwd = passwd[:-6]
@ -109,9 +111,9 @@ class AuthManager:
ok = (await service.authorize(user, passwd))
if ok:
get_logger().info(_("Authorized user %r via auth service %r"), user, service.get_plugin_name())
get_logger().info(self.gettext("Authorized user %r via auth service %r"), user, service.get_plugin_name())
else:
get_logger().error(_("Got access denied for user %r from auth service %r"), user, service.get_plugin_name())
get_logger().error(self.gettext("Got access denied for user %r from auth service %r"), user, service.get_plugin_name())
return ok
async def login(self, user: str, passwd: str) -> (str | None):
@ -121,7 +123,7 @@ class AuthManager:
if (await self.authorize(user, passwd)):
token = self.__make_new_token()
self.__tokens[token] = user
get_logger().info(_("Logged in user %r"), user)
get_logger().info(self.gettext("Logged in user %r"), user)
return token
else:
return None
@ -131,7 +133,7 @@ class AuthManager:
token = secrets.token_hex(32)
if token not in self.__tokens:
return token
raise AssertionError(_("Can't generate new unique token"))
raise AssertionError(self.gettext("Can't generate new unique token"))
def logout(self, token: str) -> None:
assert self.__enabled
@ -142,7 +144,7 @@ class AuthManager:
if r_user == user:
count += 1
del self.__tokens[r_token]
get_logger().info(_("Logged out user %r (%d)"), user, count)
get_logger().info(self.gettext("Logged out user %r (%d)"), user, count)
def check(self, token: str) -> (str | None):
assert self.__enabled

Binary file not shown.

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-06 21:17+0800\n"
"PO-Revision-Date: 2024-08-06 21:17+0800\n"
"POT-Creation-Date: 2024-08-06 21:57+0800\n"
"PO-Revision-Date: 2024-08-06 21:57+0800\n"
"Last-Translator: \n"
"Language: zh\n"
"Language-Team: zh <LL@li.org>\n"
@ -22,6 +22,31 @@ msgstr ""
msgid "Can't determine filename"
msgstr "无法确定文件名"
#: kvmd/htserver.py:356
#, python-format
msgid "Registered new client session: %s; clients now: %d"
msgstr "已注册新客户端会话:%s现在的客户%d"
#: kvmd/htserver.py:371
#, python-format
msgid "Can't parse JSON event from websocket: %r"
msgstr "无法解析来自 websocket 的 JSON 事件:%r"
#: kvmd/htserver.py:377
#, python-format
msgid "Unknown websocket event: %r"
msgstr "未知 websocket 事件:%r"
#: kvmd/htserver.py:384
#, python-format
msgid "Unknown websocket binary event: %r"
msgstr "未知 websocket 二进制事件:%r"
#: kvmd/htserver.py:415
#, python-format
msgid "Removed client socket: %s; clients now: %d"
msgstr "已移除客户端套接字:%s现在的客户端%d"
#: kvmd/inotify.py:199
#, python-format
msgid "Watching for %s"
@ -66,6 +91,10 @@ msgstr "尝试使用 --help 选项来了解某项服务的功能。\n"
msgid "Make sure you understand exactly what you are doing!"
msgstr "请确定你自己在做什么!"
#: kvmd/apps/kvmd/__init__.py:115
msgid "Bye-bye"
msgstr "再见"
#: kvmd/apps/kvmd/auth.py:57
msgid "AUTHORIZATION IS DISABLED"
msgstr "身份验证服务已被禁用"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-08-06 21:17+0800\n"
"POT-Creation-Date: 2024-08-06 21:57+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,6 +21,31 @@ msgstr ""
msgid "Can't determine filename"
msgstr ""
#: kvmd/htserver.py:356
#, python-format
msgid "Registered new client session: %s; clients now: %d"
msgstr ""
#: kvmd/htserver.py:371
#, python-format
msgid "Can't parse JSON event from websocket: %r"
msgstr ""
#: kvmd/htserver.py:377
#, python-format
msgid "Unknown websocket event: %r"
msgstr ""
#: kvmd/htserver.py:384
#, python-format
msgid "Unknown websocket binary event: %r"
msgstr ""
#: kvmd/htserver.py:415
#, python-format
msgid "Removed client socket: %s; clients now: %d"
msgstr ""
#: kvmd/inotify.py:199
#, python-format
msgid "Watching for %s"
@ -65,6 +90,10 @@ msgstr ""
msgid "Make sure you understand exactly what you are doing!"
msgstr ""
#: kvmd/apps/kvmd/__init__.py:115
msgid "Bye-bye"
msgstr ""
#: kvmd/apps/kvmd/auth.py:57
msgid "AUTHORIZATION IS DISABLED"
msgstr ""