| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using InABox.Clients;
- using InABox.Core;
- using InABox.Rpc;
- using PRSServices;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PRSServer;
- internal class WebSocketDatabaseProxyEngine : DatabaseProxyEngine<WebSocketDatabaseProxyProperties>
- {
- private RpcSocketProxyServer ProxyServer;
- private CertificateManager CertificateManager;
- protected override void RunProxy()
- {
- Logger.Send(LogType.Information, "", "Starting WebSocket Listener on port " + Properties.ListenPort);
- CertificateManager = new CertificateManager(CertificateFileName());
- CertificateManager.UpdateCertificate += CertificateManager_UpdateCertificate;
- CertificateManager.CertificateExpiring += CertificateManager_CertificateExpiring;
- CertificateManager.CertificateExpired += CertificateManager_CertificateExpired;
- try
- {
- StartServer();
- }
- catch (Exception eListen)
- {
- Logger.Send(LogType.Error, ClientFactory.UserID, eListen.Message);
- }
- }
- private void StartServer()
- {
- var certificate = CertificateManager.GetCertificate();
- ProxyServer = new RpcSocketProxyServer(Properties.ListenPort, ServerTransport, certificate);
- ProxyServer.OnLog += Logger.Send;
- ProxyServer.Start();
- }
- private void CertificateManager_CertificateExpired()
- {
- Logger.Send(LogType.Information, "", "Expiry of certificate reached; restarting HTTPS listener...");
- ProxyServer.Stop();
- StartServer();
- }
- private void CertificateManager_CertificateExpiring(DateTime expiry)
- {
- var message = expiry.Date == DateTime.Now.Date
- ? $"HTTPS Certificate for Database Engine will expire today at {expiry.TimeOfDay:hh\\:mm}"
- : $"HTTPS Certificate for Database Engine will expire in {(expiry - DateTime.Now).Days} at {expiry:dd/MM/yyyy hh:mm}";
-
- Logger.Send(LogType.Information, "DATABASE", message);
- }
- private void CertificateManager_UpdateCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate)
- {
- Logger.Send(LogType.Information, "DATABASE", "HTTPS Certificate with greater expiry date found; restarting HTTPS listener...");
- ProxyServer.Stop();
- StartServer();
- }
- private string CertificateFileName() =>
- !string.IsNullOrWhiteSpace(Properties.CertificateFile)
- ? Properties.CertificateFile
- : CertificateEngine.CertificateFile;
- public override void Stop()
- {
- ProxyServer.Stop();
- }
- }
|