diff --git a/tests/devices/DD-WRT router b/tests/devices/DD-WRT router new file mode 100644 index 0000000..cfea1f3 --- /dev/null +++ b/tests/devices/DD-WRT router @@ -0,0 +1,179 @@ +{ + "router_address": "192.168.1.1", + "client_address": "192.168.1.126", + "port": 1780, + "gateway_dict": { + "server": "POSIX UPnP/1.0 DD-WRT Linux/V24", + "urlBase": "http://192.168.1.1:1780", + "location": "http://192.168.1.1:1780/InternetGatewayDevice.xml", + "specVersion": { + "major": "1", + "minor": "0" + }, + "usn": "uuid:C8032011-43C8-CD28-13A8-7F60317255C4::urn:schemas-upnp-org:device:InternetGatewayDevice:1", + "urn": "urn:schemas-upnp-org:device:InternetGatewayDevice:1" + }, + "expected_devices": [ + { + "cache_control": "max-age=1800", + "location": "http://192.168.1.1:1780/InternetGatewayDevice.xml", + "server": "POSIX UPnP/1.0 DD-WRT Linux/V24", + "st": "urn:schemas-upnp-org:device:InternetGatewayDevice:1", + "usn": "uuid:C8032011-43C8-CD28-13A8-7F60317255C4::urn:schemas-upnp-org:device:InternetGatewayDevice:1" + } + ], + "commands": { + "available": { + "SetDefaultConnectionService": "urn:schemas-upnp-org:service:Layer3Forwarding:1", + "GetDefaultConnectionService": "urn:schemas-upnp-org:service:Layer3Forwarding:1", + "SetEnabledForInternet": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetEnabledForInternet": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetCommonLinkProperties": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetMaximumActiveConnections": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetTotalBytesSent": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetTotalPacketsSent": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetTotalBytesReceived": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetTotalPacketsReceived": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "GetActiveConnections": "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1", + "SetConnectionType": "urn:schemas-upnp-org:service:WANIPConnection:1", + "GetConnectionTypeInfo": "urn:schemas-upnp-org:service:WANIPConnection:1", + "RequestConnection": "urn:schemas-upnp-org:service:WANIPConnection:1", + "ForceTermination": "urn:schemas-upnp-org:service:WANIPConnection:1", + "GetStatusInfo": "urn:schemas-upnp-org:service:WANIPConnection:1", + "GetNATRSIPStatus": "urn:schemas-upnp-org:service:WANIPConnection:1", + "GetGenericPortMappingEntry": "urn:schemas-upnp-org:service:WANIPConnection:1", + "GetSpecificPortMappingEntry": "urn:schemas-upnp-org:service:WANIPConnection:1", + "AddPortMapping": "urn:schemas-upnp-org:service:WANIPConnection:1", + "DeletePortMapping": "urn:schemas-upnp-org:service:WANIPConnection:1", + "GetExternalIPAddress": "urn:schemas-upnp-org:service:WANIPConnection:1" + }, + "failed": { + "urn:schemas-upnp-org:service:LANHostConfigManagement:1": [ + "SetDHCPServerConfigurable", + "GetDHCPServerConfigurable", + "SetDHCPRelay", + "GetDHCPRelay", + "SetSubnetMask", + "GetSubnetMask", + "SetIPRouter", + "DeleteIPRouter", + "GetIPRoutersList", + "SetDomainName", + "GetDomainName", + "SetAddressRange", + "GetAddressRange", + "SetReservedAddress", + "DeleteReservedAddress", + "GetReservedAddresses", + "SetDNSServer", + "DeleteDNSServer", + "GetDNSServers" + ] + } + }, + "ssdp": { + "lan_address": "192.168.1.126", + "router_address": "192.168.1.1", + "sent": [ + "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nST: urn:schemas-upnp-org:device:InternetGatewayDevice:1\r\nMAN: \"ssdp:discover\"\r\nMX: 1\r\n\r\n" + ], + "received": [ + [ + [ + "192.168.1.1", + 1900 + ], + "HTTP/1.1 200 OK\r\nCache-Control: max-age=300\r\nDate: Thu, 04 Oct 2018 21:26:15 GMT\r\nExt: \r\nLocation: http://192.168.1.1:1780/InternetGatewayDevice.xml\r\nServer: POSIX UPnP/1.0 DD-WRT Linux/V24\r\nST: urn:schemas-upnp-org:device:InternetGatewayDevice:1\r\nUSN: uuid:C8032011-43C8-CD28-13A8-7F60317255C4::urn:schemas-upnp-org:device:InternetGatewayDevice:1\r\n\r\n" + ] + ] + }, + "scpd": { + "GET": { + "InternetGatewayDevice.xml": { + "request": "GET /InternetGatewayDevice.xml HTTP/1.1\r\nAccept-Encoding: gzip\r\nHost: http://192.168.1.1:1780\r\n\r\n", + "response": "\r\n\r\n\t\r\n\t\t1\r\n\t\t0\r\n\t\r\n\t\r\n\t\turn:schemas-upnp-org:device:InternetGatewayDevice:1\r\n\t\tDD-WRT\r\n\t\thttp://www.dd-wrt.com\r\n\t\tGateway\r\n\t\tTP-Link TL-WR841ND v9:DD-WRT\r\n\t\tTP-Link TL-WR841ND v9\r\n\t\tV24\r\n\t\t0000001\r\n\t\thttp://www.dd-wrt.com\r\n\t\tuuid:C8032011-43C8-CD28-13A8-7F60317255C4\r\n\t\t\r\n\t\t\t\r\n\t\t\t\turn:schemas-upnp-org:service:Layer3Forwarding:1\r\n\t\t\t\turn:upnp-org:serviceId:L3Forwarding1\r\n\t\t\t\t/x_layer3forwarding.xml\r\n\t\t\t\t/control?Layer3Forwarding\r\n\t\t\t\t/event?Layer3Forwarding\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\turn:schemas-upnp-org:device:WANDevice:1\r\n\t\t\t\tWANDevice\r\n\t\t\t\tDD-WRT\r\n\t\t\t\thttp://www.dd-wrt.com\r\n\t\t\t\tGateway\r\n\t\t\t\trouter\r\n\t\t\t\thttp://www.dd-wrt.com\r\n\t\t\t\tuuid:8CC24C74-3D39-77D3-AFA9-BF45E6EDEF85\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\turn:schemas-upnp-org:service:WANCommonInterfaceConfig:1\r\n\t\t\t\t\t\turn:upnp-org:serviceId:WANCommonIFC1\r\n\t\t\t\t\t\t/x_wancommoninterfaceconfig.xml\r\n\t\t\t\t\t\t/control?WANCommonInterfaceConfig\r\n\t\t\t\t\t\t/event?WANCommonInterfaceConfig\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\turn:schemas-upnp-org:device:WANConnectionDevice:1\r\n\t\t\t\t\t\tWAN Connection Device\r\n\t\t\t\t\t\tDD-WRT\r\n\t\t\t\t\t\thttp://www.dd-wrt.com\r\n\t\t\t\t\t\tGateway\r\n\t\t\t\t\t\trouter\r\n\t\t\t\t\t\thttp://www.dd-wrt.com\r\n\t\t\t\t\t\tuuid:638DDBC2-4A53-214A-20AC-93B525FF31FA\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\turn:schemas-upnp-org:service:WANIPConnection:1\r\n\t\t\t\t\t\t\t\turn:upnp-org:serviceId:WANIPConn1\r\n\t\t\t\t\t\t\t\t/x_wanipconnection.xml\r\n\t\t\t\t\t\t\t\t/control?WANIPConnection\r\n\t\t\t\t\t\t\t\t/event?WANIPConnection\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\turn:schemas-upnp-org:device:LANDevice:1\r\n\t\t\t\tLANDevice\r\n\t\t\t\tDD-WRT\r\n\t\t\t\thttp://www.dd-wrt.com\r\n\t\t\t\tGateway\r\n\t\t\t\trouter\r\n\t\t\t\thttp://www.dd-wrt.com\r\n\t\t\t\tuuid:F83DCCB5-9C27-0232-6359-192854D07CB7\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\turn:schemas-upnp-org:service:LANHostConfigManagement:1\r\n\t\t\t\t\t\turn:upnp-org:serviceId:LANHostCfg1\r\n\t\t\t\t\t\t/x_lanhostconfigmanagement.xml\r\n\t\t\t\t\t\t/control?LANHostConfigManagement\r\n\t\t\t\t\t\t/event?LANHostConfigManagement\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\thttp://192.168.1.1\r\n\t\r\n\r\n\r" + }, + "x_layer3forwarding.xml": { + "request": "GET /x_layer3forwarding.xml HTTP/1.1\r\nAccept-Encoding: gzip\r\nHost: http://192.168.1.1:1780\r\n\r\n", + "response": "\r\n\r\n\t\r\n\t\t1\r\n\t\t0\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tSetDefaultConnectionService\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDefaultConnectionService\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tDefaultConnectionService\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetDefaultConnectionService\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDefaultConnectionService\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tDefaultConnectionService\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tDefaultConnectionService\r\n\t\t\tstring\r\n\t\t\r\n\t\r\n\r\n\r" + }, + "x_wancommoninterfaceconfig.xml": { + "request": "GET /x_wancommoninterfaceconfig.xml HTTP/1.1\r\nAccept-Encoding: gzip\r\nHost: http://192.168.1.1:1780\r\n\r\n", + "response": "\r\n\r\n\t\r\n\t\t1\r\n\t\t0\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tSetEnabledForInternet\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewEnabledForInternet\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tEnabledForInternet\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetEnabledForInternet\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewEnabledForInternet\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tEnabledForInternet\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetCommonLinkProperties\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewWANAccessType\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tWANAccessType\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewLayer1UpstreamMaxBitRate\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tLayer1UpstreamMaxBitRate\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewLayer1DownstreamMaxBitRate\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tLayer1DownstreamMaxBitRate\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewPhysicalLinkStatus\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPhysicalLinkStatus\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetMaximumActiveConnections\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewMaximumActiveConnections\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tMaximumActiveConnections\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetTotalBytesSent\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewTotalBytesSent\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tTotalBytesSent\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetTotalPacketsSent\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewTotalPacketsSent\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tTotalPacketsSent\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetTotalBytesReceived\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewTotalBytesReceived\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tTotalBytesReceived\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetTotalPacketsReceived\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewTotalPacketsReceived\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tTotalPacketsReceived\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetActiveConnections\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewActiveConnectionIndex\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tNumberOfActiveConnections\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewActiveConnDeviceContainer\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tActiveConnectionDeviceContainer\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewActiveConnectionServiceID\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tActiveConnectionServiceID\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tWANAccessType\r\n\t\t\tstring\r\n\t\t\t\r\n\t\t\t\tDSL\r\n\t\t\t\tPOTS\r\n\t\t\t\tCable\r\n\t\t\t\tEthernet\r\n\t\t\t\tOther\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tLayer1UpstreamMaxBitRate\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tLayer1DownstreamMaxBitRate\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tPhysicalLinkStatus\r\n\t\t\tstring\r\n\t\t\t\r\n\t\t\t\tUp\r\n\t\t\t\tDown\r\n\t\t\t\tInitializing\r\n\t\t\t\tUnavailable\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tEnabledForInternet\r\n\t\t\tboolean\r\n\t\t\r\n\t\t\r\n\t\t\tMaximumActiveConnections\r\n\t\t\tui2\r\n\t\t\r\n\t\t\r\n\t\t\tNumberOfActiveConnections\r\n\t\t\tui2\r\n\t\t\r\n\t\t\r\n\t\t\tTotalBytesSent\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tTotalBytesReceived\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tTotalPacketsSent\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tTotalPacketsReceived\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tActiveConnectionDeviceContainer\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tActiveConnectionServiceID\r\n\t\t\tstring\r\n\t\t\r\n\t\r\n\r\n\r" + }, + "x_wanipconnection.xml": { + "request": "GET /x_wanipconnection.xml HTTP/1.1\r\nAccept-Encoding: gzip\r\nHost: http://192.168.1.1:1780\r\n\r\n", + "response": "\r\n\r\n\t\r\n\t\t1\r\n\t\t0\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tSetConnectionType\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewConnectionType\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tConnectionType\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetConnectionTypeInfo\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewConnectionType\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tConnectionType\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewPossibleConnectionTypes\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPossibleConnectionTypes\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tRequestConnection\r\n\t\t\r\n\t\t\r\n\t\t\tForceTermination\r\n\t\t\r\n\t\t\r\n\t\t\tGetStatusInfo\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewConnectionStatus\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tConnectionStatus\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewLastConnectionError\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tLastConnectionError\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewUptime\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tUptime\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetNATRSIPStatus\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewRSIPAvailable\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tRSIPAvailable\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewNATEnabled\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tNATEnabled\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetGenericPortMappingEntry\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewPortMappingIndex\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingNumberOfEntries\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewRemoteHost\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tRemoteHost\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewExternalPort\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tExternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewProtocol\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingProtocol\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewInternalPort\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tInternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewInternalClient\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tInternalClient\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewEnabled\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingEnabled\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewPortMappingDescription\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingDescription\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewLeaseDuration\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingLeaseDuration\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetSpecificPortMappingEntry\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewRemoteHost\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tRemoteHost\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewExternalPort\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tExternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewProtocol\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingProtocol\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewInternalPort\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tInternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewInternalClient\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tInternalClient\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewEnabled\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingEnabled\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewPortMappingDescription\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingDescription\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewLeaseDuration\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tPortMappingLeaseDuration\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tAddPortMapping\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewRemoteHost\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tRemoteHost\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewExternalPort\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tExternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewProtocol\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingProtocol\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewInternalPort\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tInternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewInternalClient\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tInternalClient\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewEnabled\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingEnabled\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewPortMappingDescription\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingDescription\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewLeaseDuration\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingLeaseDuration\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tDeletePortMapping\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewRemoteHost\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tRemoteHost\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewExternalPort\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tExternalPort\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewProtocol\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tPortMappingProtocol\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetExternalIPAddress\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewExternalIPAddress\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tExternalIPAddress\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tConnectionType\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tPossibleConnectionTypes\r\n\t\t\tstring\r\n\t\t\t\r\n\t\t\t\tUnconfigured\r\n\t\t\t\tIP_Routed\r\n\t\t\t\tIP_Bridged\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tConnectionStatus\r\n\t\t\tstring\r\n\t\t\tUnconfigured\r\n\t\t\t\r\n\t\t\t\tUnconfigured\r\n\t\t\t\tConnected\r\n\t\t\t\tDisconnected\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tUptime\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tLastConnectionError\r\n\t\t\tstring\r\n\t\t\t\r\n\t\t\t\tERROR_NONE\r\n\t\t\t\tERROR_UNKNOWN\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tRSIPAvailable\r\n\t\t\tboolean\r\n\t\t\r\n\t\t\r\n\t\t\tNATEnabled\r\n\t\t\tboolean\r\n\t\t\r\n\t\t\r\n\t\t\tPortMappingNumberOfEntries\r\n\t\t\tui2\r\n\t\t\r\n\t\t\r\n\t\t\tPortMappingEnabled\r\n\t\t\tboolean\r\n\t\t\r\n\t\t\r\n\t\t\tPortMappingLeaseDuration\r\n\t\t\tui4\r\n\t\t\r\n\t\t\r\n\t\t\tRemoteHost\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tExternalPort\r\n\t\t\tui2\r\n\t\t\r\n\t\t\r\n\t\t\tInternalPort\r\n\t\t\tui2\r\n\t\t\r\n\t\t\r\n\t\t\tPortMappingProtocol\r\n\t\t\tstring\r\n\t\t\t\r\n\t\t\t\tTCP\r\n\t\t\t\tUDP\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tInternalClient\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tPortMappingDescription\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tExternalIPAddress\r\n\t\t\tstring\r\n\t\t\r\n\t\r\n\r\n\r" + }, + "x_lanhostconfigmanagement.xml": { + "request": "GET /x_lanhostconfigmanagement.xml HTTP/1.1\r\nAccept-Encoding: gzip\r\nHost: http://192.168.1.1:1780\r\n\r\n", + "response": "\r\n\r\n\t\r\n\t\t1\r\n\t\t0\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tSetDHCPServerConfigurable\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDHCPServerConfigurable\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tDHCPServerConfigurable\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetDHCPServerConfigurable\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDHCPServerConfigurable\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tDHCPServerConfigurable\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetDHCPRelay\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDHCPRelay\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tDHCPRelay\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetDHCPRelay\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDHCPRelay\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tDHCPRelay\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetSubnetMask\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewSubnetMask\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tSubnetMask\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetSubnetMask\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewSubnetMask\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tSubnetMask\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetIPRouter\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewIPRouters\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tIPRouters\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tDeleteIPRouter\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewIPRouters\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tIPRouters\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetIPRoutersList\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewIPRouters\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tIPRouters\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetDomainName\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDomainName\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tDomainName\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetDomainName\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDomainName\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tDomainName\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetAddressRange\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewMinAddress\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tMinAddress\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewMaxAddress\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tMaxAddress\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetAddressRange\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewMinAddress\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tMinAddress\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewMaxAddress\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tMaxAddress\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetReservedAddress\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewReservedAddresses\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tReservedAddresses\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tDeleteReservedAddress\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewReservedAddresses\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tReservedAddresses\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetReservedAddresses\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewReservedAddresses\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tReservedAddresses\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tSetDNSServer\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDNSServers\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tDNSServers\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tDeleteDNSServer\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDNSServers\r\n\t\t\t\t\t\tin\r\n\t\t\t\t\t\tDNSServers\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\tGetDNSServers\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tNewDNSServers\r\n\t\t\t\t\t\tout\r\n\t\t\t\t\t\tDNSServers\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\tDHCPServerConfigurable\r\n\t\t\tboolean\r\n\t\t\r\n\t\t\r\n\t\t\tDHCPRelay\r\n\t\t\tboolean\r\n\t\t\r\n\t\t\r\n\t\t\tSubnetMask\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tIPRouters\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tDNSServers\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tDomainName\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tMinAddress\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tMaxAddress\r\n\t\t\tstring\r\n\t\t\r\n\t\t\r\n\t\t\tReservedAddresses\r\n\t\t\tstring\r\n\t\t\r\n\t\r\n\r\n\r" + } + }, + "POST": { + "http://192.168.1.1:1780/control?WANIPConnection": [ + { + "request": "POST /control?WANIPConnection HTTP/1.1\r\nHost: 192.168.1.1:1780\r\nUser-Agent: Debian/buster/sid, UPnP/1.0, MiniUPnPc/1.9\r\nContent-Length: 285\r\nContent-Type: text/xml\r\nSOAPAction: \"urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress\"\r\nConnection: Close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\r\n\r\n", + "response": "\r\n\r\n\r\n\r\n1.2.3.4\r\n\r\n\r\n" + }, + { + "request": "POST /control?WANIPConnection HTTP/1.1\r\nHost: 192.168.1.1:1780\r\nUser-Agent: Debian/buster/sid, UPnP/1.0, MiniUPnPc/1.9\r\nContent-Length: 341\r\nContent-Type: text/xml\r\nSOAPAction: \"urn:schemas-upnp-org:service:WANIPConnection:1#GetGenericPortMappingEntry\"\r\nConnection: Close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\r\n0\r\n", + "response": "\r\ns:ClientUPnPError402Invalid Argument" + }, + { + "request": "POST /control?WANIPConnection HTTP/1.1\r\nHost: 192.168.1.1:1780\r\nUser-Agent: Debian/buster/sid, UPnP/1.0, MiniUPnPc/1.9\r\nContent-Length: 341\r\nContent-Type: text/xml\r\nSOAPAction: \"urn:schemas-upnp-org:service:WANIPConnection:1#GetGenericPortMappingEntry\"\r\nConnection: Close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\r\n0\r\n", + "response": "\r\ns:ClientUPnPError402Invalid Argument" + }, + { + "request": "POST /control?WANIPConnection HTTP/1.1\r\nHost: 192.168.1.1:1780\r\nUser-Agent: Debian/buster/sid, UPnP/1.0, MiniUPnPc/1.9\r\nContent-Length: 601\r\nContent-Type: text/xml\r\nSOAPAction: \"urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping\"\r\nConnection: Close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\r\n4567UDP4567192.168.1.1261txupnp test mapping\r\n", + "response": "\r\n\r\n\r\n\r\n\r\n\r\n" + }, + { + "request": "POST /control?WANIPConnection HTTP/1.1\r\nHost: 192.168.1.1:1780\r\nUser-Agent: Debian/buster/sid, UPnP/1.0, MiniUPnPc/1.9\r\nContent-Length: 379\r\nContent-Type: text/xml\r\nSOAPAction: \"urn:schemas-upnp-org:service:WANIPConnection:1#DeletePortMapping\"\r\nConnection: Close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\r\n4567UDP\r\n", + "response": "\r\n\r\n\r\n\r\n\r\n\r\n" + }, + { + "request": "POST /control?WANIPConnection HTTP/1.1\r\nHost: 192.168.1.1:1780\r\nUser-Agent: Debian/buster/sid, UPnP/1.0, MiniUPnPc/1.9\r\nContent-Length: 403\r\nContent-Type: text/xml\r\nSOAPAction: \"urn:schemas-upnp-org:service:WANIPConnection:1#GetSpecificPortMappingEntry\"\r\nConnection: Close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\r\nNone4567UDP\r\n", + "response": "\r\ns:ClientUPnPError402Invalid Argument" + } + ] + } + }, + "soap": [ + [ + "get_external_ip", + [], + "1.2.3.4" + ], + [ + "get_redirects", + [], + [] + ], + [ + "get_next_mapping", + [ + 4567, + "UDP", + "txupnp test mapping" + ], + 4567 + ], + [ + "delete_port_mapping", + [ + 4567, + "UDP" + ], + [] + ], + [ + "get_specific_port_mapping", + [ + 4567, + "UDP" + ], + null + ] + ] +} \ No newline at end of file diff --git a/tests/test_devices.py b/tests/test_devices.py index 84b0602..21312bf 100644 --- a/tests/test_devices.py +++ b/tests/test_devices.py @@ -2,11 +2,7 @@ from twisted.internet import reactor, defer from twisted.trial import unittest from txupnp.constants import SSDP_PORT, SSDP_IP_ADDRESS from txupnp.upnp import UPnP -from txupnp.scpd import SCPDCommand -from txupnp.gateway import Service -from txupnp.fault import UPnPError from txupnp.mocks import MockReactor, MockSSDPServiceGatewayProtocol, get_device_test_case -from txupnp.util import verify_return_types class TestDevice(unittest.TestCase): @@ -103,3 +99,15 @@ class TestSCPD(TestDevice): command5 = getattr(self.upnp, method) result = yield command5(*tuple(args)) self.assertEqual(result, expected) + + +class TestDDWRT(unittest.TestCase): + manufacturer, model = "DD-WRT", "router" + + +class TestDDWRTSSDP(TestSSDP): + manufacturer, model = "DD-WRT", "router" + + +class TestDDWRTSCPD(TestSCPD): + manufacturer, model = "DD-WRT", "router"