public void ShouldBeAbleToUpdateFirewallRule() { Skip.If(!PermissionsHelper.IsRunAsAdministrator(), "require administrator permissions"); var sut = new NetShHelper(); PrepareTestRule(sut, TestRuleName(nameof(ShouldBeAbleToUpdateFirewallRule)), TestPorts + 4); var result = sut.UpdateFirewallRule(TestRuleName(nameof(ShouldBeAbleToUpdateFirewallRule)), TestPorts + 5); result.Should().BeTrue(); var getResult2 = sut.GetFirewallRule(TestRuleName(nameof(ShouldBeAbleToUpdateFirewallRule))); getResult2.Should().NotBeNull(); getResult2.Rules.First().LocalPort.Should().Be(TestPorts + 5); }
private void SetFirewallRule() { var port = Settings.Default.OverrideNetworkSettings ? int.Parse(Settings.Default.PortNumber) : _defaultPort; var firewallRules = _netShHelper.GetFirewallRule(GeneralInformation.ApplicationName); if (firewallRules.Rules.Any()) { if (firewallRules.Rules.All(e => e.LocalPort != port)) { var result = _netShHelper.UpdateFirewallRule(GeneralInformation.ApplicationName, port); if (!result) { MessageBox.Show( $"Sorry, {GeneralInformation.ApplicationName} cannot update firewall rule. Please allow next time or try to run as Administrator.", $"{GeneralInformation.ApplicationName} can't start service.", MessageBoxButton.OK, MessageBoxImage.Information); } } } else { var result = _netShHelper.CreateFirewallRule(GeneralInformation.ApplicationName, port); if (!result) { MessageBox.Show( $"Sorry, {GeneralInformation.ApplicationName} cannot add firewall rule. Please try to run as Administrator.", $"{GeneralInformation.ApplicationName} can't start service.", MessageBoxButton.OK, MessageBoxImage.Information); } } }