diff options
| author | chris_bednarski <Chris.Bednarski@minfos.com.au> | 2023-09-21 16:03:28 +1000 |
|---|---|---|
| committer | Bob Arnson <github@bobs.org> | 2023-11-19 12:17:13 -0500 |
| commit | dfb7512b85536b7726080648f2228cf8d0153724 (patch) | |
| tree | d053018ee47afe7e349dda6739a6580c771a1a3d /src/test | |
| parent | 80e604761b4f43b9b79a4878fcae360b071a7c35 (diff) | |
| download | wix-dfb7512b85536b7726080648f2228cf8d0153724.tar.gz wix-dfb7512b85536b7726080648f2228cf8d0153724.tar.bz2 wix-dfb7512b85536b7726080648f2228cf8d0153724.zip | |
add firewall extension decompiler, make msi modifications work, add all attributes
Diffstat (limited to 'src/test')
18 files changed, 925 insertions, 20 deletions
diff --git a/src/test/burn/WixTestTools/Firewall/RuleDetails.cs b/src/test/burn/WixTestTools/Firewall/RuleDetails.cs index d1e53de4..8c8cdda3 100644 --- a/src/test/burn/WixTestTools/Firewall/RuleDetails.cs +++ b/src/test/burn/WixTestTools/Firewall/RuleDetails.cs | |||
| @@ -146,7 +146,9 @@ namespace WixTestTools.Firewall | |||
| 146 | /// This parameter allows the specification of an array of interface LUIDs (locally unique identifiers) supplied as strings.<br/> | 146 | /// This parameter allows the specification of an array of interface LUIDs (locally unique identifiers) supplied as strings.<br/> |
| 147 | /// This is commonly used by USB RNDIS (Remote Network Driver Interface Specification) devices to restrict traffic to a specific non-routable interface.<br/> | 147 | /// This is commonly used by USB RNDIS (Remote Network Driver Interface Specification) devices to restrict traffic to a specific non-routable interface.<br/> |
| 148 | /// Use <b>netsh trace show interfaces</b> to show a list of local interfaces and their LUIDs.<br/> | 148 | /// Use <b>netsh trace show interfaces</b> to show a list of local interfaces and their LUIDs.<br/> |
| 149 | /// Example: new object[] { "Wi-Fi", "Local Area Connection* 14" } | 149 | /// The interfaces are stored in the registry as GUIDs, but need to be passed to the API as text. eg from the registry<br/> |
| 150 | /// v2.30|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=23456|IF={423411CD-E627-4A1A-9E1F-C5BE6CD2CC99}|IF={49A98AD0-8379-4079-A445-77066C52E338}|Name=WiXToolset401 Test - 0002|Desc=WiX Toolset firewall exception rule integration test - minimal port properties|<br/> | ||
| 151 | /// Example API value: new object[] { "Wi-Fi", "Local Area Connection* 14" } | ||
| 150 | /// </summary> | 152 | /// </summary> |
| 151 | public object[] Interfaces { get; set; } | 153 | public object[] Interfaces { get; set; } |
| 152 | 154 | ||
| @@ -227,13 +229,13 @@ namespace WixTestTools.Firewall | |||
| 227 | public string LocalUserOwner { get; set; } | 229 | public string LocalUserOwner { get; set; } |
| 228 | 230 | ||
| 229 | /// <summary> | 231 | /// <summary> |
| 230 | /// This property is optional. It specifies a list of authorized local users for an app container.<br/> | 232 | /// This property is optional. It specifies a list of authorized local users for an app container (using SDDL).<br/> |
| 231 | /// Example: "O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)" | 233 | /// Example: "O:LSD:(A;;CC;;;S-1-5-84-0-0-0-0-0)" |
| 232 | /// </summary> | 234 | /// </summary> |
| 233 | public string LocalUserAuthorizedList { get; set; } | 235 | public string LocalUserAuthorizedList { get; set; } |
| 234 | 236 | ||
| 235 | /// <summary> | 237 | /// <summary> |
| 236 | /// This property is optional. It specifies a list of remote users who are authorized to access an app container.<br/> | 238 | /// This property is optional. It specifies a list of remote users who are authorized to access an app container (using SDDL).<br/> |
| 237 | /// </summary> | 239 | /// </summary> |
| 238 | public string RemoteUserAuthorizedList { get; set; } | 240 | public string RemoteUserAuthorizedList { get; set; } |
| 239 | 241 | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/CrossVersionMerge.wixproj b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/CrossVersionMerge.wixproj new file mode 100644 index 00000000..f1c71d3d --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/CrossVersionMerge.wixproj | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | <Project Sdk="WixToolset.Sdk"> | ||
| 3 | <PropertyGroup> | ||
| 4 | <SuppressSpecificWarnings>1055;1056</SuppressSpecificWarnings> | ||
| 5 | </PropertyGroup> | ||
| 6 | <ItemGroup> | ||
| 7 | <!-- <ProjectReference Include="..\Module401\Module401.wixproj" /> --> | ||
| 8 | <ProjectReference Include="..\ModuleCurrent\ModuleCurrent.wixproj" /> | ||
| 9 | </ItemGroup> | ||
| 10 | <ItemGroup> | ||
| 11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
| 12 | </ItemGroup> | ||
| 13 | </Project> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/Module401.msm b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/Module401.msm new file mode 100644 index 00000000..4dd5bd09 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/Module401.msm | |||
| Binary files differ | |||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/package.wxs b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/package.wxs new file mode 100644 index 00000000..6d5ea47a --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/CrossVersionMerge/package.wxs | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
| 2 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" | ||
| 3 | UpgradeCode="41B5F815-E7F6-44E0-B92A-AE95DFF683F9" Compressed="yes" Scope="perMachine"> | ||
| 4 | <MediaTemplate EmbedCab="yes" /> | ||
| 5 | |||
| 6 | <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> | ||
| 7 | |||
| 8 | <Feature Id="ProductFeature" Title="Feature with merged modules"> | ||
| 9 | <MergeRef Id="TestMsm1" /> | ||
| 10 | <MergeRef Id="TestMsm2" /> | ||
| 11 | <ComponentRef Id="FirewallComponent1" /> | ||
| 12 | </Feature> | ||
| 13 | </Package> | ||
| 14 | |||
| 15 | <Fragment> | ||
| 16 | <StandardDirectory Id="ProgramFilesFolder"> | ||
| 17 | <Directory Id="INSTALLFOLDER" Name="MsiPackage"> | ||
| 18 | <Merge Id="TestMsm1" Language="1033" SourceFile="Module401.msm" /> | ||
| 19 | <Merge Id="TestMsm2" Language="1033" SourceFile="ModuleCurrent.msm" /> | ||
| 20 | </Directory> | ||
| 21 | </StandardDirectory> | ||
| 22 | </Fragment> | ||
| 23 | |||
| 24 | <Fragment> | ||
| 25 | <Property Id="MSIPORT1" Value="20001" /> | ||
| 26 | <Property Id="MSIPORT2" Value="20002" /> | ||
| 27 | |||
| 28 | <Component Id="FirewallComponent1" Guid="3E9A6190-3E6B-4BC2-8C84-D89D1549FEBD" Directory="INSTALLFOLDER"> | ||
| 29 | <File Source="$(sys.SOURCEFILEPATH)"> | ||
| 30 | <fw:FirewallException Id="FirewallException1" Description="WiX Toolset firewall exception rule integration test - package app" Name="WiXToolset Test - 0026" Scope="any" Port="[MSIPORT1]" /> | ||
| 31 | </File> | ||
| 32 | <fw:FirewallException Id="FirewallException2" Description="WiX Toolset firewall exception rule integration test - package port" Name="WiXToolset Test - 0027" Scope="any" Port="[MSIPORT2]" /> | ||
| 33 | </Component> | ||
| 34 | </Fragment> | ||
| 35 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/FirewallRulesInterfaces.wixproj b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/FirewallRulesInterfaces.wixproj new file mode 100644 index 00000000..3c6ef5cf --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/FirewallRulesInterfaces.wixproj | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | <Project Sdk="WixToolset.Sdk"> | ||
| 3 | <PropertyGroup> | ||
| 4 | <UpgradeCode>{F153C27F-0236-4A0F-ADB3-50BFC73B4FEA}</UpgradeCode> | ||
| 5 | <ProductComponentsRef>true</ProductComponentsRef> | ||
| 6 | </PropertyGroup> | ||
| 7 | <ItemGroup> | ||
| 8 | <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" /> | ||
| 9 | </ItemGroup> | ||
| 10 | <ItemGroup> | ||
| 11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
| 12 | </ItemGroup> | ||
| 13 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/product.wxs new file mode 100644 index 00000000..142c8f68 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesInterfaces/product.wxs | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | |||
| 3 | |||
| 4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
| 5 | <Fragment> | ||
| 6 | <ComponentGroup Id="ProductComponents"> | ||
| 7 | <ComponentRef Id="FirewallComponent1"/> | ||
| 8 | </ComponentGroup> | ||
| 9 | </Fragment> | ||
| 10 | |||
| 11 | <Fragment> | ||
| 12 | <Component Id="FirewallComponent1" Guid="08044660-CB5D-4891-8BD5-0CB5BB668D78" Directory="INSTALLFOLDER"> | ||
| 13 | <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" > | ||
| 14 | <fw:FirewallException Id="FirewallException28" | ||
| 15 | Description="WiX Toolset firewall exception rule integration test - three interfaces" | ||
| 16 | Name="WiXToolset500 Test - 0028" Scope="any" > | ||
| 17 | <fw:Interface Name="[INTERFACE1]" /> | ||
| 18 | <fw:Interface Name="[INTERFACE2]" /> | ||
| 19 | <fw:Interface Name="[INTERFACE3]" /> | ||
| 20 | <fw:InterfaceType Value="RemoteAccess" /> | ||
| 21 | <fw:InterfaceType Value="Lan" /> | ||
| 22 | <fw:InterfaceType Value="Wireless" /> | ||
| 23 | </fw:FirewallException> | ||
| 24 | </File> | ||
| 25 | |||
| 26 | <fw:FirewallException Id="FirewallException29" | ||
| 27 | Description="WiX Toolset firewall exception rule integration test - one interface" | ||
| 28 | Name="WiXToolset500 Test - 0029" Scope="any" Port="29292" Interface="[INTERFACE1]" InterfaceType="[INTERFACETYPE]" > | ||
| 29 | </fw:FirewallException> | ||
| 30 | </Component> | ||
| 31 | </Fragment> | ||
| 32 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/FirewallRulesProperties.wixproj b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/FirewallRulesProperties.wixproj new file mode 100644 index 00000000..38d94265 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/FirewallRulesProperties.wixproj | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | <Project Sdk="WixToolset.Sdk"> | ||
| 3 | <PropertyGroup> | ||
| 4 | <UpgradeCode>{DC2C3CDC-112F-40A8-A7B4-2C7B758F4F94}</UpgradeCode> | ||
| 5 | <ProductComponentsRef>true</ProductComponentsRef> | ||
| 6 | </PropertyGroup> | ||
| 7 | <ItemGroup> | ||
| 8 | <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" /> | ||
| 9 | </ItemGroup> | ||
| 10 | <ItemGroup> | ||
| 11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
| 12 | </ItemGroup> | ||
| 13 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/product.wxs new file mode 100644 index 00000000..1f9935d5 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRulesProperties/product.wxs | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | |||
| 3 | |||
| 4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
| 5 | <Fragment> | ||
| 6 | <ComponentGroup Id="ProductComponents"> | ||
| 7 | <ComponentRef Id="FirewallComponent1"/> | ||
| 8 | </ComponentGroup> | ||
| 9 | </Fragment> | ||
| 10 | |||
| 11 | <Fragment> | ||
| 12 | <Component Id="FirewallComponent1" Guid="A1553D10-BEB7-4E60-A0DC-6F1EEE5A1719" Directory="INSTALLFOLDER"> | ||
| 13 | <fw:FirewallException | ||
| 14 | Name="WiXToolset Test - 0028" OnUpdate="EnableOnly" | ||
| 15 | Port="[LOCALPORT]" | ||
| 16 | Protocol="[PROTOCOL]" | ||
| 17 | Program="[PROGRAM]" | ||
| 18 | Profile="[PROFILE]" | ||
| 19 | Description="[DESCRIPTION]" | ||
| 20 | Scope="[REMOTESCOPE]" | ||
| 21 | EdgeTraversal="[EDGETRAVERSAL]" | ||
| 22 | Enabled="[ENABLED]" | ||
| 23 | Grouping="[GROUPING]" | ||
| 24 | IcmpTypesAndCodes="[ICMPTYPES]" | ||
| 25 | Interface="[INTERFACE]" | ||
| 26 | InterfaceType="[INTERFACETYPE]" | ||
| 27 | LocalScope="[LOCALSCOPE]" | ||
| 28 | RemotePort="[REMOTEPORT]" | ||
| 29 | Service="[SERVICE]" | ||
| 30 | LocalAppPackageId="[PACKAGEID]" | ||
| 31 | LocalUserAuthorizedList="[LOCALUSERS]" | ||
| 32 | LocalUserOwner="[LOCALOWNER]" | ||
| 33 | RemoteMachineAuthorizedList="[REMOTEMACHINES]" | ||
| 34 | RemoteUserAuthorizedList="[REMOTEUSERS]" | ||
| 35 | IPSecSecureFlags="[SECUREFLAGS]" | ||
| 36 | /> | ||
| 37 | |||
| 38 | <fw:FirewallException Name="WiXToolset Test - 0029" OnUpdate="DoNothing" > | ||
| 39 | <fw:RemoteAddress Value="[REMOTEADDRESS]" /> | ||
| 40 | <fw:LocalAddress Value="[LOCALADDRESS]" /> | ||
| 41 | <fw:InterfaceType Value="[INTERFACETYPE]" /> | ||
| 42 | <fw:Interface Name="[INTERFACE]" /> | ||
| 43 | </fw:FirewallException> | ||
| 44 | |||
| 45 | <fw:FirewallException Name="WiXToolset Test - 0030" > | ||
| 46 | <fw:RemoteAddress Value="[REMOTEADDRESS1]" /> | ||
| 47 | <fw:RemoteAddress Value="[REMOTEADDRESS2]" /> | ||
| 48 | <fw:LocalAddress Value="[LOCALADDRESS1]" /> | ||
| 49 | <fw:LocalAddress Value="[LOCALADDRESS2]" /> | ||
| 50 | <fw:InterfaceType Value="[INTERFACETYPE1]" /> | ||
| 51 | <fw:InterfaceType Value="[INTERFACETYPE2]" /> | ||
| 52 | <fw:Interface Name="[INTERFACE1]" /> | ||
| 53 | <fw:Interface Name="[INTERFACE2]" /> | ||
| 54 | </fw:FirewallException> | ||
| 55 | </Component> | ||
| 56 | </Fragment> | ||
| 57 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/Module401/Module401.wixproj b/src/test/msi/TestData/FirewallExtensionTests/Module401/Module401.wixproj new file mode 100644 index 00000000..5f65e657 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/Module401/Module401.wixproj | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | <Project Sdk="WixToolset.Sdk"> | ||
| 3 | <PropertyGroup> | ||
| 4 | <OutputType>Module</OutputType> | ||
| 5 | <SuppressSpecificWarnings>1072</SuppressSpecificWarnings> | ||
| 6 | </PropertyGroup> | ||
| 7 | <ItemGroup> | ||
| 8 | <PackageReference Include="WixToolset.Firewall.wixext"/><!--VersionOverride="4.0.1"--> | ||
| 9 | </ItemGroup> | ||
| 10 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/Module401/data/test.txt b/src/test/msi/TestData/FirewallExtensionTests/Module401/data/test.txt new file mode 100644 index 00000000..cd0db0e1 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/Module401/data/test.txt | |||
| @@ -0,0 +1 @@ | |||
| This is test.txt. \ No newline at end of file | |||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/Module401/module.wxs b/src/test/msi/TestData/FirewallExtensionTests/Module401/module.wxs new file mode 100644 index 00000000..872743c7 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/Module401/module.wxs | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall" > | ||
| 2 | <Module Id="MergeModule1" Language="1033" Version="1.0.0.0" Guid="4B2C61BF-59F5-453B-98E3-3389F681EA00"> | ||
| 3 | <SummaryInformation Manufacturer="Module 4.0.1 Manufacturer" /> | ||
| 4 | |||
| 5 | <Property Id="MODULE401PORT1" Value="40101" /> | ||
| 6 | <Property Id="MODULE401PORT2" Value="40102" /> | ||
| 7 | <Property Id="MODULE401PORT3" Value="40103" /> | ||
| 8 | <Property Id="MODULE401PORT4" Value="40104" /> | ||
| 9 | |||
| 10 | <Directory Id="MergeRedirectFolder"> | ||
| 11 | <Component Id="ModuleComponent1" Guid="257F9283-1334-423C-A7E7-FEE848BCD37F"> | ||
| 12 | <File Id="File1" Name="file1.txt" Source="data/test.txt"> | ||
| 13 | <fw:FirewallException Id="FirewallException1" | ||
| 14 | Description="WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - app" | ||
| 15 | Name="WiXToolset401 Test - 0018" Scope="any" Port="[MODULE401PORT1]" /> | ||
| 16 | </File> | ||
| 17 | <fw:FirewallException Id="FirewallException2" | ||
| 18 | Description="WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - port" | ||
| 19 | Name="WiXToolset401 Test - 0019" Scope="any" Port="[MODULE401PORT2]" /> | ||
| 20 | </Component> | ||
| 21 | </Directory> | ||
| 22 | |||
| 23 | <Directory Id="NotTheMergeRedirectFolder"> | ||
| 24 | <Component Id="ModuleComponent2" Guid="48A2D573-0ADB-4010-84E3-96C3D6803E90"> | ||
| 25 | <File Id="File2" Name="file2.txt" Source="data/test.txt"> | ||
| 26 | <fw:FirewallException Id="FirewallException3" | ||
| 27 | Description="WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - app" | ||
| 28 | Name="WiXToolset401 Test - 0020" Scope="any" Port="[MODULE401PORT3]" /> | ||
| 29 | </File> | ||
| 30 | <fw:FirewallException Id="FirewallException4" | ||
| 31 | Description="WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - port" | ||
| 32 | Name="WiXToolset401 Test - 0021" Scope="any" Port="[MODULE401PORT4]" /> | ||
| 33 | </Component> | ||
| 34 | </Directory> | ||
| 35 | </Module> | ||
| 36 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/ModuleCurrent.wixproj b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/ModuleCurrent.wixproj new file mode 100644 index 00000000..8a84280c --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/ModuleCurrent.wixproj | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | <Project Sdk="WixToolset.Sdk"> | ||
| 3 | <PropertyGroup> | ||
| 4 | <OutputType>Module</OutputType> | ||
| 5 | <SuppressSpecificWarnings>1072</SuppressSpecificWarnings> | ||
| 6 | </PropertyGroup> | ||
| 7 | <ItemGroup> | ||
| 8 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
| 9 | </ItemGroup> | ||
| 10 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/data/test.txt b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/data/test.txt new file mode 100644 index 00000000..cd0db0e1 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/data/test.txt | |||
| @@ -0,0 +1 @@ | |||
| This is test.txt. \ No newline at end of file | |||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/module.wxs b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/module.wxs new file mode 100644 index 00000000..53097acd --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/ModuleCurrent/module.wxs | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall" > | ||
| 2 | <Module Id="MergeModule1" Language="1033" Version="1.0.0.0" Guid="44FA5DBE-2413-436E-99B3-A0751D6EB420"> | ||
| 3 | <SummaryInformation Manufacturer="Example Company - Module Current" /> | ||
| 4 | |||
| 5 | <Property Id="MODULECURRENTPORT1" Value="50001" /> | ||
| 6 | <Property Id="MODULECURRENTPORT2" Value="50002" /> | ||
| 7 | <Property Id="MODULECURRENTPORT3" Value="50003" /> | ||
| 8 | <Property Id="MODULECURRENTPORT4" Value="50004" /> | ||
| 9 | |||
| 10 | <Directory Id="MergeRedirectFolder"> | ||
| 11 | <Component Id="ModuleComponent1" Guid="EB7B8A63-85C4-4ABB-B9DA-33AECAFE38F7"> | ||
| 12 | <File Id="File1" Name="file1.txt" Source="data/test.txt"> | ||
| 13 | <fw:FirewallException Id="FirewallException1" | ||
| 14 | Description="WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - app" | ||
| 15 | Name="WiXToolset Test - 0022" Scope="any" Port="[MODULECURRENTPORT1]" /> | ||
| 16 | </File> | ||
| 17 | <fw:FirewallException Id="FirewallException2" | ||
| 18 | Description="WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - port" | ||
| 19 | Name="WiXToolset Test - 0023" Scope="any" Port="[MODULECURRENTPORT2]" /> | ||
| 20 | </Component> | ||
| 21 | </Directory> | ||
| 22 | |||
| 23 | <Directory Id="NotTheMergeRedirectFolder"> | ||
| 24 | <Component Id="ModuleComponent2" Guid="0C9DD4FC-5A54-4E96-830D-DDE27B3017B5"> | ||
| 25 | <File Id="File2" Name="file2.txt" Source="data/test.txt"> | ||
| 26 | <fw:FirewallException Id="FirewallException3" | ||
| 27 | Description="WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - app" | ||
| 28 | Name="WiXToolset Test - 0024" Scope="any" Port="[MODULECURRENTPORT3]" /> | ||
| 29 | </File> | ||
| 30 | <fw:FirewallException Id="FirewallException4" | ||
| 31 | Description="WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - port" | ||
| 32 | Name="WiXToolset Test - 0025" Scope="any" Port="[MODULECURRENTPORT4]" /> | ||
| 33 | </Component> | ||
| 34 | </Directory> | ||
| 35 | </Module> | ||
| 36 | </Wix> | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/NestedService/NestedService.wixproj b/src/test/msi/TestData/FirewallExtensionTests/NestedService/NestedService.wixproj new file mode 100644 index 00000000..4a9c9dbd --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/NestedService/NestedService.wixproj | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | <Project Sdk="WixToolset.Sdk"> | ||
| 3 | <PropertyGroup> | ||
| 4 | <UpgradeCode>{80635798-F904-4C4E-81D8-27A5106F3998}</UpgradeCode> | ||
| 5 | <ProductComponentsRef>true</ProductComponentsRef> | ||
| 6 | </PropertyGroup> | ||
| 7 | <ItemGroup> | ||
| 8 | <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" /> | ||
| 9 | </ItemGroup> | ||
| 10 | <ItemGroup> | ||
| 11 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
| 12 | <PackageReference Include="WixToolset.Util.wixext" /> | ||
| 13 | </ItemGroup> | ||
| 14 | </Project> \ No newline at end of file | ||
diff --git a/src/test/msi/TestData/FirewallExtensionTests/NestedService/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/NestedService/product.wxs new file mode 100644 index 00000000..24559a33 --- /dev/null +++ b/src/test/msi/TestData/FirewallExtensionTests/NestedService/product.wxs | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 2 | |||
| 3 | |||
| 4 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" > | ||
| 5 | <Fragment> | ||
| 6 | <ComponentGroup Id="ProductComponents"> | ||
| 7 | <ComponentRef Id="FirewallComponent1"/> | ||
| 8 | </ComponentGroup> | ||
| 9 | </Fragment> | ||
| 10 | |||
| 11 | <Fragment> | ||
| 12 | <Component Id="FirewallComponent1" Guid="FD6E696A-8C42-49BF-B686-0DA5CD4B2C5A" Directory="INSTALLFOLDER" > | ||
| 13 | <fw:FirewallException Id="FirewallException1" Description="WiX Toolset firewall exception rule integration test - service property" | ||
| 14 | Name="WiXToolset Test - 0031" Service="Spooler"/> | ||
| 15 | <util:ServiceConfig ServiceName="Spooler" FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="none" > | ||
| 16 | <fw:FirewallException Id="FirewallException2" Description="WiX Toolset firewall exception rule integration test - ServiceConfig" | ||
| 17 | Name="WiXToolset Test - 0032" /> | ||
| 18 | </util:ServiceConfig> | ||
| 19 | <ServiceInstall Name="WixTestFirewallSrv" Type="ownProcess" Start="disabled" ErrorControl="ignore" Vital="no" Arguments="%WINDIR%\System32\spoolsv.exe" > | ||
| 20 | <fw:FirewallException Id="FirewallException3" Description="WiX Toolset firewall exception rule integration test - ServiceInstall" | ||
| 21 | Name="WiXToolset Test - 0033" /> | ||
| 22 | </ServiceInstall> | ||
| 23 | </Component> | ||
| 24 | </Fragment> | ||
| 25 | </Wix> | ||
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs index ce55aa14..380e6f4c 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs +++ b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs | |||
| @@ -4,6 +4,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 4 | { | 4 | { |
| 5 | using System; | 5 | using System; |
| 6 | using System.IO; | 6 | using System.IO; |
| 7 | using System.Linq; | ||
| 8 | using System.Net.NetworkInformation; | ||
| 7 | using NetFwTypeLib; | 9 | using NetFwTypeLib; |
| 8 | using WixTestTools; | 10 | using WixTestTools; |
| 9 | using WixTestTools.Firewall; | 11 | using WixTestTools.Firewall; |
| @@ -37,8 +39,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 37 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 39 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
| 38 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 40 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
| 39 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 41 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 40 | EdgeTraversal = true, | 42 | EdgeTraversal = false, |
| 41 | EdgeTraversalOptions = 1, | 43 | EdgeTraversalOptions = 0, |
| 42 | Enabled = true, | 44 | Enabled = true, |
| 43 | InterfaceTypes = "All", | 45 | InterfaceTypes = "All", |
| 44 | LocalAddresses = "*", | 46 | LocalAddresses = "*", |
| @@ -124,8 +126,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 124 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 126 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
| 125 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 127 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
| 126 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 128 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 127 | EdgeTraversal = true, | 129 | EdgeTraversal = false, |
| 128 | EdgeTraversalOptions = 1, | 130 | EdgeTraversalOptions = 0, |
| 129 | Enabled = true, | 131 | Enabled = true, |
| 130 | InterfaceTypes = "All", | 132 | InterfaceTypes = "All", |
| 131 | LocalAddresses = "*", | 133 | LocalAddresses = "*", |
| @@ -187,8 +189,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 187 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), | 189 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")), |
| 188 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", | 190 | Description = "WiX Toolset firewall exception rule integration test - minimal app properties", |
| 189 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 191 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 190 | EdgeTraversal = true, | 192 | EdgeTraversal = false, |
| 191 | EdgeTraversalOptions = 1, | 193 | EdgeTraversalOptions = 0, |
| 192 | Enabled = true, | 194 | Enabled = true, |
| 193 | InterfaceTypes = "All", | 195 | InterfaceTypes = "All", |
| 194 | LocalAddresses = "*", | 196 | LocalAddresses = "*", |
| @@ -213,8 +215,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 213 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("DynamicFirewallRules", "product.wxs")), | 215 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("DynamicFirewallRules", "product.wxs")), |
| 214 | Description = "WiX Toolset firewall exception rule integration test - dynamic app description 9999", | 216 | Description = "WiX Toolset firewall exception rule integration test - dynamic app description 9999", |
| 215 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 217 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 216 | EdgeTraversal = true, | 218 | EdgeTraversal = false, |
| 217 | EdgeTraversalOptions = 1, | 219 | EdgeTraversalOptions = 0, |
| 218 | Enabled = true, | 220 | Enabled = true, |
| 219 | InterfaceTypes = "All", | 221 | InterfaceTypes = "All", |
| 220 | LocalAddresses = "*", | 222 | LocalAddresses = "*", |
| @@ -255,8 +257,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 255 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", "9999.exe"), | 257 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "system32", "9999.exe"), |
| 256 | Description = "WiX Toolset firewall exception rule integration test - dynamic Name 9999", | 258 | Description = "WiX Toolset firewall exception rule integration test - dynamic Name 9999", |
| 257 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 259 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 258 | EdgeTraversal = true, | 260 | EdgeTraversal = false, |
| 259 | EdgeTraversalOptions = 1, | 261 | EdgeTraversalOptions = 0, |
| 260 | Enabled = true, | 262 | Enabled = true, |
| 261 | InterfaceTypes = "All", | 263 | InterfaceTypes = "All", |
| 262 | LocalAddresses = "*", | 264 | LocalAddresses = "*", |
| @@ -285,10 +287,10 @@ namespace WixToolsetTest.MsiE2E | |||
| 285 | var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | 287 | var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
| 286 | 288 | ||
| 287 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe")); | 289 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe")); |
| 288 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized apps list")); | 290 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add firewall exception 'WiXToolset401 Test - 0006 pipe' to the list")); |
| 289 | 291 | ||
| 290 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe")); | 292 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe")); |
| 291 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized ports list")); | 293 | Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add firewall exception 'WiXToolset401 Test - 0007 pipe' to the list")); |
| 292 | 294 | ||
| 293 | var expected = new RuleDetails("WiXToolset401 Test - 0008 removal") | 295 | var expected = new RuleDetails("WiXToolset401 Test - 0008 removal") |
| 294 | { | 296 | { |
| @@ -296,8 +298,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 296 | ApplicationName = "test.exe", | 298 | ApplicationName = "test.exe", |
| 297 | Description = "WiX Toolset firewall exception rule integration test - removal test", | 299 | Description = "WiX Toolset firewall exception rule integration test - removal test", |
| 298 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 300 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 299 | EdgeTraversal = true, | 301 | EdgeTraversal = false, |
| 300 | EdgeTraversalOptions = 1, | 302 | EdgeTraversalOptions = 0, |
| 301 | Enabled = true, | 303 | Enabled = true, |
| 302 | InterfaceTypes = "All", | 304 | InterfaceTypes = "All", |
| 303 | LocalPorts = "52390", | 305 | LocalPorts = "52390", |
| @@ -313,7 +315,7 @@ namespace WixToolsetTest.MsiE2E | |||
| 313 | Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal"); | 315 | Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal"); |
| 314 | 316 | ||
| 315 | var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1"); | 317 | var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1"); |
| 316 | Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall rule")); | 318 | Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall exception for name")); |
| 317 | } | 319 | } |
| 318 | 320 | ||
| 319 | [RuntimeFact] | 321 | [RuntimeFact] |
| @@ -370,8 +372,8 @@ namespace WixToolsetTest.MsiE2E | |||
| 370 | ApplicationName = "test.exe", | 372 | ApplicationName = "test.exe", |
| 371 | Description = "WiX Toolset firewall exception rule integration test - ports can only be specified if protocol is TCP or UDP", | 373 | Description = "WiX Toolset firewall exception rule integration test - ports can only be specified if protocol is TCP or UDP", |
| 372 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | 374 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, |
| 373 | EdgeTraversal = true, | 375 | EdgeTraversal = false, |
| 374 | EdgeTraversalOptions = 1, | 376 | EdgeTraversalOptions = 0, |
| 375 | Enabled = true, | 377 | Enabled = true, |
| 376 | InterfaceTypes = "All", | 378 | InterfaceTypes = "All", |
| 377 | LocalAddresses = "*", | 379 | LocalAddresses = "*", |
| @@ -532,5 +534,609 @@ namespace WixToolsetTest.MsiE2E | |||
| 532 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0016")); | 534 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0016")); |
| 533 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0017")); | 535 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0017")); |
| 534 | } | 536 | } |
| 537 | |||
| 538 | [RuntimeFact] | ||
| 539 | public void CanInstallAndUninstallFirewallRulesWithInterfaces() | ||
| 540 | { | ||
| 541 | var names = NetworkInterface.GetAllNetworkInterfaces() | ||
| 542 | .Take(3) | ||
| 543 | .Select(ni => ni.Name); | ||
| 544 | |||
| 545 | var props = names.Select((name, idx) => $"INTERFACE{idx + 1}=\"{name}\"") | ||
| 546 | .Concat(new[] { "INTERFACETYPE=Lan" }).ToArray(); | ||
| 547 | |||
| 548 | var product = this.CreatePackageInstaller("FirewallRulesInterfaces"); | ||
| 549 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, props); | ||
| 550 | |||
| 551 | var expected1 = new RuleDetails("WiXToolset500 Test - 0028") | ||
| 552 | { | ||
| 553 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 554 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRulesInterfaces", "product.wxs")), | ||
| 555 | Description = "WiX Toolset firewall exception rule integration test - three interfaces", | ||
| 556 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 557 | EdgeTraversal = false, | ||
| 558 | EdgeTraversalOptions = 0, | ||
| 559 | Enabled = true, | ||
| 560 | InterfaceTypes = "Lan,Wireless,RemoteAccess", | ||
| 561 | Interfaces = names.ToArray<object>(), | ||
| 562 | LocalAddresses = "*", | ||
| 563 | Profiles = Int32.MaxValue, | ||
| 564 | Protocol = 256, | ||
| 565 | RemoteAddresses = "*", | ||
| 566 | SecureFlags = 0, | ||
| 567 | }; | ||
| 568 | |||
| 569 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0028", expected1); | ||
| 570 | |||
| 571 | var expected2 = new RuleDetails("WiXToolset500 Test - 0029") | ||
| 572 | { | ||
| 573 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 574 | Description = "WiX Toolset firewall exception rule integration test - one interface", | ||
| 575 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 576 | EdgeTraversal = false, | ||
| 577 | EdgeTraversalOptions = 0, | ||
| 578 | Enabled = true, | ||
| 579 | InterfaceTypes = "Lan", | ||
| 580 | Interfaces = names.Take(1).ToArray<object>(), | ||
| 581 | LocalAddresses = "*", | ||
| 582 | LocalPorts = "29292", | ||
| 583 | Profiles = Int32.MaxValue, | ||
| 584 | Protocol = 6, | ||
| 585 | RemoteAddresses = "*", | ||
| 586 | RemotePorts = "*", | ||
| 587 | SecureFlags = 0, | ||
| 588 | }; | ||
| 589 | |||
| 590 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0029", expected2); | ||
| 591 | |||
| 592 | props = names.Take(1).Select((name, idx) => $"INTERFACE{idx + 2}=\"{name}\"").ToArray(); | ||
| 593 | |||
| 594 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, props); | ||
| 595 | |||
| 596 | var expected3 = new RuleDetails("WiXToolset500 Test - 0028") | ||
| 597 | { | ||
| 598 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 599 | ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRulesInterfaces", "product.wxs")), | ||
| 600 | Description = "WiX Toolset firewall exception rule integration test - three interfaces", | ||
| 601 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 602 | EdgeTraversal = false, | ||
| 603 | EdgeTraversalOptions = 0, | ||
| 604 | Enabled = true, | ||
| 605 | InterfaceTypes = "Lan,Wireless,RemoteAccess", | ||
| 606 | Interfaces = names.Take(1).ToArray<object>(), | ||
| 607 | LocalAddresses = "*", | ||
| 608 | Profiles = Int32.MaxValue, | ||
| 609 | Protocol = 256, | ||
| 610 | RemoteAddresses = "*", | ||
| 611 | SecureFlags = 0, | ||
| 612 | }; | ||
| 613 | |||
| 614 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0028", expected3); | ||
| 615 | |||
| 616 | var expected4 = new RuleDetails("WiXToolset500 Test - 0029") | ||
| 617 | { | ||
| 618 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 619 | Description = "WiX Toolset firewall exception rule integration test - one interface", | ||
| 620 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 621 | EdgeTraversal = false, | ||
| 622 | EdgeTraversalOptions = 0, | ||
| 623 | Enabled = true, | ||
| 624 | InterfaceTypes = "All", | ||
| 625 | LocalAddresses = "*", | ||
| 626 | LocalPorts = "29292", | ||
| 627 | Profiles = Int32.MaxValue, | ||
| 628 | Protocol = 6, | ||
| 629 | RemoteAddresses = "*", | ||
| 630 | RemotePorts = "*", | ||
| 631 | SecureFlags = 0, | ||
| 632 | }; | ||
| 633 | |||
| 634 | Verifier.VerifyFirewallRule("WiXToolset500 Test - 0029", expected4); | ||
| 635 | |||
| 636 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 637 | |||
| 638 | // verify the firewall exceptions have been removed. | ||
| 639 | Assert.False(Verifier.FirewallRuleExists("WiXToolset500 Test - 0028")); | ||
| 640 | Assert.False(Verifier.FirewallRuleExists("WiXToolset500 Test - 0029")); | ||
| 641 | } | ||
| 642 | |||
| 643 | [RuntimeFact] | ||
| 644 | public void CanInstallAndUninstallFirewallRulesPackagedByDifferentModules() | ||
| 645 | { | ||
| 646 | var product = this.CreatePackageInstaller("CrossVersionMerge"); | ||
| 647 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 648 | |||
| 649 | // Validate new firewall exception details. | ||
| 650 | var expected1 = new RuleDetails("WiXToolset401 Test - 0018") | ||
| 651 | { | ||
| 652 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 653 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file1.txt"), | ||
| 654 | Description = "WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - app", | ||
| 655 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 656 | EdgeTraversal = true, | ||
| 657 | EdgeTraversalOptions = 1, | ||
| 658 | Enabled = true, | ||
| 659 | InterfaceTypes = "All", | ||
| 660 | LocalAddresses = "*", | ||
| 661 | LocalPorts = "40101", | ||
| 662 | Profiles = Int32.MaxValue, | ||
| 663 | Protocol = 6, | ||
| 664 | RemoteAddresses = "*", | ||
| 665 | RemotePorts = "*", | ||
| 666 | SecureFlags = 0, | ||
| 667 | }; | ||
| 668 | |||
| 669 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0018", expected1); | ||
| 670 | |||
| 671 | var expected2 = new RuleDetails("WiXToolset401 Test - 0019") | ||
| 672 | { | ||
| 673 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 674 | Description = "WiX Toolset firewall exception rule integration test - module 401 MergeRedirectFolder - port", | ||
| 675 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 676 | EdgeTraversal = false, | ||
| 677 | EdgeTraversalOptions = 0, | ||
| 678 | Enabled = true, | ||
| 679 | InterfaceTypes = "All", | ||
| 680 | LocalAddresses = "*", | ||
| 681 | LocalPorts = "40102", | ||
| 682 | Profiles = Int32.MaxValue, | ||
| 683 | Protocol = 6, | ||
| 684 | RemoteAddresses = "*", | ||
| 685 | RemotePorts = "*", | ||
| 686 | SecureFlags = 0, | ||
| 687 | }; | ||
| 688 | |||
| 689 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0019", expected2); | ||
| 690 | |||
| 691 | var expected3 = new RuleDetails("WiXToolset401 Test - 0020") | ||
| 692 | { | ||
| 693 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 694 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file2.txt"), | ||
| 695 | Description = "WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - app", | ||
| 696 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 697 | EdgeTraversal = true, | ||
| 698 | EdgeTraversalOptions = 1, | ||
| 699 | Enabled = true, | ||
| 700 | InterfaceTypes = "All", | ||
| 701 | LocalAddresses = "*", | ||
| 702 | LocalPorts = "40103", | ||
| 703 | Profiles = Int32.MaxValue, | ||
| 704 | Protocol = 6, | ||
| 705 | RemoteAddresses = "*", | ||
| 706 | RemotePorts = "*", | ||
| 707 | SecureFlags = 0, | ||
| 708 | }; | ||
| 709 | |||
| 710 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0020", expected3); | ||
| 711 | |||
| 712 | var expected4 = new RuleDetails("WiXToolset401 Test - 0021") | ||
| 713 | { | ||
| 714 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 715 | Description = "WiX Toolset firewall exception rule integration test - module 401 NotTheMergeRedirectFolder - port", | ||
| 716 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 717 | EdgeTraversal = false, | ||
| 718 | EdgeTraversalOptions = 0, | ||
| 719 | Enabled = true, | ||
| 720 | InterfaceTypes = "All", | ||
| 721 | LocalAddresses = "*", | ||
| 722 | LocalPorts = "40104", | ||
| 723 | Profiles = Int32.MaxValue, | ||
| 724 | Protocol = 6, | ||
| 725 | RemoteAddresses = "*", | ||
| 726 | RemotePorts = "*", | ||
| 727 | SecureFlags = 0, | ||
| 728 | }; | ||
| 729 | |||
| 730 | Verifier.VerifyFirewallRule("WiXToolset401 Test - 0021", expected4); | ||
| 731 | |||
| 732 | var expected5 = new RuleDetails("WiXToolset Test - 0022") | ||
| 733 | { | ||
| 734 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 735 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file1.txt"), | ||
| 736 | Description = "WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - app", | ||
| 737 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 738 | EdgeTraversal = false, | ||
| 739 | EdgeTraversalOptions = 0, | ||
| 740 | Enabled = true, | ||
| 741 | InterfaceTypes = "All", | ||
| 742 | LocalAddresses = "*", | ||
| 743 | LocalPorts = "50001", | ||
| 744 | Profiles = Int32.MaxValue, | ||
| 745 | Protocol = 6, | ||
| 746 | RemoteAddresses = "*", | ||
| 747 | RemotePorts = "*", | ||
| 748 | SecureFlags = 0, | ||
| 749 | }; | ||
| 750 | |||
| 751 | Verifier.VerifyFirewallRule("WiXToolset Test - 0022", expected5); | ||
| 752 | |||
| 753 | var expected6 = new RuleDetails("WiXToolset Test - 0023") | ||
| 754 | { | ||
| 755 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 756 | Description = "WiX Toolset firewall exception rule integration test - module MergeRedirectFolder - port", | ||
| 757 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 758 | EdgeTraversal = false, | ||
| 759 | EdgeTraversalOptions = 0, | ||
| 760 | Enabled = true, | ||
| 761 | InterfaceTypes = "All", | ||
| 762 | LocalAddresses = "*", | ||
| 763 | LocalPorts = "50002", | ||
| 764 | Profiles = Int32.MaxValue, | ||
| 765 | Protocol = 6, | ||
| 766 | RemoteAddresses = "*", | ||
| 767 | RemotePorts = "*", | ||
| 768 | SecureFlags = 0, | ||
| 769 | }; | ||
| 770 | |||
| 771 | Verifier.VerifyFirewallRule("WiXToolset Test - 0023", expected6); | ||
| 772 | |||
| 773 | var expected7 = new RuleDetails("WiXToolset Test - 0024") | ||
| 774 | { | ||
| 775 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 776 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "file2.txt"), | ||
| 777 | Description = "WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - app", | ||
| 778 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 779 | EdgeTraversal = false, | ||
| 780 | EdgeTraversalOptions = 0, | ||
| 781 | Enabled = true, | ||
| 782 | InterfaceTypes = "All", | ||
| 783 | LocalAddresses = "*", | ||
| 784 | LocalPorts = "50003", | ||
| 785 | Profiles = Int32.MaxValue, | ||
| 786 | Protocol = 6, | ||
| 787 | RemoteAddresses = "*", | ||
| 788 | RemotePorts = "*", | ||
| 789 | SecureFlags = 0, | ||
| 790 | }; | ||
| 791 | |||
| 792 | Verifier.VerifyFirewallRule("WiXToolset Test - 0024", expected7); | ||
| 793 | |||
| 794 | var expected8 = new RuleDetails("WiXToolset Test - 0025") | ||
| 795 | { | ||
| 796 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 797 | Description = "WiX Toolset firewall exception rule integration test - module NotTheMergeRedirectFolder - port", | ||
| 798 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 799 | EdgeTraversal = false, | ||
| 800 | EdgeTraversalOptions = 0, | ||
| 801 | Enabled = true, | ||
| 802 | InterfaceTypes = "All", | ||
| 803 | LocalAddresses = "*", | ||
| 804 | LocalPorts = "50004", | ||
| 805 | Profiles = Int32.MaxValue, | ||
| 806 | Protocol = 6, | ||
| 807 | RemoteAddresses = "*", | ||
| 808 | RemotePorts = "*", | ||
| 809 | SecureFlags = 0, | ||
| 810 | }; | ||
| 811 | |||
| 812 | Verifier.VerifyFirewallRule("WiXToolset Test - 0025", expected8); | ||
| 813 | |||
| 814 | var expected9 = new RuleDetails("WiXToolset Test - 0026") | ||
| 815 | { | ||
| 816 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 817 | ApplicationName = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "MsiPackage", "package.wxs"), | ||
| 818 | Description = "WiX Toolset firewall exception rule integration test - package app", | ||
| 819 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 820 | EdgeTraversal = false, | ||
| 821 | EdgeTraversalOptions = 0, | ||
| 822 | Enabled = true, | ||
| 823 | InterfaceTypes = "All", | ||
| 824 | LocalAddresses = "*", | ||
| 825 | LocalPorts = "20001", | ||
| 826 | Profiles = Int32.MaxValue, | ||
| 827 | Protocol = 6, | ||
| 828 | RemoteAddresses = "*", | ||
| 829 | RemotePorts = "*", | ||
| 830 | SecureFlags = 0, | ||
| 831 | }; | ||
| 832 | |||
| 833 | Verifier.VerifyFirewallRule("WiXToolset Test - 0026", expected9); | ||
| 834 | |||
| 835 | var expected10 = new RuleDetails("WiXToolset Test - 0027") | ||
| 836 | { | ||
| 837 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 838 | Description = "WiX Toolset firewall exception rule integration test - package port", | ||
| 839 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 840 | EdgeTraversal = false, | ||
| 841 | EdgeTraversalOptions = 0, | ||
| 842 | Enabled = true, | ||
| 843 | InterfaceTypes = "All", | ||
| 844 | LocalAddresses = "*", | ||
| 845 | LocalPorts = "20002", | ||
| 846 | Profiles = Int32.MaxValue, | ||
| 847 | Protocol = 6, | ||
| 848 | RemoteAddresses = "*", | ||
| 849 | RemotePorts = "*", | ||
| 850 | SecureFlags = 0, | ||
| 851 | }; | ||
| 852 | |||
| 853 | Verifier.VerifyFirewallRule("WiXToolset Test - 0027", expected10); | ||
| 854 | |||
| 855 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 856 | |||
| 857 | // verify the firewall exceptions have been removed. | ||
| 858 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0018")); | ||
| 859 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0019")); | ||
| 860 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0020")); | ||
| 861 | Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0021")); | ||
| 862 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0022")); | ||
| 863 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0023")); | ||
| 864 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0024")); | ||
| 865 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0025")); | ||
| 866 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0026")); | ||
| 867 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0027")); | ||
| 868 | } | ||
| 869 | |||
| 870 | [RuntimeFact] | ||
| 871 | public void ServiceNameIsPassedIntoNestedRules() | ||
| 872 | { | ||
| 873 | var product = this.CreatePackageInstaller("NestedService"); | ||
| 874 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 875 | |||
| 876 | var expected1 = new RuleDetails("WiXToolset Test - 0031") | ||
| 877 | { | ||
| 878 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 879 | Protocol = 256, | ||
| 880 | LocalAddresses = "*", | ||
| 881 | RemoteAddresses = "*", | ||
| 882 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 883 | Description = "WiX Toolset firewall exception rule integration test - service property", | ||
| 884 | EdgeTraversal = false, | ||
| 885 | EdgeTraversalOptions = 0, | ||
| 886 | Enabled = true, | ||
| 887 | InterfaceTypes = "All", | ||
| 888 | Profiles = Int32.MaxValue, | ||
| 889 | SecureFlags = 0, | ||
| 890 | ServiceName = "Spooler", | ||
| 891 | }; | ||
| 892 | |||
| 893 | Verifier.VerifyFirewallRule("WiXToolset Test - 0031", expected1); | ||
| 894 | |||
| 895 | var expected2 = new RuleDetails("WiXToolset Test - 0032") | ||
| 896 | { | ||
| 897 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 898 | Protocol = 256, | ||
| 899 | LocalAddresses = "*", | ||
| 900 | RemoteAddresses = "*", | ||
| 901 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 902 | Description = "WiX Toolset firewall exception rule integration test - ServiceConfig", | ||
| 903 | EdgeTraversal = false, | ||
| 904 | EdgeTraversalOptions = 0, | ||
| 905 | Enabled = true, | ||
| 906 | InterfaceTypes = "All", | ||
| 907 | Profiles = Int32.MaxValue, | ||
| 908 | SecureFlags = 0, | ||
| 909 | ServiceName = "Spooler", | ||
| 910 | }; | ||
| 911 | |||
| 912 | Verifier.VerifyFirewallRule("WiXToolset Test - 0032", expected2); | ||
| 913 | |||
| 914 | var expected3 = new RuleDetails("WiXToolset Test - 0033") | ||
| 915 | { | ||
| 916 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 917 | Protocol = 256, | ||
| 918 | LocalAddresses = "*", | ||
| 919 | RemoteAddresses = "*", | ||
| 920 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 921 | Description = "WiX Toolset firewall exception rule integration test - ServiceInstall", | ||
| 922 | EdgeTraversal = false, | ||
| 923 | EdgeTraversalOptions = 0, | ||
| 924 | Enabled = true, | ||
| 925 | InterfaceTypes = "All", | ||
| 926 | Profiles = Int32.MaxValue, | ||
| 927 | SecureFlags = 0, | ||
| 928 | ServiceName = "WixTestFirewallSrv", | ||
| 929 | }; | ||
| 930 | |||
| 931 | Verifier.VerifyFirewallRule("WiXToolset Test - 0033", expected3); | ||
| 932 | |||
| 933 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 934 | |||
| 935 | // verify the firewall exceptions have been removed. | ||
| 936 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0031")); | ||
| 937 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0032")); | ||
| 938 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0033")); | ||
| 939 | } | ||
| 940 | |||
| 941 | [RuntimeFact] | ||
| 942 | public void SucceedWhenEnableOnlyFlagIsSet() | ||
| 943 | { | ||
| 944 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
| 945 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 946 | |||
| 947 | var expected1 = new RuleDetails("WiXToolset Test - 0028") | ||
| 948 | { | ||
| 949 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 950 | Protocol = 256, | ||
| 951 | LocalAddresses = "*", | ||
| 952 | RemoteAddresses = "*", | ||
| 953 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 954 | EdgeTraversal = false, | ||
| 955 | EdgeTraversalOptions = 0, | ||
| 956 | Enabled = true, | ||
| 957 | InterfaceTypes = "All", | ||
| 958 | Profiles = Int32.MaxValue, | ||
| 959 | SecureFlags = 0, | ||
| 960 | }; | ||
| 961 | |||
| 962 | Verifier.VerifyFirewallRule("WiXToolset Test - 0028", expected1); | ||
| 963 | |||
| 964 | Verifier.DisableFirewallRule("WiXToolset Test - 0028"); | ||
| 965 | |||
| 966 | var args = new[] | ||
| 967 | { | ||
| 968 | "LOCALPORT=3456", | ||
| 969 | "PROTOCOL=6", | ||
| 970 | "PROGRAM=ShouldBeUnchanged", | ||
| 971 | "PROFILE=2", | ||
| 972 | "DESCRIPTION=ShouldBeUnchanged", | ||
| 973 | "REMOTESCOPE=ShouldBeUnchanged", | ||
| 974 | "EDGETRAVERSAL=3", | ||
| 975 | "ENABLED=1", | ||
| 976 | "GROUPING=ShouldBeUnchanged", | ||
| 977 | "ICMPTYPES=ShouldBeUnchanged", | ||
| 978 | "INTERFACE=ShouldBeUnchanged", | ||
| 979 | "INTERFACETYPE=ShouldBeUnchanged", | ||
| 980 | "LOCALSCOPE=ShouldBeUnchanged", | ||
| 981 | "REMOTEPORT=60000", | ||
| 982 | "SERVICE=ShouldBeUnchanged", | ||
| 983 | "PACKAGEID=ShouldBeUnchanged", | ||
| 984 | "LOCALUSERS=ShouldBeUnchanged", | ||
| 985 | "LOCALOWNER=ShouldBeUnchanged", | ||
| 986 | "REMOTEMACHINES=ShouldBeUnchanged", | ||
| 987 | "REMOTEUSERS=ShouldBeUnchanged", | ||
| 988 | "SECUREFLAGS=15", | ||
| 989 | "REMOTEADDRESS=ShouldBeUnchanged", | ||
| 990 | "LOCALADDRESS=ShouldBeUnchanged", | ||
| 991 | }; | ||
| 992 | |||
| 993 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
| 994 | |||
| 995 | var expected2 = new RuleDetails("WiXToolset Test - 0028") | ||
| 996 | { | ||
| 997 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 998 | Protocol = 256, | ||
| 999 | LocalAddresses = "*", | ||
| 1000 | RemoteAddresses = "*", | ||
| 1001 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 1002 | EdgeTraversal = false, | ||
| 1003 | EdgeTraversalOptions = 0, | ||
| 1004 | Enabled = true, | ||
| 1005 | InterfaceTypes = "All", | ||
| 1006 | Profiles = Int32.MaxValue, | ||
| 1007 | SecureFlags = 0, | ||
| 1008 | }; | ||
| 1009 | |||
| 1010 | Verifier.VerifyFirewallRule("WiXToolset Test - 0028", expected2); | ||
| 1011 | |||
| 1012 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 1013 | |||
| 1014 | // verify the firewall exceptions have been removed. | ||
| 1015 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0028")); | ||
| 1016 | } | ||
| 1017 | |||
| 1018 | [RuntimeFact] | ||
| 1019 | public void SucceedWhenDoNothingFlagIsSet() | ||
| 1020 | { | ||
| 1021 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
| 1022 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 1023 | |||
| 1024 | var expected1 = new RuleDetails("WiXToolset Test - 0029") | ||
| 1025 | { | ||
| 1026 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 1027 | Protocol = 256, | ||
| 1028 | LocalAddresses = "*", | ||
| 1029 | RemoteAddresses = "*", | ||
| 1030 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 1031 | EdgeTraversal = false, | ||
| 1032 | EdgeTraversalOptions = 0, | ||
| 1033 | Enabled = true, | ||
| 1034 | InterfaceTypes = "All", | ||
| 1035 | Profiles = Int32.MaxValue, | ||
| 1036 | SecureFlags = 0, | ||
| 1037 | }; | ||
| 1038 | |||
| 1039 | Verifier.VerifyFirewallRule("WiXToolset Test - 0029", expected1); | ||
| 1040 | Verifier.DisableFirewallRule("WiXToolset Test - 0029"); | ||
| 1041 | |||
| 1042 | var args = new[] | ||
| 1043 | { | ||
| 1044 | "INTERFACE=ShouldBeUnchanged", | ||
| 1045 | "INTERFACETYPE=ShouldBeUnchanged", | ||
| 1046 | "REMOTEADDRESS=ShouldBeUnchanged", | ||
| 1047 | "LOCALADDRESS=ShouldBeUnchanged", | ||
| 1048 | }; | ||
| 1049 | |||
| 1050 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
| 1051 | |||
| 1052 | var expected2 = new RuleDetails("WiXToolset Test - 0029") | ||
| 1053 | { | ||
| 1054 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 1055 | Protocol = 256, | ||
| 1056 | LocalAddresses = "*", | ||
| 1057 | RemoteAddresses = "*", | ||
| 1058 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 1059 | EdgeTraversal = false, | ||
| 1060 | EdgeTraversalOptions = 0, | ||
| 1061 | Enabled = false, // remains as disabled after the repair | ||
| 1062 | InterfaceTypes = "All", | ||
| 1063 | Profiles = Int32.MaxValue, | ||
| 1064 | SecureFlags = 0, | ||
| 1065 | }; | ||
| 1066 | |||
| 1067 | Verifier.VerifyFirewallRule("WiXToolset Test - 0029", expected2); | ||
| 1068 | |||
| 1069 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 1070 | |||
| 1071 | // verify the firewall exceptions have been removed. | ||
| 1072 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0029")); | ||
| 1073 | } | ||
| 1074 | |||
| 1075 | [RuntimeFact] | ||
| 1076 | public void SucceedWhenNoFlagIsSet() | ||
| 1077 | { | ||
| 1078 | var product = this.CreatePackageInstaller("FirewallRulesProperties"); | ||
| 1079 | product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 1080 | |||
| 1081 | var expected1 = new RuleDetails("WiXToolset Test - 0030") | ||
| 1082 | { | ||
| 1083 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 1084 | Protocol = 256, | ||
| 1085 | LocalAddresses = "*", | ||
| 1086 | RemoteAddresses = "*", | ||
| 1087 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 1088 | EdgeTraversal = false, | ||
| 1089 | EdgeTraversalOptions = 0, | ||
| 1090 | Enabled = true, | ||
| 1091 | InterfaceTypes = "All", | ||
| 1092 | Profiles = Int32.MaxValue, | ||
| 1093 | SecureFlags = 0, | ||
| 1094 | }; | ||
| 1095 | |||
| 1096 | Verifier.VerifyFirewallRule("WiXToolset Test - 0030", expected1); | ||
| 1097 | Verifier.DisableFirewallRule("WiXToolset Test - 0030"); | ||
| 1098 | |||
| 1099 | var names = NetworkInterface.GetAllNetworkInterfaces() | ||
| 1100 | .Take(2) | ||
| 1101 | .Select(ni => ni.Name); | ||
| 1102 | |||
| 1103 | var args = names.Select((name, idx) => $"INTERFACE{idx + 1}=\"{name}\"") | ||
| 1104 | .Concat(new[] | ||
| 1105 | { | ||
| 1106 | "INTERFACETYPE1=Wireless", | ||
| 1107 | "INTERFACETYPE2=Lan", | ||
| 1108 | "REMOTEADDRESS1=DHCP", | ||
| 1109 | "REMOTEADDRESS2=LocalSubnet", | ||
| 1110 | "LOCALADDRESS1=127.0.0.1", | ||
| 1111 | "LOCALADDRESS2=192.168.1.1", | ||
| 1112 | }) | ||
| 1113 | .ToArray(); | ||
| 1114 | |||
| 1115 | product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, args); | ||
| 1116 | |||
| 1117 | var expected2 = new RuleDetails("WiXToolset Test - 0030") | ||
| 1118 | { | ||
| 1119 | Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW, | ||
| 1120 | Protocol = 256, | ||
| 1121 | LocalAddresses = "127.0.0.1/255.255.255.255,192.168.1.1/255.255.255.255", | ||
| 1122 | RemoteAddresses = "LocalSubnet,DHCP", | ||
| 1123 | Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN, | ||
| 1124 | Description = "", | ||
| 1125 | EdgeTraversal = false, | ||
| 1126 | EdgeTraversalOptions = 0, | ||
| 1127 | Enabled = true, | ||
| 1128 | Interfaces = names.ToArray(), | ||
| 1129 | InterfaceTypes = "Lan,Wireless", | ||
| 1130 | Profiles = Int32.MaxValue, | ||
| 1131 | SecureFlags = 0, | ||
| 1132 | }; | ||
| 1133 | |||
| 1134 | Verifier.VerifyFirewallRule("WiXToolset Test - 0030", expected2); | ||
| 1135 | |||
| 1136 | product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
| 1137 | |||
| 1138 | // verify the firewall exceptions have been removed. | ||
| 1139 | Assert.False(Verifier.FirewallRuleExists("WiXToolset Test - 0030")); | ||
| 1140 | } | ||
| 535 | } | 1141 | } |
| 536 | } | 1142 | } |
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj index a5536de4..7d4695d3 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj +++ b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | 29 | ||
| 30 | <ItemGroup> | 30 | <ItemGroup> |
| 31 | <PackageReference Include="Microsoft.Win32.Registry" /> | 31 | <PackageReference Include="Microsoft.Win32.Registry" /> |
| 32 | <PackageReference Include="System.Net.NetworkInformation" /> | ||
| 32 | <PackageReference Include="System.Security.Principal.Windows" /> | 33 | <PackageReference Include="System.Security.Principal.Windows" /> |
| 33 | <PackageReference Include="WixInternal.TestSupport" /> | 34 | <PackageReference Include="WixInternal.TestSupport" /> |
| 34 | <PackageReference Include="WixToolset.Data" /> | 35 | <PackageReference Include="WixToolset.Data" /> |
