public void ShouldBeAbleToGetFirewallRule() { Skip.If(!PermissionsHelper.IsRunAsAdministrator(), "require administrator permissions"); var sut = new NetShHelper(); PrepareTestRule(sut, TestRuleName(nameof(ShouldBeAbleToGetFirewallRule)), TestPorts + 4); var result = sut.GetFirewallRule(TestRuleName(nameof(ShouldBeAbleToGetFirewallRule))); result.Should().NotBeNull(); result.Rules.First().RuleName.Should().Be(TestRuleName(nameof(ShouldBeAbleToGetFirewallRule))); result.Rules.First().LocalPort.Should().Be(TestPorts + 4); }
public void ShouldBeAbleToDeleteFirewallRule() { Skip.If(!PermissionsHelper.IsRunAsAdministrator(), "require administrator permissions"); var sut = new NetShHelper(); PrepareTestRule(sut, TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule)), TestPorts + 3); var result = sut.DeleteFirewallRule(TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule))); result.Should().BeTrue(); var getResult = sut.GetFirewallRule(TestRuleName(nameof(ShouldBeAbleToDeleteFirewallRule))); getResult.Should().NotBeNull(); getResult.Rules.Should().BeEmpty(); }
private void PrepareTestRule(NetShHelper sut, string name, int port) { var createResult = sut.CreateFirewallRule(name, port); if (createResult == false) { sut.DeleteFirewallRule(name).Should().BeTrue(); createResult = sut.CreateFirewallRule(name, port); } createResult.Should().BeTrue(); var getResult = sut.GetFirewallRule(name); getResult.Should().NotBeNull(); getResult.Rules.First().LocalPort.Should().Be(port); }
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); } } }