From fa6f9f0dcf4be72fa616d997f3c538b6730f89d7 Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 11:53:43 +0200 Subject: [PATCH 01/12] Add new mock files --- .../SOAP_GetParameterValues.request | 1 + .../SOAP_GetSupportedDataModels.request | 1 + .../SOAP_GetSupportedParameters.request | 1 + .../tr064/mockserver/SOAP_GetValues.request | 1 + .../mockserver/TR181_GetParameterValues.200 | 90 +++++++++ .../mockserver/TR181_GetParameterValues.500 | 21 +++ .../TR181_GetSupportedDataModels.200 | 34 ++++ .../TR181_GetSupportedDataModels.500 | 22 +++ .../TR181_GetSupportedParameters.200 | 76 ++++++++ .../TR181_GetSupportedParameters.500 | 22 +++ .../tr064/mockserver/TR181_GetValues.200 | 171 ++++++++++++++++++ .../tr064/mockserver/TR181_GetValues.500 | 22 +++ home0/inserts/tr064/mockserver/tr064gen.xml | 38 ++++ 13 files changed, 500 insertions(+) create mode 100644 home0/inserts/tr064/mockserver/SOAP_GetParameterValues.request create mode 100644 home0/inserts/tr064/mockserver/SOAP_GetSupportedDataModels.request create mode 100644 home0/inserts/tr064/mockserver/SOAP_GetSupportedParameters.request create mode 100644 home0/inserts/tr064/mockserver/SOAP_GetValues.request create mode 100644 home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.500 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.200 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.500 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetValues.200 create mode 100644 home0/inserts/tr064/mockserver/TR181_GetValues.500 create mode 100644 home0/inserts/tr064/mockserver/tr064gen.xml diff --git a/home0/inserts/tr064/mockserver/SOAP_GetParameterValues.request b/home0/inserts/tr064/mockserver/SOAP_GetParameterValues.request new file mode 100644 index 0000000..9a102ae --- /dev/null +++ b/home0/inserts/tr064/mockserver/SOAP_GetParameterValues.request @@ -0,0 +1 @@ +Device.DSL.Line.1.TestParams.SNRGdsDevice.DSL.Line.1.TestParams.SNRGusDevice.DSL.Line.1.TestParams.SNRpsdsDevice.DSL.Line.1.TestParams.SNRpsusDevice.DSL.Line.1.TestParams.SNRMTdsDevice.DSL.Line.1.TestParams.SNRMTusDevice.DSL.Line.1.LinkStatusDevice.DSL.Line.1.CurrentProfileDevice.DSL.Line.1.DownstreamMaxBitRateDevice.DSL.Line.1.UpstreamMaxBitRateDevice.DSL.Line.1.DownstreamNoiseMarginDevice.DSL.Line.1.UpstreamNoiseMarginDevice.DSL.Channel.1.DownstreamCurrRateDevice.DSL.Channel.1.UpstreamCurrRateDevice.DSL.Line.1.StandardUsedDevice.DSL.Line.1.TestParams.LATNdsDevice.DSL.Line.1.TestParams.LATNusDevice.DSL.Channel.1.Stats.Total.XTURFECErrorsDevice.DSL.Channel.1.Stats.Total.XTURCRCErrors diff --git a/home0/inserts/tr064/mockserver/SOAP_GetSupportedDataModels.request b/home0/inserts/tr064/mockserver/SOAP_GetSupportedDataModels.request new file mode 100644 index 0000000..d77e70c --- /dev/null +++ b/home0/inserts/tr064/mockserver/SOAP_GetSupportedDataModels.request @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/SOAP_GetSupportedParameters.request b/home0/inserts/tr064/mockserver/SOAP_GetSupportedParameters.request new file mode 100644 index 0000000..b81dc92 --- /dev/null +++ b/home0/inserts/tr064/mockserver/SOAP_GetSupportedParameters.request @@ -0,0 +1 @@ +/BBF/DSL/Line/#//BBF/DSL/Channel/#/0 \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/SOAP_GetValues.request b/home0/inserts/tr064/mockserver/SOAP_GetValues.request new file mode 100644 index 0000000..2171242 --- /dev/null +++ b/home0/inserts/tr064/mockserver/SOAP_GetValues.request @@ -0,0 +1 @@ +/BBF/DSL/Line/#//BBF/DSL/Channel/#/ \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 new file mode 100644 index 0000000..0dec0a6 --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 @@ -0,0 +1,90 @@ +HTTP/1.1 200 OK +SERVER: [MOCKED_SERVER] +CACHE-CONTROL: max-age=1800 +CONTENT-TYPE: text/xml; charset=utf-8 +CONTENT-LENGTH: [CALC_LEN] + + + + + + +Device.DSL.Line.1.TestParams.SNRGds +[MOCKED_SNRGds] + + +Device.DSL.Line.1.TestParams.SNRGus +[MOCKED_SNRGus] + + +Device.DSL.Line.1.TestParams.SNRpsds +[MOCKED_SNRpsds] + + +Device.DSL.Line.1.TestParams.SNRpsus +[MOCKED_SNRpsus] + + +Device.DSL.Line.1.TestParams.SNRMTds +[MOCKED_SNRMTds] + + +Device.DSL.Line.1.TestParams.SNRMTus +[MOCKED_SNRMTus] + + +Device.DSL.Line.1.TestParams.LATNds +[MOCKED_LATNds] + + +Device.DSL.Line.1.TestParams.LATNus +[MOCKED_LATNus] + + +Device.DSL.Channel.1.Stats.Total.XTURFECErrors +[MOCKED_FECErrors] + + +Device.DSL.Channel.1.Stats.Total.XTURCRCErrors +[MOCKED_CRCErrors] + + +Device.DSL.Line.1.LinkStatus +[MOCKED_LinkStatus] + + +Device.DSL.Line.1.StandardUsed +[MOCKED_StandardUsed] + + +Device.DSL.Line.1.CurrentProfile +[MOCKED_CurrentProfile] + + +Device.DSL.Line.1.DownstreamMaxBitRate +[MOCKED_DownstreamMaxBitRate] + + +Device.DSL.Line.1.UpstreamMaxBitRate +[MOCKED_UpstreamMaxBitRate] + + +Device.DSL.Line.1.DownstreamNoiseMargin +[MOCKED_DownstreamNoiseMargin] + + +Device.DSL.Line.1.UpstreamNoiseMargin +[MOCKED_UpstreamNoiseMargin] + + +Device.DSL.Channel.1.DownstreamCurrRate +[MOCKED_DownstreamCurrRate] + + +Device.DSL.Channel.1.UpstreamCurrRate +[MOCKED_UpstreamCurrRate] + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 new file mode 100644 index 0000000..decdc8d --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 @@ -0,0 +1,21 @@ +HTTP/1.1 500 Internal Server Error +SERVER: [MOCKED_SERVER] +CONNECTION: close +CONTENT-LENGTH: [CALC_LEN] +CONTENT-TYPE: text/xml; charset="utf-8" + + + + + +s:Client +UPnPError + + +401 +Invalid Action + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 new file mode 100644 index 0000000..c2e0448 --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 @@ -0,0 +1,34 @@ +HTTP/1.1 200 OK +SERVER: [MOCKED_SERVER] +CACHE-CONTROL: max-age=1800 +CONTENT-TYPE: text/xml; charset=utf-8 +CONTENT-LENGTH: [CALC_LEN] + + + + + + + + urn:UPnP:Parent Device:1:ConfigurationManagement:2 + /UPnP/DM/Configuration/ + UPnP Manageable Device common objects for CMS + + + urn:broadband-forum-org:tr-181-2-0 + /BBF/ + https://cwmp-data-models.broadband-forum.org/tr-181-2-0-0.xml + TR-181 + + + urn:broadband-forum-org:tr-135-1-0-0 + /BBF/STBService/ + http://www.example.com/upnp/stb/bbf-stb-1-0.xml + TR-135 STBService Object + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.500 b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.500 new file mode 100644 index 0000000..4abcc9b --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.500 @@ -0,0 +1,22 @@ +HTTP/1.1 500 Internal Server Error +SERVER: [MOCKED_SERVER] +CONNECTION: close +CONTENT-LENGTH: [CALC_LEN] +CONTENT-TYPE: text/xml; charset="utf-8" + + + + + s:Client + UPnPError + + + 401 + Invalid Action + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.200 b/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.200 new file mode 100644 index 0000000..ef8d364 --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.200 @@ -0,0 +1,76 @@ +HTTP/1.1 200 OK +SERVER: [MOCKED_SERVER] +CACHE-CONTROL: max-age=1800 +CONTENT-TYPE: text/xml; charset=utf-8 +CONTENT-LENGTH: [CALC_LEN] + + + + + + + + +/BBF/DSL/Line/0/TestParams/SNRGds + + +/BBF/DSL/Line/0/TestParams/SNRGus + + +/BBF/DSL/Line/0/TestParams/SNRpsds + + +/BBF/DSL/Line/0/TestParams/SNRpsus + + +/BBF/DSL/Line/0/TestParams/SNRMTds + + +/BBF/DSL/Line/0/TestParams/SNRMTus + + +/BBF/DSL/Line/0/TestParams/LATNds + + +/BBF/DSL/Line/0/TestParams/LATNus + + +/BBF/DSL/Channel/0/Stats/Total/XTURFECErrors + + +/BBF/DSL/Channel/0/Stats/Total/XTURCRCErrors + + +/BBF/DSL/Line/0/LinkStatus + + +/BBF/DSL/Line/0/StandardUsed + + +/BBF/DSL/Line/0/CurrentProfile + + +/BBF/DSL/Line/0/DownstreamMaxBitRate + + +/BBF/DSL/Line/0/UpstreamMaxBitRate + + +/BBF/DSL/Line/0/DownstreamNoiseMargin + + +/BBF/DSL/Line/0/UpstreamNoiseMargin + + +/BBF/DSL/Channel/0/DownstreamCurrRate + + +/BBF/DSL/Channel/0/UpstreamCurrRate + + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.500 b/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.500 new file mode 100644 index 0000000..4abcc9b --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.500 @@ -0,0 +1,22 @@ +HTTP/1.1 500 Internal Server Error +SERVER: [MOCKED_SERVER] +CONNECTION: close +CONTENT-LENGTH: [CALC_LEN] +CONTENT-TYPE: text/xml; charset="utf-8" + + + + + s:Client + UPnPError + + + 401 + Invalid Action + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetValues.200 b/home0/inserts/tr064/mockserver/TR181_GetValues.200 new file mode 100644 index 0000000..7bb4bbc --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetValues.200 @@ -0,0 +1,171 @@ +HTTP/1.1 200 OK +SERVER: [MOCKED_SERVER] +CACHE-CONTROL: max-age=1800 +CONTENT-TYPE: text/xml; charset=utf-8 +CONTENT-LENGTH: [CALC_LEN] + + + + + + + + + /BBF/DSL/Line/0/TestParams/SNRGds + + + [MOCKED_SNRGds] + + + + + /BBF/DSL/Line/0/TestParams/SNRGus + + + [MOCKED_SNRGus] + + + + + /BBF/DSL/Line/0/TestParams/SNRpsds + + + [MOCKED_SNRpsds] + + + + + /BBF/DSL/Line/0/TestParams/SNRpsus + + + [MOCKED_SNRpsus] + + + + + /BBF/DSL/Line/0/TestParams/SNRMTds + + + [MOCKED_SNRMTds] + + + + + /BBF/DSL/Line/0/TestParams/SNRMTus + + + [MOCKED_SNRMTus] + + + + + /BBF/DSL/Line/0/TestParams/LATNds + + + [MOCKED_LATNds] + + + + + /BBF/DSL/Line/0/TestParams/LATNus + + + [MOCKED_LATNus] + + + + + /BBF/DSL/Channel/0/Stats.Total.XTURFECErrors + + + [MOCKED_FECErrors] + + + + + /BBF/DSL/Channel/0/Stats.Total.XTURCRCErrors + + + [MOCKED_CRCErrors] + + + + + /BBF/DSL/Line/0/LinkStatus + + + [MOCKED_LinkStatus] + + + + + /BBF/DSL/Line/0/StandardUsed + + + [MOCKED_StandardUsed] + + + + + /BBF/DSL/Line/0/CurrentProfile + + + [MOCKED_CurrentProfile] + + + + + /BBF/DSL/Line/0/DownstreamMaxBitRate + + + [MOCKED_DownstreamMaxBitRate] + + + + + /BBF/DSL/Line/0/UpstreamMaxBitRate + + + [MOCKED_UpstreamMaxBitRate] + + + + + /BBF/DSL/Line/0/DownstreamNoiseMargin + + + [MOCKED_DownstreamNoiseMargin] + + + + + /BBF/DSL/Line/0/UpstreamNoiseMargin + + + [MOCKED_UpstreamNoiseMargin] + + + + + /BBF/DSL/Channel/0/DownstreamCurrRate + + + [MOCKED_DownstreamCurrRate] + + + + + /BBF/DSL/Channel/0/UpstreamCurrRate + + + [MOCKED_UpstreamCurrRate] + + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetValues.500 b/home0/inserts/tr064/mockserver/TR181_GetValues.500 new file mode 100644 index 0000000..4abcc9b --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetValues.500 @@ -0,0 +1,22 @@ +HTTP/1.1 500 Internal Server Error +SERVER: [MOCKED_SERVER] +CONNECTION: close +CONTENT-LENGTH: [CALC_LEN] +CONTENT-TYPE: text/xml; charset="utf-8" + + + + + s:Client + UPnPError + + + 401 + Invalid Action + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/tr064gen.xml b/home0/inserts/tr064/mockserver/tr064gen.xml new file mode 100644 index 0000000..1747a7f --- /dev/null +++ b/home0/inserts/tr064/mockserver/tr064gen.xml @@ -0,0 +1,38 @@ + + + + 2 + 0 + + + urn:schemas-upnp-org:device:InternetGatewayDevice:2 + Generic Internet-Box + Generic + http://www.generic.com + http://www.generic.com/internetbox + uuid:75802409-bccb-40e7-8e6a-3481C4FF2460 + Generic Router + Router100 + 1234567890123456 + http://internet.box + + + + image/png + 100 + 100 + 32 + /images/Generic_Internetbox.png + + + + + urn:schemas-upnp-org:service:ConfigurationManagement:2 + urn:upnp-org:serviceId:serviceID + [MOCKED_IP]:[MOCKED_PORT] + [MOCKED_IP]:[MOCKED_PORT] + [MOCKED_IP]:[MOCKED_PORT]/UPnPdescription.xml + + + + \ No newline at end of file From cd960639aa48af96d8626a879d0d2a8793306f2f Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 11:59:19 +0200 Subject: [PATCH 02/12] Delete TR181.200 --- home0/inserts/tr064/mockserver/TR181.200 | 90 ------------------------ 1 file changed, 90 deletions(-) delete mode 100644 home0/inserts/tr064/mockserver/TR181.200 diff --git a/home0/inserts/tr064/mockserver/TR181.200 b/home0/inserts/tr064/mockserver/TR181.200 deleted file mode 100644 index 28ec328..0000000 --- a/home0/inserts/tr064/mockserver/TR181.200 +++ /dev/null @@ -1,90 +0,0 @@ -HTTP/1.1 200 OK -SERVER: [MOCKED_SERVER] -CACHE-CONTROL: max-age=1800 -CONTENT-TYPE: text/xml; charset=utf-8 -CONTENT-LENGTH: [MOCKED_length] - - - - - - -Device.DSL.Line.1.TestParams.SNRGds -[MOCKED_SNRGds] - - -Device.DSL.Line.1.TestParams.SNRGus -[MOCKED_SNRGus] - - -Device.DSL.Line.1.TestParams.SNRpsds -[MOCKED_SNRpsds] - - -Device.DSL.Line.1.TestParams.SNRpsus -[MOCKED_SNRpsus] - - -Device.DSL.Line.1.TestParams.SNRMTds -[MOCKED_SNRMTds] - - -Device.DSL.Line.1.TestParams.SNRMTus -[MOCKED_SNRMTus] - - -Device.DSL.Line.1.TestParams.LATNds -[MOCKED_LATNds] - - -Device.DSL.Line.1.TestParams.LATNus -[MOCKED_LATNus] - - -Device.DSL.Channel.1.Stats.Total.XTURFECErrors -[MOCKED_FECErrors] - - -Device.DSL.Channel.1.Stats.Total.XTURCRCErrors -[MOCKED_CRCErrors] - - -Device.DSL.Line.1.LinkStatus -[MOCKED_LinkStatus] - - -Device.DSL.Line.1.StandardUsed -[MOCKED_StandardUsed] - - -Device.DSL.Line.1.CurrentProfile -[MOCKED_CurrentProfile] - - -Device.DSL.Line.1.DownstreamMaxBitRate -[MOCKED_DownstreamMaxBitRate] - - -Device.DSL.Line.1.UpstreamMaxBitRate -[MOCKED_UpstreamMaxBitRate] - - -Device.DSL.Line.1.DownstreamNoiseMargin -[MOCKED_DownstreamNoiseMargin] - - -Device.DSL.Line.1.UpstreamNoiseMargin -[MOCKED_UpstreamNoiseMargin] - - -Device.DSL.Channel.1.DownstreamCurrRate -[MOCKED_DownstreamCurrRate] - - -Device.DSL.Channel.1.UpstreamCurrRate -[MOCKED_UpstreamCurrRate] - - - - - \ No newline at end of file From 66a7ce9d95b44ca1f5b16b64769e1c0a72aacddd Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 11:59:29 +0200 Subject: [PATCH 03/12] Delete TR181.500 --- home0/inserts/tr064/mockserver/TR181.500 | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 home0/inserts/tr064/mockserver/TR181.500 diff --git a/home0/inserts/tr064/mockserver/TR181.500 b/home0/inserts/tr064/mockserver/TR181.500 deleted file mode 100644 index 2158b8b..0000000 --- a/home0/inserts/tr064/mockserver/TR181.500 +++ /dev/null @@ -1,21 +0,0 @@ -HTTP/1.1 500 Internal Server Error -SERVER: [MOCKED_SERVER] -CONNECTION: close -CONTENT-LENGTH: [MOCKED_length] -CONTENT-TYPE: text/xml; charset="utf-8" - - - - - -s:Client -UPnPError - - -401 -Invalid Action - - - - - \ No newline at end of file From c0f45c4a0a8aa5469d07e4273511eca422029ac4 Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 12:00:01 +0200 Subject: [PATCH 04/12] Delete SOAP.request --- home0/inserts/tr064/mockserver/SOAP.request | 1 - 1 file changed, 1 deletion(-) delete mode 100644 home0/inserts/tr064/mockserver/SOAP.request diff --git a/home0/inserts/tr064/mockserver/SOAP.request b/home0/inserts/tr064/mockserver/SOAP.request deleted file mode 100644 index 9a102ae..0000000 --- a/home0/inserts/tr064/mockserver/SOAP.request +++ /dev/null @@ -1 +0,0 @@ -Device.DSL.Line.1.TestParams.SNRGdsDevice.DSL.Line.1.TestParams.SNRGusDevice.DSL.Line.1.TestParams.SNRpsdsDevice.DSL.Line.1.TestParams.SNRpsusDevice.DSL.Line.1.TestParams.SNRMTdsDevice.DSL.Line.1.TestParams.SNRMTusDevice.DSL.Line.1.LinkStatusDevice.DSL.Line.1.CurrentProfileDevice.DSL.Line.1.DownstreamMaxBitRateDevice.DSL.Line.1.UpstreamMaxBitRateDevice.DSL.Line.1.DownstreamNoiseMarginDevice.DSL.Line.1.UpstreamNoiseMarginDevice.DSL.Channel.1.DownstreamCurrRateDevice.DSL.Channel.1.UpstreamCurrRateDevice.DSL.Line.1.StandardUsedDevice.DSL.Line.1.TestParams.LATNdsDevice.DSL.Line.1.TestParams.LATNusDevice.DSL.Channel.1.Stats.Total.XTURFECErrorsDevice.DSL.Channel.1.Stats.Total.XTURCRCErrors From 5b8a0554d5e6225e07c0b81df97df20b72954a13 Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 12:55:33 +0200 Subject: [PATCH 05/12] Add additional ports for the mock server --- home0/inserts/bin/099_home0_start_tr064.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home0/inserts/bin/099_home0_start_tr064.sh b/home0/inserts/bin/099_home0_start_tr064.sh index e77974b..e125d16 100755 --- a/home0/inserts/bin/099_home0_start_tr064.sh +++ b/home0/inserts/bin/099_home0_start_tr064.sh @@ -4,7 +4,10 @@ sed -i 's/listen(port/listen(port, "0.0.0.0"/g' /usr/local/lib/node_modules/mockserver/bin/mockserver.js # Accept connections to the TR-064 mock server +iptables -I INPUT 1 -p tcp --dport 5438 -j ACCEPT +iptables -I INPUT 1 -p tcp --dport 37215 -j ACCEPT iptables -I INPUT 1 -p tcp --dport 49000 -j ACCEPT +iptables -I INPUT 1 -p tcp --dport 49001 -j ACCEPT # start TR-064 moc server cd /opt From e9745d4262408522bb9e48e17ab649fa9c774a1d Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 17:38:19 +0200 Subject: [PATCH 06/12] Support of different location files --- home0/inserts/tr064/ssdp-mocks/ssdp_mock.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/home0/inserts/tr064/ssdp-mocks/ssdp_mock.py b/home0/inserts/tr064/ssdp-mocks/ssdp_mock.py index 4e029e6..44b15b0 100755 --- a/home0/inserts/tr064/ssdp-mocks/ssdp_mock.py +++ b/home0/inserts/tr064/ssdp-mocks/ssdp_mock.py @@ -20,12 +20,13 @@ def setup_logger(logfile: str): class MockSSDPServer: - def __init__(self, ip="0.0.0.0", port=1900, location_ip="127.0.0.1", location_port=49000, timeout=5, server_name="Speedport Smart 3", + def __init__(self, ip="0.0.0.0", port=1900, location_ip="127.0.0.1", location_port=49000, location_file='tr064dev.xml', timeout=5, server_name="Speedport Smart 3", st="urn:telekom-de:device:TO_InternetGatewayDevice:2"): self.ip = ip self.port = port self.location_ip = location_ip self.location_port = location_port + self.location_file = location_file self.timeout = timeout self.server_name = server_name self.st = st @@ -44,14 +45,14 @@ def _check(data: bytes): def _send_mock_response(self, addr: str): response = ['HTTP/1.1 200 OK', 'CACHE-CONTROL: max-age=1800', - 'LOCATION: http://{}:{}/description.xml'.format( - self.location_ip, self.location_port), + 'LOCATION: http://{}:{}/{}'.format( + self.location_ip, self.location_port, self.location_file), 'SERVER: {}'.format(self.server_name), 'Date: {}'.format(datetime.date.today().strftime( "%a, %d %b %Y %H:%M:%S")), 'EXT: ', 'ST: {}'.format(self.st), - 'USN: {}{}'.format("uuid:00000000-0000-0002-0000-44fffffffe3b38ffffffa2ffffffb4::",self.st)] + 'USN: {}{}'.format("uuid:739f2409-bccb-40e7-8e6c-582af7c5b426::",self.st)] response.extend(('', '')) response = '\r\n'.join(response) @@ -100,12 +101,13 @@ def main(): parser.add_argument('--location-ip', dest="location_ip", action='store', help="Mock value for the IP address inside the LOCATION parameter.") parser.add_argument('--location-port', dest="location_port", action='store', type=int, default=49000, help="Mock value for the Port inside the LOCATION parameter.") + parser.add_argument('--location-file', dest="location_file", action='store', default="description.xml", help="LOCATION XML file.") args = parser.parse_args() setup_logger(logfile=args.logfile) try: - server = MockSSDPServer(location_ip=args.location_ip, location_port=args.location_port, server_name=args.server_name, st=args.st) + server = MockSSDPServer(location_ip=args.location_ip, location_port=args.location_port, location_file=args.location_file, server_name=args.server_name, st=args.st) server.start() except Exception as e: logger.error('Error: {}'.format(str(e))) From 92430a87cc40e3883075798061b24828c8f80f6b Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 19:15:48 +0200 Subject: [PATCH 07/12] Add generic router support --- .../inserts/tr064/mockserver/create_mocks.sh | 472 ++++++++++-------- 1 file changed, 262 insertions(+), 210 deletions(-) diff --git a/home0/inserts/tr064/mockserver/create_mocks.sh b/home0/inserts/tr064/mockserver/create_mocks.sh index 96a00b5..4737e23 100755 --- a/home0/inserts/tr064/mockserver/create_mocks.sh +++ b/home0/inserts/tr064/mockserver/create_mocks.sh @@ -1,6 +1,5 @@ #!/bin/sh -TOP_DIR="$(pwd)" DATA_DIR="default" #set -x VERBOSE="no" @@ -23,10 +22,11 @@ show_help() { echo " * TR181" echo " * DATASET_SP_17a" echo "" - echo " DEVICE_SpeedportSmart3 (profile 17a) \\" - echo " DEVICE_Fritz7590 (profile 30a) }-> mocking this device" - echo " DEVICE_Fritz7490 (profile 17a) /" - echo " DEVICE_Fritz7490_without_support /" + echo " DEVICE_SpeedportSmart3 (profile 17a) \\" + echo " DEVICE_Fritz7590 (profile 30a) \\" + echo " DEVICE_Fritz7490 (profile 17a) }-> mocking this device" + echo " DEVICE_Fritz7490_without_support /" + echo " DEVICE_GenericRouter /" echo " TR181 -> responding to GetParameterValues for" echo " Device.DSL.Line.1.TestParams. with 200 and data" echo " TR098 -> responding to X_GENERIC_GetVDSLInfo with" @@ -44,230 +44,282 @@ show_help() { echo "" } -generate_mock() { - ADD_PREFIX="${1}" - REQUEST="${2}" - RESPONSE="${3}" +copy_mocks() { + for FILE in $XML_FILES; do + local IP=$(cat "/opt/MOCK_IP_ADDRESS") + local PORT=$(cat "/opt/${DATA_DIR}/PORT") + cp "/opt/$FILE" "/opt/$FILE.work" + sed -i "s#\[MOCKED_IP\]#${IP}#g" "/opt/$FILE.work" + sed -i "s#\[MOCKED_PORT\]#${PORT}#g" "/opt/$FILE.work" + local LEN=$(stat --format=%s "/opt/$FILE".work) + mkdir -p "/opt/mocks/$FILE" + echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: ${LEN}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" + cat "/opt/$FILE.work" >> "/opt/mocks/$FILE/GET.mock" + rm "/opt/$FILE.work" + done +} - # generate mocks in the directory mocks - mkdir -p mocks && cd mocks +generate_mock() { + local ADD_PREFIX="$1" + local REQUEST="$2" + local RESPONSE="$3" + # generate mocks in the directory mocks + mkdir -p mocks + cd mocks - #generate the directory structure for the mock - export IFS="/" - CURRENT_STEP="" - TO_CREATE="" - for PART in ${REQUEST}; do - if [ "${PART}" = "" ]; then - continue; - else - CURRENT_STEP="${ADD_PREFIX}${PART}" - ADD_PREFIX="" - fi + #generate the directory structure for the mock + export IFS="/" + local CURRENT_STEP="" + local TO_CREATE="" + for PART in ${REQUEST}; do + if [ "${PART}" = "" ]; then + continue; + else + CURRENT_STEP="${ADD_PREFIX}${PART}" + ADD_PREFIX="" + fi - if [ "${TO_CREATE}" = "" ]; then - TO_CREATE="${CURRENT_STEP}" - else - mkdir "${TO_CREATE}" - cd "${TO_CREATE}" - TO_CREATE="${CURRENT_STEP}" - fi + if [ "${TO_CREATE}" = "" ]; then + TO_CREATE="${CURRENT_STEP}" + else + mkdir -p "${TO_CREATE}" + cd "${TO_CREATE}" + TO_CREATE="${CURRENT_STEP}" + fi done #copy the response to be mocked to the mock cp "${RESPONSE}" "${TO_CREATE}.mock" - cd "${TOP_DIR}" + cd "/opt" } generate_response() { - IN_FILE="${1}" - OUT_FILE="${2}" - rm -f "${OUT_FILE}" - cp "${IN_FILE}" "${OUT_FILE}" - for FILE in ${TOP_DIR}/${DATA_DIR}/*; do - MOCK_NAME=$(basename "${FILE}") - MOCKED_DATA_CONTENT="$(cat ${TOP_DIR}/${DATA_DIR}/${MOCK_NAME})" - sed -i "s#\[MOCKED_${MOCK_NAME}\]#${MOCKED_DATA_CONTENT}#g" "${OUT_FILE}" || echo "Can not mock ${MOCK_NAME} in ${OUT_FILE} ..." - done + local IN_FILE="$1" + local OUT_FILE="$2" + rm -f "${OUT_FILE}" + cp "$IN_FILE" "$OUT_FILE" + for FILE in /opt/${DATA_DIR}/*; do + local MOCK_NAME=$(basename "$FILE") + local MOCKED_DATA_CONTENT="$(cat /opt/${DATA_DIR}/${MOCK_NAME})" + sed -i "s#\[MOCKED_${MOCK_NAME}\]#${MOCKED_DATA_CONTENT}#g" "$OUT_FILE" + done + local LINE=$(($(grep "^$" -n "$OUT_FILE" | cut -d':' -f1)+1)) + local LEN="$(tail -n+$LINE "$OUT_FILE" | wc -c)" + sed -i "s#\[CALC_LEN\]#${LEN}#" "$OUT_FILE" } set_profile() { - cd "${TOP_DIR}" - mkdir -p "${DATA_DIR}" - cd "${DATA_DIR}" + cd "/opt" + mkdir -p "${DATA_DIR}" + cd "${DATA_DIR}" - case "${1}" in - DATASET_SP_17a) - printf "8" > SNRGds; - printf "8" > SNRGus; - printf "255,255,255,255,255,255,255,255,255,168,170,172,173,174,175,176,177,177,178,178,178,179,179,179,180,180,180,180,180,181,180,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,182,182,181,182,181,182,181,181,182,182,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,180,180,180,180,180,255,180,180,179,179,179,179,179,178,178,177,177,177,177,177,177,177,177,176,176,175,174,172,169,167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165,166,168,169,169,169,169,169,169,169,169,169,169,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,169,169,169,169,169,169,168,167,167,166,167,168,168,169,169,169,169,169,169,169,169,169,169,169,167,167,167,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,167,168,168,255,168,167,168,168,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,154,153,154,153,154,153,152,153,153,153,153,154,153,153,154,154,155,154,154,156,156,156,156,155,156,156,157,157,157,157,157,157,157,158,158,158,158,158,157,156,155,155,154,155,154,154,154,154,154,154,155,154,155,155,156,156,157,157,157,157,156,157,157,157,157,157,157,157,156,157,157,156,157,156,156,156,156,156,156,157,156,156,156,156,156,156,157,157,156,156,157,156,156,156,156,156,156,156,157,156,156,156,156,156,156,156,156,155,155,156,156,156,155,156,155,155,156,156,156,155,155,155,156,156,156,155,156,155,155,155,155,155,156,155,155,156,155,155,155,155,155,155,154,155,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255" > SNRpsds; - printf "255,255,255,064,144,163,164,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,064,182,180,181,180,178,178,178,177,177,176,176,176,176,175,172,173,175,175,172,175,175,172,173,174,175,175,175,174,175,173,173,172,172,173,173,172,172,170,171,172,064,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,064,176,166,172,171,174,175,177,180,181,181,181,181,181,177,171,169,166,168,155,168,170,165,164,167,158,162,165,167,164,157,164,170,163,170,168,157,169,171,169,173,173,178,178,178,179,179,179,177,169,171,168,167,158,170,166,169,172,160,160,164,165,165,165,160,157,165,161,163,160,150,158,163,162,162,160,158,163,166,174,173,174,173,172,169,162,159,150,163,159,160,163,153,151,154,159,159,156,150,157,064,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255" > SNRpsus; - printf "0" > CRCErrors; - printf "Up" > LinkStatus; - printf "17a" > CurrentProfile; - printf "139815" > DownstreamMaxBitRate; - printf "55351" > UpstreamMaxBitRate; - printf "102345" > DownstreamCurrRate; - printf "41434" > UpstreamCurrRate; - printf "176" > DownstreamNoiseMargin; - printf "199" > UpstreamNoiseMargin; - printf "" > length; - printf "256" > SNRMTds; - printf "256" > SNRMTus; - printf "17,47,47,0,0" > LATNds; - printf "7,47,11,0,0" > LATNus; - printf "0" > FECErrors; - printf "G.993.2_Annex_B" > StandardUsed; - ;; - DATASET_FB_17a) - printf "8" > SNRGds; - printf "1" > SNRGus; - printf "0,0,0,0,78,96,100,0,0,102,104,104,106,106,108,108,108,110,110,110,110,110,110,110,110,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,114,112,112,112,112,112,112,112,112,112,114,114,112,114,112,112,114,112,114,114,112,112,112,114,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,110,112,110,110,110,110,108,106,106,104,0,0,0,120,118,118,118,88,88,88,88,88,88,118,116,114,116,114,114,114,116,114,114,114,114,112,114,114,114,114,114,112,114,112,110,110,112,112,110,112,110,110,112,0,0,102,102,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,106,106,106,104,106,106,106,106,104,106,106,106,106,106,106,106,106,106,104,106,104,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,102,0,0,0,118,110,112,114,114,116,112,116,118,116,118,116,118,118,114,112,106,102,92,102,112,114,110,112,92,112,112,110,114,92,106,114,112,112,112,106,110,116,116,114,114,116,116,116,118,118,116,116,114,112,112,114,108,114,112,114,112,110,108,114,114,106,112,98,110,100,110,102,106,98,108,106,110,106,106,108,108,108,110,110,110,110,110,110,108,106,96,108,108,104,108,104,94,104,104,96,104,100,102,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,90,92,92,92,94,92,92,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,92,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,94,94,94,94,94,94,94,94,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,90,90,90,90,90,90,90,90,90,90,90,90,88,90,90,90,90,88,90,90,90,90,90,88,90,90,90,90,90,88,88,88,88,88,88,88,88,88,88,88,88,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" > SNRpsds; - printf "" > SNRpsus; - printf "62" > CRCErrors; - printf "Up" > LinkStatus; - printf "17a" > CurrentProfile; - printf "143376" > DownstreamMaxBitRate; - printf "62153" > UpstreamMaxBitRate; - printf "103887" > DownstreamCurrRate; - printf "41434" > UpstreamCurrRate; - printf "170" > DownstreamNoiseMargin; - printf "200" > UpstreamNoiseMargin; - printf "" > length; - printf "512" > SNRMTds; - printf "0" > SNRMTus; - printf "2,4,4,127,127" > LATNds; - printf "0,3,0,127,127" > LATNus; - printf "0" > FECErrors; - printf "VDSL" > StandardUsed; - ;; - DATASET_FB_30a) - printf "8" > SNRGds; - printf "1" > SNRGus; - printf "0,0,0,0,0,80,86,89,93,95,97,99,100,100,102,102,102,104,104,105,104,104,106,106,106,106,106,107,106,107,108,108,108,108,108,108,108,108,108,108,108,108,108,109,108,108,109,108,108,108,110,108,109,0,0,64,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,64,0,110,110,110,110,111,110,111,111,111,112,111,112,111,111,110,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,0,0,63,125,126,126,125,125,125,125,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,123,123,123,124,123,123,123,124,124,123,124,123,123,122,122,122,122,122,122,122,122,122,122,0,0,113,114,114,114,114,114,114,114,114,114,113,113,113,113,114,113,114,113,113,114,113,113,113,114,114,114,114,114,113,114,114,113,113,113,113,113,114,114,113,112,113,113,112,112,112,113,114,113,113,114,113,113,112,114,112,113,112,113,112,113,112,113,112,113,114,113,113,114,114,114,114,114,114,114,114,114,114,114,114,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" > SNRpsds; - printf "" > SNRpsus; - printf "0" > CRCErrors; - printf "Up" > LinkStatus; - printf "30a" > CurrentProfile; - printf "161792" > DownstreamMaxBitRate; - printf "62081" > UpstreamMaxBitRate; - printf "149998" > DownstreamCurrRate; - printf "58162" > UpstreamCurrRate; - printf "90" > DownstreamNoiseMargin; - printf "160" > UpstreamNoiseMargin; - printf "" > length; - printf "512" > SNRMTds; - printf "0" > SNRMTus; - printf "1,1,0,127,127" > LATNds; - printf "127,0,0,127,127" > LATNus; - printf "0" > FECErrors; - printf "VDSL" > StandardUsed; - ;; - TR181) - printf "TR181" > PROFILE - printf "200" > RESPONSE - printf "GetParameterValues" > REQUEST_KEY - ;; - TR098) - printf "TR098" > PROFILE - printf "200" > RESPONSE - printf "X_GENERIC_GetVDSLInfo" > REQUEST_KEY - ;; - 200) - printf "200" > RESPONSE - ;; - 500) - printf "500" > RESPONSE - ;; - SpeedportSmart3) - printf "Speedport Smart 3 010137.3.0.404.0" > SERVER - printf 'cwmp="urn:telekom-de.totr64-2-n"' > xmlns - printf "urn:telekom-de:device:1" > ST - ;; - Fritz7590) - printf "FRITZ!Box 7590 UPnP/1.0 AVM FRITZ!Box 7590 154.07.19" > SERVER - printf 'u="urn:dslforum-org:service:WANDSLInterfaceConfig:1"' > xmlns - printf "urn:dslforum-org:service:InternetGatewayDevice:1" > ST - printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY - ;; - Fritz7490) - printf "FRITZ!Box 7490 UPnP/1.0 AVM FRITZ!Box 7490 113.07.21" > SERVER - printf 'u="urn:dslforum-org:service:WANDSLInterfaceConfig:1"' > xmlns - printf "urn:dslforum-org:service:InternetGatewayDevice:1" > ST - printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY - ;; - DEVICE_SpeedportSmart3) - set_profile DATASET_SP_17a - set_profile TR181 - set_profile SpeedportSmart3 - ;; - DEVICE_Fritz7590) - set_profile DATASET_FB_30a - set_profile TR098 - set_profile Fritz7590 - ;; - DEVICE_Fritz7490) + case "${1}" in + DATASET_SP_17a) + printf "8" > SNRGds; + printf "8" > SNRGus; + printf "255,255,255,255,255,255,255,255,255,168,170,172,173,174,175,176,177,177,178,178,178,179,179,179,180,180,180,180,180,181,180,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,182,182,181,182,181,182,181,181,182,182,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,180,180,180,180,180,255,180,180,179,179,179,179,179,178,178,177,177,177,177,177,177,177,177,176,176,175,174,172,169,167,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165,166,168,169,169,169,169,169,169,169,169,169,169,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,169,169,169,169,169,169,168,167,167,166,167,168,168,169,169,169,169,169,169,169,169,169,169,169,167,167,167,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,167,168,168,255,168,167,168,168,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,154,153,154,153,154,153,152,153,153,153,153,154,153,153,154,154,155,154,154,156,156,156,156,155,156,156,157,157,157,157,157,157,157,158,158,158,158,158,157,156,155,155,154,155,154,154,154,154,154,154,155,154,155,155,156,156,157,157,157,157,156,157,157,157,157,157,157,157,156,157,157,156,157,156,156,156,156,156,156,157,156,156,156,156,156,156,157,157,156,156,157,156,156,156,156,156,156,156,157,156,156,156,156,156,156,156,156,155,155,156,156,156,155,156,155,155,156,156,156,155,155,155,156,156,156,155,156,155,155,155,155,155,156,155,155,156,155,155,155,155,155,155,154,155,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255" > SNRpsds; + printf "255,255,255,064,144,163,164,145,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,064,182,180,181,180,178,178,178,177,177,176,176,176,176,175,172,173,175,175,172,175,175,172,173,174,175,175,175,174,175,173,173,172,172,173,173,172,172,170,171,172,064,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,064,176,166,172,171,174,175,177,180,181,181,181,181,181,177,171,169,166,168,155,168,170,165,164,167,158,162,165,167,164,157,164,170,163,170,168,157,169,171,169,173,173,178,178,178,179,179,179,177,169,171,168,167,158,170,166,169,172,160,160,164,165,165,165,160,157,165,161,163,160,150,158,163,162,162,160,158,163,166,174,173,174,173,172,169,162,159,150,163,159,160,163,153,151,154,159,159,156,150,157,064,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255" > SNRpsus; + printf "0" > CRCErrors; + printf "Up" > LinkStatus; + printf "17a" > CurrentProfile; + printf "139815" > DownstreamMaxBitRate; + printf "55351" > UpstreamMaxBitRate; + printf "102345" > DownstreamCurrRate; + printf "41434" > UpstreamCurrRate; + printf "176" > DownstreamNoiseMargin; + printf "199" > UpstreamNoiseMargin; + printf "" > length; + printf "256" > SNRMTds; + printf "256" > SNRMTus; + printf "17,47,47,0,0" > LATNds; + printf "7,47,11,0,0" > LATNus; + printf "0" > FECErrors; + printf "G.993.2_Annex_B" > StandardUsed; + ;; + DATASET_FB_17a) + printf "8" > SNRGds; + printf "1" > SNRGus; + printf "0,0,0,0,78,96,100,0,0,102,104,104,106,106,108,108,108,110,110,110,110,110,110,110,110,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,114,112,112,112,112,112,112,112,112,112,114,114,112,114,112,112,114,112,114,114,112,112,112,114,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,110,112,110,110,110,110,108,106,106,104,0,0,0,120,118,118,118,88,88,88,88,88,88,118,116,114,116,114,114,114,116,114,114,114,114,112,114,114,114,114,114,112,114,112,110,110,112,112,110,112,110,110,112,0,0,102,102,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,106,106,106,104,106,106,106,106,104,106,106,106,106,106,106,106,106,106,104,106,104,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,102,0,0,0,118,110,112,114,114,116,112,116,118,116,118,116,118,118,114,112,106,102,92,102,112,114,110,112,92,112,112,110,114,92,106,114,112,112,112,106,110,116,116,114,114,116,116,116,118,118,116,116,114,112,112,114,108,114,112,114,112,110,108,114,114,106,112,98,110,100,110,102,106,98,108,106,110,106,106,108,108,108,110,110,110,110,110,110,108,106,96,108,108,104,108,104,94,104,104,96,104,100,102,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,90,92,92,92,94,92,92,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,92,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,94,94,94,94,94,94,94,94,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,90,90,90,90,90,90,90,90,90,90,90,90,88,90,90,90,90,88,90,90,90,90,90,88,90,90,90,90,90,88,88,88,88,88,88,88,88,88,88,88,88,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" > SNRpsds; + printf "" > SNRpsus; + printf "62" > CRCErrors; + printf "Up" > LinkStatus; + printf "17a" > CurrentProfile; + printf "143376" > DownstreamMaxBitRate; + printf "62153" > UpstreamMaxBitRate; + printf "103887" > DownstreamCurrRate; + printf "41434" > UpstreamCurrRate; + printf "170" > DownstreamNoiseMargin; + printf "200" > UpstreamNoiseMargin; + printf "" > length; + printf "512" > SNRMTds; + printf "0" > SNRMTus; + printf "2,4,4,127,127" > LATNds; + printf "0,3,0,127,127" > LATNus; + printf "0" > FECErrors; + printf "VDSL" > StandardUsed; + ;; + DATASET_FB_30a) + printf "8" > SNRGds; + printf "1" > SNRGus; + printf "0,0,0,0,0,80,86,89,93,95,97,99,100,100,102,102,102,104,104,105,104,104,106,106,106,106,106,107,106,107,108,108,108,108,108,108,108,108,108,108,108,108,108,109,108,108,109,108,108,108,110,108,109,0,0,64,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,64,0,110,110,110,110,111,110,111,111,111,112,111,112,111,111,110,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,0,0,63,125,126,126,125,125,125,125,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,123,123,123,124,123,123,123,124,124,123,124,123,123,122,122,122,122,122,122,122,122,122,122,0,0,113,114,114,114,114,114,114,114,114,114,113,113,113,113,114,113,114,113,113,114,113,113,113,114,114,114,114,114,113,114,114,113,113,113,113,113,114,114,113,112,113,113,112,112,112,113,114,113,113,114,113,113,112,114,112,113,112,113,112,113,112,113,112,113,114,113,113,114,114,114,114,114,114,114,114,114,114,114,114,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" > SNRpsds; + printf "" > SNRpsus; + printf "0" > CRCErrors; + printf "Up" > LinkStatus; + printf "30a" > CurrentProfile; + printf "161792" > DownstreamMaxBitRate; + printf "62081" > UpstreamMaxBitRate; + printf "149998" > DownstreamCurrRate; + printf "58162" > UpstreamCurrRate; + printf "90" > DownstreamNoiseMargin; + printf "160" > UpstreamNoiseMargin; + printf "" > length; + printf "512" > SNRMTds; + printf "0" > SNRMTus; + printf "1,1,0,127,127" > LATNds; + printf "127,0,0,127,127" > LATNus; + printf "0" > FECErrors; + printf "VDSL" > StandardUsed; + ;; + TR181) + printf "TR181" > PROFILE + printf "200" > RESPONSE + printf "GetParameterValues" > REQUEST_KEY + ;; + TR098) + printf "TR098" > PROFILE + printf "200" > RESPONSE + printf "X_GENERIC_GetVDSLInfo" > REQUEST_KEY + ;; + 200) + printf "200" > RESPONSE + ;; + 500) + printf "500" > RESPONSE + ;; + SpeedportSmart3) + printf "Speedport Smart 3 010137.3.5.000.0" > SERVER + printf "description.xml" > LOCATION + printf 'cwmp="urn:urn:telekom-de:device"' > xmlns + printf "urn:telekom-de:device:1" > ST + printf "5438" > PORT + XML_FILES='tr064dev.xml' + POST_ACT='GetParameterValues' + ;; + SpeedportW922V) + printf "DTW922V UPnP/1.0 Speedport W 922V 01013203.01.002" > SERVER + printf "tr64_igd.xml" > LOCATION + printf 'cwmp="urn:telekom-de.totr64-2-n"' > xmlns + printf "urn:dslforum-org:device:InternetGatewayDevice:1" > ST + printf "5438" > PORT + XML_FILES='tr64_igd.xml tr64_igd_wdic.xml' + POST_ACT='GetParameterValues' + ;; + Fritz7590) + printf "FRITZ!Box 7590 UPnP/1.0 AVM FRITZ!Box 7590 154.07.19" > SERVER + printf "tr64desc.xml" > LOCATION + printf 'u="urn:dslforum-org:service:WANDSLInterfaceConfig:1"' > xmlns + printf "urn:dslforum-org:service:InternetGatewayDevice:1" > ST + printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY + printf "49000" > PORT + XML_FILES='tr64desc.xml wandslifconfigSCPD.xml' + ;; + Fritz7490) + printf "FRITZ!Box 7490 UPnP/1.0 AVM FRITZ!Box 7490 113.07.21" > SERVER + printf "tr64desc.xml" > LOCATION + printf 'u="urn:dslforum-org:service:WANDSLInterfaceConfig:1"' > xmlns + printf "urn:dslforum-org:service:InternetGatewayDevice:1" > ST + printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY + printf "49000" > PORT + XML_FILES='tr64desc.xml wandslifconfigSCPD.xml' + ;; + GenericRouter) + printf "Generic Router UPnP/1.0 generic router 1.1.0" > SERVER + printf "tr064gen.xml" > LOCATION + printf 'u="urn:schemas-upnp-org:service:ConfigurationManagement:2"' > xmlns + printf "urn:schemas-upnp-org:service:ConfigurationManagement:2" > ST + printf "49001" > PORT + XML_FILES='tr064gen.xml UPnPdescription.xml' + POST_ACT='GetSupportedDataModels GetSupportedParameters GetValues' + ;; + DEVICE_SpeedportSmart3) + set_profile DATASET_SP_17a + set_profile TR181 + set_profile SpeedportSmart3 + ;; + DEVICE_Fritz7590) + set_profile DATASET_FB_30a + set_profile TR098 + set_profile Fritz7590 + ;; + DEVICE_Fritz7490) set_profile DATASET_FB_17a - set_profile TR098 - set_profile Fritz7490 - ;; - DEVICE_Fritz7490_without_support) - set_profile TR098 - set_profile 500 - set_profile Fritz7490 - ;; - *) - DATA_DIR="${1}" - ;; - esac - cd "${TOP_DIR}" + set_profile TR098 + set_profile Fritz7490 + ;; + DEVICE_Fritz7490_without_support) + set_profile TR098 + set_profile 500 + set_profile Fritz7490 + ;; + DEVICE_GenericRouter) + set_profile DATASET_SP_17a + set_profile TR181 + set_profile GenericRouter + ;; + *) + DATA_DIR="${1}" + ;; + esac + cd "/opt" } generate_mocks() { - rm -rf "mocks" + rm -rf "mocks" + + copy_mocks - generate_response "${TOP_DIR}/$(cat ${TOP_DIR}/${DATA_DIR}/PROFILE).$(cat ${TOP_DIR}/${DATA_DIR}/RESPONSE)" "${TOP_DIR}/response" - case $(cat ${TOP_DIR}/${DATA_DIR}/PROFILE) in - TR181) - cp SOAP.request "${TOP_DIR}/SOAP.request.work" - XMLNS_CONTENT="$(cat ${TOP_DIR}/${DATA_DIR}/xmlns)" - sed -i "s#\[MOCKED_xmlns\]#${XMLNS_CONTENT}#g" "${TOP_DIR}/SOAP.request.work" - SOAP_REQUEST=$(cat "${TOP_DIR}/SOAP.request.work") - rm "${TOP_DIR}/SOAP.request.work" - generate_mock "POST--" "${SOAP_REQUEST}" "${TOP_DIR}/response" - ;; - TR098) - generate_mock "" "upnp/control/wandslifconfig1/POST" "${TOP_DIR}/response" - ;; - esac - rm "${TOP_DIR}/response" + case $(cat /opt/${DATA_DIR}/PROFILE) in + TR181) + for I in $POST_ACT; do + generate_response "/opt/$(cat "/opt/${DATA_DIR}/PROFILE")_${I}.$(cat "/opt/${DATA_DIR}/RESPONSE")" "/opt/response" + cp "/opt/SOAP_${I}.request" "/opt/SOAP.request.work" + local XMLNS_CONTENT="$(cat /opt/${DATA_DIR}/xmlns)" + sed -i "s#\[MOCKED_xmlns\]#${XMLNS_CONTENT}#g" "/opt/SOAP.request.work" + local SOAP_REQUEST="$(cat "/opt/SOAP.request.work")" + rm "/opt/SOAP.request.work" + generate_mock "POST--" "${SOAP_REQUEST}" "/opt/response" + done + ;; + TR098) + generate_response "/opt/$(cat /opt/${DATA_DIR}/PROFILE).$(cat /opt/${DATA_DIR}/RESPONSE)" "/opt/response" + generate_mock "" "upnp/control/wandslifconfig1/POST" "/opt/response" + ;; + esac + rm "/opt/response" - generate_mock "" "alive-response/GET" "${TOP_DIR}/alive.response" + generate_mock "" "alive-response/GET" "/opt/alive.response" } check_mocking_services() { - MOCKERVER_RUNNING=$(ps lax | grep [n]ode | grep mockserver) - - if [ "${MOCKERVER_RUNNING}" = "" ]; then - # start the mocking itself - python3 "${TOP_DIR}/mockserver_handler.py" "--log=${TOP_DIR}/mock.log" - fi - - cd "${TOP_DIR}" - RESTART_SSPD="no" - for FILE in SERVER ST; do - MOCK_NAME=$(basename "${FILE}") - MOCKED_DATA_OLD_CONTENT="$(cat .${MOCK_NAME}_OLD_CONTENT)" - MOCKED_DATA_CONTENT="$(cat ${DATA_DIR}/${MOCK_NAME})" - echo "${MOCKED_DATA_CONTENT}">.${MOCK_NAME}_OLD_CONTENT - if [ "${MOCKED_DATA_OLD_CONTENT}" != "${MOCKED_DATA_CONTENT}" ]; then - RESTART_SSPD="yes" - fi - done - if [ "${RESTART_SSPD}" != "no" ]; then - pkill python3 || echo "No SSDP mock killed ..." - python3 ./ssdp_mock.py --logfile=./ssdp.log --st="$(cat ${DATA_DIR}/ST)" --server-name="$(cat ${DATA_DIR}/SERVER)" --location-ip=$(cat "${TOP_DIR}/MOCK_IP_ADDRESS") & + cd "/opt" + local RESTART_SSPD="no" + for FILE in SERVER ST LOCATION PORT; do + local MOCK_NAME=$(basename "${FILE}") + local MOCKED_DATA_OLD_CONTENT="$(cat .${MOCK_NAME}_OLD_CONTENT)" + local MOCKED_DATA_CONTENT="$(cat ${DATA_DIR}/${MOCK_NAME})" + echo "${MOCKED_DATA_CONTENT}">.${MOCK_NAME}_OLD_CONTENT + if [ "${MOCKED_DATA_OLD_CONTENT}" != "${MOCKED_DATA_CONTENT}" ]; then + RESTART_SSPD="yes" fi + done + if [ "${RESTART_SSPD}" != "no" ]; then + pkill node + python3 "/opt/mockserver_handler.py" "--log=/opt/mock.log" "--port=$(cat "/opt/${DATA_DIR}/PORT")" + pkill python3 || echo "No SSDP mock killed ..." + python3 ./ssdp_mock.py --logfile=./ssdp.log --st="$(cat ${DATA_DIR}/ST)" --server-name="$(cat ${DATA_DIR}/SERVER)"\ + --location-ip=$(cat "/opt/MOCK_IP_ADDRESS") --location-port=$(cat "/opt/${DATA_DIR}/PORT") --location-file=$(cat "/opt/${DATA_DIR}/LOCATION")& + fi } read_commandline() { @@ -294,7 +346,7 @@ read_commandline() { exit 1 ;; --IP=?*) - printf "${1#*=}">"${TOP_DIR}/MOCK_IP_ADDRESS" + printf "${1#*=}">"/opt/MOCK_IP_ADDRESS" ;; --verbose=?*) VERBOSE=${1#*=} @@ -328,18 +380,18 @@ read_commandline() { # mainline # ################################################################################ -if [ ! -d "${TOP_DIR}/${DATA_DIR}" ]; then +if [ ! -d "/opt/${DATA_DIR}" ]; then rm .*_OLD_CONTENT fi read_commandline ${@} -if [ -d "${TOP_DIR}/${DATA_DIR}" ]; then +if [ -d "/opt/${DATA_DIR}" ]; then if [ "${VERBOSE}" != "no" ]; then - echo "Imported data from ${TOP_DIR}/${DATA_DIR}:" - for FILE in ${TOP_DIR}/${DATA_DIR}/*; do + echo "Imported data from /opt/${DATA_DIR}:" + for FILE in /opt/${DATA_DIR}/*; do MOCKED_DATA_CHUNK=$(basename "${FILE}") - echo " ${MOCKED_DATA_CHUNK}=$(cat ${TOP_DIR}/${DATA_DIR}/${MOCKED_DATA_CHUNK})" + echo " ${MOCKED_DATA_CHUNK}=$(cat /opt/${DATA_DIR}/${MOCKED_DATA_CHUNK})" done fi else From d2ff455962f916fb906d75aa07c0a7f66bbe27fa Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Tue, 17 May 2022 19:17:18 +0200 Subject: [PATCH 08/12] Update image version --- simulate_tr-069.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulate_tr-069.sh b/simulate_tr-069.sh index adcedb1..b454e19 100755 --- a/simulate_tr-069.sh +++ b/simulate_tr-069.sh @@ -4,7 +4,7 @@ set -e #set -x -DEFAULT_IMAGE_VERSION="1.3.7" +DEFAULT_IMAGE_VERSION="1.3.8" SCRIPT_VERISON="1.3.9" ################################################################################ From cee9354cbba88dcdfefd69a655aa3574af1ef4db Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Wed, 18 May 2022 18:40:18 +0200 Subject: [PATCH 09/12] Fix Speedport mock From 9f1338101d8a8c05e906d1985e6d18251fa067de Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Thu, 19 May 2022 17:11:39 +0200 Subject: [PATCH 10/12] Support non default DATA_DIRs --- .../inserts/tr064/mockserver/create_mocks.sh | 105 ++++++++++-------- 1 file changed, 61 insertions(+), 44 deletions(-) diff --git a/home0/inserts/tr064/mockserver/create_mocks.sh b/home0/inserts/tr064/mockserver/create_mocks.sh index 4737e23..fc1bb24 100755 --- a/home0/inserts/tr064/mockserver/create_mocks.sh +++ b/home0/inserts/tr064/mockserver/create_mocks.sh @@ -45,18 +45,25 @@ show_help() { } copy_mocks() { - for FILE in $XML_FILES; do - local IP=$(cat "/opt/MOCK_IP_ADDRESS") - local PORT=$(cat "/opt/${DATA_DIR}/PORT") - cp "/opt/$FILE" "/opt/$FILE.work" - sed -i "s#\[MOCKED_IP\]#${IP}#g" "/opt/$FILE.work" - sed -i "s#\[MOCKED_PORT\]#${PORT}#g" "/opt/$FILE.work" - local LEN=$(stat --format=%s "/opt/$FILE".work) - mkdir -p "/opt/mocks/$FILE" - echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: ${LEN}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" - cat "/opt/$FILE.work" >> "/opt/mocks/$FILE/GET.mock" - rm "/opt/$FILE.work" - done + if [ -f "/opt/${DATA_DIR}/XML_FILES" ]; then + XML_FILES=$(cat "/opt/${DATA_DIR}/XML_FILES") + for FILE in $XML_FILES; do + if [ -f "/opt/$FILE" ]; then + local IP=$(cat "/opt/MOCK_IP_ADDRESS") + local PORT=$(cat "/opt/${DATA_DIR}/PORT") + cp "/opt/$FILE" "/opt/$FILE.work" + sed -i "s#\[MOCKED_IP\]#${IP}#g" "/opt/$FILE.work" + sed -i "s#\[MOCKED_PORT\]#${PORT}#g" "/opt/$FILE.work" + local LEN=$(stat --format=%s "/opt/$FILE".work) + mkdir -p "/opt/mocks/$FILE" + echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: ${LEN}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" + cat "/opt/$FILE.work" >> "/opt/mocks/$FILE/GET.mock" + rm "/opt/$FILE.work" + else + echo "File $FILE is not available." + fi + done + fi } generate_mock() { @@ -138,26 +145,26 @@ set_profile() { printf "G.993.2_Annex_B" > StandardUsed; ;; DATASET_FB_17a) - printf "8" > SNRGds; - printf "1" > SNRGus; - printf "0,0,0,0,78,96,100,0,0,102,104,104,106,106,108,108,108,110,110,110,110,110,110,110,110,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,114,112,112,112,112,112,112,112,112,112,114,114,112,114,112,112,114,112,114,114,112,112,112,114,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,110,112,110,110,110,110,108,106,106,104,0,0,0,120,118,118,118,88,88,88,88,88,88,118,116,114,116,114,114,114,116,114,114,114,114,112,114,114,114,114,114,112,114,112,110,110,112,112,110,112,110,110,112,0,0,102,102,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,106,106,106,104,106,106,106,106,104,106,106,106,106,106,106,106,106,106,104,106,104,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,102,0,0,0,118,110,112,114,114,116,112,116,118,116,118,116,118,118,114,112,106,102,92,102,112,114,110,112,92,112,112,110,114,92,106,114,112,112,112,106,110,116,116,114,114,116,116,116,118,118,116,116,114,112,112,114,108,114,112,114,112,110,108,114,114,106,112,98,110,100,110,102,106,98,108,106,110,106,106,108,108,108,110,110,110,110,110,110,108,106,96,108,108,104,108,104,94,104,104,96,104,100,102,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,90,92,92,92,94,92,92,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,92,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,94,94,94,94,94,94,94,94,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,90,90,90,90,90,90,90,90,90,90,90,90,88,90,90,90,90,88,90,90,90,90,90,88,90,90,90,90,90,88,88,88,88,88,88,88,88,88,88,88,88,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" > SNRpsds; - printf "" > SNRpsus; - printf "62" > CRCErrors; - printf "Up" > LinkStatus; - printf "17a" > CurrentProfile; - printf "143376" > DownstreamMaxBitRate; - printf "62153" > UpstreamMaxBitRate; - printf "103887" > DownstreamCurrRate; - printf "41434" > UpstreamCurrRate; - printf "170" > DownstreamNoiseMargin; - printf "200" > UpstreamNoiseMargin; - printf "" > length; - printf "512" > SNRMTds; - printf "0" > SNRMTus; - printf "2,4,4,127,127" > LATNds; - printf "0,3,0,127,127" > LATNus; - printf "0" > FECErrors; - printf "VDSL" > StandardUsed; + printf "8" > SNRGds; + printf "1" > SNRGus; + printf "0,0,0,0,78,96,100,0,0,102,104,104,106,106,108,108,108,110,110,110,110,110,110,110,110,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,114,112,112,112,112,112,112,112,112,112,114,114,112,114,112,112,114,112,114,114,112,112,112,114,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,110,112,110,110,110,110,108,106,106,104,0,0,0,120,118,118,118,88,88,88,88,88,88,118,116,114,116,114,114,114,116,114,114,114,114,112,114,114,114,114,114,112,114,112,110,110,112,112,110,112,110,110,112,0,0,102,102,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,106,106,106,104,106,106,106,106,104,106,106,106,106,106,106,106,106,106,104,106,104,104,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,102,0,0,0,118,110,112,114,114,116,112,116,118,116,118,116,118,118,114,112,106,102,92,102,112,114,110,112,92,112,112,110,114,92,106,114,112,112,112,106,110,116,116,114,114,116,116,116,118,118,116,116,114,112,112,114,108,114,112,114,112,110,108,114,114,106,112,98,110,100,110,102,106,98,108,106,110,106,106,108,108,108,110,110,110,110,110,110,108,106,96,108,108,104,108,104,94,104,104,96,104,100,102,0,0,0,92,92,92,92,92,92,92,92,92,92,92,92,90,92,92,92,94,92,92,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,92,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,94,94,94,94,94,94,94,94,94,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,90,90,90,90,90,90,90,90,90,90,90,90,88,90,90,90,90,88,90,90,90,90,90,88,90,90,90,90,90,88,88,88,88,88,88,88,88,88,88,88,88,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" > SNRpsds; + printf "" > SNRpsus; + printf "62" > CRCErrors; + printf "Up" > LinkStatus; + printf "17a" > CurrentProfile; + printf "143376" > DownstreamMaxBitRate; + printf "62153" > UpstreamMaxBitRate; + printf "103887" > DownstreamCurrRate; + printf "41434" > UpstreamCurrRate; + printf "170" > DownstreamNoiseMargin; + printf "200" > UpstreamNoiseMargin; + printf "" > length; + printf "512" > SNRMTds; + printf "0" > SNRMTus; + printf "2,4,4,127,127" > LATNds; + printf "0,3,0,127,127" > LATNus; + printf "0" > FECErrors; + printf "VDSL" > StandardUsed; ;; DATASET_FB_30a) printf "8" > SNRGds; @@ -200,20 +207,20 @@ set_profile() { SpeedportSmart3) printf "Speedport Smart 3 010137.3.5.000.0" > SERVER printf "description.xml" > LOCATION - printf 'cwmp="urn:urn:telekom-de:device"' > xmlns - printf "urn:telekom-de:device:1" > ST + printf 'cwmp="urn:telekom-de:device:TO_InternetGatewayDevice:2"' > xmlns + printf "urn:telekom-de:device:TO_InternetGatewayDevice:2" > ST printf "5438" > PORT - XML_FILES='tr064dev.xml' - POST_ACT='GetParameterValues' + printf 'description.xml' > XML_FILES + printf 'GetParameterValues' > POST_ACT ;; SpeedportW922V) printf "DTW922V UPnP/1.0 Speedport W 922V 01013203.01.002" > SERVER printf "tr64_igd.xml" > LOCATION - printf 'cwmp="urn:telekom-de.totr64-2-n"' > xmlns + printf 'cwmp="urn:dslforum-org:device:InternetGatewayDevice:1"' > xmlns printf "urn:dslforum-org:device:InternetGatewayDevice:1" > ST printf "5438" > PORT - XML_FILES='tr64_igd.xml tr64_igd_wdic.xml' - POST_ACT='GetParameterValues' + printf 'tr64_igd.xml tr64_igd_wdic.xml' > XML_FILES + printf 'GetParameterValues' > POST_ACT ;; Fritz7590) printf "FRITZ!Box 7590 UPnP/1.0 AVM FRITZ!Box 7590 154.07.19" > SERVER @@ -222,7 +229,7 @@ set_profile() { printf "urn:dslforum-org:service:InternetGatewayDevice:1" > ST printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY printf "49000" > PORT - XML_FILES='tr64desc.xml wandslifconfigSCPD.xml' + printf 'tr64desc.xml wandslifconfigSCPD.xml' > XML_FILES ;; Fritz7490) printf "FRITZ!Box 7490 UPnP/1.0 AVM FRITZ!Box 7490 113.07.21" > SERVER @@ -231,7 +238,7 @@ set_profile() { printf "urn:dslforum-org:service:InternetGatewayDevice:1" > ST printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY printf "49000" > PORT - XML_FILES='tr64desc.xml wandslifconfigSCPD.xml' + printf 'tr64desc.xml wandslifconfigSCPD.xml' > XML_FILES ;; GenericRouter) printf "Generic Router UPnP/1.0 generic router 1.1.0" > SERVER @@ -239,8 +246,8 @@ set_profile() { printf 'u="urn:schemas-upnp-org:service:ConfigurationManagement:2"' > xmlns printf "urn:schemas-upnp-org:service:ConfigurationManagement:2" > ST printf "49001" > PORT - XML_FILES='tr064gen.xml UPnPdescription.xml' - POST_ACT='GetSupportedDataModels GetSupportedParameters GetValues' + printf 'tr064gen.xml UPnPdescription.xml' > XML_FILES + printf 'GetSupportedDataModels GetSupportedParameters GetValues' > POST_ACT ;; DEVICE_SpeedportSmart3) set_profile DATASET_SP_17a @@ -253,7 +260,7 @@ set_profile() { set_profile Fritz7590 ;; DEVICE_Fritz7490) - set_profile DATASET_FB_17a + set_profile DATASET_FB_17a set_profile TR098 set_profile Fritz7490 ;; @@ -281,6 +288,11 @@ generate_mocks() { case $(cat /opt/${DATA_DIR}/PROFILE) in TR181) + if [ -f "/opt/${DATA_DIR}/POST_ACT" ]; then + POST_ACT=$(cat "/opt/${DATA_DIR}/POST_ACT") + else + POST_ACT=GetParameterValues + fi for I in $POST_ACT; do generate_response "/opt/$(cat "/opt/${DATA_DIR}/PROFILE")_${I}.$(cat "/opt/${DATA_DIR}/RESPONSE")" "/opt/response" cp "/opt/SOAP_${I}.request" "/opt/SOAP.request.work" @@ -305,6 +317,11 @@ check_mocking_services() { cd "/opt" local RESTART_SSPD="no" for FILE in SERVER ST LOCATION PORT; do + if [ ! -f "/opt/${DATA_DIR}/${FILE}" ]; then + echo "File: ${DATA_DIR}/${FILE} not found!" + echo "ERROR: Cannot restart mock server!" + return + fi local MOCK_NAME=$(basename "${FILE}") local MOCKED_DATA_OLD_CONTENT="$(cat .${MOCK_NAME}_OLD_CONTENT)" local MOCKED_DATA_CONTENT="$(cat ${DATA_DIR}/${MOCK_NAME})" From 055c53e7635f46b3987b7790942d5db21b59b981 Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Mon, 23 May 2022 17:03:59 +0200 Subject: [PATCH 11/12] Support path for POST URL --- .../inserts/tr064/mockserver/create_mocks.sh | 25 +++++++++++++++++-- home0/inserts/tr064/mockserver/tr064gen.xml | 4 +-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/home0/inserts/tr064/mockserver/create_mocks.sh b/home0/inserts/tr064/mockserver/create_mocks.sh index fc1bb24..8375ec6 100755 --- a/home0/inserts/tr064/mockserver/create_mocks.sh +++ b/home0/inserts/tr064/mockserver/create_mocks.sh @@ -51,9 +51,15 @@ copy_mocks() { if [ -f "/opt/$FILE" ]; then local IP=$(cat "/opt/MOCK_IP_ADDRESS") local PORT=$(cat "/opt/${DATA_DIR}/PORT") + if [ -f "/opt/${DATA_DIR}/PATH" ]; then + local URL_PATH=$(cat "/opt/${DATA_DIR}/PATH") + else + local URL_PATH='' + fi cp "/opt/$FILE" "/opt/$FILE.work" sed -i "s#\[MOCKED_IP\]#${IP}#g" "/opt/$FILE.work" sed -i "s#\[MOCKED_PORT\]#${PORT}#g" "/opt/$FILE.work" + sed -i "s#\[MOCKED_PATH\]#${URL_PATH}#g" "/opt/$FILE.work" local LEN=$(stat --format=%s "/opt/$FILE".work) mkdir -p "/opt/mocks/$FILE" echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: ${LEN}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" @@ -212,6 +218,7 @@ set_profile() { printf "5438" > PORT printf 'description.xml' > XML_FILES printf 'GetParameterValues' > POST_ACT + printf '' > PATH ;; SpeedportW922V) printf "DTW922V UPnP/1.0 Speedport W 922V 01013203.01.002" > SERVER @@ -221,6 +228,7 @@ set_profile() { printf "5438" > PORT printf 'tr64_igd.xml tr64_igd_wdic.xml' > XML_FILES printf 'GetParameterValues' > POST_ACT + printf '' > PATH ;; Fritz7590) printf "FRITZ!Box 7590 UPnP/1.0 AVM FRITZ!Box 7590 154.07.19" > SERVER @@ -230,6 +238,7 @@ set_profile() { printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY printf "49000" > PORT printf 'tr64desc.xml wandslifconfigSCPD.xml' > XML_FILES + printf 'upnp/control/wandslifconfig1' > PATH ;; Fritz7490) printf "FRITZ!Box 7490 UPnP/1.0 AVM FRITZ!Box 7490 113.07.21" > SERVER @@ -239,6 +248,7 @@ set_profile() { printf "X_AVM-DE_GetDSLInfo" > REQUEST_KEY printf "49000" > PORT printf 'tr64desc.xml wandslifconfigSCPD.xml' > XML_FILES + printf 'upnp/control/wandslifconfig1' > PATH ;; GenericRouter) printf "Generic Router UPnP/1.0 generic router 1.1.0" > SERVER @@ -248,6 +258,7 @@ set_profile() { printf "49001" > PORT printf 'tr064gen.xml UPnPdescription.xml' > XML_FILES printf 'GetSupportedDataModels GetSupportedParameters GetValues' > POST_ACT + printf '' > PATH ;; DEVICE_SpeedportSmart3) set_profile DATASET_SP_17a @@ -284,8 +295,17 @@ set_profile() { generate_mocks() { rm -rf "mocks" + if [ ! -f "/opt/${DATA_DIR}/PATH" ]; then + touch "/opt/${DATA_DIR}/PATH" + fi + copy_mocks + local MOCK_PATH="$(cat "/opt/${DATA_DIR}/PATH")" + if [ -n "$MOCK_PATH" ]; then + echo "$MOCK_PATH " | grep -q '/$' || MOCK_PATH="${MOCK_PATH}/" + fi + case $(cat /opt/${DATA_DIR}/PROFILE) in TR181) if [ -f "/opt/${DATA_DIR}/POST_ACT" ]; then @@ -300,12 +320,12 @@ generate_mocks() { sed -i "s#\[MOCKED_xmlns\]#${XMLNS_CONTENT}#g" "/opt/SOAP.request.work" local SOAP_REQUEST="$(cat "/opt/SOAP.request.work")" rm "/opt/SOAP.request.work" - generate_mock "POST--" "${SOAP_REQUEST}" "/opt/response" + generate_mock "${MOCK_PATH}POST--" "${SOAP_REQUEST}" "/opt/response" done ;; TR098) generate_response "/opt/$(cat /opt/${DATA_DIR}/PROFILE).$(cat /opt/${DATA_DIR}/RESPONSE)" "/opt/response" - generate_mock "" "upnp/control/wandslifconfig1/POST" "/opt/response" + generate_mock "" "${MOCK_PATH}POST" "/opt/response" ;; esac rm "/opt/response" @@ -336,6 +356,7 @@ check_mocking_services() { pkill python3 || echo "No SSDP mock killed ..." python3 ./ssdp_mock.py --logfile=./ssdp.log --st="$(cat ${DATA_DIR}/ST)" --server-name="$(cat ${DATA_DIR}/SERVER)"\ --location-ip=$(cat "/opt/MOCK_IP_ADDRESS") --location-port=$(cat "/opt/${DATA_DIR}/PORT") --location-file=$(cat "/opt/${DATA_DIR}/LOCATION")& + echo "### ok" fi } diff --git a/home0/inserts/tr064/mockserver/tr064gen.xml b/home0/inserts/tr064/mockserver/tr064gen.xml index 1747a7f..9144b02 100644 --- a/home0/inserts/tr064/mockserver/tr064gen.xml +++ b/home0/inserts/tr064/mockserver/tr064gen.xml @@ -29,8 +29,8 @@ urn:schemas-upnp-org:service:ConfigurationManagement:2 urn:upnp-org:serviceId:serviceID - [MOCKED_IP]:[MOCKED_PORT] - [MOCKED_IP]:[MOCKED_PORT] + [MOCKED_IP]:[MOCKED_PORT]/[MOCKED_PATH] + [MOCKED_IP]:[MOCKED_PORT]/[MOCKED_PATH] [MOCKED_IP]:[MOCKED_PORT]/UPnPdescription.xml From 31016096b702fab6368d3c10b3cec072c64afb7d Mon Sep 17 00:00:00 2001 From: P-Fleer <60703860+P-Fleer@users.noreply.github.com> Date: Wed, 8 Jun 2022 13:44:34 +0200 Subject: [PATCH 12/12] Add support for chunked encoding for the generic Router --- .../TR181_GetSupportedDataModels.200 | 1 + .../TR181_GetSupportedParameters.200 | 135 +++++++++--------- .../tr064/mockserver/TR181_GetValues.200 | 1 + .../inserts/tr064/mockserver/create_mocks.sh | 41 +++++- 4 files changed, 104 insertions(+), 74 deletions(-) diff --git a/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 index c2e0448..be1541e 100644 --- a/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 @@ -3,6 +3,7 @@ SERVER: [MOCKED_SERVER] CACHE-CONTROL: max-age=1800 CONTENT-TYPE: text/xml; charset=utf-8 CONTENT-LENGTH: [CALC_LEN] +TRANSFER-ENCODING: [MOCKED_ENCODING] - - - - - -/BBF/DSL/Line/0/TestParams/SNRGds - - -/BBF/DSL/Line/0/TestParams/SNRGus - - -/BBF/DSL/Line/0/TestParams/SNRpsds - - -/BBF/DSL/Line/0/TestParams/SNRpsus - - -/BBF/DSL/Line/0/TestParams/SNRMTds - - -/BBF/DSL/Line/0/TestParams/SNRMTus - - -/BBF/DSL/Line/0/TestParams/LATNds - - -/BBF/DSL/Line/0/TestParams/LATNus - - -/BBF/DSL/Channel/0/Stats/Total/XTURFECErrors - - -/BBF/DSL/Channel/0/Stats/Total/XTURCRCErrors - - -/BBF/DSL/Line/0/LinkStatus - - -/BBF/DSL/Line/0/StandardUsed - - -/BBF/DSL/Line/0/CurrentProfile - - -/BBF/DSL/Line/0/DownstreamMaxBitRate - - -/BBF/DSL/Line/0/UpstreamMaxBitRate - - -/BBF/DSL/Line/0/DownstreamNoiseMargin - - -/BBF/DSL/Line/0/UpstreamNoiseMargin - - -/BBF/DSL/Channel/0/DownstreamCurrRate - - -/BBF/DSL/Channel/0/UpstreamCurrRate - - - - - + xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" + s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> + + + + + + /BBF/DSL/Line/0/TestParams/SNRGds + + + /BBF/DSL/Line/0/TestParams/SNRGus + + + /BBF/DSL/Line/0/TestParams/SNRpsds + + + /BBF/DSL/Line/0/TestParams/SNRpsus + + + /BBF/DSL/Line/0/TestParams/SNRMTds + + + /BBF/DSL/Line/0/TestParams/SNRMTus + + + /BBF/DSL/Line/0/TestParams/LATNds + + + /BBF/DSL/Line/0/TestParams/LATNus + + + /BBF/DSL/Channel/0/Stats/Total/XTURFECErrors + + + /BBF/DSL/Channel/0/Stats/Total/XTURCRCErrors + + + /BBF/DSL/Line/0/LinkStatus + + + /BBF/DSL/Line/0/StandardUsed + + + /BBF/DSL/Line/0/CurrentProfile + + + /BBF/DSL/Line/0/DownstreamMaxBitRate + + + /BBF/DSL/Line/0/UpstreamMaxBitRate + + + /BBF/DSL/Line/0/DownstreamNoiseMargin + + + /BBF/DSL/Line/0/UpstreamNoiseMargin + + + /BBF/DSL/Channel/0/DownstreamCurrRate + + + /BBF/DSL/Channel/0/UpstreamCurrRate + + + + + \ No newline at end of file diff --git a/home0/inserts/tr064/mockserver/TR181_GetValues.200 b/home0/inserts/tr064/mockserver/TR181_GetValues.200 index 7bb4bbc..494d990 100644 --- a/home0/inserts/tr064/mockserver/TR181_GetValues.200 +++ b/home0/inserts/tr064/mockserver/TR181_GetValues.200 @@ -3,6 +3,7 @@ SERVER: [MOCKED_SERVER] CACHE-CONTROL: max-age=1800 CONTENT-TYPE: text/xml; charset=utf-8 CONTENT-LENGTH: [CALC_LEN] +TRANSFER-ENCODING: [MOCKED_ENCODING] mocking this device" echo " DEVICE_Fritz7490_without_support /" echo " DEVICE_GenericRouter /" + echo " DEVICE_GenericRouterChunked /" + echo " CHUNKED -> Transfer-Encoding: chunked" echo " TR181 -> responding to GetParameterValues for" echo " Device.DSL.Line.1.TestParams. with 200 and data" echo " TR098 -> responding to X_GENERIC_GetVDSLInfo with" @@ -51,18 +53,19 @@ copy_mocks() { if [ -f "/opt/$FILE" ]; then local IP=$(cat "/opt/MOCK_IP_ADDRESS") local PORT=$(cat "/opt/${DATA_DIR}/PORT") - if [ -f "/opt/${DATA_DIR}/PATH" ]; then - local URL_PATH=$(cat "/opt/${DATA_DIR}/PATH") - else - local URL_PATH='' - fi + local URL_PATH=$(cat "/opt/${DATA_DIR}/PATH") cp "/opt/$FILE" "/opt/$FILE.work" sed -i "s#\[MOCKED_IP\]#${IP}#g" "/opt/$FILE.work" sed -i "s#\[MOCKED_PORT\]#${PORT}#g" "/opt/$FILE.work" sed -i "s#\[MOCKED_PATH\]#${URL_PATH}#g" "/opt/$FILE.work" local LEN=$(stat --format=%s "/opt/$FILE".work) mkdir -p "/opt/mocks/$FILE" - echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: ${LEN}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" + if [ -f "/opt/${DATA_DIR}/ENCODING" ]; then + local ENCODING=$(cat "/opt/${DATA_DIR}/ENCODING") + echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nTransfer-Encoding: ${ENCODING}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" + else + echo -e "HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: ${LEN}\r\nContent-Type: text/xml\r\n\r" > "/opt/mocks/$FILE/GET.mock" + fi cat "/opt/$FILE.work" >> "/opt/mocks/$FILE/GET.mock" rm "/opt/$FILE.work" else @@ -117,6 +120,14 @@ generate_response() { local MOCKED_DATA_CONTENT="$(cat /opt/${DATA_DIR}/${MOCK_NAME})" sed -i "s#\[MOCKED_${MOCK_NAME}\]#${MOCKED_DATA_CONTENT}#g" "$OUT_FILE" done + if [ -f "/opt/${DATA_DIR}/ENCODING" ]; then + local ENCODING=$(cat "/opt/${DATA_DIR}/ENCODING") + if [ "$ENCODING" = "chunked" ]; then + sed -i '/CONTENT-LENGTH/d' "$OUT_FILE" + fi + else + sed -i '/TRANSFER-ENCODING/d' "$OUT_FILE" + fi local LINE=$(($(grep "^$" -n "$OUT_FILE" | cut -d':' -f1)+1)) local LEN="$(tail -n+$LINE "$OUT_FILE" | wc -c)" sed -i "s#\[CALC_LEN\]#${LEN}#" "$OUT_FILE" @@ -194,6 +205,12 @@ set_profile() { printf "0" > FECErrors; printf "VDSL" > StandardUsed; ;; + CHUNKED) + printf "chunked" > ENCODING; + ;; + NOT_CHUNKED) + rm -f ENCODING; + ;; TR181) printf "TR181" > PROFILE printf "200" > RESPONSE @@ -264,26 +281,37 @@ set_profile() { set_profile DATASET_SP_17a set_profile TR181 set_profile SpeedportSmart3 + set_profile NOT_CHUNKED ;; DEVICE_Fritz7590) set_profile DATASET_FB_30a set_profile TR098 set_profile Fritz7590 + set_profile NOT_CHUNKED ;; DEVICE_Fritz7490) set_profile DATASET_FB_17a set_profile TR098 set_profile Fritz7490 + set_profile NOT_CHUNKED ;; DEVICE_Fritz7490_without_support) set_profile TR098 set_profile 500 set_profile Fritz7490 + set_profile NOT_CHUNKED ;; DEVICE_GenericRouter) set_profile DATASET_SP_17a set_profile TR181 set_profile GenericRouter + set_profile NOT_CHUNKED + ;; + DEVICE_GenericRouterChunked) + set_profile DATASET_SP_17a + set_profile TR181 + set_profile GenericRouter + set_profile CHUNKED ;; *) DATA_DIR="${1}" @@ -356,7 +384,6 @@ check_mocking_services() { pkill python3 || echo "No SSDP mock killed ..." python3 ./ssdp_mock.py --logfile=./ssdp.log --st="$(cat ${DATA_DIR}/ST)" --server-name="$(cat ${DATA_DIR}/SERVER)"\ --location-ip=$(cat "/opt/MOCK_IP_ADDRESS") --location-port=$(cat "/opt/${DATA_DIR}/PORT") --location-file=$(cat "/opt/${DATA_DIR}/LOCATION")& - echo "### ok" fi }