aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2020-06-27 14:06:52 -0700
committerRob Mensching <rob@firegiant.com>2020-06-27 14:06:52 -0700
commit8181317ba1b9f718b6e54ce13cba04351e464c01 (patch)
tree244f72ad9bda71e8b1663304817693499c6f0302
parentf1d9b41bde2786f9d982a6f6663e1b6675035213 (diff)
downloadwix-8181317ba1b9f718b6e54ce13cba04351e464c01.tar.gz
wix-8181317ba1b9f718b6e54ce13cba04351e464c01.tar.bz2
wix-8181317ba1b9f718b6e54ce13cba04351e464c01.zip
Remove use of RemoteAddress inner text
-rw-r--r--src/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs2
-rw-r--r--src/test/WixToolsetTest.Firewall/TestData/UsingOutboundFirewall/PackageComponents.wxs2
-rw-r--r--src/wixext/FirewallCompiler.cs11
-rw-r--r--src/wixext/FirewallErrors.cs6
-rw-r--r--src/wixext/firewall.xsd58
5 files changed, 38 insertions, 41 deletions
diff --git a/src/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs b/src/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs
index 910cca2d..53e75427 100644
--- a/src/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs
+++ b/src/test/WixToolsetTest.Firewall/TestData/UsingFirewall/PackageComponents.wxs
@@ -6,7 +6,7 @@
6 <Component> 6 <Component>
7 <File Source="example.txt" /> 7 <File Source="example.txt" />
8 <fw:FirewallException Id="ExampleFirewall" Description="An example firewall" Name="example" Port="42"> 8 <fw:FirewallException Id="ExampleFirewall" Description="An example firewall" Name="example" Port="42">
9 <fw:RemoteAddress>*</fw:RemoteAddress> 9 <fw:RemoteAddress Value="*" />
10 </fw:FirewallException> 10 </fw:FirewallException>
11 </Component> 11 </Component>
12 </ComponentGroup> 12 </ComponentGroup>
diff --git a/src/test/WixToolsetTest.Firewall/TestData/UsingOutboundFirewall/PackageComponents.wxs b/src/test/WixToolsetTest.Firewall/TestData/UsingOutboundFirewall/PackageComponents.wxs
index f8c1e781..8084706e 100644
--- a/src/test/WixToolsetTest.Firewall/TestData/UsingOutboundFirewall/PackageComponents.wxs
+++ b/src/test/WixToolsetTest.Firewall/TestData/UsingOutboundFirewall/PackageComponents.wxs
@@ -6,7 +6,7 @@
6 <Component> 6 <Component>
7 <File Source="example.txt" /> 7 <File Source="example.txt" />
8 <fw:FirewallException Description="An example outbound firewall" Name="example" Port="42" Outbound="yes"> 8 <fw:FirewallException Description="An example outbound firewall" Name="example" Port="42" Outbound="yes">
9 <fw:RemoteAddress>*</fw:RemoteAddress> 9 <fw:RemoteAddress Value="*" />
10 </fw:FirewallException> 10 </fw:FirewallException>
11 </Component> 11 </Component>
12 </ComponentGroup> 12 </ComponentGroup>
diff --git a/src/wixext/FirewallCompiler.cs b/src/wixext/FirewallCompiler.cs
index aefc7f2c..e3cf201b 100644
--- a/src/wixext/FirewallCompiler.cs
+++ b/src/wixext/FirewallCompiler.cs
@@ -312,13 +312,19 @@ namespace WixToolset.Firewall
312 private void ParseRemoteAddressElement(Intermediate intermediate, IntermediateSection section, XElement element, ref string remoteAddresses) 312 private void ParseRemoteAddressElement(Intermediate intermediate, IntermediateSection section, XElement element, ref string remoteAddresses)
313 { 313 {
314 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); 314 var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element);
315 string address = null;
315 316
316 // no attributes 317 // no attributes
317 foreach (var attrib in element.Attributes()) 318 foreach (var attrib in element.Attributes())
318 { 319 {
319 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) 320 if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
320 { 321 {
321 this.ParseHelper.UnexpectedAttribute(element, attrib); 322 switch (attrib.Name.LocalName)
323 {
324 case "Value":
325 address = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
326 break;
327 }
322 } 328 }
323 else 329 else
324 { 330 {
@@ -328,10 +334,9 @@ namespace WixToolset.Firewall
328 334
329 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); 335 this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
330 336
331 var address = this.ParseHelper.GetTrimmedInnerText(element);
332 if (String.IsNullOrEmpty(address)) 337 if (String.IsNullOrEmpty(address))
333 { 338 {
334 this.Messaging.Write(FirewallErrors.IllegalEmptyRemoteAddress(sourceLineNumbers)); 339 this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Value"));
335 } 340 }
336 else 341 else
337 { 342 {
diff --git a/src/wixext/FirewallErrors.cs b/src/wixext/FirewallErrors.cs
index 3fff8c8d..b2dac782 100644
--- a/src/wixext/FirewallErrors.cs
+++ b/src/wixext/FirewallErrors.cs
@@ -12,11 +12,6 @@ namespace WixToolset.Firewall
12 return Message(sourceLineNumbers, Ids.IllegalRemoteAddressWithScopeAttribute, "The RemoteAddress element cannot be specified because its parent FirewallException already specified the Scope attribute. To use RemoteAddress elements, omit the Scope attribute."); 12 return Message(sourceLineNumbers, Ids.IllegalRemoteAddressWithScopeAttribute, "The RemoteAddress element cannot be specified because its parent FirewallException already specified the Scope attribute. To use RemoteAddress elements, omit the Scope attribute.");
13 } 13 }
14 14
15 public static Message IllegalEmptyRemoteAddress(SourceLineNumber sourceLineNumbers)
16 {
17 return Message(sourceLineNumbers, Ids.IllegalEmptyRemoteAddress, "The RemoteAddress element's inner text cannot be an empty string or completely whitespace.");
18 }
19
20 public static Message NoExceptionSpecified(SourceLineNumber sourceLineNumbers) 15 public static Message NoExceptionSpecified(SourceLineNumber sourceLineNumbers)
21 { 16 {
22 return Message(sourceLineNumbers, Ids.NoExceptionSpecified, "The FirewallException element doesn't identify the target of the firewall exception. To create an application exception, nest the FirewallException element under a File element or provide a value for the File or Program attributes. To create a port exception, provide a value for the Port attribute."); 17 return Message(sourceLineNumbers, Ids.NoExceptionSpecified, "The FirewallException element doesn't identify the target of the firewall exception. To create an application exception, nest the FirewallException element under a File element or provide a value for the File or Program attributes. To create a port exception, provide a value for the Port attribute.");
@@ -35,7 +30,6 @@ namespace WixToolset.Firewall
35 public enum Ids 30 public enum Ids
36 { 31 {
37 IllegalRemoteAddressWithScopeAttribute = 6401, 32 IllegalRemoteAddressWithScopeAttribute = 6401,
38 IllegalEmptyRemoteAddress = 6402,
39 NoExceptionSpecified = 6403, 33 NoExceptionSpecified = 6403,
40 } 34 }
41 } 35 }
diff --git a/src/wixext/firewall.xsd b/src/wixext/firewall.xsd
index fec7e37a..20ad065f 100644
--- a/src/wixext/firewall.xsd
+++ b/src/wixext/firewall.xsd
@@ -33,7 +33,7 @@
33 <xs:choice minOccurs="0" maxOccurs="unbounded"> 33 <xs:choice minOccurs="0" maxOccurs="unbounded">
34 <xs:annotation> 34 <xs:annotation>
35 <xs:documentation> 35 <xs:documentation>
36 Explicitly-listed remote addresses that this exception allows through the 36 Explicitly-listed remote addresses that this exception allows through the
37 firewall. 37 firewall.
38 </xs:documentation> 38 </xs:documentation>
39 </xs:annotation> 39 </xs:annotation>
@@ -51,7 +51,7 @@
51 <xs:attribute name="Name" type="xs:string" use="required"> 51 <xs:attribute name="Name" type="xs:string" use="required">
52 <xs:annotation> 52 <xs:annotation>
53 <xs:documentation> 53 <xs:documentation>
54 Name of this firewall exception, visible to the user in the firewall 54 Name of this firewall exception, visible to the user in the firewall
55 control panel. 55 control panel.
56 </xs:documentation> 56 </xs:documentation>
57 </xs:annotation> 57 </xs:annotation>
@@ -63,7 +63,7 @@
63 The scope of this firewall exception, which indicates whether incoming 63 The scope of this firewall exception, which indicates whether incoming
64 connections can come from any computer including those on the Internet 64 connections can come from any computer including those on the Internet
65 or only those on the local network subnet. To more precisely specify 65 or only those on the local network subnet. To more precisely specify
66 allowed remote address, specify a custom scope using RemoteAddress 66 allowed remote address, specify a custom scope using RemoteAddress
67 child elements. 67 child elements.
68 </xs:documentation> 68 </xs:documentation>
69 </xs:annotation> 69 </xs:annotation>
@@ -78,10 +78,10 @@
78 <xs:attribute name="Port" type="xs:string"> 78 <xs:attribute name="Port" type="xs:string">
79 <xs:annotation> 79 <xs:annotation>
80 <xs:documentation> 80 <xs:documentation>
81 Port to allow through the firewall for this exception. 81 Port to allow through the firewall for this exception.
82 82
83 If you use Port and also File or Program in the same 83 If you use Port and also File or Program in the same
84 FirewallException element, the exception will fail to install on 84 FirewallException element, the exception will fail to install on
85 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to 85 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
86 ignore the resulting failure, but the exception will not be added. 86 ignore the resulting failure, but the exception will not be added.
87 </xs:documentation> 87 </xs:documentation>
@@ -91,11 +91,11 @@
91 <xs:attribute name="Protocol"> 91 <xs:attribute name="Protocol">
92 <xs:annotation> 92 <xs:annotation>
93 <xs:documentation> 93 <xs:documentation>
94 IP protocol used for this firewall exception. If Port is defined, 94 IP protocol used for this firewall exception. If Port is defined,
95 "tcp" is assumed if the protocol is not specified. 95 "tcp" is assumed if the protocol is not specified.
96 96
97 If you use Protocol and also File or Program in the same 97 If you use Protocol and also File or Program in the same
98 FirewallException element, the exception will fail to install on 98 FirewallException element, the exception will fail to install on
99 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to 99 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
100 ignore the resulting failure, but the exception will not be added. 100 ignore the resulting failure, but the exception will not be added.
101 </xs:documentation> 101 </xs:documentation>
@@ -111,11 +111,11 @@
111 <xs:attribute name="File" type="xs:string"> 111 <xs:attribute name="File" type="xs:string">
112 <xs:annotation> 112 <xs:annotation>
113 <xs:documentation> 113 <xs:documentation>
114 Identifier of a file to be granted access to all incoming ports and 114 Identifier of a file to be granted access to all incoming ports and
115 protocols. If you use File, you cannot also use Program. 115 protocols. If you use File, you cannot also use Program.
116 116
117 If you use File and also Port or Protocol in the same 117 If you use File and also Port or Protocol in the same
118 FirewallException element, the exception will fail to install on 118 FirewallException element, the exception will fail to install on
119 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to 119 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
120 ignore the resulting failure, but the exception will not be added. 120 ignore the resulting failure, but the exception will not be added.
121 </xs:documentation> 121 </xs:documentation>
@@ -125,13 +125,13 @@
125 <xs:attribute name="Program" type="xs:string"> 125 <xs:attribute name="Program" type="xs:string">
126 <xs:annotation> 126 <xs:annotation>
127 <xs:documentation> 127 <xs:documentation>
128 Path to a target program to be granted access to all incoming ports and 128 Path to a target program to be granted access to all incoming ports and
129 protocols. Note that this is a formatted field, so you can use [#fileId] 129 protocols. Note that this is a formatted field, so you can use [#fileId]
130 syntax to refer to a file being installed. If you use Program, you cannot 130 syntax to refer to a file being installed. If you use Program, you cannot
131 also use File. 131 also use File.
132 132
133 If you use Program and also Port or Protocol in the same 133 If you use Program and also Port or Protocol in the same
134 FirewallException element, the exception will fail to install on 134 FirewallException element, the exception will fail to install on
135 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to 135 Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to
136 ignore the resulting failure, but the exception will not be added. 136 ignore the resulting failure, but the exception will not be added.
137 </xs:documentation> 137 </xs:documentation>
@@ -141,7 +141,7 @@
141 <xs:attribute name="IgnoreFailure" type="YesNoType"> 141 <xs:attribute name="IgnoreFailure" type="YesNoType">
142 <xs:annotation> 142 <xs:annotation>
143 <xs:documentation> 143 <xs:documentation>
144 If "yes", failures to register this firewall exception will be silently 144 If "yes", failures to register this firewall exception will be silently
145 ignored. If "no" (the default), failures will cause rollback. 145 ignored. If "no" (the default), failures will cause rollback.
146 </xs:documentation> 146 </xs:documentation>
147 </xs:annotation> 147 </xs:annotation>
@@ -165,7 +165,7 @@
165 <xs:attribute name="Description" type="xs:string"> 165 <xs:attribute name="Description" type="xs:string">
166 <xs:annotation> 166 <xs:annotation>
167 <xs:documentation> 167 <xs:documentation>
168 Description for this firewall rule displayed in Windows Firewall manager in 168 Description for this firewall rule displayed in Windows Firewall manager in
169 Windows Vista and later. 169 Windows Vista and later.
170 </xs:documentation> 170 </xs:documentation>
171 </xs:annotation> 171 </xs:annotation>
@@ -184,26 +184,24 @@
184 <xs:element name="RemoteAddress"> 184 <xs:element name="RemoteAddress">
185 <xs:annotation> 185 <xs:annotation>
186 <xs:documentation> 186 <xs:documentation>
187 A remote address to which the port or program can listen. Address formats vary 187 A remote address to which the port or program can listen. Address formats vary
188 based on the version of Windows and Windows Firewall the program is being installed 188 based on the version of Windows and Windows Firewall the program is being installed
189 on. For Windows XP SP2 and Windows Server 2003 SP1, see 189 on. For Windows XP SP2 and Windows Server 2003 SP1, see
190 <html:a href="http://msdn.microsoft.com/en-us/library/aa365270.aspx"> 190 <html:a href="http://msdn.microsoft.com/en-us/library/aa365270.aspx">
191 RemoteAddresses Property</html:a>. 191 RemoteAddresses Property</html:a>.
192 For Windows Vista and Windows Server 2008, see 192 For Windows Vista and Windows Server 2008, see
193 <html:a href="http://msdn.microsoft.com/en-us/library/aa365366.aspx"> 193 <html:a href="https://docs.microsoft.com/en-us/windows/win32/api/netfw/nf-netfw-inetfwrule-get_remoteaddresses">
194 RemoteAddresses Property</html:a>. 194 RemoteAddresses Property</html:a>.
195 </xs:documentation> 195 </xs:documentation>
196 </xs:annotation> 196 </xs:annotation>
197 <xs:complexType> 197 <xs:complexType>
198 <xs:simpleContent> 198 <xs:attribute name="Value" type="xs:string" use="required">
199 <xs:extension base="xs:string"> 199 <xs:annotation>
200 <xs:annotation> 200 <xs:documentation>
201 <xs:documentation>
202 A remote address. 201 A remote address.
203 </xs:documentation> 202 </xs:documentation>
204 </xs:annotation> 203 </xs:annotation>
205 </xs:extension> 204 </xs:attribute>
206 </xs:simpleContent>
207 </xs:complexType> 205 </xs:complexType>
208 </xs:element> 206 </xs:element>
209 207