mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
修复 kvmd 国际化带来的错误
This commit is contained in:
parent
20927c7226
commit
4fc188dbc8
@ -26,6 +26,8 @@ from ...plugins.hid import get_hid_class
|
|||||||
from ...plugins.atx import get_atx_class
|
from ...plugins.atx import get_atx_class
|
||||||
from ...plugins.msd import get_msd_class
|
from ...plugins.msd import get_msd_class
|
||||||
|
|
||||||
|
from ...lanuages import Lanuages
|
||||||
|
|
||||||
from .. import init
|
from .. import init
|
||||||
|
|
||||||
from .auth import AuthManager
|
from .auth import AuthManager
|
||||||
@ -110,4 +112,4 @@ def main(argv: (list[str] | None)=None) -> None:
|
|||||||
stream_forever=config.streamer.forever,
|
stream_forever=config.streamer.forever,
|
||||||
).run(**config.server._unpack())
|
).run(**config.server._unpack())
|
||||||
|
|
||||||
get_logger(0).info("Bye-bye")
|
get_logger(0).info(Lanuages().gettext("Bye-bye"))
|
||||||
|
|||||||
@ -34,6 +34,7 @@ from ...plugins.auth import get_auth_service_class
|
|||||||
|
|
||||||
from ...htserver import HttpExposed
|
from ...htserver import HttpExposed
|
||||||
|
|
||||||
|
from ...lanuages import Lanuages
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
class AuthManager:
|
class AuthManager:
|
||||||
@ -51,31 +52,32 @@ class AuthManager:
|
|||||||
|
|
||||||
totp_secret_path: str,
|
totp_secret_path: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
_ = translation(domain="message",localedir="/kvmd/i18n",languages=["zh"]).gettext
|
self.gettext=Lanuages().gettext
|
||||||
self.__enabled = enabled
|
self.__enabled = enabled
|
||||||
if not 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
|
self.__unauth_paths = frozenset(unauth_paths) # To speed up
|
||||||
for path in self.__unauth_paths:
|
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
|
self.__internal_service: (BaseAuthService | None) = None
|
||||||
if enabled:
|
if enabled:
|
||||||
self.__internal_service = get_auth_service_class(internal_type)(**internal_kwargs)
|
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.__force_internal_users = force_internal_users
|
||||||
|
|
||||||
self.__external_service: (BaseAuthService | None) = None
|
self.__external_service: (BaseAuthService | None) = None
|
||||||
if enabled and external_type:
|
if enabled and external_type:
|
||||||
self.__external_service = get_auth_service_class(external_type)(**external_kwargs)
|
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.__totp_secret_path = totp_secret_path
|
||||||
|
|
||||||
self.__tokens: dict[str, str] = {} # {token: user}
|
self.__tokens: dict[str, str] = {} # {token: user}
|
||||||
|
|
||||||
|
|
||||||
def is_auth_enabled(self) -> bool:
|
def is_auth_enabled(self) -> bool:
|
||||||
return self.__enabled
|
return self.__enabled
|
||||||
|
|
||||||
@ -98,7 +100,7 @@ class AuthManager:
|
|||||||
if secret:
|
if secret:
|
||||||
code = passwd[-6:]
|
code = passwd[-6:]
|
||||||
if not pyotp.TOTP(secret).verify(code):
|
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
|
return False
|
||||||
passwd = passwd[:-6]
|
passwd = passwd[:-6]
|
||||||
|
|
||||||
@ -109,9 +111,9 @@ class AuthManager:
|
|||||||
|
|
||||||
ok = (await service.authorize(user, passwd))
|
ok = (await service.authorize(user, passwd))
|
||||||
if ok:
|
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:
|
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
|
return ok
|
||||||
|
|
||||||
async def login(self, user: str, passwd: str) -> (str | None):
|
async def login(self, user: str, passwd: str) -> (str | None):
|
||||||
@ -121,7 +123,7 @@ class AuthManager:
|
|||||||
if (await self.authorize(user, passwd)):
|
if (await self.authorize(user, passwd)):
|
||||||
token = self.__make_new_token()
|
token = self.__make_new_token()
|
||||||
self.__tokens[token] = user
|
self.__tokens[token] = user
|
||||||
get_logger().info(_("Logged in user %r"), user)
|
get_logger().info(self.gettext("Logged in user %r"), user)
|
||||||
return token
|
return token
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
@ -131,7 +133,7 @@ class AuthManager:
|
|||||||
token = secrets.token_hex(32)
|
token = secrets.token_hex(32)
|
||||||
if token not in self.__tokens:
|
if token not in self.__tokens:
|
||||||
return token
|
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:
|
def logout(self, token: str) -> None:
|
||||||
assert self.__enabled
|
assert self.__enabled
|
||||||
@ -142,7 +144,7 @@ class AuthManager:
|
|||||||
if r_user == user:
|
if r_user == user:
|
||||||
count += 1
|
count += 1
|
||||||
del self.__tokens[r_token]
|
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):
|
def check(self, token: str) -> (str | None):
|
||||||
assert self.__enabled
|
assert self.__enabled
|
||||||
|
|||||||
Binary file not shown.
@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\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: 2024-08-06 21:17+0800\n"
|
"PO-Revision-Date: 2024-08-06 21:57+0800\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language: zh\n"
|
"Language: zh\n"
|
||||||
"Language-Team: zh <LL@li.org>\n"
|
"Language-Team: zh <LL@li.org>\n"
|
||||||
@ -22,6 +22,31 @@ msgstr ""
|
|||||||
msgid "Can't determine filename"
|
msgid "Can't determine filename"
|
||||||
msgstr "无法确定文件名"
|
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
|
#: kvmd/inotify.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Watching for %s"
|
msgid "Watching for %s"
|
||||||
@ -66,6 +91,10 @@ msgstr "尝试使用 --help 选项来了解某项服务的功能。\n"
|
|||||||
msgid "Make sure you understand exactly what you are doing!"
|
msgid "Make sure you understand exactly what you are doing!"
|
||||||
msgstr "请确定你自己在做什么!"
|
msgstr "请确定你自己在做什么!"
|
||||||
|
|
||||||
|
#: kvmd/apps/kvmd/__init__.py:115
|
||||||
|
msgid "Bye-bye"
|
||||||
|
msgstr "再见"
|
||||||
|
|
||||||
#: kvmd/apps/kvmd/auth.py:57
|
#: kvmd/apps/kvmd/auth.py:57
|
||||||
msgid "AUTHORIZATION IS DISABLED"
|
msgid "AUTHORIZATION IS DISABLED"
|
||||||
msgstr "身份验证服务已被禁用"
|
msgstr "身份验证服务已被禁用"
|
||||||
|
|||||||
31
message.pot
31
message.pot
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\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"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -21,6 +21,31 @@ msgstr ""
|
|||||||
msgid "Can't determine filename"
|
msgid "Can't determine filename"
|
||||||
msgstr ""
|
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
|
#: kvmd/inotify.py:199
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Watching for %s"
|
msgid "Watching for %s"
|
||||||
@ -65,6 +90,10 @@ msgstr ""
|
|||||||
msgid "Make sure you understand exactly what you are doing!"
|
msgid "Make sure you understand exactly what you are doing!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: kvmd/apps/kvmd/__init__.py:115
|
||||||
|
msgid "Bye-bye"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: kvmd/apps/kvmd/auth.py:57
|
#: kvmd/apps/kvmd/auth.py:57
|
||||||
msgid "AUTHORIZATION IS DISABLED"
|
msgid "AUTHORIZATION IS DISABLED"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user