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 diff --git a/home0/inserts/tr064/mockserver/SOAP.request b/home0/inserts/tr064/mockserver/SOAP_GetParameterValues.request similarity index 100% rename from home0/inserts/tr064/mockserver/SOAP.request rename to home0/inserts/tr064/mockserver/SOAP_GetParameterValues.request 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.200 b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 similarity index 99% rename from home0/inserts/tr064/mockserver/TR181.200 rename to home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 index 28ec328..0dec0a6 100644 --- a/home0/inserts/tr064/mockserver/TR181.200 +++ b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.200 @@ -2,7 +2,7 @@ HTTP/1.1 200 OK SERVER: [MOCKED_SERVER] CACHE-CONTROL: max-age=1800 CONTENT-TYPE: text/xml; charset=utf-8 -CONTENT-LENGTH: [MOCKED_length] +CONTENT-LENGTH: [CALC_LEN] diff --git a/home0/inserts/tr064/mockserver/TR181.500 b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 similarity index 94% rename from home0/inserts/tr064/mockserver/TR181.500 rename to home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 index 2158b8b..decdc8d 100644 --- a/home0/inserts/tr064/mockserver/TR181.500 +++ b/home0/inserts/tr064/mockserver/TR181_GetParameterValues.500 @@ -1,7 +1,7 @@ HTTP/1.1 500 Internal Server Error SERVER: [MOCKED_SERVER] CONNECTION: close -CONTENT-LENGTH: [MOCKED_length] +CONTENT-LENGTH: [CALC_LEN] CONTENT-TYPE: text/xml; charset="utf-8" diff --git a/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 new file mode 100644 index 0000000..be1541e --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedDataModels.200 @@ -0,0 +1,35 @@ +HTTP/1.1 200 OK +SERVER: [MOCKED_SERVER] +CACHE-CONTROL: max-age=1800 +CONTENT-TYPE: text/xml; charset=utf-8 +CONTENT-LENGTH: [CALC_LEN] +TRANSFER-ENCODING: [MOCKED_ENCODING] + + + + + + + + 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..ab2bde3 --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetSupportedParameters.200 @@ -0,0 +1,77 @@ +HTTP/1.1 200 OK +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 + + + + + + \ 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..494d990 --- /dev/null +++ b/home0/inserts/tr064/mockserver/TR181_GetValues.200 @@ -0,0 +1,172 @@ +HTTP/1.1 200 OK +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 + + + [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/create_mocks.sh b/home0/inserts/tr064/mockserver/create_mocks.sh index 96a00b5..01bef02 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,13 @@ 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 " 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" @@ -44,230 +46,345 @@ show_help() { echo "" } -generate_mock() { - ADD_PREFIX="${1}" - REQUEST="${2}" - RESPONSE="${3}" +copy_mocks() { + 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") + 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" + 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 + echo "File $FILE is not available." + fi + done + fi +} - # 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 + 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" } 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) - 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}" + 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; + ;; + CHUNKED) + printf "chunked" > ENCODING; + ;; + NOT_CHUNKED) + rm -f ENCODING; + ;; + 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:telekom-de:device:TO_InternetGatewayDevice:2"' > xmlns + printf "urn:telekom-de:device:TO_InternetGatewayDevice:2" > ST + 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 + printf "tr64_igd.xml" > LOCATION + printf 'cwmp="urn:dslforum-org:device:InternetGatewayDevice:1"' > xmlns + printf "urn:dslforum-org:device:InternetGatewayDevice:1" > ST + 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 + 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 + 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 + 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 + 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 + 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 + printf 'tr064gen.xml UPnPdescription.xml' > XML_FILES + printf 'GetSupportedDataModels GetSupportedParameters GetValues' > POST_ACT + printf '' > PATH + ;; + DEVICE_SpeedportSmart3) + 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}" + ;; + esac + cd "/opt" } generate_mocks() { - rm -rf "mocks" + rm -rf "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" + if [ ! -f "/opt/${DATA_DIR}/PATH" ]; then + touch "/opt/${DATA_DIR}/PATH" + fi - generate_mock "" "alive-response/GET" "${TOP_DIR}/alive.response" + 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 + 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" + 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 "${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 "" "${MOCK_PATH}POST" "/opt/response" + ;; + esac + rm "/opt/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" + 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 - - 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") & + 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 +411,7 @@ read_commandline() { exit 1 ;; --IP=?*) - printf "${1#*=}">"${TOP_DIR}/MOCK_IP_ADDRESS" + printf "${1#*=}">"/opt/MOCK_IP_ADDRESS" ;; --verbose=?*) VERBOSE=${1#*=} @@ -328,18 +445,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 diff --git a/home0/inserts/tr064/mockserver/tr064gen.xml b/home0/inserts/tr064/mockserver/tr064gen.xml new file mode 100644 index 0000000..9144b02 --- /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_PATH] + [MOCKED_IP]:[MOCKED_PORT]/[MOCKED_PATH] + [MOCKED_IP]:[MOCKED_PORT]/UPnPdescription.xml + + + + \ No newline at end of file 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))) 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" ################################################################################