diff --git a/Moonlight/App/ApiClients/Modrinth/ModrinthApiHelper.cs b/Moonlight/App/ApiClients/Modrinth/ModrinthApiHelper.cs index b354095b..0b47d511 100644 --- a/Moonlight/App/ApiClients/Modrinth/ModrinthApiHelper.cs +++ b/Moonlight/App/ApiClients/Modrinth/ModrinthApiHelper.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Newtonsoft.Json; +using Newtonsoft.Json; using RestSharp; namespace Moonlight.App.ApiClients.Modrinth; diff --git a/Moonlight/App/Database/Interceptors/SqlLoggingInterceptor.cs b/Moonlight/App/Database/Interceptors/SqlLoggingInterceptor.cs index 06e51413..7b19fb1a 100644 --- a/Moonlight/App/Database/Interceptors/SqlLoggingInterceptor.cs +++ b/Moonlight/App/Database/Interceptors/SqlLoggingInterceptor.cs @@ -1,6 +1,6 @@ using System.Data.Common; -using Logging.Net; using Microsoft.EntityFrameworkCore.Diagnostics; +using Moonlight.App.Helpers; namespace Moonlight.App.Database.Interceptors; diff --git a/Moonlight/App/Events/EventSystem.cs b/Moonlight/App/Events/EventSystem.cs index 7ae2da7e..ee9cc8c2 100644 --- a/Moonlight/App/Events/EventSystem.cs +++ b/Moonlight/App/Events/EventSystem.cs @@ -1,5 +1,5 @@ using System.Diagnostics; -using Logging.Net; +using Moonlight.App.Helpers; namespace Moonlight.App.Events; diff --git a/Moonlight/App/Helpers/CacheLogger.cs b/Moonlight/App/Helpers/CacheLogger.cs deleted file mode 100644 index ef9e0c37..00000000 --- a/Moonlight/App/Helpers/CacheLogger.cs +++ /dev/null @@ -1,252 +0,0 @@ -using System.Diagnostics; -using Logging.Net; -using Logging.Net.Loggers.SB; -using Moonlight.App.Models.Misc; -using ILogger = Logging.Net.ILogger; - -namespace Moonlight.App.Helpers; - -public class CacheLogger : ILogger -{ - private SBLogger SbLogger = new(); - private List Messages = new(); - - public LogEntry[] GetMessages() - { - lock (Messages) - { - var result = new LogEntry[Messages.Count]; - Messages.CopyTo(result); - return result; - } - } - - public void Clear(int messages) - { - lock (Messages) - { - Messages.RemoveRange(0, Math.Min(messages, Messages.Count)); - } - } - - public void Info(string? s) - { - if (s == null) - return; - - lock (Messages) - { - Messages.Add(new() - { - Level = "info", - Message = s - }); - } - - SbLogger.Info(s); - } - - public void Debug(string? s) - { - if (s == null) - return; - - lock (Messages) - { - Messages.Add(new() - { - Level = "debug", - Message = s - }); - } - - SbLogger.Debug(s); - } - - public void Warn(string? s) - { - if (s == null) - return; - - lock (Messages) - { - Messages.Add(new() - { - Level = "warn", - Message = s - }); - } - - SbLogger.Warn(s); - } - - public void Error(string? s) - { - if (s == null) - return; - - lock (Messages) - { - Messages.Add(new() - { - Level = "error", - Message = s - }); - } - - SbLogger.Error(s); - } - - public void Fatal(string? s) - { - if (s == null) - return; - - lock (Messages) - { - Messages.Add(new() - { - Level = "fatal", - Message = s - }); - } - - SbLogger.Fatal(s); - } - - public void InfoEx(Exception ex) - { - lock (Messages) - { - Messages.Add(new() - { - Level = "info", - Message = ex.ToStringDemystified() - }); - } - - SbLogger.InfoEx(ex); - } - - public void DebugEx(Exception ex) - { - lock (Messages) - { - Messages.Add(new() - { - Level = "debug", - Message = ex.ToStringDemystified() - }); - } - - SbLogger.DebugEx(ex); - } - - public void WarnEx(Exception ex) - { - lock (Messages) - { - Messages.Add(new() - { - Level = "warn", - Message = ex.ToStringDemystified() - }); - } - - SbLogger.WarnEx(ex); - } - - public void ErrorEx(Exception ex) - { - lock (Messages) - { - Messages.Add(new() - { - Level = "error", - Message = ex.ToStringDemystified() - }); - } - - SbLogger.ErrorEx(ex); - } - - public void FatalEx(Exception ex) - { - lock (Messages) - { - Messages.Add(new() - { - Level = "fatal", - Message = ex.ToStringDemystified() - }); - } - - SbLogger.FatalEx(ex); - } - - public LoggingConfiguration GetErrorConfiguration() - { - return SbLogger.GetErrorConfiguration(); - } - - public void SetErrorConfiguration(LoggingConfiguration configuration) - { - SbLogger.SetErrorConfiguration(configuration); - } - - public LoggingConfiguration GetFatalConfiguration() - { - return SbLogger.GetFatalConfiguration(); - } - - public void SetFatalConfiguration(LoggingConfiguration configuration) - { - SbLogger.SetFatalConfiguration(configuration); - } - - public LoggingConfiguration GetWarnConfiguration() - { - return SbLogger.GetWarnConfiguration(); - } - - public void SetWarnConfiguration(LoggingConfiguration configuration) - { - SbLogger.SetWarnConfiguration(configuration); - } - - public LoggingConfiguration GetInfoConfiguration() - { - return SbLogger.GetInfoConfiguration(); - } - - public void SetInfoConfiguration(LoggingConfiguration configuration) - { - SbLogger.SetInfoConfiguration(configuration); - } - - public LoggingConfiguration GetDebugConfiguration() - { - return SbLogger.GetDebugConfiguration(); - } - - public void SetDebugConfiguration(LoggingConfiguration configuration) - { - SbLogger.SetDebugConfiguration(configuration); - } - - public ILoggingAddition GetAddition() - { - return SbLogger.GetAddition(); - } - - public void SetAddition(ILoggingAddition addition) - { - SbLogger.SetAddition(addition); - } - - public bool LogCallingClass - { - get => SbLogger.LogCallingClass; - set => SbLogger.LogCallingClass = value; - } -} \ No newline at end of file diff --git a/Moonlight/App/Helpers/DatabaseCheckupService.cs b/Moonlight/App/Helpers/DatabaseCheckupService.cs index 0bccd8cc..6fc4cbc1 100644 --- a/Moonlight/App/Helpers/DatabaseCheckupService.cs +++ b/Moonlight/App/Helpers/DatabaseCheckupService.cs @@ -1,5 +1,4 @@ using System.Diagnostics; -using Logging.Net; using Microsoft.EntityFrameworkCore; using Moonlight.App.Database; using Moonlight.App.Services; diff --git a/Moonlight/App/Helpers/Files/SftpFileAccess.cs b/Moonlight/App/Helpers/Files/SftpFileAccess.cs index 9ff4452d..84b8dd60 100644 --- a/Moonlight/App/Helpers/Files/SftpFileAccess.cs +++ b/Moonlight/App/Helpers/Files/SftpFileAccess.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Renci.SshNet; +using Renci.SshNet; using ConnectionInfo = Renci.SshNet.ConnectionInfo; namespace Moonlight.App.Helpers.Files; diff --git a/Moonlight/App/Helpers/HostSystemHelper.cs b/Moonlight/App/Helpers/HostSystemHelper.cs index 57df6d7b..1ad3da13 100644 --- a/Moonlight/App/Helpers/HostSystemHelper.cs +++ b/Moonlight/App/Helpers/HostSystemHelper.cs @@ -1,6 +1,5 @@ using System.Diagnostics; using System.Runtime.InteropServices; -using Logging.Net; namespace Moonlight.App.Helpers; diff --git a/Moonlight/App/Helpers/Logger.cs b/Moonlight/App/Helpers/Logger.cs new file mode 100644 index 00000000..741ef984 --- /dev/null +++ b/Moonlight/App/Helpers/Logger.cs @@ -0,0 +1,108 @@ +using System.Diagnostics; +using System.Reflection; +using Serilog; + +namespace Moonlight.App.Helpers; + +public static class Logger +{ + #region String method calls + public static void Verbose(string message, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Verbose("{Message} {Channel}", message, channel); + } + + public static void Info(string message, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Information("{Message} {Channel}", message, channel); + } + + public static void Debug(string message, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Debug("{Message} {Channel}", message, channel); + } + + public static void Error(string message, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Error("{Message} {Channel}", message, channel); + } + + public static void Warn(string message, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Warning("{Message} {Channel}", message, channel); + } + + public static void Fatal(string message, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Fatal("{Message} {Channel}", message, channel); + } + #endregion + + #region Exception method calls + public static void Verbose(Exception exception, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Verbose(exception, "{Channel}", channel); + } + + public static void Info(Exception exception, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Information(exception, "{Channel}", channel); + } + + public static void Debug(Exception exception, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Debug(exception, "{Channel}", channel); + } + + public static void Error(Exception exception, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Error(exception, "{Channel}", channel); + } + + public static void Warn(Exception exception, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Warning(exception, "{Channel}", channel); + } + + public static void Fatal(Exception exception, string channel = "default") + { + Log.ForContext("SourceContext", GetNameOfCallingClass()) + .Fatal(exception, "{Channel}", channel); + } + #endregion + + private static string GetNameOfCallingClass(int skipFrames = 4) + { + string fullName; + Type declaringType; + + do + { + MethodBase method = new StackFrame(skipFrames, false).GetMethod(); + declaringType = method.DeclaringType; + if (declaringType == null) + { + return method.Name; + } + skipFrames++; + if (declaringType.Name.Contains("<")) + fullName = declaringType.ReflectedType.Name; + else + fullName = declaringType.Name; + } + while (declaringType.Module.Name.Equals("mscorlib.dll", StringComparison.OrdinalIgnoreCase) | fullName.Contains("Logger")); + + return fullName; + } +} \ No newline at end of file diff --git a/Moonlight/App/Helpers/MustBeTrueAttribute.cs b/Moonlight/App/Helpers/MustBeTrueAttribute.cs index 72abde24..59c6e629 100644 --- a/Moonlight/App/Helpers/MustBeTrueAttribute.cs +++ b/Moonlight/App/Helpers/MustBeTrueAttribute.cs @@ -1,5 +1,4 @@ using System.ComponentModel.DataAnnotations; -using Logging.Net; namespace Moonlight.App.Helpers; diff --git a/Moonlight/App/Helpers/ParseHelper.cs b/Moonlight/App/Helpers/ParseHelper.cs index b068e7b1..f19236e6 100644 --- a/Moonlight/App/Helpers/ParseHelper.cs +++ b/Moonlight/App/Helpers/ParseHelper.cs @@ -1,6 +1,4 @@ -using Logging.Net; - -namespace Moonlight.App.Helpers; +namespace Moonlight.App.Helpers; public static class ParseHelper { diff --git a/Moonlight/App/Helpers/Wings/WingsConsole.cs b/Moonlight/App/Helpers/Wings/WingsConsole.cs index c95908f4..d1efb9bc 100644 --- a/Moonlight/App/Helpers/Wings/WingsConsole.cs +++ b/Moonlight/App/Helpers/Wings/WingsConsole.cs @@ -1,6 +1,5 @@ using System.Net.WebSockets; using System.Text; -using Logging.Net; using Moonlight.App.Helpers.Wings.Data; using Moonlight.App.Helpers.Wings.Enums; using Moonlight.App.Helpers.Wings.Events; diff --git a/Moonlight/App/Http/Controllers/Api/Moonlight/Notifications/ListenController.cs b/Moonlight/App/Http/Controllers/Api/Moonlight/Notifications/ListenController.cs index dc30e5be..10b24a0f 100644 --- a/Moonlight/App/Http/Controllers/Api/Moonlight/Notifications/ListenController.cs +++ b/Moonlight/App/Http/Controllers/Api/Moonlight/Notifications/ListenController.cs @@ -1,6 +1,5 @@ using System.Net.WebSockets; using System.Text; -using Logging.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Moonlight.App.Database.Entities; @@ -9,7 +8,6 @@ using Moonlight.App.Models.Notifications; using Moonlight.App.Repositories; using Moonlight.App.Services; using Moonlight.App.Services.Notifications; -using Moonlight.App.Services.Sessions; using Newtonsoft.Json; namespace Moonlight.App.Http.Controllers.Api.Moonlight.Notifications; diff --git a/Moonlight/App/Http/Controllers/Api/Moonlight/OAuth2Controller.cs b/Moonlight/App/Http/Controllers/Api/Moonlight/OAuth2Controller.cs index 9cff03d0..bae68b49 100644 --- a/Moonlight/App/Http/Controllers/Api/Moonlight/OAuth2Controller.cs +++ b/Moonlight/App/Http/Controllers/Api/Moonlight/OAuth2Controller.cs @@ -1,5 +1,5 @@ -using Logging.Net; -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; +using Moonlight.App.Helpers; using Moonlight.App.Services; using Moonlight.App.Services.Sessions; diff --git a/Moonlight/App/Http/Controllers/Api/Moonlight/ResourcesController.cs b/Moonlight/App/Http/Controllers/Api/Moonlight/ResourcesController.cs index 5a899d35..beb07ddc 100644 --- a/Moonlight/App/Http/Controllers/Api/Moonlight/ResourcesController.cs +++ b/Moonlight/App/Http/Controllers/Api/Moonlight/ResourcesController.cs @@ -1,12 +1,6 @@ -using System.Text; -using Logging.Net; -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using Moonlight.App.Helpers; -using Moonlight.App.Models.Misc; -using Moonlight.App.Services; using Moonlight.App.Services.Files; -using Moonlight.App.Services.LogServices; -using Moonlight.App.Services.Sessions; namespace Moonlight.App.Http.Controllers.Api.Moonlight; @@ -14,13 +8,10 @@ namespace Moonlight.App.Http.Controllers.Api.Moonlight; [Route("api/moonlight/resources")] public class ResourcesController : Controller { - private readonly SecurityLogService SecurityLogService; private readonly BucketService BucketService; - public ResourcesController(SecurityLogService securityLogService, - BucketService bucketService) + public ResourcesController(BucketService bucketService) { - SecurityLogService = securityLogService; BucketService = bucketService; } @@ -29,10 +20,7 @@ public class ResourcesController : Controller { if (name.Contains("..")) { - await SecurityLogService.Log(SecurityLogType.PathTransversal, x => - { - x.Add(name); - }); + Logger.Warn($"Detected an attempted path transversal. Path: {name}", "security"); return NotFound(); } @@ -52,10 +40,7 @@ public class ResourcesController : Controller { if (name.Contains("..")) { - await SecurityLogService.Log(SecurityLogType.PathTransversal, x => - { - x.Add(name); - }); + Logger.Warn($"Detected an attempted path transversal. Path: {name}", "security"); return NotFound(); } @@ -75,10 +60,7 @@ public class ResourcesController : Controller { if (name.Contains("..")) { - await SecurityLogService.Log(SecurityLogType.PathTransversal, x => - { - x.Add(name); - }); + Logger.Warn($"Detected an attempted path transversal. Path: {name}", "security"); return NotFound(); } diff --git a/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs b/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs index e6a0dbc9..9ada8cd7 100644 --- a/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs +++ b/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs @@ -1,10 +1,8 @@ -using Logging.Net; -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using Moonlight.App.Database.Entities; using Moonlight.App.Events; using Moonlight.App.Http.Requests.Daemon; using Moonlight.App.Repositories; -using Moonlight.App.Services; namespace Moonlight.App.Http.Controllers.Api.Remote; diff --git a/Moonlight/App/LogMigrator/LogMigrator.cs b/Moonlight/App/LogMigrator/LogMigrator.cs index 0df9501d..d7644dfb 100644 --- a/Moonlight/App/LogMigrator/LogMigrator.cs +++ b/Moonlight/App/LogMigrator/LogMigrator.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using ILogger = Microsoft.Extensions.Logging.ILogger; +using Moonlight.App.Helpers; namespace Moonlight.App.LogMigrator; diff --git a/Moonlight/App/OAuth2/Providers/DiscordOAuth2Provider.cs b/Moonlight/App/OAuth2/Providers/DiscordOAuth2Provider.cs index ffe58b29..fc4c292b 100644 --- a/Moonlight/App/OAuth2/Providers/DiscordOAuth2Provider.cs +++ b/Moonlight/App/OAuth2/Providers/DiscordOAuth2Provider.cs @@ -1,5 +1,4 @@ using System.Text; -using Logging.Net; using Moonlight.App.Database.Entities; using Moonlight.App.Exceptions; using Moonlight.App.Helpers; diff --git a/Moonlight/App/OAuth2/Providers/GoogleOAuth2Provider.cs b/Moonlight/App/OAuth2/Providers/GoogleOAuth2Provider.cs index c0e56d55..50bb78b4 100644 --- a/Moonlight/App/OAuth2/Providers/GoogleOAuth2Provider.cs +++ b/Moonlight/App/OAuth2/Providers/GoogleOAuth2Provider.cs @@ -1,5 +1,4 @@ using System.Text; -using Logging.Net; using Moonlight.App.ApiClients.Google.Requests; using Moonlight.App.Database.Entities; using Moonlight.App.Exceptions; diff --git a/Moonlight/App/Services/Background/CleanupService.cs b/Moonlight/App/Services/Background/CleanupService.cs index 966188b9..eb210ac7 100644 --- a/Moonlight/App/Services/Background/CleanupService.cs +++ b/Moonlight/App/Services/Background/CleanupService.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using MineStatLib; using Moonlight.App.ApiClients.Daemon.Resources; using Moonlight.App.ApiClients.Wings; diff --git a/Moonlight/App/Services/Background/DiscordNotificationService.cs b/Moonlight/App/Services/Background/DiscordNotificationService.cs index f8157ad4..c369d402 100644 --- a/Moonlight/App/Services/Background/DiscordNotificationService.cs +++ b/Moonlight/App/Services/Background/DiscordNotificationService.cs @@ -1,8 +1,8 @@ using Discord; using Discord.Webhook; -using Logging.Net; using Moonlight.App.Database.Entities; using Moonlight.App.Events; +using Moonlight.App.Helpers; using Moonlight.App.Services.Files; namespace Moonlight.App.Services.Background; diff --git a/Moonlight/App/Services/ConfigService.cs b/Moonlight/App/Services/ConfigService.cs index 94275e32..b05ce60c 100644 --- a/Moonlight/App/Services/ConfigService.cs +++ b/Moonlight/App/Services/ConfigService.cs @@ -1,5 +1,4 @@ using System.Text; -using Logging.Net; using Microsoft.Extensions.Primitives; using Moonlight.App.Helpers; using Moonlight.App.Services.Files; diff --git a/Moonlight/App/Services/DiscordBot/Commands/ClearChannelCommand.cs b/Moonlight/App/Services/DiscordBot/Commands/ClearChannelCommand.cs index 8660255b..75bffe64 100644 --- a/Moonlight/App/Services/DiscordBot/Commands/ClearChannelCommand.cs +++ b/Moonlight/App/Services/DiscordBot/Commands/ClearChannelCommand.cs @@ -1,6 +1,5 @@ using Discord; using Discord.WebSocket; -using Logging.Net; namespace Moonlight.App.Services.DiscordBot.Commands; diff --git a/Moonlight/App/Services/DiscordBot/Commands/ServerListCommand.cs b/Moonlight/App/Services/DiscordBot/Commands/ServerListCommand.cs index 68e7fada..15fbeb49 100644 --- a/Moonlight/App/Services/DiscordBot/Commands/ServerListCommand.cs +++ b/Moonlight/App/Services/DiscordBot/Commands/ServerListCommand.cs @@ -1,6 +1,5 @@ using Discord; using Discord.WebSocket; -using Logging.Net; using Microsoft.EntityFrameworkCore; using Moonlight.App.Repositories; using Moonlight.App.Repositories.Servers; diff --git a/Moonlight/App/Services/DiscordBot/DiscordBotService.cs b/Moonlight/App/Services/DiscordBot/DiscordBotService.cs index 5a64d70a..4b3d39be 100644 --- a/Moonlight/App/Services/DiscordBot/DiscordBotService.cs +++ b/Moonlight/App/Services/DiscordBot/DiscordBotService.cs @@ -1,8 +1,7 @@ using System.Diagnostics; using Discord; -using Discord.Commands; using Discord.WebSocket; -using Logging.Net; +using Moonlight.App.Helpers; using Moonlight.App.Services.DiscordBot.Commands; using Moonlight.App.Services.DiscordBot.Modules; diff --git a/Moonlight/App/Services/DiscordBot/Modules/RemoveCommandsModule.cs b/Moonlight/App/Services/DiscordBot/Modules/RemoveCommandsModule.cs index f8ccfaf9..4b605c9e 100644 --- a/Moonlight/App/Services/DiscordBot/Modules/RemoveCommandsModule.cs +++ b/Moonlight/App/Services/DiscordBot/Modules/RemoveCommandsModule.cs @@ -1,6 +1,6 @@ using System.Diagnostics; using Discord.WebSocket; -using Logging.Net; +using Moonlight.App.Helpers; namespace Moonlight.App.Services.DiscordBot.Modules; diff --git a/Moonlight/App/Services/DiscordBot/Modules/ServerListComponentHandlerModule.cs b/Moonlight/App/Services/DiscordBot/Modules/ServerListComponentHandlerModule.cs index 24bcb79d..ba22f6e3 100644 --- a/Moonlight/App/Services/DiscordBot/Modules/ServerListComponentHandlerModule.cs +++ b/Moonlight/App/Services/DiscordBot/Modules/ServerListComponentHandlerModule.cs @@ -1,8 +1,8 @@ using Discord; using Discord.WebSocket; -using Logging.Net; using Microsoft.EntityFrameworkCore; using Moonlight.App.ApiClients.Wings; +using Moonlight.App.Helpers; using Moonlight.App.Repositories; using Moonlight.App.Repositories.Servers; diff --git a/Moonlight/App/Services/DomainService.cs b/Moonlight/App/Services/DomainService.cs index 1b2cb98c..0007624e 100644 --- a/Moonlight/App/Services/DomainService.cs +++ b/Moonlight/App/Services/DomainService.cs @@ -5,13 +5,12 @@ using CloudFlare.Client.Api.Result; using CloudFlare.Client.Api.Zones; using CloudFlare.Client.Api.Zones.DnsRecord; using CloudFlare.Client.Enumerators; -using Logging.Net; using Microsoft.EntityFrameworkCore; using Moonlight.App.Database.Entities; using Moonlight.App.Exceptions; +using Moonlight.App.Helpers; using Moonlight.App.Models.Misc; using Moonlight.App.Repositories.Domains; -using Moonlight.App.Services.LogServices; using DnsRecord = Moonlight.App.Models.Misc.DnsRecord; namespace Moonlight.App.Services; @@ -21,18 +20,15 @@ public class DomainService private readonly DomainRepository DomainRepository; private readonly SharedDomainRepository SharedDomainRepository; private readonly CloudFlareClient Client; - private readonly AuditLogService AuditLogService; private readonly string AccountId; public DomainService( ConfigService configService, DomainRepository domainRepository, - SharedDomainRepository sharedDomainRepository, - AuditLogService auditLogService) + SharedDomainRepository sharedDomainRepository) { DomainRepository = domainRepository; SharedDomainRepository = sharedDomainRepository; - AuditLogService = auditLogService; var config = configService .GetSection("Moonlight") @@ -190,12 +186,8 @@ public class DomainService Name = name })); } - - await AuditLogService.Log(AuditLogType.AddDomainRecord, x => - { - x.Add(d.Id); - x.Add(dnsRecord.Name); - }); + + //TODO: AuditLog } public async Task UpdateDnsRecord(Domain d, DnsRecord dnsRecord) @@ -225,11 +217,7 @@ public class DomainService })); } - await AuditLogService.Log(AuditLogType.UpdateDomainRecord, x => - { - x.Add(d.Id); - x.Add(dnsRecord.Name); - }); + //TODO: AuditLog } public async Task DeleteDnsRecord(Domain d, DnsRecord dnsRecord) @@ -240,11 +228,7 @@ public class DomainService await Client.Zones.DnsRecords.DeleteAsync(domain.SharedDomain.CloudflareId, dnsRecord.Id) ); - await AuditLogService.Log(AuditLogType.DeleteDomainRecord, x => - { - x.Add(d.Id); - x.Add(dnsRecord.Name); - }); + //TODO: AuditLog } private Domain EnsureData(Domain domain) diff --git a/Moonlight/App/Services/Files/StorageService.cs b/Moonlight/App/Services/Files/StorageService.cs index 7f8587b9..e1b32aad 100644 --- a/Moonlight/App/Services/Files/StorageService.cs +++ b/Moonlight/App/Services/Files/StorageService.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Moonlight.App.Helpers; +using Moonlight.App.Helpers; namespace Moonlight.App.Services.Files; diff --git a/Moonlight/App/Services/LogServices/AuditLogService.cs b/Moonlight/App/Services/LogServices/AuditLogService.cs deleted file mode 100644 index a4e31247..00000000 --- a/Moonlight/App/Services/LogServices/AuditLogService.cs +++ /dev/null @@ -1,93 +0,0 @@ -using Moonlight.App.Database.Entities.LogsEntries; -using Moonlight.App.Models.Log; -using Moonlight.App.Models.Misc; -using Moonlight.App.Repositories.LogEntries; -using Moonlight.App.Services.Sessions; -using Newtonsoft.Json; - -namespace Moonlight.App.Services.LogServices; - -public class AuditLogService -{ - private readonly AuditLogEntryRepository Repository; - private readonly IHttpContextAccessor HttpContextAccessor; - - public AuditLogService( - AuditLogEntryRepository repository, - IHttpContextAccessor httpContextAccessor) - { - Repository = repository; - HttpContextAccessor = httpContextAccessor; - } - - public Task Log(AuditLogType type, Action data) - { - var ip = GetIp(); - var al = new AuditLogParameters(); - data(al); - - var entry = new AuditLogEntry() - { - Ip = ip, - Type = type, - System = false, - JsonData = al.Build() - }; - - Repository.Add(entry); - - return Task.CompletedTask; - } - - public Task LogSystem(AuditLogType type, Action data) - { - var al = new AuditLogParameters(); - data(al); - - var entry = new AuditLogEntry() - { - Type = type, - System = true, - JsonData = al.Build() - }; - - Repository.Add(entry); - - return Task.CompletedTask; - } - - private string GetIp() - { - if (HttpContextAccessor.HttpContext == null) - return "N/A"; - - if(HttpContextAccessor.HttpContext.Request.Headers.ContainsKey("X-Real-IP")) - { - return HttpContextAccessor.HttpContext.Request.Headers["X-Real-IP"]!; - } - - return HttpContextAccessor.HttpContext.Connection.RemoteIpAddress!.ToString(); - } - - public class AuditLogParameters - { - private List Data = new List(); - - public void Add(object? data) - { - if(data == null) - return; - - Data.Add(new LogData() - { - Type = typeof(T), - Value = data.ToString() - }); - } - - internal string Build() - { - return JsonConvert.SerializeObject(Data); - } - } -} \ No newline at end of file diff --git a/Moonlight/App/Services/LogServices/ErrorLogService.cs b/Moonlight/App/Services/LogServices/ErrorLogService.cs deleted file mode 100644 index c53fa112..00000000 --- a/Moonlight/App/Services/LogServices/ErrorLogService.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System.Diagnostics; -using System.Reflection; -using Moonlight.App.Database.Entities.LogsEntries; -using Moonlight.App.Models.Log; -using Moonlight.App.Repositories.LogEntries; -using Moonlight.App.Services.Sessions; -using Newtonsoft.Json; - -namespace Moonlight.App.Services.LogServices; - -public class ErrorLogService -{ - private readonly ErrorLogEntryRepository Repository; - private readonly IHttpContextAccessor HttpContextAccessor; - - public ErrorLogService(ErrorLogEntryRepository repository, IHttpContextAccessor httpContextAccessor) - { - Repository = repository; - HttpContextAccessor = httpContextAccessor; - } - - public Task Log(Exception exception, Action data) - { - var ip = GetIp(); - var al = new ErrorLogParameters(); - data(al); - - var entry = new ErrorLogEntry() - { - Ip = ip, - System = false, - JsonData = al.Build(), - Class = NameOfCallingClass(), - Stacktrace = exception.ToStringDemystified() - }; - - Repository.Add(entry); - - return Task.CompletedTask; - } - - public Task LogSystem(Exception exception, Action data) - { - var al = new ErrorLogParameters(); - data(al); - - var entry = new ErrorLogEntry() - { - System = true, - JsonData = al.Build(), - Class = NameOfCallingClass(), - Stacktrace = exception.ToStringDemystified() - }; - - Repository.Add(entry); - - return Task.CompletedTask; - } - - private string NameOfCallingClass(int skipFrames = 4) - { - string fullName; - Type? declaringType; - - do - { - MethodBase method = new StackFrame(skipFrames, false).GetMethod()!; - declaringType = method.DeclaringType; - if (declaringType == null) - { - return method.Name; - } - skipFrames++; - if (declaringType.Name.Contains("<")) - fullName = declaringType.ReflectedType!.Name; - else - fullName = declaringType.Name; - } - while (declaringType.Module.Name.Equals("mscorlib.dll", StringComparison.OrdinalIgnoreCase) | fullName.Contains("Log")); - - return fullName; - } - - private string GetIp() - { - if (HttpContextAccessor.HttpContext == null) - return "N/A"; - - if(HttpContextAccessor.HttpContext.Request.Headers.ContainsKey("X-Real-IP")) - { - return HttpContextAccessor.HttpContext.Request.Headers["X-Real-IP"]!; - } - - return HttpContextAccessor.HttpContext.Connection.RemoteIpAddress!.ToString(); - } - - public class ErrorLogParameters - { - private List Data = new List(); - - public void Add(object? data) - { - if(data == null) - return; - - Data.Add(new LogData() - { - Type = typeof(T), - Value = data.ToString() - }); - } - - internal string Build() - { - return JsonConvert.SerializeObject(Data); - } - } -} \ No newline at end of file diff --git a/Moonlight/App/Services/LogServices/LogService.cs b/Moonlight/App/Services/LogServices/LogService.cs deleted file mode 100644 index 10b1925a..00000000 --- a/Moonlight/App/Services/LogServices/LogService.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Logging.Net; -using Moonlight.App.Helpers; -using Moonlight.App.Models.Misc; - -namespace Moonlight.App.Services.LogServices; - -public class LogService -{ - public LogService() - { - Task.Run(ClearLog); - } - - private async Task ClearLog() - { - while (true) - { - await Task.Delay(TimeSpan.FromMinutes(15)); - - if (GetMessages().Length > 500) - { - if (Logger.UsedLogger is CacheLogger cacheLogger) - { - cacheLogger.Clear(250); //TODO: config - } - else - { - Logger.Warn("Log service cannot access cache. Is Logging.Net using CacheLogger?"); - } - } - } - } - - public LogEntry[] GetMessages() - { - if (Logger.UsedLogger is CacheLogger cacheLogger) - { - return cacheLogger.GetMessages(); - } - - Logger.Warn("Log service cannot access cache. Is Logging.Net using CacheLogger?"); - - return Array.Empty(); - } -} \ No newline at end of file diff --git a/Moonlight/App/Services/LogServices/SecurityLogService.cs b/Moonlight/App/Services/LogServices/SecurityLogService.cs deleted file mode 100644 index ade94fa5..00000000 --- a/Moonlight/App/Services/LogServices/SecurityLogService.cs +++ /dev/null @@ -1,92 +0,0 @@ -using Moonlight.App.Database.Entities.LogsEntries; -using Moonlight.App.Models.Log; -using Moonlight.App.Models.Misc; -using Moonlight.App.Repositories.LogEntries; -using Moonlight.App.Services.Sessions; -using Newtonsoft.Json; - -namespace Moonlight.App.Services.LogServices; - -public class SecurityLogService -{ - private readonly SecurityLogEntryRepository Repository; - private readonly IHttpContextAccessor HttpContextAccessor; - - public SecurityLogService(SecurityLogEntryRepository repository, IHttpContextAccessor httpContextAccessor) - { - Repository = repository; - HttpContextAccessor = httpContextAccessor; - } - - public Task Log(SecurityLogType type, Action data) - { - var ip = GetIp(); - var al = new SecurityLogParameters(); - data(al); - - var entry = new SecurityLogEntry() - { - Ip = ip, - Type = type, - System = false, - JsonData = al.Build() - }; - - Repository.Add(entry); - - return Task.CompletedTask; - } - - public Task LogSystem(SecurityLogType type, Action data) - { - var al = new SecurityLogParameters(); - data(al); - - var entry = new SecurityLogEntry() - { - Type = type, - System = true, - JsonData = al.Build() - }; - - Repository.Add(entry); - - return Task.CompletedTask; - } - - private string GetIp() - { - if (HttpContextAccessor.HttpContext == null) - return "N/A"; - - if(HttpContextAccessor.HttpContext.Request.Headers.ContainsKey("X-Real-IP")) - { - return HttpContextAccessor.HttpContext.Request.Headers["X-Real-IP"]!; - } - - return HttpContextAccessor.HttpContext.Connection.RemoteIpAddress!.ToString(); - } - - - public class SecurityLogParameters - { - private List Data = new List(); - - public void Add(object? data) - { - if(data == null) - return; - - Data.Add(new LogData() - { - Type = typeof(T), - Value = data.ToString() - }); - } - - internal string Build() - { - return JsonConvert.SerializeObject(Data); - } - } -} \ No newline at end of file diff --git a/Moonlight/App/Services/Mail/MailService.cs b/Moonlight/App/Services/Mail/MailService.cs index 85e2d60c..efdfc878 100644 --- a/Moonlight/App/Services/Mail/MailService.cs +++ b/Moonlight/App/Services/Mail/MailService.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using MimeKit; +using MimeKit; using Moonlight.App.Database.Entities; using Moonlight.App.Exceptions; using Moonlight.App.Helpers; diff --git a/Moonlight/App/Services/Mail/TrashMailDetectorService.cs b/Moonlight/App/Services/Mail/TrashMailDetectorService.cs index 35d57aaf..417f61fa 100644 --- a/Moonlight/App/Services/Mail/TrashMailDetectorService.cs +++ b/Moonlight/App/Services/Mail/TrashMailDetectorService.cs @@ -1,5 +1,5 @@ using System.Net; -using Logging.Net; +using Moonlight.App.Helpers; namespace Moonlight.App.Services.Mail; diff --git a/Moonlight/App/Services/MoonlightService.cs b/Moonlight/App/Services/MoonlightService.cs index aef3f349..650a2b4f 100644 --- a/Moonlight/App/Services/MoonlightService.cs +++ b/Moonlight/App/Services/MoonlightService.cs @@ -1,4 +1,4 @@ -using Logging.Net; +using Moonlight.App.Helpers; using Octokit; using Repository = LibGit2Sharp.Repository; diff --git a/Moonlight/App/Services/OneTimeJwtService.cs b/Moonlight/App/Services/OneTimeJwtService.cs index 0f70d597..b931a278 100644 --- a/Moonlight/App/Services/OneTimeJwtService.cs +++ b/Moonlight/App/Services/OneTimeJwtService.cs @@ -4,9 +4,7 @@ using JWT.Builder; using JWT.Exceptions; using Moonlight.App.Exceptions; using Moonlight.App.Helpers; -using Moonlight.App.Models.Misc; using Moonlight.App.Repositories; -using Moonlight.App.Services.LogServices; namespace Moonlight.App.Services; @@ -14,15 +12,12 @@ public class OneTimeJwtService { private readonly ConfigService ConfigService; private readonly RevokeRepository RevokeRepository; - private readonly SecurityLogService SecurityLogService; public OneTimeJwtService(ConfigService configService, - RevokeRepository revokeRepository, - SecurityLogService securityLogService) + RevokeRepository revokeRepository) { ConfigService = configService; RevokeRepository = revokeRepository; - SecurityLogService = securityLogService; } public string Generate(Action> options, TimeSpan? validTime = null) @@ -76,10 +71,7 @@ public class OneTimeJwtService } catch (SignatureVerificationException) { - await SecurityLogService.LogSystem(SecurityLogType.ManipulatedJwt, x => - { - x.Add(token); - }); + Logger.Warn($"Detected a manipulated JWT: {token}", "security"); return null; } catch (Exception e) diff --git a/Moonlight/App/Services/ServerService.cs b/Moonlight/App/Services/ServerService.cs index 4b1632ba..4ec10443 100644 --- a/Moonlight/App/Services/ServerService.cs +++ b/Moonlight/App/Services/ServerService.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Moonlight.App.ApiClients.Wings; using Moonlight.App.ApiClients.Wings.Requests; using Moonlight.App.ApiClients.Wings.Resources; @@ -13,7 +12,6 @@ using Moonlight.App.Helpers.Wings; using Moonlight.App.Models.Misc; using Moonlight.App.Repositories; using Moonlight.App.Repositories.Servers; -using Moonlight.App.Services.LogServices; using FileAccess = Moonlight.App.Helpers.Files.FileAccess; namespace Moonlight.App.Services; @@ -30,9 +28,6 @@ public class ServerService private readonly UserService UserService; private readonly ConfigService ConfigService; private readonly WingsJwtHelper WingsJwtHelper; - private readonly SecurityLogService SecurityLogService; - private readonly AuditLogService AuditLogService; - private readonly ErrorLogService ErrorLogService; private readonly NodeService NodeService; private readonly DateTimeService DateTimeService; private readonly EventSystem Event; @@ -46,9 +41,6 @@ public class ServerService UserService userService, ConfigService configService, WingsJwtHelper wingsJwtHelper, - SecurityLogService securityLogService, - AuditLogService auditLogService, - ErrorLogService errorLogService, NodeService nodeService, NodeAllocationRepository nodeAllocationRepository, DateTimeService dateTimeService, @@ -63,9 +55,6 @@ public class ServerService UserService = userService; ConfigService = configService; WingsJwtHelper = wingsJwtHelper; - SecurityLogService = securityLogService; - AuditLogService = auditLogService; - ErrorLogService = errorLogService; NodeService = nodeService; NodeAllocationRepository = nodeAllocationRepository; DateTimeService = dateTimeService; @@ -107,11 +96,7 @@ public class ServerService Action = rawSignal }); - await AuditLogService.Log(AuditLogType.ChangePowerState, x => - { - x.Add(server.Uuid); - x.Add(rawSignal); - }); + //TODO: AuditLog } public async Task CreateBackup(Server server) @@ -140,12 +125,7 @@ public class ServerService Ignore = "" }); - await AuditLogService.Log(AuditLogType.CreateBackup, - x => - { - x.Add(server.Uuid); - x.Add(backup.Uuid); - }); + //TODO: AuditLog return backup; } @@ -182,12 +162,7 @@ public class ServerService Adapter = "wings" }); - await AuditLogService.Log(AuditLogType.RestoreBackup, - x => - { - x.Add(server.Uuid); - x.Add(serverBackup.Uuid); - }); + //TODO: AuditLog } public async Task DeleteBackup(Server server, ServerBackup serverBackup) @@ -220,13 +195,7 @@ public class ServerService await Event.Emit("wings.backups.delete", backup); - await AuditLogService.Log(AuditLogType.DeleteBackup, - x => - { - x.Add(server.Uuid); - x.Add(backup.Uuid); - } - ); + //TODO: AuditLog } public async Task DownloadBackup(Server s, ServerBackup serverBackup) @@ -239,12 +208,7 @@ public class ServerService claims.Add("backup_uuid", serverBackup.Uuid.ToString()); }); - await AuditLogService.Log(AuditLogType.DownloadBackup, - x => - { - x.Add(server.Uuid); - x.Add(serverBackup.Uuid); - }); + //TODO: AuditLog if (server.Node.Ssl) return $"https://{server.Node.Fqdn}:{server.Node.HttpPort}/download/backup?token={token}"; @@ -346,17 +310,14 @@ public class ServerService StartOnCompletion = false }); - await AuditLogService.Log(AuditLogType.CreateServer, x => { x.Add(newServerData.Uuid); }); - + //TODO: AuditLog + return newServerData; } catch (Exception e) { - await ErrorLogService.Log(e, x => - { - x.Add(newServerData.Uuid); - x.Add(node.Id); - }); + Logger.Error("Error creating server on wings"); + Logger.Error(e); ServerRepository.Delete(newServerData); //TODO Remove unsinged table stuff @@ -373,7 +334,7 @@ public class ServerService server.Installing = true; ServerRepository.Update(server); - await AuditLogService.Log(AuditLogType.ReinstallServer, x => { x.Add(server.Uuid); }); + //TODO: AuditLog } public async Task SftpServerLogin(int serverId, int id, string password) @@ -382,7 +343,7 @@ public class ServerService if (server == null) { - await SecurityLogService.LogSystem(SecurityLogType.SftpBruteForce, x => { x.Add(id); }); + Logger.Warn($"Detected an sftp bruteforce attempt. ID: {id} Password: {password}", "security"); throw new Exception("Server not found"); } diff --git a/Moonlight/App/Services/Sessions/DynamicBackgroundService.cs b/Moonlight/App/Services/Sessions/DynamicBackgroundService.cs index 0e7f804d..ebc3edfb 100644 --- a/Moonlight/App/Services/Sessions/DynamicBackgroundService.cs +++ b/Moonlight/App/Services/Sessions/DynamicBackgroundService.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Moonlight.App.Services.Files; +using Moonlight.App.Services.Files; namespace Moonlight.App.Services.Sessions; diff --git a/Moonlight/App/Services/Sessions/IdentityService.cs b/Moonlight/App/Services/Sessions/IdentityService.cs index 1784a475..e231528d 100644 --- a/Moonlight/App/Services/Sessions/IdentityService.cs +++ b/Moonlight/App/Services/Sessions/IdentityService.cs @@ -2,12 +2,10 @@ using JWT.Algorithms; using JWT.Builder; using JWT.Exceptions; -using Logging.Net; using Moonlight.App.Database.Entities; using Moonlight.App.Helpers; using Moonlight.App.Models.Misc; using Moonlight.App.Repositories; -using Moonlight.App.Services.LogServices; using UAParser; namespace Moonlight.App.Services.Sessions; @@ -16,8 +14,6 @@ public class IdentityService { private readonly UserRepository UserRepository; private readonly CookieService CookieService; - private readonly SecurityLogService SecurityLogService; - private readonly ErrorLogService ErrorLogService; private readonly IHttpContextAccessor HttpContextAccessor; private readonly string Secret; @@ -27,15 +23,11 @@ public class IdentityService CookieService cookieService, UserRepository userRepository, IHttpContextAccessor httpContextAccessor, - ConfigService configService, - SecurityLogService securityLogService, - ErrorLogService errorLogService) + ConfigService configService) { CookieService = cookieService; UserRepository = userRepository; HttpContextAccessor = httpContextAccessor; - SecurityLogService = securityLogService; - ErrorLogService = errorLogService; Secret = configService .GetSection("Moonlight") @@ -90,15 +82,13 @@ public class IdentityService } catch (SignatureVerificationException) { - await SecurityLogService.Log(SecurityLogType.ManipulatedJwt, x => - { - x.Add(token); - }); + Logger.Warn($"Detected a manipulated JWT: {token}", "security"); return null; } catch (Exception e) { - await ErrorLogService.Log(e, x => {}); + Logger.Error("Error reading jwt"); + Logger.Error(e); return null; } @@ -134,7 +124,8 @@ public class IdentityService } catch (Exception e) { - await ErrorLogService.Log(e, x => {}); + Logger.Error("Unexpected error while processing token"); + Logger.Error(e); return null; } } diff --git a/Moonlight/App/Services/SmartTranslateService.cs b/Moonlight/App/Services/SmartTranslateService.cs index f82390ab..f725f97d 100644 --- a/Moonlight/App/Services/SmartTranslateService.cs +++ b/Moonlight/App/Services/SmartTranslateService.cs @@ -78,7 +78,7 @@ public class SmartTranslateService } catch (Exception ex) { - Logging.Net.Logger.Error(ex); + Logger.Error(ex); return key; } } diff --git a/Moonlight/App/Services/Statistics/StatisticsCaptureService.cs b/Moonlight/App/Services/Statistics/StatisticsCaptureService.cs index 139ece7b..929362b2 100644 --- a/Moonlight/App/Services/Statistics/StatisticsCaptureService.cs +++ b/Moonlight/App/Services/Statistics/StatisticsCaptureService.cs @@ -1,6 +1,5 @@ -using Logging.Net; -using Moonlight.App.Database; -using Moonlight.App.Database.Entities; +using Moonlight.App.Database.Entities; +using Moonlight.App.Helpers; using Moonlight.App.Repositories; using Moonlight.App.Services.Sessions; @@ -66,8 +65,6 @@ public class StatisticsCaptureService AddEntry("databasesCount", databasesRepo.Get().Count()); AddEntry("sessionsCount", sessionService.GetAll().Length); } - - Logger.Log("Statistics are weird"); } catch (Exception e) { diff --git a/Moonlight/App/Services/SupportChat/SupportChatClientService.cs b/Moonlight/App/Services/SupportChat/SupportChatClientService.cs index 1c4918fc..8c079cfc 100644 --- a/Moonlight/App/Services/SupportChat/SupportChatClientService.cs +++ b/Moonlight/App/Services/SupportChat/SupportChatClientService.cs @@ -1,5 +1,4 @@ -using Logging.Net; -using Microsoft.AspNetCore.Components.Forms; +using Microsoft.AspNetCore.Components.Forms; using Moonlight.App.Database.Entities; using Moonlight.App.Events; using Moonlight.App.Services.Files; diff --git a/Moonlight/App/Services/TotpService.cs b/Moonlight/App/Services/TotpService.cs index caffc7a7..4b2ac522 100644 --- a/Moonlight/App/Services/TotpService.cs +++ b/Moonlight/App/Services/TotpService.cs @@ -1,7 +1,4 @@ -using Moonlight.App.Database.Entities; -using Moonlight.App.Models.Misc; -using Moonlight.App.Repositories; -using Moonlight.App.Services.LogServices; +using Moonlight.App.Repositories; using Moonlight.App.Services.Sessions; using OtpNet; @@ -11,16 +8,13 @@ public class TotpService { private readonly IdentityService IdentityService; private readonly UserRepository UserRepository; - private readonly AuditLogService AuditLogService; public TotpService( IdentityService identityService, - UserRepository userRepository, - AuditLogService auditLogService) + UserRepository userRepository) { IdentityService = identityService; UserRepository = userRepository; - AuditLogService = auditLogService; } public Task Verify(string secret, string code) @@ -52,10 +46,7 @@ public class TotpService UserRepository.Update(user); - await AuditLogService.Log(AuditLogType.EnableTotp, x => - { - x.Add(user.Email); - }); + //TODO: AuditLog } public async Task EnforceTotpLogin() @@ -74,10 +65,7 @@ public class TotpService UserRepository.Update(user); - await AuditLogService.Log(AuditLogType.DisableTotp,x => - { - x.Add(user.Email); - }); + //TODO: AuditLog } private string GenerateSecret() diff --git a/Moonlight/App/Services/UserService.cs b/Moonlight/App/Services/UserService.cs index 940f3c09..ed724d33 100644 --- a/Moonlight/App/Services/UserService.cs +++ b/Moonlight/App/Services/UserService.cs @@ -5,7 +5,6 @@ using Moonlight.App.Exceptions; using Moonlight.App.Helpers; using Moonlight.App.Models.Misc; using Moonlight.App.Repositories; -using Moonlight.App.Services.LogServices; using Moonlight.App.Services.Mail; using Moonlight.App.Services.Sessions; @@ -15,8 +14,6 @@ public class UserService { private readonly UserRepository UserRepository; private readonly TotpService TotpService; - private readonly SecurityLogService SecurityLogService; - private readonly AuditLogService AuditLogService; private readonly MailService MailService; private readonly IdentityService IdentityService; private readonly IpLocateService IpLocateService; @@ -27,9 +24,7 @@ public class UserService public UserService( UserRepository userRepository, TotpService totpService, - ConfigService configService, - SecurityLogService securityLogService, - AuditLogService auditLogService, + ConfigService configService, MailService mailService, IdentityService identityService, IpLocateService ipLocateService, @@ -37,8 +32,6 @@ public class UserService { UserRepository = userRepository; TotpService = totpService; - SecurityLogService = securityLogService; - AuditLogService = auditLogService; MailService = mailService; IdentityService = identityService; IpLocateService = ipLocateService; @@ -85,10 +78,7 @@ public class UserService await MailService.SendMail(user!, "register", values => {}); - await AuditLogService.Log(AuditLogType.Register, x => - { - x.Add(user.Email); - }); + //TODO: AuditLog return await GenerateToken(user); } @@ -102,11 +92,7 @@ public class UserService if (user == null) { - await SecurityLogService.Log(SecurityLogType.LoginFail, x => - { - x.Add(email); - x.Add(password); - }); + Logger.Warn($"Failed login attempt. Email: {email} Password: {password}", "security"); throw new DisplayException("Email and password combination not found"); } @@ -115,11 +101,7 @@ public class UserService return user.TotpEnabled; } - await SecurityLogService.Log(SecurityLogType.LoginFail, x => - { - x.Add(email); - x.Add(password); - }); + Logger.Warn($"Failed login attempt. Email: {email} Password: {password}", "security"); throw new DisplayException("Email and password combination not found");; } @@ -144,28 +126,18 @@ public class UserService if (totpCodeValid) { - await AuditLogService.Log(AuditLogType.Login, x => - { - x.Add(email); - }); + //TODO: AuditLog return await GenerateToken(user, true); } else { - await SecurityLogService.Log(SecurityLogType.LoginFail, x => - { - x.Add(email); - x.Add(password); - }); + Logger.Warn($"Failed login attempt. Email: {email} Password: {password}", "security"); throw new DisplayException("2FA code invalid"); } } else { - await AuditLogService.Log(AuditLogType.Login, x => - { - x.Add(email); - }); + //TODO: AuditLog return await GenerateToken(user!, true); } } @@ -178,10 +150,7 @@ public class UserService if (isSystemAction) { - await AuditLogService.LogSystem(AuditLogType.ChangePassword, x=> - { - x.Add(user.Email); - }); + //TODO: AuditLog } else { @@ -194,10 +163,7 @@ public class UserService values.Add("Location", location); }); - await AuditLogService.Log(AuditLogType.ChangePassword, x => - { - x.Add(user.Email); - }); + //TODO: AuditLog } } @@ -207,28 +173,18 @@ public class UserService if (user == null) { - await SecurityLogService.LogSystem(SecurityLogType.SftpBruteForce, x => - { - x.Add(id); - }); + Logger.Warn($"Detected an sftp bruteforce attempt. ID: {id} Password: {password}", "security"); throw new Exception("Invalid username"); } if (BCrypt.Net.BCrypt.Verify(password, user.Password)) { - await AuditLogService.LogSystem(AuditLogType.Login, x => - { - x.Add(user.Email); - }); + //TODO: AuditLog return user; } - await SecurityLogService.LogSystem(SecurityLogType.SftpBruteForce, x => - { - x.Add(id); - x.Add(password); - }); + Logger.Warn($"Detected an sftp bruteforce attempt. ID: {id} Password: {password}", "security"); throw new Exception("Invalid userid or password"); } @@ -271,7 +227,7 @@ public class UserService var newPassword = StringHelper.GenerateString(16); await ChangePassword(user, newPassword, true); - await AuditLogService.Log(AuditLogType.PasswordReset, x => {}); + //TODO: AuditLog var location = await IpLocateService.GetLocation(); diff --git a/Moonlight/App/Services/WebSpaceService.cs b/Moonlight/App/Services/WebSpaceService.cs index 7fb9f964..b9c3d869 100644 --- a/Moonlight/App/Services/WebSpaceService.cs +++ b/Moonlight/App/Services/WebSpaceService.cs @@ -1,6 +1,4 @@ -using System.Net; -using DnsClient; -using Logging.Net; +using DnsClient; using Microsoft.EntityFrameworkCore; using Moonlight.App.ApiClients.CloudPanel; using Moonlight.App.ApiClients.CloudPanel.Requests; diff --git a/Moonlight/Moonlight.csproj b/Moonlight/Moonlight.csproj index 4b48415d..c4a6dcab 100644 --- a/Moonlight/Moonlight.csproj +++ b/Moonlight/Moonlight.csproj @@ -26,7 +26,6 @@ - @@ -47,6 +46,9 @@ + + + diff --git a/Moonlight/Program.cs b/Moonlight/Program.cs index 1ca73465..2dfae901 100644 --- a/Moonlight/Program.cs +++ b/Moonlight/Program.cs @@ -2,7 +2,6 @@ using BlazorDownloadFile; using BlazorTable; using CurrieTechnologies.Razor.SweetAlert2; using HealthChecks.UI.Client; -using Logging.Net; using Moonlight.App.ApiClients.CloudPanel; using Moonlight.App.ApiClients.Daemon; using Moonlight.App.ApiClients.Modrinth; @@ -24,13 +23,14 @@ using Moonlight.App.Services.Background; using Moonlight.App.Services.DiscordBot; using Moonlight.App.Services.Files; using Moonlight.App.Services.Interop; -using Moonlight.App.Services.LogServices; using Moonlight.App.Services.Mail; using Moonlight.App.Services.Minecraft; using Moonlight.App.Services.Notifications; using Moonlight.App.Services.Sessions; using Moonlight.App.Services.Statistics; using Moonlight.App.Services.SupportChat; +using Serilog; +using Serilog.Sinks.SystemConsole.Themes; namespace Moonlight { @@ -38,7 +38,12 @@ namespace Moonlight { public static async Task Main(string[] args) { - Logger.UsedLogger = new CacheLogger(); + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Verbose() + .Enrich.FromLogContext() + .WriteTo.Console( + outputTemplate: "{Timestamp:HH:mm:ss} [{Level:u3}] {SourceContext} {Message:lj}{NewLine}{Exception}") + .CreateLogger(); Logger.Info($"Working dir: {Directory.GetCurrentDirectory()}"); @@ -140,10 +145,6 @@ namespace Moonlight builder.Services.AddScoped(); // Loggers - builder.Services.AddScoped(); - builder.Services.AddScoped(); - builder.Services.AddScoped(); - builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(); diff --git a/Moonlight/Shared/Components/Auth/Login.razor b/Moonlight/Shared/Components/Auth/Login.razor index 5d8b1e04..3ea14c27 100644 --- a/Moonlight/Shared/Components/Auth/Login.razor +++ b/Moonlight/Shared/Components/Auth/Login.razor @@ -8,11 +8,11 @@ @using Moonlight.App.Services.Interop @using Moonlight.App.Services @using Moonlight.App.Exceptions -@using Logging.Net @using Moonlight.App.Database.Entities @using Moonlight.App.Models.Misc @using Moonlight.App.Services.Sessions @using System.ComponentModel.DataAnnotations +@using Moonlight.App.Helpers @using Moonlight.App.Models.Forms @inject AlertService AlertService diff --git a/Moonlight/Shared/Components/ErrorBoundaries/ComponentErrorBoundary.razor b/Moonlight/Shared/Components/ErrorBoundaries/ComponentErrorBoundary.razor deleted file mode 100644 index c540c4c5..00000000 --- a/Moonlight/Shared/Components/ErrorBoundaries/ComponentErrorBoundary.razor +++ /dev/null @@ -1,66 +0,0 @@ -@using Logging.Net -@using Moonlight.App.Services.LogServices -@using Moonlight.App.Services.Sessions - -@inherits ErrorBoundary - -@inject ErrorLogService ErrorLogService - -@if (CurrentException is null) -{ - @ChildContent -} -else if (ErrorContent is not null) -{ -
-
-
-
- - Ooops. This component is crashed - -
-
- This component is crashed. The error has been reported to the moonlight team -
-
-
-
-} -else -{ -
-
-
-
- - Ooops. This component is crashed - -
-
- This component is crashed. The error has been reported to the moonlight team -
-
-
-
-} - -@code -{ - List receivedExceptions = new(); - - protected override async Task OnErrorAsync(Exception exception) - { - receivedExceptions.Add(exception); - - await ErrorLogService.Log(exception, x => {}); - - await base.OnErrorAsync(exception); - } - - public new void Recover() - { - receivedExceptions.Clear(); - base.Recover(); - } -} \ No newline at end of file diff --git a/Moonlight/Shared/Components/ErrorBoundaries/GlobalErrorBoundary.razor b/Moonlight/Shared/Components/ErrorBoundaries/GlobalErrorBoundary.razor index 489a5a6a..0419fc71 100644 --- a/Moonlight/Shared/Components/ErrorBoundaries/GlobalErrorBoundary.razor +++ b/Moonlight/Shared/Components/ErrorBoundaries/GlobalErrorBoundary.razor @@ -1,5 +1,5 @@ -@using Logging.Net -@using Moonlight.App.Services.Sessions +@using Moonlight.App.Services.Sessions +@using Moonlight.App.Helpers @inherits ErrorBoundary diff --git a/Moonlight/Shared/Components/ErrorBoundaries/PageErrorBoundary.razor b/Moonlight/Shared/Components/ErrorBoundaries/PageErrorBoundary.razor index df5f3b49..4cc364fa 100644 --- a/Moonlight/Shared/Components/ErrorBoundaries/PageErrorBoundary.razor +++ b/Moonlight/Shared/Components/ErrorBoundaries/PageErrorBoundary.razor @@ -1,5 +1,5 @@ -@using Logging.Net -@using Moonlight.App.Exceptions +@using Moonlight.App.Exceptions +@using Moonlight.App.Helpers @using Moonlight.App.Services @using Moonlight.App.Services.Interop @using Moonlight.App.Services.Sessions diff --git a/Moonlight/Shared/Components/ErrorBoundaries/SoftErrorBoundary.razor b/Moonlight/Shared/Components/ErrorBoundaries/SoftErrorBoundary.razor index 1127b8b0..7291544b 100644 --- a/Moonlight/Shared/Components/ErrorBoundaries/SoftErrorBoundary.razor +++ b/Moonlight/Shared/Components/ErrorBoundaries/SoftErrorBoundary.razor @@ -1,11 +1,11 @@ @using Moonlight.App.Services.Interop @using Moonlight.App.Exceptions @using Moonlight.App.Services -@using Logging.Net @using Moonlight.App.ApiClients.CloudPanel @using Moonlight.App.ApiClients.Daemon @using Moonlight.App.ApiClients.Modrinth @using Moonlight.App.ApiClients.Wings +@using Moonlight.App.Helpers @inherits ErrorBoundaryBase @inject AlertService AlertService @@ -42,7 +42,7 @@ else { if (ConfigService.DebugMode) { - Logger.Warn(exception); + Logger.Verbose(exception); } if (exception is DisplayException displayException) diff --git a/Moonlight/Shared/Components/FileManagerPartials/FileManager.razor b/Moonlight/Shared/Components/FileManagerPartials/FileManager.razor index c47d90a2..88c77a89 100644 --- a/Moonlight/Shared/Components/FileManagerPartials/FileManager.razor +++ b/Moonlight/Shared/Components/FileManagerPartials/FileManager.razor @@ -1,6 +1,5 @@ @using Moonlight.App.Helpers.Files @using Moonlight.App.Helpers -@using Logging.Net @using Moonlight.App.Services @using Moonlight.App.Services.Interop @using BlazorDownloadFile diff --git a/Moonlight/Shared/Components/FileManagerPartials/FilePath.razor b/Moonlight/Shared/Components/FileManagerPartials/FilePath.razor index 4492bfcf..93982da1 100644 --- a/Moonlight/Shared/Components/FileManagerPartials/FilePath.razor +++ b/Moonlight/Shared/Components/FileManagerPartials/FilePath.razor @@ -1,5 +1,4 @@ @using Moonlight.App.Helpers.Files -@using Logging.Net
diff --git a/Moonlight/Shared/Components/FileManagerPartials/FileUpload.razor b/Moonlight/Shared/Components/FileManagerPartials/FileUpload.razor index 5efc29f3..4bebc345 100644 --- a/Moonlight/Shared/Components/FileManagerPartials/FileUpload.razor +++ b/Moonlight/Shared/Components/FileManagerPartials/FileUpload.razor @@ -1,7 +1,7 @@ @using Moonlight.App.Helpers.Files @using Moonlight.App.Services @using Moonlight.App.Services.Interop -@using Logging.Net +@using Moonlight.App.Helpers @inject ToastService ToastService @inject SmartTranslateService SmartTranslateService diff --git a/Moonlight/Shared/Components/FileManagerPartials/FileView.razor b/Moonlight/Shared/Components/FileManagerPartials/FileView.razor index 0e889e8a..b1ef5e27 100644 --- a/Moonlight/Shared/Components/FileManagerPartials/FileView.razor +++ b/Moonlight/Shared/Components/FileManagerPartials/FileView.razor @@ -1,5 +1,4 @@ @using Moonlight.App.Helpers.Files -@using Logging.Net @using BlazorContextMenu @using Moonlight.App.Helpers diff --git a/Moonlight/Shared/Components/Forms/SmartDropdown.razor b/Moonlight/Shared/Components/Forms/SmartDropdown.razor index 868d035a..191716cd 100644 --- a/Moonlight/Shared/Components/Forms/SmartDropdown.razor +++ b/Moonlight/Shared/Components/Forms/SmartDropdown.razor @@ -1,5 +1,4 @@ @typeparam T -@using Logging.Net @inherits InputBase