using System; using System.Threading.Tasks; using Comal.Classes; using Comal.Stores; using InABox.IPC; using InABox.Clients; using InABox.Configuration; using InABox.Core; using InABox.Wpf.Reports; using InABox.Rpc; using PRS.Shared; using PRSServices; namespace PRSServer; public class WebEngine : Engine { 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; } InitialiseConnection(Properties.Server, Platform.WebEngine); Logger.Send(LogType.Information, "", "Registering Classes"); StoreUtils.RegisterClasses(); CoreUtils.RegisterClasses(); ComalUtils.RegisterClasses(); PRSSharedUtils.RegisterClasses(); ReportUtils.RegisterClasses(); ConfigurationUtils.RegisterClasses(); 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; }