123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System;
- using System.IO;
- using System.Threading.Tasks;
- using Comal.Classes;
- using Comal.Stores;
- using InABox.Client.IPC;
- using InABox.Clients;
- using InABox.Configuration;
- using InABox.Core;
- using InABox.Reports;
- namespace PRSServer
- {
- public class WebEngine : Engine<WebServerProperties>
- {
- private WebListener listener;
- public override void Configure(Server server)
- {
- base.Configure(server);
- Logger.Send(LogType.Information, "", "Configuring...");
- }
- public override async void Run()
- {
- Logger.Send(LogType.Information, "", "Starting..");
- if (string.IsNullOrWhiteSpace(Properties.Server))
- {
- Logger.Send(LogType.Error, "", "Server is blank!");
- return;
- }
- ClientFactory.SetClientType(typeof(PipeIPCClient<>), "WebEngine", Version, DatabaseServerProperties.GetPipeName(Properties.Server));
- Logger.Send(LogType.Information, "", "Registering Classes");
- StoreUtils.RegisterClasses();
- CoreUtils.RegisterClasses();
- ComalUtils.RegisterClasses();
- ReportUtils.RegisterClasses();
- ConfigurationUtils.RegisterClasses();
- while (!Client.Ping())
- {
- Logger.Send(LogType.Error, "", "Database server unavailable. Trying again in 30 seconds...");
- await Task.Delay(30_000);
- Logger.Send(LogType.Information, "", "Retrying connection...");
- URLCache.Clear();
- }
- ClientFactory.SetBypass();
- try
- {
- listener?.Stop();
- listener = new WebListener(new WebHandlerProperties(Properties.MaxFileSize, (ulong)Properties.LoginExpiry * 3600));
- listener.InitHTTPS((ushort)Properties.ListenPort, CertificateFileName());
- Logger.Send(LogType.Information, "", "Starting Web Listener on port " + Properties.ListenPort);
- listener.Start();
- }
- catch (Exception eListen)
- {
- Logger.Send(LogType.Error, ClientFactory.UserID, eListen.Message);
- }
- }
- public override void Stop()
- {
- Logger.Send(LogType.Information, "", "Stopping..");
- listener?.Stop();
- }
- private string CertificateFileName() =>
- !string.IsNullOrWhiteSpace(Properties.CertificateFile)
- ? Properties.CertificateFile
- : CertificateEngine.CertificateFile;
- }
- }
|