| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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 Listener on port " + Properties.ListenPort);
- CertificateManager = new CertificateManager(CertificateFileName());
- CertificateManager.UpdateCertificate += CertificateManager_UpdateCertificate;
- CertificateManager.CertificateExpiring += CertificateManager_CertificateExpiring;
- CertificateManager.CertificateExpired += CertificateManager_CertificateExpired;
- try
- {
- var certificate = CertificateManager.GetCertificate();
- ProxyServer = new RpcSocketProxyServer(Properties.ListenPort, ServerTransport, certificate);
- ProxyServer.Start();
- }
- catch (Exception eListen)
- {
- Logger.Send(LogType.Error, ClientFactory.UserID, eListen.Message);
- }
- }
- private void CertificateManager_CertificateExpired()
- {
- Logger.Send(LogType.Information, "", "Expiry of certificate reached; restarting HTTPS listener...");
- ProxyServer.Stop();
- ProxyServer = new RpcSocketProxyServer(Properties.ListenPort, ServerTransport, CertificateManager.GetCertificate());
- ProxyServer.Start();
- }
- 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();
- ProxyServer = new RpcSocketProxyServer(Properties.ListenPort, ServerTransport, certificate);
- ProxyServer.Start();
- }
- private string CertificateFileName() =>
- !string.IsNullOrWhiteSpace(Properties.CertificateFile)
- ? Properties.CertificateFile
- : CertificateEngine.CertificateFile;
- public override void Stop()
- {
- ProxyServer.Stop();
- }
- }
|