| 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;    }}
 |