From 8be5796ceee53040f657e0d33c4ac2c4ad598278 Mon Sep 17 00:00:00 2001 From: Jared Goodwin Date: Fri, 29 Mar 2019 18:04:16 -0700 Subject: [PATCH] Added forwarded headers as the default. Moved around some error handling. --- Remotely_Agent/Program.cs | 58 ++++++++------- Remotely_Agent/Services/DeviceSocket.cs | 17 +---- Remotely_ScreenCast.Linux/Program.cs | 1 + Remotely_ScreenCast.Win/Program.cs | 1 + Remotely_Server/CurrentVersion.txt | 2 +- Remotely_Server/Services/DeviceSocketHub.cs | 78 ++++++++++++--------- Remotely_Server/Startup.cs | 8 +-- 7 files changed, 84 insertions(+), 81 deletions(-) diff --git a/Remotely_Agent/Program.cs b/Remotely_Agent/Program.cs index d6d27a16..84429bfd 100644 --- a/Remotely_Agent/Program.cs +++ b/Remotely_Agent/Program.cs @@ -19,42 +19,50 @@ namespace Remotely_Agent public static bool IsDebug { get; set; } static void Main(string[] args) { - AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - SetWorkingDirectory(); - var argDict = ProcessArgs(args); - - JsonConvert.DefaultSettings = () => + try { - var settings = new JsonSerializerSettings(); - settings.Error = (sender, arg) => + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + SetWorkingDirectory(); + var argDict = ProcessArgs(args); + + JsonConvert.DefaultSettings = () => { - arg.ErrorContext.Handled = true; + var settings = new JsonSerializerSettings(); + settings.Error = (sender, arg) => + { + arg.ErrorContext.Handled = true; + }; + return settings; }; - return settings; - }; - if (argDict.ContainsKey("update")) - { - Updater.CoreUpdate(); - } + if (argDict.ContainsKey("update")) + { + Updater.CoreUpdate(); + } - if (OSUtils.IsWindows) - { + if (OSUtils.IsWindows) + { #if DEBUG - IsDebug = true; - DeviceSocket.Connect(); + IsDebug = true; + DeviceSocket.Connect(); #else ServiceBase.Run(new WindowsService()); #endif + } + else + { + DeviceSocket.Connect(); + } + + while (true) + { + System.Threading.Thread.Sleep(1000); + } } - else + catch (Exception ex) { - DeviceSocket.Connect(); - } - - while (true) - { - System.Threading.Thread.Sleep(1000); + Logger.Write(ex); + throw; } } diff --git a/Remotely_Agent/Services/DeviceSocket.cs b/Remotely_Agent/Services/DeviceSocket.cs index d6c327e1..b01050f6 100644 --- a/Remotely_Agent/Services/DeviceSocket.cs +++ b/Remotely_Agent/Services/DeviceSocket.cs @@ -37,22 +37,7 @@ namespace Remotely_Agent.Services RegisterMessageHandlers(HubConnection); - try - { - await HubConnection.StartAsync(); - } - catch (Exception ex) - { - Logger.Write(ex); - if (!ConnectionInfo.Host.StartsWith("https")) - { - Logger.Write($"Failed to connect to {ConnectionInfo.Host}. Trying with HTTPS."); - ConnectionInfo.Host = ConnectionInfo.Host.ToLower().Replace("http:", "https:"); - Connect(); - return; - } - throw; - } + await HubConnection.StartAsync(); var device = Device.Create(ConnectionInfo); diff --git a/Remotely_ScreenCast.Linux/Program.cs b/Remotely_ScreenCast.Linux/Program.cs index 6ad2f7e4..d2549ab0 100644 --- a/Remotely_ScreenCast.Linux/Program.cs +++ b/Remotely_ScreenCast.Linux/Program.cs @@ -38,6 +38,7 @@ namespace Remotely_ScreenCast.Linux catch (Exception ex) { Logger.Write(ex); + throw; } } diff --git a/Remotely_ScreenCast.Win/Program.cs b/Remotely_ScreenCast.Win/Program.cs index 45cb3127..00fda10a 100644 --- a/Remotely_ScreenCast.Win/Program.cs +++ b/Remotely_ScreenCast.Win/Program.cs @@ -49,6 +49,7 @@ namespace Remotely_ScreenCast.Win catch (Exception ex) { Logger.Write(ex); + throw; } } diff --git a/Remotely_Server/CurrentVersion.txt b/Remotely_Server/CurrentVersion.txt index e0ea3820..382cf8e7 100644 --- a/Remotely_Server/CurrentVersion.txt +++ b/Remotely_Server/CurrentVersion.txt @@ -1 +1 @@ -2019.03.29.0908 +2019.03.29.1301 diff --git a/Remotely_Server/Services/DeviceSocketHub.cs b/Remotely_Server/Services/DeviceSocketHub.cs index f86c5ee0..d0299ec0 100644 --- a/Remotely_Server/Services/DeviceSocketHub.cs +++ b/Remotely_Server/Services/DeviceSocketHub.cs @@ -66,41 +66,49 @@ namespace Remotely_Server.Services public async Task DeviceCameOnline(Device device) { - if (ServiceConnections.Any(x => x.Value.ID == device.ID)) - { - DataService.WriteEvent(new EventLog() - { - EventType = EventTypes.Info, - OrganizationID = Device.OrganizationID, - Message = $"Device connection for {device?.DeviceName} was denied because it is already connected." - }); - Context.Abort(); - return; - } - device.IsOnline = true; - device.LastOnline = DateTime.Now; - Device = device; - if (DataService.AddOrUpdateDevice(device)) - { - var failCount = 0; - while (!ServiceConnections.TryAdd(Context.ConnectionId, device)) - { - if (failCount > 3) - { - Context.Abort(); - return; - } - failCount++; - await Task.Delay(1000); - } - await this.Groups.AddToGroupAsync(this.Context.ConnectionId, device.OrganizationID); - await BrowserHub.Clients.Group(Device.OrganizationID).SendAsync("DeviceCameOnline", Device); - } - else - { - // Organization wasn't found. - await Clients.Caller.SendAsync("UninstallClient"); - } + try + { + if (ServiceConnections.Any(x => x.Value.ID == device.ID)) + { + DataService.WriteEvent(new EventLog() + { + EventType = EventTypes.Info, + OrganizationID = device.OrganizationID, + Message = $"Device connection for {device?.DeviceName} was denied because it is already connected." + }); + Context.Abort(); + return; + } + device.IsOnline = true; + device.LastOnline = DateTime.Now; + Device = device; + if (DataService.AddOrUpdateDevice(device)) + { + var failCount = 0; + while (!ServiceConnections.TryAdd(Context.ConnectionId, device)) + { + if (failCount > 3) + { + Context.Abort(); + return; + } + failCount++; + await Task.Delay(1000); + } + await this.Groups.AddToGroupAsync(this.Context.ConnectionId, device.OrganizationID); + await BrowserHub.Clients.Group(Device.OrganizationID).SendAsync("DeviceCameOnline", Device); + } + else + { + // Organization wasn't found. + await Clients.Caller.SendAsync("UninstallClient"); + } + } + catch (Exception ex) + { + DataService.WriteEvent(ex); + throw; + } } public async Task DeviceHeartbeat(Device device) diff --git a/Remotely_Server/Startup.cs b/Remotely_Server/Startup.cs index d1463cc7..7ed2cb36 100644 --- a/Remotely_Server/Startup.cs +++ b/Remotely_Server/Startup.cs @@ -134,10 +134,10 @@ namespace Remotely_Server app.UseCookiePolicy(); // Uncomment to run .NET Core behind a reverse proxy. - //app.UseForwardedHeaders(new ForwardedHeadersOptions - //{ - // ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto - //}); + app.UseForwardedHeaders(new ForwardedHeadersOptions + { + ForwardedHeaders = ForwardedHeaders.All + }); app.UseAuthentication();