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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }