From ab7d3ebcc562b7c6ec97a316a847544a37eb69ad Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 25 Jan 2012 18:00:17 -0800 Subject: [PATCH] New: Added check to ensure FW is enabled before opening and closing ports. --- NzbDrone.Common/SecurityProvider.cs | 39 ++++++++++++++++++++++------- NzbDrone.Web/Models/SeriesModel.cs | 2 +- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/NzbDrone.Common/SecurityProvider.cs b/NzbDrone.Common/SecurityProvider.cs index f70b5c0c6..f1186d817 100644 --- a/NzbDrone.Common/SecurityProvider.cs +++ b/NzbDrone.Common/SecurityProvider.cs @@ -37,17 +37,22 @@ namespace NzbDrone.Common return; } - if (IsNzbDronePortOpen()) + int port = 0; + + if (IsFirewallEnabled()) { - Logger.Trace("NzbDrone port is already open, skipping."); - return; - } + if(IsNzbDronePortOpen()) + { + Logger.Trace("NzbDrone port is already open, skipping."); + return; + } - //Close any old ports - var port = CloseFirewallPort(); + //Close any old ports + port = CloseFirewallPort(); - //Open the new port - OpenFirewallPort(_configFileProvider.Port); + //Open the new port + OpenFirewallPort(_configFileProvider.Port); + } //Skip Url Register if not Vista or 7 if (_enviromentProvider.GetOsVersion().Major < 6) @@ -123,7 +128,7 @@ namespace NzbDrone.Common } catch(Exception ex) { - Logger.WarnException("Failed to open port in firewall for NzbDrone" + portNumber, ex); + Logger.WarnException("Failed to open port in firewall for NzbDrone " + portNumber, ex); return false; } } @@ -161,6 +166,22 @@ namespace NzbDrone.Common return 0; } + private bool IsFirewallEnabled() + { + try + { + var netFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false); + var mgr = (INetFwMgr)Activator.CreateInstance(netFwMgrType); + return mgr.LocalPolicy.CurrentProfile.FirewallEnabled; + } + + catch(Exception ex) + { + Logger.WarnException("Failed to check if the firewall is enabled", ex); + return false; + } + } + private bool RegisterUrl(int portNumber) { try diff --git a/NzbDrone.Web/Models/SeriesModel.cs b/NzbDrone.Web/Models/SeriesModel.cs index 33e42943c..babfca8eb 100644 --- a/NzbDrone.Web/Models/SeriesModel.cs +++ b/NzbDrone.Web/Models/SeriesModel.cs @@ -45,7 +45,7 @@ namespace NzbDrone.Web.Models public bool Monitored { get; set; } [DisplayName("Backlog Setting")] - [Description("Should NzbDrone download past missing episodes?")] + [Description("Should NzbDrone search for missing episodes every 30 days?")] public int BacklogSetting { get; set; } } } \ No newline at end of file