WebEngine.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Threading.Tasks;
  3. using Comal.Classes;
  4. using Comal.Stores;
  5. using InABox.Client.IPC;
  6. using InABox.Clients;
  7. using InABox.Configuration;
  8. using InABox.Core;
  9. using InABox.Wpf.Reports;
  10. namespace PRSServer
  11. {
  12. public class WebEngine : Engine<WebServerProperties>
  13. {
  14. private WebListener listener;
  15. public override void Configure(Server server)
  16. {
  17. base.Configure(server);
  18. Logger.Send(LogType.Information, "", "Configuring...");
  19. }
  20. public override async void Run()
  21. {
  22. Logger.Send(LogType.Information, "", "Starting..");
  23. if (string.IsNullOrWhiteSpace(Properties.Server))
  24. {
  25. Logger.Send(LogType.Error, "", "Server is blank!");
  26. return;
  27. }
  28. ClientFactory.SetClientType(typeof(PipeIPCClient<>), Platform.WebEngine, Version, DatabaseServerProperties.GetPipeName(Properties.Server));
  29. Logger.Send(LogType.Information, "", "Registering Classes");
  30. StoreUtils.RegisterClasses();
  31. CoreUtils.RegisterClasses();
  32. ComalUtils.RegisterClasses();
  33. ReportUtils.RegisterClasses();
  34. ConfigurationUtils.RegisterClasses();
  35. while (!Client.Ping())
  36. {
  37. Logger.Send(LogType.Error, "", "Database server unavailable. Trying again in 30 seconds...");
  38. await Task.Delay(30_000);
  39. Logger.Send(LogType.Information, "", "Retrying connection...");
  40. }
  41. ClientFactory.SetBypass();
  42. try
  43. {
  44. listener?.Stop();
  45. listener = new WebListener(new WebHandlerProperties(Properties.MaxFileSize, (ulong)Properties.LoginExpiry * 3600));
  46. listener.InitHTTPS((ushort)Properties.ListenPort, CertificateFileName());
  47. Logger.Send(LogType.Information, "", "Starting Web Listener on port " + Properties.ListenPort);
  48. listener.Start();
  49. }
  50. catch (Exception eListen)
  51. {
  52. Logger.Send(LogType.Error, ClientFactory.UserID, eListen.Message);
  53. }
  54. }
  55. public override void Stop()
  56. {
  57. Logger.Send(LogType.Information, "", "Stopping..");
  58. listener?.Stop();
  59. }
  60. private string CertificateFileName() =>
  61. !string.IsNullOrWhiteSpace(Properties.CertificateFile)
  62. ? Properties.CertificateFile
  63. : CertificateEngine.CertificateFile;
  64. }
  65. }