user login in access log

This commit is contained in:
Devaev Maxim 2018-12-17 23:09:48 +03:00
parent 9bd83b886e
commit eeecf78796
6 changed files with 26 additions and 7 deletions

View File

@ -6,7 +6,7 @@ kvmd:
host: 127.0.0.1
port: 8081
heartbeat: 3.0
access_log_format: "[%{X-Real-IP}i] '%r' => %s; size=%b --- referer='%{Referer}i'; user_agent='%{User-Agent}i'"
access_log_format: "[%P / %{X-Real-IP}i] '%r' => %s; size=%b --- referer='%{Referer}i'; user_agent='%{User-Agent}i'"
auth:
htpasswd: /etc/kvmd/htpasswd

View File

@ -6,7 +6,7 @@ kvmd:
host: 127.0.0.1
port: 8081
heartbeat: 3.0
access_log_format: "[%{X-Real-IP}i] '%r' => %s; size=%b --- referer='%{Referer}i'; user_agent='%{User-Agent}i'"
access_log_format: "[%P / %{X-Real-IP}i] '%r' => %s; size=%b --- referer='%{Referer}i'; user_agent='%{User-Agent}i'"
auth:
htpasswd: /etc/kvmd/htpasswd

View File

@ -33,5 +33,5 @@ class AuthManager:
if user:
get_logger().info("Logged out user %r", user)
def check(self, token: str) -> bool:
return (token in self.__tokens)
def check(self, token: str) -> Optional[str]:
return self.__tokens.get(token)

View File

@ -34,6 +34,23 @@ from .msd import MassStorageDevice
from .streamer import Streamer
# =====
try:
from aiohttp.web import AccessLogger # type: ignore # pylint: disable=ungrouped-imports
except ImportError:
from aiohttp.helpers import AccessLogger # type: ignore # pylint: disable=ungrouped-imports
_ATTR_KVMD_USER = "kvmd_user"
def _format_P(request: aiohttp.web.BaseRequest, *_, **__) -> str: # type: ignore # pylint: disable=invalid-name
return (getattr(request, _ATTR_KVMD_USER, None) or "-")
AccessLogger._format_P = staticmethod(_format_P) # type: ignore # pylint: disable=protected-access
# =====
class HttpError(Exception):
pass
@ -97,8 +114,10 @@ def _exposed(http_method: str, path: str, auth_required: bool=True) -> Callable:
if auth_required:
token = request.cookies.get(_COOKIE_AUTH_TOKEN, "")
if token:
if not self._auth_manager.check(_valid_token(token)):
user = self._auth_manager.check(_valid_token(token))
if not user:
raise ForbiddenError("Forbidden")
setattr(request, _ATTR_KVMD_USER, user)
else:
raise UnauthorizedError("Unauthorized")

View File

@ -3,7 +3,7 @@ kvmd:
host: 0.0.0.0
port: 8081
heartbeat: 3.0
access_log_format: "[%{X-Real-IP}i] '%r' => %s; size=%b --- referer='%{Referer}i'; user_agent='%{User-Agent}i'"
access_log_format: "[%P / %{X-Real-IP}i] '%r' => %s; size=%b --- referer='%{Referer}i'; user_agent='%{User-Agent}i'"
auth:
htpasswd: /etc/kvmd/htpasswd

View File

@ -26,7 +26,7 @@ deps =
-rrequirements.txt
[testenv:vulture]
commands = vulture --ignore-decorators=@_exposed,@_system_task kvmd genmap.py testenv/vulture-wl.py
commands = vulture --ignore-names=_format_P --ignore-decorators=@_exposed,@_system_task kvmd genmap.py testenv/vulture-wl.py
deps =
vulture
-rrequirements.txt