コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
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);
                }
            }
        }