Program.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. using BlazorDownloadFile;
  2. using BlazorTable;
  3. using CurrieTechnologies.Razor.SweetAlert2;
  4. using Logging.Net;
  5. using Moonlight.App.Database;
  6. using Moonlight.App.Helpers;
  7. using Moonlight.App.LogMigrator;
  8. using Moonlight.App.Repositories;
  9. using Moonlight.App.Repositories.Domains;
  10. using Moonlight.App.Repositories.LogEntries;
  11. using Moonlight.App.Repositories.Servers;
  12. using Moonlight.App.Services;
  13. using Moonlight.App.Services.DiscordBot;
  14. using Moonlight.App.Services.Interop;
  15. using Moonlight.App.Services.LogServices;
  16. using Moonlight.App.Services.Notifications;
  17. using Moonlight.App.Services.OAuth2;
  18. using Moonlight.App.Services.Sessions;
  19. using Moonlight.App.Services.Statistics;
  20. using Moonlight.App.Services.Support;
  21. namespace Moonlight
  22. {
  23. public class Program
  24. {
  25. // App version. Change for release
  26. public static readonly string AppVersion = $"InDev {Formatter.FormatDateOnly(DateTime.Now.Date)}";
  27. public static void Main(string[] args)
  28. {
  29. Logger.UsedLogger = new CacheLogger();
  30. Logger.Info($"Working dir: {Directory.GetCurrentDirectory()}");
  31. var builder = WebApplication.CreateBuilder(args);
  32. // Switch to logging.net injection
  33. // TODO: Enable in production
  34. //builder.Logging.ClearProviders();
  35. //builder.Logging.AddProvider(new LogMigratorProvider());
  36. // Add services to the container.
  37. builder.Services.AddRazorPages();
  38. builder.Services.AddServerSideBlazor();
  39. builder.Services.AddHttpContextAccessor();
  40. // Databases
  41. builder.Services.AddDbContext<DataContext>();
  42. // Repositories
  43. builder.Services.AddSingleton<SessionRepository>();
  44. builder.Services.AddScoped<UserRepository>();
  45. builder.Services.AddScoped<NodeRepository>();
  46. builder.Services.AddScoped<ServerRepository>();
  47. builder.Services.AddScoped<ServerBackupRepository>();
  48. builder.Services.AddScoped<ImageRepository>();
  49. builder.Services.AddScoped<SupportMessageRepository>();
  50. builder.Services.AddScoped<DomainRepository>();
  51. builder.Services.AddScoped<SharedDomainRepository>();
  52. builder.Services.AddScoped<RevokeRepository>();
  53. builder.Services.AddScoped<NotificationRepository>();
  54. builder.Services.AddScoped<DdosAttackRepository>();
  55. builder.Services.AddScoped<SubscriptionRepository>();
  56. builder.Services.AddScoped<PleskServerRepository>();
  57. builder.Services.AddScoped<WebsiteRepository>();
  58. builder.Services.AddScoped<LoadingMessageRepository>();
  59. builder.Services.AddScoped<StatisticsRepository>();
  60. builder.Services.AddScoped<AuditLogEntryRepository>();
  61. builder.Services.AddScoped<ErrorLogEntryRepository>();
  62. builder.Services.AddScoped<SecurityLogEntryRepository>();
  63. // Services
  64. builder.Services.AddSingleton<ConfigService>();
  65. builder.Services.AddScoped<CookieService>();
  66. builder.Services.AddScoped<IdentityService>();
  67. builder.Services.AddScoped<IpLocateService>();
  68. builder.Services.AddScoped<SessionService>();
  69. builder.Services.AddScoped<AlertService>();
  70. builder.Services.AddScoped<SmartTranslateService>();
  71. builder.Services.AddScoped<UserService>();
  72. builder.Services.AddScoped<TotpService>();
  73. builder.Services.AddScoped<ToastService>();
  74. builder.Services.AddScoped<NodeService>();
  75. builder.Services.AddSingleton<MessageService>();
  76. builder.Services.AddScoped<ServerService>();
  77. builder.Services.AddSingleton<PaperService>();
  78. builder.Services.AddScoped<ClipboardService>();
  79. builder.Services.AddSingleton<ResourceService>();
  80. builder.Services.AddScoped<DomainService>();
  81. builder.Services.AddScoped<OneTimeJwtService>();
  82. builder.Services.AddSingleton<NotificationServerService>();
  83. builder.Services.AddScoped<NotificationAdminService>();
  84. builder.Services.AddScoped<NotificationClientService>();
  85. builder.Services.AddScoped<ModalService>();
  86. builder.Services.AddScoped<SmartDeployService>();
  87. builder.Services.AddScoped<WebsiteService>();
  88. builder.Services.AddScoped<StatisticsViewService>();
  89. builder.Services.AddScoped<GoogleOAuth2Service>();
  90. builder.Services.AddScoped<DiscordOAuth2Service>();
  91. builder.Services.AddScoped<SubscriptionService>();
  92. builder.Services.AddScoped<SubscriptionAdminService>();
  93. builder.Services.AddSingleton<CleanupService>();
  94. // Loggers
  95. builder.Services.AddScoped<SecurityLogService>();
  96. builder.Services.AddScoped<AuditLogService>();
  97. builder.Services.AddScoped<ErrorLogService>();
  98. builder.Services.AddScoped<LogService>();
  99. builder.Services.AddScoped<MailService>();
  100. builder.Services.AddSingleton<TrashMailDetectorService>();
  101. // Support
  102. builder.Services.AddSingleton<SupportServerService>();
  103. builder.Services.AddScoped<SupportAdminService>();
  104. builder.Services.AddScoped<SupportClientService>();
  105. // Helpers
  106. builder.Services.AddSingleton<SmartTranslateHelper>();
  107. builder.Services.AddScoped<WingsApiHelper>();
  108. builder.Services.AddScoped<WingsServerConverter>();
  109. builder.Services.AddSingleton<WingsJwtHelper>();
  110. builder.Services.AddScoped<WingsConsoleHelper>();
  111. builder.Services.AddSingleton<PaperApiHelper>();
  112. builder.Services.AddSingleton<HostSystemHelper>();
  113. builder.Services.AddScoped<DaemonApiHelper>();
  114. builder.Services.AddScoped<PleskApiHelper>();
  115. // Background services
  116. builder.Services.AddSingleton<DiscordBotService>();
  117. builder.Services.AddSingleton<StatisticsCaptureService>();
  118. // Third party services
  119. builder.Services.AddBlazorTable();
  120. builder.Services.AddSweetAlert2(options => { options.Theme = SweetAlertTheme.Dark; });
  121. builder.Services.AddBlazorContextMenu();
  122. builder.Services.AddBlazorDownloadFile();
  123. var app = builder.Build();
  124. // Configure the HTTP request pipeline.
  125. if (!app.Environment.IsDevelopment())
  126. {
  127. app.UseExceptionHandler("/Error");
  128. // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  129. app.UseHsts();
  130. }
  131. app.UseStaticFiles();
  132. app.UseRouting();
  133. app.UseWebSockets();
  134. app.MapControllers();
  135. app.MapBlazorHub();
  136. app.MapFallbackToPage("/_Host");
  137. // Support service
  138. var supportServerService = app.Services.GetRequiredService<SupportServerService>();
  139. // AutoStart services
  140. _ = app.Services.GetRequiredService<CleanupService>();
  141. _ = app.Services.GetRequiredService<DiscordBotService>();
  142. _ = app.Services.GetRequiredService<StatisticsCaptureService>();
  143. // Discord bot service
  144. //var discordBotService = app.Services.GetRequiredService<DiscordBotService>();
  145. app.Run();
  146. }
  147. }
  148. }