Logs: clean user info, not just a file descriptor.

This commit is contained in:
Philippe Pittoli 2024-12-17 00:51:13 +01:00
parent 43673222df
commit ecdc3bdc68

View File

@ -111,7 +111,7 @@ class AuthD::Service < IPC
File.write @last_uid_file, uid.to_s File.write @last_uid_file, uid.to_s
end end
def get_logged_user?(fd : Int32) def get_logged_user?(fd : Int32) : AuthD::User::Public?
@logged_users[fd]? @logged_users[fd]?
end end
@ -123,6 +123,17 @@ class AuthD::Service < IPC
end end
end end
# `log_user_info` provides a string composed from either the user
# id in case the user was authenticated or the file descriptor of
# the connection.
def log_user_info(fd : Int32) : String
if user = get_logged_user? fd
"userid #{user.uid}"
else
"fd #{"%4d" % fd}"
end
end
def user?(uid_or_login : UserID) def user?(uid_or_login : UserID)
if uid_or_login.is_a? UInt32 if uid_or_login.is_a? UInt32
@users_per_uid.get? uid_or_login.to_s @users_per_uid.get? uid_or_login.to_s
@ -144,20 +155,21 @@ class AuthD::Service < IPC
end end
request_name = request.class.name.sub /^AuthD::Request::/, "" request_name = request.class.name.sub /^AuthD::Request::/, ""
connection_info_str = log_user_info event.fd
response = begin response = begin
request.handle self, event.fd request.handle self, event.fd
rescue e : UserNotFound rescue e : UserNotFound
Baguette::Log.error "(fd #{ "%4d" % event.fd}) #{request} user not found" Baguette::Log.error "(#{connection_info_str}) #{request} user not found"
AuthD::Response::Error.new "authorization error" AuthD::Response::Error.new "authorization error"
rescue e : AuthenticationInfoLacking rescue e : AuthenticationInfoLacking
Baguette::Log.error "(fd #{ "%4d" % event.fd}) #{request} lacking authentication info" Baguette::Log.error "(#{connection_info_str}) #{request} lacking authentication info"
AuthD::Response::Error.new "authorization error" AuthD::Response::Error.new "authorization error"
rescue e : AdminAuthorizationException rescue e : AdminAuthorizationException
Baguette::Log.error "(fd #{ "%4d" % event.fd}) #{request} admin authentication failed" Baguette::Log.error "(#{connection_info_str}) #{request} admin authentication failed"
AuthD::Response::Error.new "authorization error" AuthD::Response::Error.new "authorization error"
rescue e rescue e
Baguette::Log.error "(fd #{ "%4d" % event.fd}) #{request} generic error #{e}" Baguette::Log.error "(#{connection_info_str}) #{request} generic error #{e}"
AuthD::Response::Error.new "unknown error" AuthD::Response::Error.new "unknown error"
end end
@ -170,10 +182,10 @@ class AuthD::Service < IPC
duration = Time.utc - request_start duration = Time.utc - request_start
if response.is_a? AuthD::Response::Error if response.is_a? AuthD::Response::Error
Baguette::Log.warning "fd #{ "%4d" % event.fd} (#{duration}) #{request} >> #{response}" Baguette::Log.warning "(#{connection_info_str}) (#{duration}) #{request} >> #{response}"
else else
if request_name != "KeepAlive" || should_display? AUTHMESSAGE::KEEPALIVE if request_name != "KeepAlive" || should_display? AUTHMESSAGE::KEEPALIVE
Baguette::Log.debug "fd #{ "%4d" % event.fd} (#{duration}) #{request} >> #{response}" Baguette::Log.debug "(#{connection_info_str}) (#{duration}) #{request} >> #{response}"
end end
end end
end end