summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDenton Gentry <dgentry@tailscale.com>2024-01-21 12:44:13 -0800
committerDenton Gentry <dgentry@tailscale.com>2024-01-21 13:47:52 -0800
commit3c277ebc0e371f52f071c0a18b534ce083ad2f06 (patch)
treecd8331743a461197e5454482446a7b3bc9794b2f
parent4e822c031fa134adfe66d5bbce7b3dcb2d427ee3 (diff)
downloadtailscale-dgentry-b10911.tar.xz
tailscale-dgentry-b10911.zip
net/portmapper: add huawei RootXML test.dgentry-b10911
Updates https://github.com/tailscale/tailscale/issues/10911 Signed-off-by: Denton Gentry <dgentry@tailscale.com>
-rw-r--r--net/portmapper/upnp_test.go172
1 files changed, 172 insertions, 0 deletions
diff --git a/net/portmapper/upnp_test.go b/net/portmapper/upnp_test.go
index 8748cf427..cba480295 100644
--- a/net/portmapper/upnp_test.go
+++ b/net/portmapper/upnp_test.go
@@ -166,6 +166,171 @@ const (
<disabledForTestURLBase>http://10.0.0.1:2828</disabledForTestURLBase>
</root>
`
+
+ huaweiRootDescXML = `<?xml version="1.0"?>
+<root xmlns="urn:schemas-upnp-org:device-1-0">
+ <specVersion>
+ <major>1</major>
+ <minor>0</minor>
+ </specVersion>
+ <device>
+ <deviceType>urn:dslforum-org:device:InternetGatewayDevice:1</deviceType>
+ <friendlyName>HG531 V1</friendlyName>
+ <manufacturer>Huawei Technologies Co., Ltd.</manufacturer>
+ <manufacturerURL>http://www.huawei.com</manufacturerURL>
+ <modelDescription>Huawei Home Gateway</modelDescription>
+ <modelName>HG531 V1</modelName>
+ <modelNumber>Huawei Model</modelNumber>
+ <modelURL>http://www.huawei.com</modelURL>
+ <serialNumber>G6J8W15326003974</serialNumber>
+ <UDN>uuid:00e0fc37-2626-2828-2600-587f668bdd9a</UDN>
+ <UPC>000000000001</UPC>
+ <serviceList>
+ <service>
+ <serviceType>urn:www-huawei-com:service:DeviceConfig:1</serviceType>
+ <serviceId>urn:www-huawei-com:serviceId:DeviceConfig1</serviceId>
+ <SCPDURL>/desc/DevCfg.xml</SCPDURL>
+ <controlURL>/ctrlt/DeviceConfig_1</controlURL>
+ <eventSubURL>/evt/DeviceConfig_1</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:LANConfigSecurity:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:LANConfigSecurity1</serviceId>
+ <SCPDURL>/desc/LANSec.xml</SCPDURL>
+ <controlURL>/ctrlt/LANConfigSecurity_1</controlURL>
+ <eventSubURL>/evt/LANConfigSecurity_1</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:Layer3Forwarding:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:Layer3Forwarding1</serviceId>
+ <SCPDURL>/desc/L3Fwd.xml</SCPDURL>
+ <controlURL>/ctrlt/Layer3Forwarding_1</controlURL>
+ <eventSubURL>/evt/Layer3Forwarding_1</eventSubURL>
+ </service>
+ </serviceList>
+ <deviceList>
+ <device>
+ <deviceType>urn:dslforum-org:device:WANDevice:1</deviceType>
+ <friendlyName>WANDevice</friendlyName>
+ <manufacturer>Huawei Technologies Co., Ltd.</manufacturer>
+ <manufacturerURL>http://www.huawei.com</manufacturerURL>
+ <modelDescription>Huawei Home Gateway</modelDescription>
+ <modelName>HG531 V1</modelName>
+ <modelNumber>Huawei Model</modelNumber>
+ <modelURL>http://www.huawei.com</modelURL>
+ <serialNumber>G6J8W15326003974</serialNumber>
+ <UDN>uuid:00e0fc37-2626-2828-2601-587f668bdd9a</UDN>
+ <UPC>000000000001</UPC>
+ <serviceList>
+ <service>
+ <serviceType>urn:dslforum-org:service:WANDSLInterfaceConfig:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WANDSLInterfaceConfig1</serviceId>
+ <SCPDURL>/desc/WanDslIfCfg.xml</SCPDURL>
+ <controlURL>/ctrlt/WANDSLInterfaceConfig_1</controlURL>
+ <eventSubURL>/evt/WANDSLInterfaceConfig_1</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:WANCommonInterfaceConfig:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WANCommonInterfaceConfig1</serviceId>
+ <SCPDURL>/desc/WanCommonIfc1.xml</SCPDURL>
+ <controlURL>/ctrlt/WANCommonInterfaceConfig_1</controlURL>
+ <eventSubURL>/evt/WANCommonInterfaceConfig_1</eventSubURL>
+ </service>
+ </serviceList>
+ <deviceList>
+ <device>
+ <deviceType>urn:dslforum-org:device:WANConnectionDevice:1</deviceType>
+ <friendlyName>WANConnectionDevice</friendlyName>
+ <manufacturer>Huawei Technologies Co., Ltd.</manufacturer>
+ <manufacturerURL>http://www.huawei.com</manufacturerURL>
+ <modelDescription>Huawei Home Gateway</modelDescription>
+ <modelName>HG531 V1</modelName>
+ <modelNumber>Huawei Model</modelNumber>
+ <modelURL>http://www.huawei.com</modelURL>
+ <serialNumber>G6J8W15326003974</serialNumber>
+ <UDN>uuid:00e0fc37-2626-2828-2603-587f668bdd9a</UDN>
+ <UPC>000000000001</UPC>
+ <serviceList>
+ <service>
+ <serviceType>urn:dslforum-org:service:WANPPPConnection:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WANPPPConnection1</serviceId>
+ <SCPDURL>/desc/WanPppConn.xml</SCPDURL>
+ <controlURL>/ctrlt/WANPPPConnection_1</controlURL>
+ <eventSubURL>/evt/WANPPPConnection_1</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:WANEthernetConnectionManagement:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WANEthernetConnectionManagement1</serviceId>
+ <SCPDURL>/desc/WanEthConnMgt.xml</SCPDURL>
+ <controlURL>/ctrlt/WANEthernetConnectionManagement_1</controlURL>
+ <eventSubURL>/evt/WANEthernetConnectionManagement_1</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:WANDSLLinkConfig:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WANDSLLinkConfig1</serviceId>
+ <SCPDURL>/desc/WanDslLink.xml</SCPDURL>
+ <controlURL>/ctrlt/WANDSLLinkConfig_1</controlURL>
+ <eventSubURL>/evt/WANDSLLinkConfig_1</eventSubURL>
+ </service>
+ </serviceList>
+ </device>
+ </deviceList>
+ </device>
+ <device>
+ <deviceType>urn:dslforum-org:device:LANDevice:1</deviceType>
+ <friendlyName>LANDevice</friendlyName>
+ <manufacturer>Huawei Technologies Co., Ltd.</manufacturer>
+ <manufacturerURL>http://www.huawei.com</manufacturerURL>
+ <modelDescription>Huawei Home Gateway</modelDescription>
+ <modelName>HG531 V1</modelName>
+ <modelNumber>Huawei Model</modelNumber>
+ <modelURL>http://www.huawei.com</modelURL>
+ <serialNumber>G6J8W15326003974</serialNumber>
+ <UDN>uuid:00e0fc37-2626-2828-2602-587f668bdd9a</UDN>
+ <UPC>000000000001</UPC>
+ <serviceList>
+ <service>
+ <serviceType>urn:dslforum-org:service:WLANConfiguration:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WLANConfiguration4</serviceId>
+ <SCPDURL>/desc/WLANCfg.xml</SCPDURL>
+ <controlURL>/ctrlt/WLANConfiguration_4</controlURL>
+ <eventSubURL>/evt/WLANConfiguration_4</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:WLANConfiguration:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WLANConfiguration3</serviceId>
+ <SCPDURL>/desc/WLANCfg.xml</SCPDURL>
+ <controlURL>/ctrlt/WLANConfiguration_3</controlURL>
+ <eventSubURL>/evt/WLANConfiguration_3</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:WLANConfiguration:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WLANConfiguration2</serviceId>
+ <SCPDURL>/desc/WLANCfg.xml</SCPDURL>
+ <controlURL>/ctrlt/WLANConfiguration_2</controlURL>
+ <eventSubURL>/evt/WLANConfiguration_2</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:WLANConfiguration:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:WLANConfiguration1</serviceId>
+ <SCPDURL>/desc/WLANCfg.xml</SCPDURL>
+ <controlURL>/ctrlt/WLANConfiguration_1</controlURL>
+ <eventSubURL>/evt/WLANConfiguration_1</eventSubURL>
+ </service>
+ <service>
+ <serviceType>urn:dslforum-org:service:LANHostConfigManagement:1</serviceType>
+ <serviceId>urn:dslforum-org:serviceId:LANHostConfigManagement1</serviceId>
+ <SCPDURL>/desc/LanHostCfgMgmt.xml</SCPDURL>
+ <controlURL>/ctrlt/LANHostConfigManagement_1</controlURL>
+ <eventSubURL>/evt/LANHostConfigManagement_1</eventSubURL>
+ </service>
+ </serviceList>
+ </device>
+ </deviceList>
+ <presentationURL>http://127.0.0.1</presentationURL>
+ </device>
+</root>
+`
)
func TestParseUPnPDiscoResponse(t *testing.T) {
@@ -233,6 +398,13 @@ func TestGetUPnPClient(t *testing.T) {
"*internetgateway2.WANIPConnection1",
"saw UPnP type WANIPConnection1 at http://127.0.0.1:NNN/rootDesc.xml; MikroTik Router (MikroTik), method=none\n",
},
+ {
+ "huawei",
+ huaweiRootDescXML,
+ "*internetgateway2.WANIPConnection1",
+ "saw UPnP type WANIPConnection1 at http://127.0.0.1:NNN/rootDesc.xml; Huawei Router (Huawei), method=none\n",
+ },
+
// TODO(bradfitz): find a PPP one in the wild
}
for _, tt := range tests {