AuthenticationFailedLogger.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Globalization;
  3. using System.Threading.Tasks;
  4. using Jellyfin.Database.Implementations.Entities;
  5. using MediaBrowser.Controller.Events;
  6. using MediaBrowser.Controller.Events.Authentication;
  7. using MediaBrowser.Model.Activity;
  8. using MediaBrowser.Model.Globalization;
  9. using Microsoft.Extensions.Logging;
  10. namespace Jellyfin.Server.Implementations.Events.Consumers.Security
  11. {
  12. /// <summary>
  13. /// Creates an entry in the activity log when there is a failed login attempt.
  14. /// </summary>
  15. public class AuthenticationFailedLogger : IEventConsumer<AuthenticationRequestEventArgs>
  16. {
  17. private readonly ILocalizationManager _localizationManager;
  18. private readonly IActivityManager _activityManager;
  19. /// <summary>
  20. /// Initializes a new instance of the <see cref="AuthenticationFailedLogger"/> class.
  21. /// </summary>
  22. /// <param name="localizationManager">The localization manager.</param>
  23. /// <param name="activityManager">The activity manager.</param>
  24. public AuthenticationFailedLogger(ILocalizationManager localizationManager, IActivityManager activityManager)
  25. {
  26. _localizationManager = localizationManager;
  27. _activityManager = activityManager;
  28. }
  29. /// <inheritdoc />
  30. public async Task OnEvent(AuthenticationRequestEventArgs eventArgs)
  31. {
  32. await _activityManager.CreateAsync(new ActivityLog(
  33. string.Format(
  34. CultureInfo.InvariantCulture,
  35. _localizationManager.GetLocalizedString("FailedLoginAttemptWithUserName"),
  36. eventArgs.Username),
  37. "AuthenticationFailed",
  38. Guid.Empty)
  39. {
  40. LogSeverity = LogLevel.Error,
  41. ShortOverview = string.Format(
  42. CultureInfo.InvariantCulture,
  43. _localizationManager.GetLocalizedString("LabelIpAddressValue"),
  44. eventArgs.RemoteEndPoint),
  45. }).ConfigureAwait(false);
  46. }
  47. }
  48. }