diff options
Diffstat (limited to 'test/decoders')
69 files changed, 3069 insertions, 1667 deletions
diff --git a/test/decoders/http/CMakeLists.txt b/test/decoders/http/CMakeLists.txt index 5011a95..06270be 100644 --- a/test/decoders/http/CMakeLists.txt +++ b/test/decoders/http/CMakeLists.txt @@ -1,34 +1,107 @@ aux_source_directory(${PROJECT_SOURCE_DIR}/deps/toml DEPS_SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/deps/md5 DEPS_SRC) -add_library(http_test SHARED http_test_plug.cpp ${DEPS_SRC}) -add_dependencies(http_test http) -target_link_libraries(http_test cjson-static llhttp-static) -set_target_properties(http_test PROPERTIES PREFIX "") +# add_library(http_test SHARED http_test_plug.cpp ${DEPS_SRC}) +# add_dependencies(http_test http) +# target_link_libraries(http_test cjson-static llhttp-static) +# set_target_properties(http_test PROPERTIES PREFIX "") include_directories(${CMAKE_SOURCE_DIR}/include) include_directories(${CMAKE_SOURCE_DIR}/deps) include_directories(${PROJECT_SOURCE_DIR}/decoders/http) include_directories(${PROJECT_SOURCE_DIR}/include/stellar) -add_executable(gtest_http http_gtest.cpp ${PROJECT_SOURCE_DIR}/decoders/http/http_decoder_utils.c ${PROJECT_SOURCE_DIR}/decoders/http/http_content_decompress.c ${PROJECT_SOURCE_DIR}/deps/md5/md5.c) -target_link_libraries(gtest_http gtest stellar_lib llhttp-static z brotli-dec-static brotli-enc-static brotli-common-static libevent-static) +add_executable(gtest_llhttp http_gtest_llhttp.cpp ) +add_executable(gtest_llhttp_header http_gtest_llhttp_headers_buf.cpp ) +target_link_libraries(gtest_llhttp gtest llhttp-static) +target_link_libraries(gtest_llhttp_header gtest llhttp-static) -add_executable(http_test_main plugin_test_main.cpp) -set_target_properties(http_test_main - PROPERTIES - LINK_OPTIONS - "-rdynamic" - ) -set_target_properties(http_test_main - PROPERTIES - LINK_FLAGS - "-rdynamic" +# add_executable(gtest_http http_gtest.cpp +# ${CMAKE_SOURCE_DIR}/decoders/http/http_decoder_utils.c +# ${CMAKE_SOURCE_DIR}/decoders/http/http_decoder_stat.c +# ${CMAKE_SOURCE_DIR}/decoders/http/http_decoder_decompress.c +# ) +# target_link_libraries(gtest_http gtest stellar_lib llhttp-static z brotli-dec-static brotli-enc-static brotli-common-static fieldstat4 md5) + + +add_executable(gtest_http_main http_gtest_main.cpp http_gtest_module.cpp ) +target_link_libraries(gtest_http_main gtest stellar_lib llhttp-static z brotli-dec-static brotli-enc-static brotli-common-static fieldstat4 cjson-static md5 + -Wl,--whole-archive stellar_lib http -Wl,--no-whole-archive + dl "-rdynamic" + gtest gmock) + +set(TEST_PREFIX HTTP) +add_test(NAME ${TEST_PREFIX}.SETUP COMMAND sh -c " + mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/conf && + mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/log && + cp ${CMAKE_SOURCE_DIR}/conf/stellar.toml ${CMAKE_CURRENT_BINARY_DIR}/conf/ && + cat ${CMAKE_SOURCE_DIR}/test/decoders/http/http_module.toml >> ${CMAKE_CURRENT_BINARY_DIR}/conf/stellar.toml && + tomlq -t -i '.packet_io.pcap_path=\"-\"' ${CMAKE_CURRENT_BINARY_DIR}/conf/stellar.toml && + tomlq -t -i '.packet_io.mode=\"pcaplist\"' ${CMAKE_CURRENT_BINARY_DIR}/conf/stellar.toml + ") +set_tests_properties(${TEST_PREFIX}.SETUP + PROPERTIES FIXTURES_SETUP ${TEST_PREFIX}.SETUP) + +set(HTTP_BENCHMARK_PCAP ${CMAKE_SOURCE_DIR}/test/decoders/http/benchmarks/pcap) +set(HTTP_BENCHMARK_JSON ${CMAKE_SOURCE_DIR}/test/decoders/http/benchmarks/json) +set(HTTP_GTEST_MAIN ${CMAKE_CURRENT_BINARY_DIR}/gtest_http_main) +set(HTTP_TEST_JSON http_gtest.json) + +set(HTTP_BENCHMARK_CAESES + http_6over4_single_trans + http_chn_encode_url + http_chunked_res_gzip + # http_connect_flood + # http_connect_single not get c2s payload from stellar + http_error + http_fin + http_get_encoded_uri + http_get_long_cookie + http_get_malformed + http_get_multi_trans + http_get_req_pipeline + http_get_single_trans + http_gzip_out_of_order + http_hdrs_exceed_maximum + # http_hdr_truncated_after_kv # no SYN + # http_hdr_truncated_in_kv # no SYN + # http_hdr_value_empty #no SYN + http_incomplete_header + http_multi_parse_error + http_no_content_length + # http_no_cr_line_eof //url decode error + http_out_of_order + http_over_pppoe + http_over_tcp_keepalive + http_over_tls + http_pipeline_C2S + http_pipeline_header_splitting + http_pipeline_S2C + http_post_c2s + http_post_multipart_form_data + http_post + http_post_s2c + http_post_single_trans + http_put_continue100 + http_req_1byte_sliding_window + http_res_1byte_sliding_window + http_res_gzip + http_session_exception_c2s + http_session_exception_s2c + http_trans_pipeline + http_url_test_with_host + http_url_test_without_host + http_url_test_without_host_v6 + http_whitespace_before_header + http_zlib_deadlock + non_http ) -set(LINK_FLAGS "-rdynamic") -target_link_libraries(http_test_main gtest cjson-static stellar_lib llhttp-static) -add_subdirectory(test_based_on_stellar) +foreach(case_name ${HTTP_BENCHMARK_CAESES}) + add_test(NAME ${TEST_PREFIX}.${case_name} COMMAND sh -c "find ${HTTP_BENCHMARK_PCAP} -type f -name ${case_name}.pcap | sort -V | ${HTTP_GTEST_MAIN} ${HTTP_BENCHMARK_JSON}/${case_name}.json ${HTTP_TEST_JSON}" ) + set_tests_properties(${TEST_PREFIX}.${case_name} PROPERTIES FIXTURES_REQUIRED ${TEST_PREFIX}.SETUP) +endforeach() include(GoogleTest) -gtest_discover_tests(gtest_http) +# gtest_discover_tests(gtest_http) +gtest_discover_tests(gtest_llhttp) diff --git a/test/decoders/http/benchmarks/json/http_6over4_single_trans.json b/test/decoders/http/benchmarks/json/http_6over4_single_trans.json index 34d999d..c0f092c 100644 --- a/test/decoders/http/benchmarks/json/http_6over4_single_trans.json +++ b/test/decoders/http/benchmarks/json/http_6over4_single_trans.json @@ -1,6 +1,6 @@ [ { - "__X_HTTP_TUPLE4": "2001:da8:200:900e:200:5efe:d24d:58a3.52556>2600:140e:6::1702:1058.80" + "__X_HTTP_TUPLE4": "2001:da8:200:900e:200:5efe:d24d:58a3:52556-2600:140e:6::1702:1058:80-6-0" }, { "__X_HTTP_TRANSACTION": "request", @@ -13,7 +13,8 @@ "Connection": "Close", "User-Agent": "Microsoft NCSI", "Host": "www.msftncsi.com", - "__X_HTTP_URL": "www.msftncsi.com/ncsi.txt" + "__X_HTTP_URL": "www.msftncsi.com/ncsi.txt", + "__X_HTTP_HEADERS_INTERGRATION": "Connection: Close\r\nUser-Agent: Microsoft NCSI\r\nHost: www.msftncsi.com\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -28,7 +29,7 @@ "Connection": "close", "Content-Type": "text/plain", "Cache-Control": "max-age=30, must-revalidate", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "cd5a4d3fdd5bffc16bf959ef75cf37bc", - "__X_HTTP_PAYLOAD": "TWljcm9zb2Z0IE5DU0k=" + "__X_HTTP_HEADERS_INTERGRATION": "Content-Length: 14\r\nDate: Tue, 01 Dec 2015 03:41:27 GMT\r\nConnection: close\r\nContent-Type: text/plain\r\nCache-Control: max-age=30, must-revalidate\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "cd5a4d3fdd5bffc16bf959ef75cf37bc" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_chn_encode_url.json b/test/decoders/http/benchmarks/json/http_chn_encode_url.json index 5453415..e5be533 100644 --- a/test/decoders/http/benchmarks/json/http_chn_encode_url.json +++ b/test/decoders/http/benchmarks/json/http_chn_encode_url.json @@ -20,7 +20,8 @@ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cookie": "_gcl_au=1.1.240068387.1720059437; _ga_CGYVD7S4G4=GS1.1.1720059448.3.0.1720059453.0.0.0; HMF_CI=7967e38cc3874dbbefa260b8dcbee31fa827a01fc2b7073105a5e05f4a1ea361c74f6d4c37fb199bfc9470036f06fb537da2a74e96450b7949e0b686f0569f9680; HMY_JC=84f9c8a99e076ee2dda5ba48cd953f61c4dc2707823205d8171c8818eea9d60fda,; _ga=GA1.3.822493162.1711101509; _gid=GA1.3.304369429.1721120134; arialoadData=true; ariawapChangeViewPort=false; C3VK=be8842; HBB_HC=faa7f3e2477e14525534a5560ed6a307b29ae2c324e1f631a428e53fb74c9d72575c155d682554ba15cc9e52afe31218b1; mbox=check#true#1721120252|session#1721120133635-517642#1721122052; s_pers=%20s_fid%3D52863027521849CD-3A72894997C48527%7C1878886591105%3B; s_sess=%20s_cc%3Dtrue%3B", "__X_HTTP_URL": "www.airchina.com.cn/%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87URL%E7%BC%96%E8%A7%A3%E7%A0%81", - "__X_HTTP_DECODED_URL": "www.airchina.com.cn/测试中文URL编解码" + "__X_HTTP_DECODED_URL": "www.airchina.com.cn/测试中文URL编解码", + "__X_HTTP_HEADERS_INTERGRATION": "Host: www.airchina.com.cn\r\nConnection: keep-alive\r\nDNT: 1\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\nCookie: _gcl_au=1.1.240068387.1720059437; _ga_CGYVD7S4G4=GS1.1.1720059448.3.0.1720059453.0.0.0; HMF_CI=7967e38cc3874dbbefa260b8dcbee31fa827a01fc2b7073105a5e05f4a1ea361c74f6d4c37fb199bfc9470036f06fb537da2a74e96450b7949e0b686f0569f9680; HMY_JC=84f9c8a99e076ee2dda5ba48cd953f61c4dc2707823205d8171c8818eea9d60fda,; _ga=GA1.3.822493162.1711101509; _gid=GA1.3.304369429.1721120134; arialoadData=true; ariawapChangeViewPort=false; C3VK=be8842; HBB_HC=faa7f3e2477e14525534a5560ed6a307b29ae2c324e1f631a428e53fb74c9d72575c155d682554ba15cc9e52afe31218b1; mbox=check#true#1721120252|session#1721120133635-517642#1721122052; s_pers=%20s_fid%3D52863027521849CD-3A72894997C48527%7C1878886591105%3B; s_sess=%20s_cc%3Dtrue%3B\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -37,6 +38,7 @@ "Location": "https://www.airchina.com.cn/%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87URL%E7%BC%96%E8%A7%A3%E7%A0%81", "x-ws-origin-error": "-", "X-Via": "1.1 PSjsczBGPiv194:0 (Cdn Cache Server V2.0), 1.1 PStjdxpn34:6 (Cdn Cache Server V2.0)", - "X-Ws-Request-Id": "669635fc_PStjdxks32_7630-15285" + "X-Ws-Request-Id": "669635fc_PStjdxks32_7630-15285", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Tue, 16 Jul 2024 08:57:32 GMT\r\nContent-Length: 0\r\nConnection: keep-alive\r\nServer: waf/4.39.0-0.el7\r\nLocation: https://www.airchina.com.cn/%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87URL%E7%BC%96%E8%A7%A3%E7%A0%81\r\nx-ws-origin-error: -\r\nX-Via: 1.1 PSjsczBGPiv194:0 (Cdn Cache Server V2.0), 1.1 PStjdxpn34:6 (Cdn Cache Server V2.0)\r\nX-Ws-Request-Id: 669635fc_PStjdxks32_7630-15285\r\n\r\n" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_chunked_res_gzip.json b/test/decoders/http/benchmarks/json/http_chunked_res_gzip.json index 370b4a7..4eafc0d 100644 --- a/test/decoders/http/benchmarks/json/http_chunked_res_gzip.json +++ b/test/decoders/http/benchmarks/json/http_chunked_res_gzip.json @@ -15,7 +15,8 @@ "Accept": "*/*", "Connection": "close", "Accept-Encoding": "chunked, gzip", - "__X_HTTP_URL": "www.wireshark.org:8080/" + "__X_HTTP_URL": "www.wireshark.org:8080/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: www.wireshark.org:8080\r\nUser-Agent: curl/7.46.0\r\nAccept: */*\r\nConnection: close\r\nAccept-Encoding: chunked, gzip\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -37,10 +38,10 @@ "X-Mod-Pagespeed": "1.9.32.11-7550", "Vary": "Accept-Encoding", "Cache-control": "max-age=0, no-cache, no-store", - "X-Slogan1": "Go deep.", + "X-Slogan.1": "Go deep.", "CF-RAY": "260a3f709d7b0761-AMS", "Content-Encoding": "gzip", - "__X_HTTP_RAW_PAYLOAD_MD5": "5387fc115327b819ba920ad6ce8f3e3a", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "855f8310be999de806e89a420a95435d" + "__X_HTTP_HEADERS_INTERGRATION": "Server: cloudflare-nginx\r\nDate: Wed, 06 Jan 2016 20:42:10 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: close\r\nSet-Cookie: __cfduid=d8d37b52eaa3137bdfd7fd67a4ffc8a7a1452112929; expires=Thu, 05-Jan-17 20:42:09 GMT; path=/; domain=.wireshark.org; HttpOnly\r\nX-Frame-Options: SAMEORIGIN\r\nStrict-Transport-Security: max-age=31536000;\r\nX-Slogan: It's a great product with a great story to tell. I'm pumped!\r\nX-Mod-Pagespeed: 1.9.32.11-7550\r\nVary: Accept-Encoding\r\nCache-control: max-age=0, no-cache, no-store\r\nX-Slogan: Go deep.\r\nCF-RAY: 260a3f709d7b0761-AMS\r\nContent-Encoding: gzip\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "855f8310be999de806e89a420a95435d" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_connect_single.json b/test/decoders/http/benchmarks/json/http_connect_single.json new file mode 100644 index 0000000..752a21e --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_connect_single.json @@ -0,0 +1,20 @@ +[ + { + "__X_HTTP_TUPLE4": "10.128.0.2:18762-10.0.0.2:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "Forbidden", + "major_version": 1, + "minor_version": 1, + "status_code": 403, + "Date": "Thu, 03 Sep 2020 10:26:38 GMT", + "Server": "Apache", + "Content-Length": "199", + "Content-Type": "text/html; charset=iso-8859-1", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Thu, 03 Sep 2020 10:26:38 GMT\r\nServer: Apache\r\nContent-Length: 199\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "bb8f534fbff5ee61a95af9c4740ae043" + } +]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_error.json b/test/decoders/http/benchmarks/json/http_error.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_error.json @@ -0,0 +1 @@ +[] diff --git a/test/decoders/http/benchmarks/json/http_fin.json b/test/decoders/http/benchmarks/json/http_fin.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_fin.json @@ -0,0 +1 @@ +[] diff --git a/test/decoders/http/benchmarks/json/http_get_encoded_uri.json b/test/decoders/http/benchmarks/json/http_get_encoded_uri.json index de1419a..314c6e4 100644 --- a/test/decoders/http/benchmarks/json/http_get_encoded_uri.json +++ b/test/decoders/http/benchmarks/json/http_get_encoded_uri.json @@ -22,7 +22,8 @@ "Host": "58.16.70.122", "Content-Length": "0", "Accept-Encoding": "gzip, deflate", - "__X_HTTP_URL": "58.16.70.122/disAll/tcCertType.html" + "__X_HTTP_URL": "58.16.70.122/disAll/tcCertType.html", + "__X_HTTP_HEADERS_INTERGRATION": "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.8,en-us,en;q=0.5\r\nOrigin: http://58.16.70.122\r\nX-Requested-With: XMLHttpRequest\r\nReferer: http://58.16.70.122/register.jsp?redirect:http://58.16.70.122.r87.com/?\r\nCache-Control: no-cache\r\nX-Scanner: Netsparker\r\nCookie: JSESSIONID=385C79E211D561C0CA13D90F150F603D\r\nHost: 58.16.70.122\r\nContent-Length: 0\r\nAccept-Encoding: gzip, deflate\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -38,8 +39,8 @@ "Content-Type": "text/html;charset=UTF-8", "Transfer-Encoding": "chunked", "Date": "Sat, 18 May 2019 01:36:57 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "d545e0faf20f7ffe90e31cfc1aef1782", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d545e0faf20f7ffe90e31cfc1aef1782" + "__X_HTTP_HEADERS_INTERGRATION": "Server: Apache-Coyote/1.1\r\nPragma: No-cache\r\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\r\nContent-Type: text/html;charset=UTF-8\r\nTransfer-Encoding: chunked\r\nDate: Sat, 18 May 2019 01:36:57 GMT\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d545e0faf20f7ffe90e31cfc1aef1782" }, { "__X_HTTP_TRANSACTION": "request", @@ -58,7 +59,8 @@ "Host": "58.16.70.122", "Accept-Encoding": "gzip, deflate", "__X_HTTP_URL": "58.16.70.122/upload/%E6%B3%95%E5%BE%8B%E6%B3%95%E8%A7%84/%E5%B8%82%E4%BA%BA%E6%B0%91%E6%94%BF%E5%BA%9C%E5%8A%9E%E5%85%AC%E5%8E%85%E5%8D%B0%E5%8F%91%E8%B4%B5%E9%98%B3%E5%B8%82%E5%85%B3%E4%BA%8E%E6%8E%A8%E8%BF%9B%E5%B7%A5%E5%95%86%E8%90%A5%E4%B8%9A%E6%89%A7%E7%85%A7%E3%80%81%E7%BB%84%E7%BB%87%E6%9C%BA%E6%9E%84%E4%BB%A3%E7%A0%81%E8%AF%81%E5%92%8C%E7%A8%8E%E5%8A%A1%E7%99%BB%E8%AE%B0%E8%AF%81%E2%80%9C%E4%B8%89%E8%AF%81%E5%90%88%E4%B8%80%E2%80%9D%E7%99%BB%E8%AE%B0%E5%88%B6%E5%BA%A6%E6%94%B9%E9%9D%A9%E5%AE%9E%E6%96%BD%E6%96%B9%E6%A1%88%E7%9A%84%E9%80%9A%E7%9F%A5%EF%BC%88%E7%AD%91%E5%BA%9C%E5%8A%9E%E5%87%BD%E3%80%902015%E3%80%91162%E5%8F%B7%EF%BC%89.docx?nsextt=N3TSP4RKE2", - "__X_HTTP_DECODED_URL": "58.16.70.122/upload/法律法规/市人民政府办公厅印发贵阳市关于推进工商营业执照、组织机构代码证和税务登记证“三证合一”登记制度改革实施方案的通知(筑府办函【2015】162号).docx?nsextt=N3TSP4RKE2" + "__X_HTTP_DECODED_URL": "58.16.70.122/upload/法律法规/市人民政府办公厅印发贵阳市关于推进工商营业执照、组织机构代码证和税务登记证“三证合一”登记制度改革实施方案的通知(筑府办函【2015】162号).docx?nsextt=N3TSP4RKE2", + "__X_HTTP_HEADERS_INTERGRATION": "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36\r\nCache-Control: no-cache\r\nAccept-Language: en-us,en;q=0.5\r\nX-Scanner: Netsparker\r\nCookie: JSESSIONID=385C79E211D561C0CA13D90F150F603D\r\nHost: 58.16.70.122\r\nAccept-Encoding: gzip, deflate\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -75,7 +77,7 @@ "Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8", "Content-Length": "1703517", "Date": "Sat, 18 May 2019 01:37:00 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "3598c468910611a3128d068e20ae0e82", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3598c468910611a3128d068e20ae0e82" + "__X_HTTP_HEADERS_INTERGRATION": "Server: Apache-Coyote/1.1\r\nAccept-Ranges: bytes\r\nETag: W/\"1703517-1546572172000\"\r\nLast-Modified: Fri, 04 Jan 2019 03:22:52 GMT\r\nContent-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8\r\nContent-Length: 1703517\r\nDate: Sat, 18 May 2019 01:37:00 GMT\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3598c468910611a3128d068e20ae0e82" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_get_long_cookie.json b/test/decoders/http/benchmarks/json/http_get_long_cookie.json index 118022d..6643f36 100644 --- a/test/decoders/http/benchmarks/json/http_get_long_cookie.json +++ b/test/decoders/http/benchmarks/json/http_get_long_cookie.json @@ -18,7 +18,8 @@ "Accept-Encoding": "gzip,deflate,sdch", "Accept-Language": "zh-CN,zh;q=0.8", "__X_HTTP_URL": "livep.l.qq.com/livemsg?imagemd5=02f5efd8a349c50280f8540b2735bd54&tailroll=1&plugin=1.3.8&pf=out&si=3766845706&url=http%3A%2F%2Fsports.qq.com%2Fa%2F20160106%2F008987.htm&soid=CA7F9C5B0120568CDC2F68726300&chid=0&ping_data=dXNlcl9pbmZvPXVCWDluVDg5SFJhOUFQK0JQVGdKRUxVYi9Kdz0&t=0&iptype=0&vptag=&pid=7F993E38C0E676ACC07DE764D1F3DEF56AA8F90A&adtype=LD&oadid=6012&ev=3236&l=4020&ufc_filter=0&imagelog=1&pid2=7F993E38C0E676ACC07DE764D1F3DEF56AA8F90A&mt=15000&coverid=&reqtime=1452071981&requestl=4020&isthirdip=0&cid=0&isfloatindex=0&o=100654557&lcount=2&refluence=4020&from=0&vid=m01794rm5ej&cip=202.127.156.91&aver=0&ip_filter=0&adlength=30000&tagid=&v=TencentPlayerOutV3.2.19.346&live=0&dura=105", - "__X_HTTP_DECODED_URL": "livep.l.qq.com/livemsg?imagemd5=02f5efd8a349c50280f8540b2735bd54&tailroll=1&plugin=1.3.8&pf=out&si=3766845706&url=http://sports.qq.com/a/20160106/008987.htm&soid=CA7F9C5B0120568CDC2F68726300&chid=0&ping_data=dXNlcl9pbmZvPXVCWDluVDg5SFJhOUFQK0JQVGdKRUxVYi9Kdz0&t=0&iptype=0&vptag=&pid=7F993E38C0E676ACC07DE764D1F3DEF56AA8F90A&adtype=LD&oadid=6012&ev=3236&l=4020&ufc_filter=0&imagelog=1&pid2=7F993E38C0E676ACC07DE764D1F3DEF56AA8F90A&mt=15000&coverid=&reqtime=1452071981&requestl=4020&isthirdip=0&cid=0&isfloatindex=0&o=100654557&lcount=2&refluence=4020&from=0&vid=m01794rm5ej&cip=202.127.156.91&aver=0&ip_filter=0&adlength=30000&tagid=&v=TencentPlayerOutV3.2.19.346&live=0&dura=105", - "Cookie": "flashuser=95621BA8CB862E09; piao_city=179; lv_irt_id=3628e1bbe25a6c941da9fac02ec2df8b; cm_cookie=V1,10017&-EP5mRruXhQarsCl5LD-2YzgjVTvyr2K&AQEBh7uoLMUB9lnaB5Tz9XdYnGIWflXmsDrU&150723&150723,10035&7t-tEmfJ076VAsM9&AQEBh7uoLMUB9lnc4tpW7vbazqdrRdBYOUCi&150724&150807,110054&ucO0Z0gctNn3&AQEBh7uoLMUB9llxMNl45F3RAIsKK0iMOJAG&150716&151008,10040&ACZ1r0A70NaEFcGT&AQEBh7uoLMUB9lmVgSoTwuuXZi896zSVsXIF&150818&151014,110015&1&AQEBh7uoLMUB9lkt2LUHO6ARwODHLI_Y51rj&150928&151103,10037&1433388364186289251984&AQEBh7uoLMUB9llIBencOqTAEh2aQ2SURSSQ&150909&151110,10011&jL40Z03uUFI0&AQEBh7uoLMUB9lkfw2sJVNx9g12Fzs12rPSN&150717&151125,10016&F64E6LFZs0W&AQEBh7uoLMUB9llE4yoPFNUykSj7WKaRK5lH&150805&151127,10019&WQAO-C1K9qI5OP8W_t2pSw&AQEBh7uoLMUB9llhpZE87GmOk3XGo_MJgV6K&150826&151130,10015&820490997316506147&AQEBh7uoLMUB9llXiynsGYRhMO3XuPnkuHUt&150715&151201,10012&x3X1yY6b&AQEBh7uoLMUB9ll9mraU_LJCDBYsE0Sbk_V9&151202&151202,110065&ucO0Z0gctNn3&AQEBh7uoLMUB9lkJcK3KDBQTKF0YfZ5wB7r5&150716&151203,110066&jL40Z03uUFI0&AQEBh7uoLMUB9lnyvKSYhcJD1X_rSs_DLVWx&150916&151221,10013&ePyYB2MSKa0TCbebpxKjmU&AQEBh7uoLMUB9ln6_6nGNidqml4nFKXhtE58&151221&151221,110061&d9cfa518d82abee&AQEBh7uoLMUB9llj2NYzmCjxaLWXALTcAGIH&150818&151224,10038&CAESEPZbUhToZJ39CS9MlgXGUSQ&AQEBh7uoLMUB9lmhnrDM5lIGtl6vc1NxMD6F&151110&151224,10077&820490997316506147&AQEBh7uoLMUB9lmkUdUe2xSHGkvM0IRu9Jt9&151214&151228,10008&0yPSvk92ie1nhB8wTUlTq&AQEBh7uoLMUB9lnL5ZCYvXJNvlv53G0CKEkj&150817&151228,10045&0&AQEBh7uoLMUB9llW3v1Vh7W72lv14RlAjUXn&151023&151228,110064&jL40Z03uUFI0&AQEBh7uoLMUB9lkBYuCUDLDrOcGURJcilogv&151016&160104,110069&26d49ecc&AQEBh7uoLMUB9lmlBLTxQY9BkCmimkMFqTo5&151204&160105,10079&B8hGto5y1e3uDXwCMsIun3rjk--dVCof&AQEBh7uoLMUB9llxnFrhDtdNMjZ1hs1il5J4&151214&160105; LHTturn=24; ptisp=ctc; RK=hRWyd82Gd8; pgv_pvi=7567882240; image_md5=bd21d5fb2f401b37cf3a02724dc06545; LTPturn=27; pt2gguin=o0583115900; uin=o0583115900; skey=@Mp9aCinaO; ptcz=10d4b1b7bde835d64663338a8008fd4f81e2c6b5f0ba81a90da3627ee617c7ee; pgv_info=ssid=s4768939310; pgv_pvid=6872592818; o_cookie=583115900; lv_play_index_textAd=47; lv_play_indexl.=32; dc_vplaying=1; LKBturn=29; Lturn=29; adid=583115900; appuser=95621BA8CB862E09; o_minduid=phhdxyNLkxBWMa74VTm5zU4y5EbUv5vR; appuser_95621BA8CB862E09_0=2b7gwp=1453219199_6&2btemv=1455551999_1&2c8311=1453305599_3&2cfx4j=1453651199_3&2cfx9l=1453651199_1&2d49y9=1453823999_2&2d67kl=1454255999_2&2d69mf=1454255999_3&2dxv8l=1455465599_6&2dzhfl=1452614399_1&f_pogvwp=1452095999_1&f_pogvwv=1452095999_2&f_pogw0m=1452095999_1&fd_15bm2t7=1452095999_1&fd_1h2pbsd=1452095999_2&fd_1k6so62=1452095999_1&fd_rhmjmq=1452095999_2&m_roiw0t=1452095999_3&m_xty8wl=1452095999_1&pogree=1452095999_2; TX.boid=100655474=1452072582_1&701041365=1452072585_1; appuser_95621BA8CB862E09_effect_0=fd_1ez2rcc=1452095999_1&fd_qdh7zw=1452095999_1&fd_ul215j=1452095999_1; psessionid=ca7f9c5b_1452071982_583115900_30754; psessiontime=1452071990" + "__X_HTTP_DECODED_URL": "livep.l.qq.com/livemsg?imagemd5=02f5efd8a349c50280f8540b2735bd54&tailroll=1&plugin=1.3.8&pf=out&si=3766845706&url=http://sports.qq.com/a/20160106/008987.htm&soid=CA7F9C5B0120568CDC2F68726300&chid=0&ping_data=dXNlcl9pbmZvPXVCWDluVDg5SFJhOUFQK0JQVGdKRUxVYi9Kdz0&t=0&iptype=0&vptag=&pid=7F993E38C0E676ACC07DE764D1F3DEF56AA8F90A&adtype=LD&oadid=6012&ev=3236&l=4020&ufc_filter=0&imagelog=1&pid2=7F993E38C0E676ACC07DE764D1F3DEF56AA8F90A&mt=15000&coverid=&reqtime=1452071981&requestl=4020&isthirdip=0&cid=0&isfloatindex=0&o=100654557&lcount=2&refluence=4020&from=0&vid=m01794rm5ej&cip=202.127.156.91&aver=0&ip_filter=0&adlength=30000&tagid=&v=TencentPlayerOutV3.2.19.346&live=0&dura=105", + "Cookie": "flashuser=95621BA8CB862E09; piao_city=179; lv_irt_id=3628e1bbe25a6c941da9fac02ec2df8b; cm_cookie=V1,10017&-EP5mRruXhQarsCl5LD-2YzgjVTvyr2K&AQEBh7uoLMUB9lnaB5Tz9XdYnGIWflXmsDrU&150723&150723,10035&7t-tEmfJ076VAsM9&AQEBh7uoLMUB9lnc4tpW7vbazqdrRdBYOUCi&150724&150807,110054&ucO0Z0gctNn3&AQEBh7uoLMUB9llxMNl45F3RAIsKK0iMOJAG&150716&151008,10040&ACZ1r0A70NaEFcGT&AQEBh7uoLMUB9lmVgSoTwuuXZi896zSVsXIF&150818&151014,110015&1&AQEBh7uoLMUB9lkt2LUHO6ARwODHLI_Y51rj&150928&151103,10037&1433388364186289251984&AQEBh7uoLMUB9llIBencOqTAEh2aQ2SURSSQ&150909&151110,10011&jL40Z03uUFI0&AQEBh7uoLMUB9lkfw2sJVNx9g12Fzs12rPSN&150717&151125,10016&F64E6LFZs0W&AQEBh7uoLMUB9llE4yoPFNUykSj7WKaRK5lH&150805&151127,10019&WQAO-C1K9qI5OP8W_t2pSw&AQEBh7uoLMUB9llhpZE87GmOk3XGo_MJgV6K&150826&151130,10015&820490997316506147&AQEBh7uoLMUB9llXiynsGYRhMO3XuPnkuHUt&150715&151201,10012&x3X1yY6b&AQEBh7uoLMUB9ll9mraU_LJCDBYsE0Sbk_V9&151202&151202,110065&ucO0Z0gctNn3&AQEBh7uoLMUB9lkJcK3KDBQTKF0YfZ5wB7r5&150716&151203,110066&jL40Z03uUFI0&AQEBh7uoLMUB9lnyvKSYhcJD1X_rSs_DLVWx&150916&151221,10013&ePyYB2MSKa0TCbebpxKjmU&AQEBh7uoLMUB9ln6_6nGNidqml4nFKXhtE58&151221&151221,110061&d9cfa518d82abee&AQEBh7uoLMUB9llj2NYzmCjxaLWXALTcAGIH&150818&151224,10038&CAESEPZbUhToZJ39CS9MlgXGUSQ&AQEBh7uoLMUB9lmhnrDM5lIGtl6vc1NxMD6F&151110&151224,10077&820490997316506147&AQEBh7uoLMUB9lmkUdUe2xSHGkvM0IRu9Jt9&151214&151228,10008&0yPSvk92ie1nhB8wTUlTq&AQEBh7uoLMUB9lnL5ZCYvXJNvlv53G0CKEkj&150817&151228,10045&0&AQEBh7uoLMUB9llW3v1Vh7W72lv14RlAjUXn&151023&151228,110064&jL40Z03uUFI0&AQEBh7uoLMUB9lkBYuCUDLDrOcGURJcilogv&151016&160104,110069&26d49ecc&AQEBh7uoLMUB9lmlBLTxQY9BkCmimkMFqTo5&151204&160105,10079&B8hGto5y1e3uDXwCMsIun3rjk--dVCof&AQEBh7uoLMUB9llxnFrhDtdNMjZ1hs1il5J4&151214&160105; LHTturn=24; ptisp=ctc; RK=hRWyd82Gd8; pgv_pvi=7567882240; image_md5=bd21d5fb2f401b37cf3a02724dc06545; LTPturn=27; pt2gguin=o0583115900; uin=o0583115900; skey=@Mp9aCinaO; ptcz=10d4b1b7bde835d64663338a8008fd4f81e2c6b5f0ba81a90da3627ee617c7ee; pgv_info=ssid=s4768939310; pgv_pvid=6872592818; o_cookie=583115900; lv_play_index_textAd=47; lv_play_indexl.=32; dc_vplaying=1; LKBturn=29; Lturn=29; adid=583115900; appuser=95621BA8CB862E09; o_minduid=phhdxyNLkxBWMa74VTm5zU4y5EbUv5vR; appuser_95621BA8CB862E09_0=2b7gwp=1453219199_6&2btemv=1455551999_1&2c8311=1453305599_3&2cfx4j=1453651199_3&2cfx9l=1453651199_1&2d49y9=1453823999_2&2d67kl=1454255999_2&2d69mf=1454255999_3&2dxv8l=1455465599_6&2dzhfl=1452614399_1&f_pogvwp=1452095999_1&f_pogvwv=1452095999_2&f_pogw0m=1452095999_1&fd_15bm2t7=1452095999_1&fd_1h2pbsd=1452095999_2&fd_1k6so62=1452095999_1&fd_rhmjmq=1452095999_2&m_roiw0t=1452095999_3&m_xty8wl=1452095999_1&pogree=1452095999_2; TX.boid=100655474=1452072582_1&701041365=1452072585_1; appuser_95621BA8CB862E09_effect_0=fd_1ez2rcc=1452095999_1&fd_qdh7zw=1452095999_1&fd_ul215j=1452095999_1; psessionid=ca7f9c5b_1452071982_583115900_30754; psessiontime=1452071990", + "__X_HTTP_HEADERS_INTERGRATION": "Host: livep.l.qq.com\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36\r\nAccept: */*\r\nReferer: http://imgcache.qq.com/tencentvideo_v1/player/TPout.swf?max_age=86400&v=20140714\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\nCookie: flashuser=95621BA8CB862E09; piao_city=179; lv_irt_id=3628e1bbe25a6c941da9fac02ec2df8b; cm_cookie=V1,10017&-EP5mRruXhQarsCl5LD-2YzgjVTvyr2K&AQEBh7uoLMUB9lnaB5Tz9XdYnGIWflXmsDrU&150723&150723,10035&7t-tEmfJ076VAsM9&AQEBh7uoLMUB9lnc4tpW7vbazqdrRdBYOUCi&150724&150807,110054&ucO0Z0gctNn3&AQEBh7uoLMUB9llxMNl45F3RAIsKK0iMOJAG&150716&151008,10040&ACZ1r0A70NaEFcGT&AQEBh7uoLMUB9lmVgSoTwuuXZi896zSVsXIF&150818&151014,110015&1&AQEBh7uoLMUB9lkt2LUHO6ARwODHLI_Y51rj&150928&151103,10037&1433388364186289251984&AQEBh7uoLMUB9llIBencOqTAEh2aQ2SURSSQ&150909&151110,10011&jL40Z03uUFI0&AQEBh7uoLMUB9lkfw2sJVNx9g12Fzs12rPSN&150717&151125,10016&F64E6LFZs0W&AQEBh7uoLMUB9llE4yoPFNUykSj7WKaRK5lH&150805&151127,10019&WQAO-C1K9qI5OP8W_t2pSw&AQEBh7uoLMUB9llhpZE87GmOk3XGo_MJgV6K&150826&151130,10015&820490997316506147&AQEBh7uoLMUB9llXiynsGYRhMO3XuPnkuHUt&150715&151201,10012&x3X1yY6b&AQEBh7uoLMUB9ll9mraU_LJCDBYsE0Sbk_V9&151202&151202,110065&ucO0Z0gctNn3&AQEBh7uoLMUB9lkJcK3KDBQTKF0YfZ5wB7r5&150716&151203,110066&jL40Z03uUFI0&AQEBh7uoLMUB9lnyvKSYhcJD1X_rSs_DLVWx&150916&151221,10013&ePyYB2MSKa0TCbebpxKjmU&AQEBh7uoLMUB9ln6_6nGNidqml4nFKXhtE58&151221&151221,110061&d9cfa518d82abee&AQEBh7uoLMUB9llj2NYzmCjxaLWXALTcAGIH&150818&151224,10038&CAESEPZbUhToZJ39CS9MlgXGUSQ&AQEBh7uoLMUB9lmhnrDM5lIGtl6vc1NxMD6F&151110&151224,10077&820490997316506147&AQEBh7uoLMUB9lmkUdUe2xSHGkvM0IRu9Jt9&151214&151228,10008&0yPSvk92ie1nhB8wTUlTq&AQEBh7uoLMUB9lnL5ZCYvXJNvlv53G0CKEkj&150817&151228,10045&0&AQEBh7uoLMUB9llW3v1Vh7W72lv14RlAjUXn&151023&151228,110064&jL40Z03uUFI0&AQEBh7uoLMUB9lkBYuCUDLDrOcGURJcilogv&151016&160104,110069&26d49ecc&AQEBh7uoLMUB9lmlBLTxQY9BkCmimkMFqTo5&151204&160105,10079&B8hGto5y1e3uDXwCMsIun3rjk--dVCof&AQEBh7uoLMUB9llxnFrhDtdNMjZ1hs1il5J4&151214&160105; LHTturn=24; ptisp=ctc; RK=hRWyd82Gd8; pgv_pvi=7567882240; image_md5=bd21d5fb2f401b37cf3a02724dc06545; LTPturn=27; pt2gguin=o0583115900; uin=o0583115900; skey=@Mp9aCinaO; ptcz=10d4b1b7bde835d64663338a8008fd4f81e2c6b5f0ba81a90da3627ee617c7ee; pgv_info=ssid=s4768939310; pgv_pvid=6872592818; o_cookie=583115900; lv_play_index_textAd=47; lv_play_indexl.=32; dc_vplaying=1; LKBturn=29; Lturn=29; adid=583115900; appuser=95621BA8CB862E09; o_minduid=phhdxyNLkxBWMa74VTm5zU4y5EbUv5vR; appuser_95621BA8CB862E09_0=2b7gwp=1453219199_6&2btemv=1455551999_1&2c8311=1453305599_3&2cfx4j=1453651199_3&2cfx9l=1453651199_1&2d49y9=1453823999_2&2d67kl=1454255999_2&2d69mf=1454255999_3&2dxv8l=1455465599_6&2dzhfl=1452614399_1&f_pogvwp=1452095999_1&f_pogvwv=1452095999_2&f_pogw0m=1452095999_1&fd_15bm2t7=1452095999_1&fd_1h2pbsd=1452095999_2&fd_1k6so62=1452095999_1&fd_rhmjmq=1452095999_2&m_roiw0t=1452095999_3&m_xty8wl=1452095999_1&pogree=1452095999_2; TX.boid=100655474=1452072582_1&701041365=1452072585_1; appuser_95621BA8CB862E09_effect_0=fd_1ez2rcc=1452095999_1&fd_qdh7zw=1452095999_1&fd_ul215j=1452095999_1; psessionid=ca7f9c5b_1452071982_583115900_30754; psessiontime=1452071990\r\n\r\n" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_get_multi_trans.json b/test/decoders/http/benchmarks/json/http_get_multi_trans.json index 917b1c7..8defd2e 100644 --- a/test/decoders/http/benchmarks/json/http_get_multi_trans.json +++ b/test/decoders/http/benchmarks/json/http_get_multi_trans.json @@ -18,7 +18,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Cookie": "Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=531AACA879469EDAB825E28113490E10", - "__X_HTTP_URL": "test.pro.testin.cn/account/login.htm" + "__X_HTTP_URL": "test.pro.testin.cn/account/login.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: test.pro.testin.cn\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=531AACA879469EDAB825E28113490E10\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -32,10 +33,11 @@ "Content-Length": "0", "Connection": "keep-alive", "Set-Cookie": "JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA; Path=/; HttpOnly", - "Set-Cookie1": "authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie2": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.1": "authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.2": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", "Location": "http://test.pro.testin.cn/enterprise/index.htm", - "Content-Language": "zh-CN" + "Content-Language": "zh-CN", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx/1.16.1\r\nDate: Tue, 31 May 2022 06:41:23 GMT\r\nContent-Length: 0\r\nConnection: keep-alive\r\nSet-Cookie: JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA; Path=/; HttpOnly\r\nSet-Cookie: authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nLocation: http://test.pro.testin.cn/enterprise/index.htm\r\nContent-Language: zh-CN\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "request", @@ -53,7 +55,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Cookie": "Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA", - "__X_HTTP_URL": "test.pro.testin.cn/enterprise/index.htm" + "__X_HTTP_URL": "test.pro.testin.cn/enterprise/index.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: test.pro.testin.cn\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -67,9 +70,10 @@ "Content-Length": "0", "Connection": "keep-alive", "Set-Cookie": "authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie1": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.1": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", "Location": "http://test.pro.testin.cn/enterprise/into.htm?eid=1", - "Content-Language": "zh-CN" + "Content-Language": "zh-CN", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx/1.16.1\r\nDate: Tue, 31 May 2022 06:41:23 GMT\r\nContent-Length: 0\r\nConnection: keep-alive\r\nSet-Cookie: authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nLocation: http://test.pro.testin.cn/enterprise/into.htm?eid=1\r\nContent-Language: zh-CN\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "request", @@ -87,7 +91,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Cookie": "Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA", - "__X_HTTP_URL": "test.pro.testin.cn/enterprise/into.htm?eid=1" + "__X_HTTP_URL": "test.pro.testin.cn/enterprise/into.htm?eid=1", + "__X_HTTP_HEADERS_INTERGRATION": "Host: test.pro.testin.cn\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -101,9 +106,10 @@ "Content-Length": "0", "Connection": "keep-alive", "Set-Cookie": "authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie1": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.1": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", "Location": "http://test.pro.testin.cn/realmachine/index.htm", - "Content-Language": "zh-CN" + "Content-Language": "zh-CN", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx/1.16.1\r\nDate: Tue, 31 May 2022 06:41:23 GMT\r\nContent-Length: 0\r\nConnection: keep-alive\r\nSet-Cookie: authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nLocation: http://test.pro.testin.cn/realmachine/index.htm\r\nContent-Language: zh-CN\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "request", @@ -121,7 +127,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Cookie": "Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA", - "__X_HTTP_URL": "test.pro.testin.cn/realmachine/index.htm" + "__X_HTTP_URL": "test.pro.testin.cn/realmachine/index.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: test.pro.testin.cn\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: Hm_lvt_1b8c1194303ef64e02f003f0cb8a1906=1653898514; _gcl_au=1.1.1010551181.1653898515; _ga=GA1.2.1419569885.1653898515; _gid=GA1.2.2007113907.1653898515; authtoken_pro=tea83b3beef07488bb8571811385db42; userId_pro=1160; pid_pro=1; eid_pro=1; pname_pro=name; Hm_lpvt_1b8c1194303ef64e02f003f0cb8a1906=1653961741; JSESSIONID=CFAB9C0C3F4D9D6C2837E3BA9425AFCA\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -137,13 +144,13 @@ "Connection": "keep-alive", "Vary": "Accept-Encoding", "Set-Cookie": "authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie1": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie2": "pid_pro=1; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie3": "eid_pro=1; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", - "Set-Cookie4": "pname_pro=name; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.1": "userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.2": "pid_pro=1; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.3": "eid_pro=1; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", + "Set-Cookie.4": "pname_pro=name; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly", "Content-Language": "zh-CN", "Content-Encoding": "gzip", - "__X_HTTP_RAW_PAYLOAD_MD5": "5d761720e42f13d01ba981fb19b850ca", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "39cb5f3a9cbcfbd16f66e040ec49b8c4" + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx/1.16.1\r\nDate: Tue, 31 May 2022 06:41:23 GMT\r\nContent-Type: text/html;charset=UTF-8\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nVary: Accept-Encoding\r\nSet-Cookie: authtoken_pro=tea83b3beef07488bb8571811385db42; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: userId_pro=1160; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: pid_pro=1; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: eid_pro=1; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nSet-Cookie: pname_pro=name; Max-Age=28800; Expires=Tue, 31-May-2022 14:41:23 GMT; Domain=testin.cn; Path=/; HttpOnly\r\nContent-Language: zh-CN\r\nContent-Encoding: gzip\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "39cb5f3a9cbcfbd16f66e040ec49b8c4" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_get_req_pipeline.json b/test/decoders/http/benchmarks/json/http_get_req_pipeline.json index af8ff75..d7668f3 100644 --- a/test/decoders/http/benchmarks/json/http_get_req_pipeline.json +++ b/test/decoders/http/benchmarks/json/http_get_req_pipeline.json @@ -16,7 +16,8 @@ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36", "Accept-Encoding": "gzip,deflate,sdch", "Accept-Language": "zh-CN,zh;q=0.8", - "__X_HTTP_URL": "113.31.27.226/aa.mp4?asf=sdaf" + "__X_HTTP_URL": "113.31.27.226/aa.mp4?asf=sdaf", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 113.31.27.226\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "request", @@ -32,7 +33,8 @@ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36", "Accept-Encoding": "gzip,deflate,sdch", "Accept-Language": "zh-CN,zh;q=0.8", - "__X_HTTP_URL": "ns.pb.cachecn.net/fetch_ldns.png" + "__X_HTTP_URL": "ns.pb.cachecn.net/fetch_ldns.png", + "__X_HTTP_HEADERS_INTERGRATION": "Host: ns.pb.cachecn.net\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "request", @@ -48,7 +50,8 @@ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36", "Accept-Encoding": "gzip,deflate,sdch", "Accept-Language": "zh-CN,zh;q=0.8", - "__X_HTTP_URL": "ns.pb.cachecn.net/40x.jpg" + "__X_HTTP_URL": "ns.pb.cachecn.net/40x.jpg", + "__X_HTTP_HEADERS_INTERGRATION": "Host: ns.pb.cachecn.net\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1636.2 Safari/537.36\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -62,7 +65,7 @@ "Date": "Wed, 25 Oct 2023 06:43:35 GMT", "Content-Type": "text/html", "Connection": "close", - "__X_HTTP_RAW_PAYLOAD_MD5": "6fb335f443cfc8a9d952d27cf3dc1059", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "6fb335f443cfc8a9d952d27cf3dc1059" + "__X_HTTP_HEADERS_INTERGRATION": "Server: SimpleHTTP/0.6 Python/2.7.5\r\nDate: Wed, 25 Oct 2023 06:43:35 GMT\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "6fb335f443cfc8a9d952d27cf3dc1059" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_get_single_trans.json b/test/decoders/http/benchmarks/json/http_get_single_trans.json index 165bb65..9d7c3dd 100644 --- a/test/decoders/http/benchmarks/json/http_get_single_trans.json +++ b/test/decoders/http/benchmarks/json/http_get_single_trans.json @@ -13,7 +13,8 @@ "Host": "192.168.40.137", "User-Agent": "curl/7.79.1", "Accept": "*/*", - "__X_HTTP_URL": "192.168.40.137/index.html" + "__X_HTTP_URL": "192.168.40.137/index.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.40.137\r\nUser-Agent: curl/7.79.1\r\nAccept: */*\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -28,7 +29,7 @@ "Content-type": "text/html", "Content-Length": "144", "Last-Modified": "Thu, 30 Nov 2023 08:38:54 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76", + "__X_HTTP_HEADERS_INTERGRATION": "Server: SimpleHTTP/0.6 Python/2.7.5\r\nDate: Thu, 30 Nov 2023 08:42:24 GMT\r\nContent-type: text/html\r\nContent-Length: 144\r\nLast-Modified: Thu, 30 Nov 2023 08:38:54 GMT\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_gzip_out_of_order.json b/test/decoders/http/benchmarks/json/http_gzip_out_of_order.json index 1952b9d..5e084f2 100644 --- a/test/decoders/http/benchmarks/json/http_gzip_out_of_order.json +++ b/test/decoders/http/benchmarks/json/http_gzip_out_of_order.json @@ -18,7 +18,8 @@ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", - "__X_HTTP_URL": "192.168.40.139:8088/" + "__X_HTTP_URL": "192.168.40.139:8088/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.40.139:8088\r\nConnection: keep-alive\r\nDNT: 1\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -33,7 +34,7 @@ "Content-type": "text/html; charset=utf-8", "Content-Encoding": "gzip", "Content-length": "28425", - "__X_HTTP_RAW_PAYLOAD_MD5": "873ed9c8c691a5f9f144fbf0fbfca011", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "7047cf4ae8ce6fd7bcd363e2b626f338" + "__X_HTTP_HEADERS_INTERGRATION": "Server: BaseHTTP/0.6 Python/3.6.8\r\nDate: Tue, 13 Aug 2024 14:21:42 GMT\r\nContent-type: text/html; charset=utf-8\r\nContent-Encoding: gzip\r\nContent-length: 28425\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "7047cf4ae8ce6fd7bcd363e2b626f338" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_hdrs_exceed_maximum.json b/test/decoders/http/benchmarks/json/http_hdrs_exceed_maximum.json index 9bc751b..ee58111 100644 --- a/test/decoders/http/benchmarks/json/http_hdrs_exceed_maximum.json +++ b/test/decoders/http/benchmarks/json/http_hdrs_exceed_maximum.json @@ -1,51 +1,48 @@ -[ - { - "__X_HTTP_TUPLE4": "10.0.0.1:61462-10.0.0.2:80-6-0" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 0, - "method": "GET", - "uri": "/x/xx/xxxxxxxxxxxxxxxxxxx/x/xxxxxx/xxxxxxxxxxxxxxx?xxx=1&xxx=1&x=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&vmf=xxxxxxxxxx.xxx.xxx.xxx&ce=UTF-8&ns=xxxxxxxxxx&pageName=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&g=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.jsp&r=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&events=xxxxxxxxxxxxxxxxxxxxxxxxxxx&products=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v1=xxxxxxxxxxxxxxx&v2=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v17=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&c49=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&AQE=1", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "xxxxx.xxxxxxxx.xxxxxxxxxx.xxx", - "Connection": "keep-alive", - "Accept": "image/webp,*/*;q=0.8", - "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36", - "Referer": "http://www.xxxxxxxxxx.xxx/xx/xxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx.jsp", - "Accept-Encoding": "gzip,deflate,sdch", - "Accept-Language": "en-US,en;q=0.8,en-GB;q=0.6", - "__X_HTTP_URL": "xxxxx.xxxxxxxx.xxxxxxxxxx.xxx/x/xx/xxxxxxxxxxxxxxxxxxx/x/xxxxxx/xxxxxxxxxxxxxxx?xxx=1&xxx=1&x=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&vmf=xxxxxxxxxx.xxx.xxx.xxx&ce=UTF-8&ns=xxxxxxxxxx&pageName=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&g=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.jsp&r=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&events=xxxxxxxxxxxxxxxxxxxxxxxxxxx&products=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v1=xxxxxxxxxxxxxxx&v2=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v17=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&c49=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&AQE=1", - "Cookie": "xxxxxxxxxxxxxxxxxxx=ie; xxxxxxxxxxxxxxxxxxxxxx=true; lp=xxxxxx; rememberUn=false; xxx.xxxxxxxxxx.xxxxxxxxxx=xx; xxxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; autocomplete=1; xxxx=xxxx; xxxx=xxxxv1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; xxxxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 0, - "res_version": "1.1", - "res_status": "OK", - "major_version": 1, - "minor_version": 1, - "status_code": 200, - "Date": "Mon, 30 Jun 2014 13:35:21 GMT", - "Server": "xxxxxxxxxxxxxxxxx", - "Access-Control-Allow-Origin": "*", - "Set-Cookie": "xxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; Expires=Wed, 29 Jun 2016 13:35:21 GMT; Domain=.xxxxxxxxxx.xxx; Path=/", - "X-C": "ms-4.9", - "Expires": "Sun, 29 Jun 2014 13:35:21 GMT", - "Last-Modified": "Tue, 01 Jul 2014 13:35:21 GMT", - "Cache-Control": "no-cache, no-store, max-age=0, no-transform, private", - "Pragma": "no-cache", - "ETag": "\"xxxxxxxxxxxxxxxxxxxxxx\"", - "Vary": "*", - "P3P": "policyref=\"/w3c/p3p.xml\", CP=\"NOI DSP COR NID PSA OUR IND COM NAV STA\"", - "xserver": "xxxxxx", - "Content-Length": "43", - "Keep-Alive": "timeout=15", - "Connection": "Keep-Alive", - "Content-Type": "image/gif", - "__X_HTTP_RAW_PAYLOAD_MD5": "ad480fd0732d0f6f1a8b06359e3a42bb", +[{ + "__X_HTTP_TUPLE4": "10.0.0.1:61462-10.0.0.2:80-6-0" + }, { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "GET", + "uri": "/x/xx/xxxxxxxxxxxxxxxxxxx/x/xxxxxx/xxxxxxxxxxxxxxx?xxx=1&xxx=1&x=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&vmf=xxxxxxxxxx.xxx.xxx.xxx&ce=UTF-8&ns=xxxxxxxxxx&pageName=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&g=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.jsp&r=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&events=xxxxxxxxxxxxxxxxxxxxxxxxxxx&products=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v1=xxxxxxxxxxxxxxx&v2=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v17=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&c49=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&AQE=1", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "xxxxx.xxxxxxxx.xxxxxxxxxx.xxx", + "Connection": "keep-alive", + "Accept": "image/webp,*/*;q=0.8", + "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36", + "Referer": "http://www.xxxxxxxxxx.xxx/xx/xxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx.jsp", + "Accept-Encoding": "gzip,deflate,sdch", + "Accept-Language": "en-US,en;q=0.8,en-GB;q=0.6", + "Cookie": "xxxxxxxxxxxxxxxxxxx=ie; xxxxxxxxxxxxxxxxxxxxxx=true; lp=xxxxxx; rememberUn=false; xxx.xxxxxxxxxx.xxxxxxxxxx=xx; xxxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; autocomplete=1; xxxx=xxxx; xxxx=xxxxv1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; xxxxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "__X_HTTP_URL": "xxxxx.xxxxxxxx.xxxxxxxxxx.xxx/x/xx/xxxxxxxxxxxxxxxxxxx/x/xxxxxx/xxxxxxxxxxxxxxx?xxx=1&xxx=1&x=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&vmf=xxxxxxxxxx.xxx.xxx.xxx&ce=UTF-8&ns=xxxxxxxxxx&pageName=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&g=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.jsp&r=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&events=xxxxxxxxxxxxxxxxxxxxxxxxxxx&products=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v1=xxxxxxxxxxxxxxx&v2=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&v17=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&c49=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&AQE=1", + "__X_HTTP_HEADERS_INTERGRATION": "Host: xxxxx.xxxxxxxx.xxxxxxxxxx.xxx\r\nConnection: keep-alive\r\nAccept: image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36\r\nReferer: http://www.xxxxxxxxxx.xxx/xx/xxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxx.jsp\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: en-US,en;q=0.8,en-GB;q=0.6\r\nCookie: xxxxxxxxxxxxxxxxxxx=ie; xxxxxxxxxxxxxxxxxxxxxx=true; lp=xxxxxx; rememberUn=false; xxx.xxxxxxxxxx.xxxxxxxxxx=xx; xxxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; autocomplete=1; xxxx=xxxx; xxxx=xxxxv1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; xxxxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n\r\n" + }, { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "OK", + "major_version": 1, + "minor_version": 1, + "status_code": 200, + "Date": "Mon, 30 Jun 2014 13:35:21 GMT", + "Server": "xxxxxxxxxxxxxxxxx", + "Access-Control-Allow-Origin": "*", + "Set-Cookie": "xxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; Expires=Wed, 29 Jun 2016 13:35:21 GMT; Domain=.xxxxxxxxxx.xxx; Path=/", + "X-C": "ms-4.9", + "Expires": "Sun, 29 Jun 2014 13:35:21 GMT", + "Last-Modified": "Tue, 01 Jul 2014 13:35:21 GMT", + "Cache-Control": "no-cache, no-store, max-age=0, no-transform, private", + "Pragma": "no-cache", + "ETag": "\"xxxxxxxxxxxxxxxxxxxxxx\"", + "Vary": "*", + "P3P": "policyref=\"/w3c/p3p.xml\", CP=\"NOI DSP COR NID PSA OUR IND COM NAV STA\"", + "xserver": "xxxxxx", + "Content-Length": "43", + "Keep-Alive": "timeout=15", + "Connection": "Keep-Alive", + "Content-Type": "image/gif", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Mon, 30 Jun 2014 13:35:21 GMT\r\nServer: xxxxxxxxxxxxxxxxx\r\nAccess-Control-Allow-Origin: *\r\nSet-Cookie: xxxx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; Expires=Wed, 29 Jun 2016 13:35:21 GMT; Domain=.xxxxxxxxxx.xxx; Path=/\r\nX-C: ms-4.9\r\nExpires: Sun, 29 Jun 2014 13:35:21 GMT\r\nLast-Modified: Tue, 01 Jul 2014 13:35:21 GMT\r\nCache-Control: no-cache, no-store, max-age=0, no-transform, private\r\nPragma: no-cache\r\nETag: \"xxxxxxxxxxxxxxxxxxxxxx\"\r\nVary: *\r\nP3P: policyref=\"/w3c/p3p.xml\", CP=\"NOI DSP COR NID PSA OUR IND COM NAV STA\"\r\nxserver: xxxxxx\r\nContent-Length: 43\r\nKeep-Alive: timeout=15\r\nConnection: Keep-Alive\r\nContent-Type: image/gif\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "ad480fd0732d0f6f1a8b06359e3a42bb" - } -]
\ No newline at end of file + }] diff --git a/test/decoders/http/benchmarks/json/http_incomplete_header.json b/test/decoders/http/benchmarks/json/http_incomplete_header.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_incomplete_header.json @@ -0,0 +1 @@ +[] diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state.json b/test/decoders/http/benchmarks/json/http_msg_type_state.json index 5dc0564..31cd5ac 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state.json @@ -1,20 +1,16 @@ [ { "msg_0": "HTTP_TRANSACTION_START_transaction_0", - "msg_1": "HTTP_MESSAGE_REQ_LINE", - "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END", - "msg_4": "HTTP_MESSAGE_REQ_BODY_START", - "msg_5": "HTTP_MESSAGE_REQ_BODY", - "msg_6": "HTTP_MESSAGE_REQ_BODY_END" + "msg_1": "HTTP_MESSAGE_REQ_LINE_HEADERS", + "msg_2": "HTTP_MESSAGE_REQ_BODY_START", + "msg_3": "HTTP_MESSAGE_REQ_BODY", + "msg_4": "HTTP_MESSAGE_REQ_BODY_END" }, { - "msg_7": "HTTP_MESSAGE_RES_LINE", - "msg_8": "HTTP_MESSAGE_RES_HEADER", - "msg_9": "HTTP_MESSAGE_RES_HEADER_END", - "msg_10": "HTTP_MESSAGE_RES_BODY_START", - "msg_11": "HTTP_MESSAGE_RES_BODY", - "msg_12": "HTTP_MESSAGE_RES_BODY_END", - "msg_13": "HTTP_TRANSACTION_END_transaction_0" + "msg_5": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_6": "HTTP_MESSAGE_RES_BODY_START", + "msg_7": "HTTP_MESSAGE_RES_BODY", + "msg_8": "HTTP_MESSAGE_RES_BODY_END", + "msg_9": "HTTP_TRANSACTION_END_transaction_0" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_c2s.json b/test/decoders/http/benchmarks/json/http_msg_type_state_c2s.json index 8533bb9..15385ad 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_c2s.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_c2s.json @@ -1,13 +1,11 @@ [ { "msg_0": "HTTP_TRANSACTION_START_transaction_0", - "msg_1": "HTTP_MESSAGE_REQ_LINE", - "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END", - "msg_4": "HTTP_MESSAGE_REQ_BODY_START", - "msg_5": "HTTP_MESSAGE_REQ_BODY", - "msg_6": "HTTP_MESSAGE_REQ_BODY_END", - "msg_7": "HTTP_TRANSACTION_END_transaction_0" + "msg_1": "HTTP_MESSAGE_REQ_LINE_HEADERS", + "msg_2": "HTTP_MESSAGE_REQ_BODY_START", + "msg_3": "HTTP_MESSAGE_REQ_BODY", + "msg_4": "HTTP_MESSAGE_REQ_BODY_END", + "msg_5": "HTTP_TRANSACTION_END_transaction_0" }, {} ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_exception_c2s.json b/test/decoders/http/benchmarks/json/http_msg_type_state_exception_c2s.json index e694238..c78cf34 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_exception_c2s.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_exception_c2s.json @@ -1,13 +1,11 @@ [ { "msg_0": "HTTP_TRANSACTION_START_transaction_0", - "msg_1": "HTTP_MESSAGE_REQ_LINE", - "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END", - "msg_4": "HTTP_MESSAGE_REQ_BODY_START", - "msg_5": "HTTP_MESSAGE_REQ_BODY" + "msg_1": "HTTP_MESSAGE_REQ_LINE_HEADERS", + "msg_2": "HTTP_MESSAGE_REQ_BODY_START", + "msg_3": "HTTP_MESSAGE_REQ_BODY" }, { - "msg_6": "HTTP_TRANSACTION_END_transaction_0" + "msg_4": "HTTP_TRANSACTION_END_transaction_0" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_exception_s2c.json b/test/decoders/http/benchmarks/json/http_msg_type_state_exception_s2c.json index cf03270..a7c9865 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_exception_s2c.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_exception_s2c.json @@ -1,16 +1,12 @@ [ { "msg_0": "HTTP_TRANSACTION_START_transaction_0", - "msg_1": "HTTP_MESSAGE_REQ_LINE", - "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END" + "msg_1": "HTTP_MESSAGE_REQ_LINE_HEADERS" }, { - "msg_4": "HTTP_MESSAGE_RES_LINE", - "msg_5": "HTTP_MESSAGE_RES_HEADER", - "msg_6": "HTTP_MESSAGE_RES_HEADER_END", - "msg_7": "HTTP_MESSAGE_RES_BODY_START", - "msg_8": "HTTP_MESSAGE_RES_BODY", - "msg_9": "HTTP_TRANSACTION_END_transaction_0" + "msg_2": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_3": "HTTP_MESSAGE_RES_BODY_START", + "msg_4": "HTTP_MESSAGE_RES_BODY", + "msg_5": "HTTP_TRANSACTION_END_transaction_0" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_pipeline.json b/test/decoders/http/benchmarks/json/http_msg_type_state_pipeline.json index d50f4ac..4028c0f 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_pipeline.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_pipeline.json @@ -1,61 +1,45 @@ [ { "msg_0": "HTTP_TRANSACTION_START_transaction_0", - "msg_1": "HTTP_MESSAGE_REQ_LINE", - "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END", - "msg_8": "HTTP_TRANSACTION_START_transaction_1", - "msg_9": "HTTP_MESSAGE_REQ_LINE", - "msg_10": "HTTP_MESSAGE_REQ_HEADER", - "msg_11": "HTTP_MESSAGE_REQ_HEADER_END", - "msg_16": "HTTP_TRANSACTION_START_transaction_2", - "msg_17": "HTTP_MESSAGE_REQ_LINE", - "msg_18": "HTTP_MESSAGE_REQ_HEADER", - "msg_19": "HTTP_MESSAGE_REQ_HEADER_END", - "msg_24": "HTTP_TRANSACTION_START_transaction_3", - "msg_25": "HTTP_MESSAGE_REQ_LINE", - "msg_26": "HTTP_MESSAGE_REQ_HEADER", - "msg_27": "HTTP_MESSAGE_REQ_HEADER_END" + "msg_1": "HTTP_MESSAGE_REQ_LINE_HEADERS", + "msg_4": "HTTP_TRANSACTION_START_transaction_1", + "msg_5": "HTTP_MESSAGE_REQ_LINE_HEADERS", + "msg_8": "HTTP_TRANSACTION_START_transaction_2", + "msg_9": "HTTP_MESSAGE_REQ_LINE_HEADERS", + "msg_12": "HTTP_TRANSACTION_START_transaction_3", + "msg_13": "HTTP_MESSAGE_REQ_LINE_HEADERS" }, { - "msg_4": "HTTP_MESSAGE_RES_LINE", - "msg_5": "HTTP_MESSAGE_RES_HEADER", - "msg_6": "HTTP_MESSAGE_RES_HEADER_END", - "msg_7": "HTTP_TRANSACTION_END_transaction_0", - "msg_12": "HTTP_MESSAGE_RES_LINE", - "msg_13": "HTTP_MESSAGE_RES_HEADER", - "msg_14": "HTTP_MESSAGE_RES_HEADER_END", - "msg_15": "HTTP_TRANSACTION_END_transaction_1", - "msg_20": "HTTP_MESSAGE_RES_LINE", - "msg_21": "HTTP_MESSAGE_RES_HEADER", - "msg_22": "HTTP_MESSAGE_RES_HEADER_END", - "msg_23": "HTTP_TRANSACTION_END_transaction_2", - "msg_28": "HTTP_MESSAGE_RES_LINE", - "msg_29": "HTTP_MESSAGE_RES_HEADER", - "msg_30": "HTTP_MESSAGE_RES_HEADER_END", - "msg_31": "HTTP_MESSAGE_RES_BODY_START", + "msg_2": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_3": "HTTP_TRANSACTION_END_transaction_0", + "msg_6": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_7": "HTTP_TRANSACTION_END_transaction_1", + "msg_10": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_11": "HTTP_TRANSACTION_END_transaction_2", + "msg_14": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_15": "HTTP_MESSAGE_RES_BODY_START", + "msg_16": "HTTP_MESSAGE_RES_BODY", + "msg_17": "HTTP_MESSAGE_RES_BODY", + "msg_18": "HTTP_MESSAGE_RES_BODY", + "msg_19": "HTTP_MESSAGE_RES_BODY", + "msg_20": "HTTP_MESSAGE_RES_BODY", + "msg_21": "HTTP_MESSAGE_RES_BODY", + "msg_22": "HTTP_MESSAGE_RES_BODY", + "msg_23": "HTTP_MESSAGE_RES_BODY", + "msg_24": "HTTP_MESSAGE_RES_BODY", + "msg_25": "HTTP_MESSAGE_RES_BODY", + "msg_26": "HTTP_MESSAGE_RES_BODY", + "msg_27": "HTTP_MESSAGE_RES_BODY", + "msg_28": "HTTP_MESSAGE_RES_BODY", + "msg_29": "HTTP_MESSAGE_RES_BODY", + "msg_30": "HTTP_MESSAGE_RES_BODY", + "msg_31": "HTTP_MESSAGE_RES_BODY", "msg_32": "HTTP_MESSAGE_RES_BODY", "msg_33": "HTTP_MESSAGE_RES_BODY", "msg_34": "HTTP_MESSAGE_RES_BODY", "msg_35": "HTTP_MESSAGE_RES_BODY", "msg_36": "HTTP_MESSAGE_RES_BODY", - "msg_37": "HTTP_MESSAGE_RES_BODY", - "msg_38": "HTTP_MESSAGE_RES_BODY", - "msg_39": "HTTP_MESSAGE_RES_BODY", - "msg_40": "HTTP_MESSAGE_RES_BODY", - "msg_41": "HTTP_MESSAGE_RES_BODY", - "msg_42": "HTTP_MESSAGE_RES_BODY", - "msg_43": "HTTP_MESSAGE_RES_BODY", - "msg_44": "HTTP_MESSAGE_RES_BODY", - "msg_45": "HTTP_MESSAGE_RES_BODY", - "msg_46": "HTTP_MESSAGE_RES_BODY", - "msg_47": "HTTP_MESSAGE_RES_BODY", - "msg_48": "HTTP_MESSAGE_RES_BODY", - "msg_49": "HTTP_MESSAGE_RES_BODY", - "msg_50": "HTTP_MESSAGE_RES_BODY", - "msg_51": "HTTP_MESSAGE_RES_BODY", - "msg_52": "HTTP_MESSAGE_RES_BODY", - "msg_53": "HTTP_MESSAGE_RES_BODY_END", - "msg_54": "HTTP_TRANSACTION_END_transaction_3" + "msg_37": "HTTP_MESSAGE_RES_BODY_END", + "msg_38": "HTTP_TRANSACTION_END_transaction_3" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_s2c.json b/test/decoders/http/benchmarks/json/http_msg_type_state_s2c.json index c59d0bb..92f9df0 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_s2c.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_s2c.json @@ -2,12 +2,10 @@ {}, { "msg_0": "HTTP_TRANSACTION_START_transaction_0", - "msg_1": "HTTP_MESSAGE_RES_LINE", - "msg_2": "HTTP_MESSAGE_RES_HEADER", - "msg_3": "HTTP_MESSAGE_RES_HEADER_END", - "msg_4": "HTTP_MESSAGE_RES_BODY_START", - "msg_5": "HTTP_MESSAGE_RES_BODY", - "msg_6": "HTTP_MESSAGE_RES_BODY_END", - "msg_7": "HTTP_TRANSACTION_END_transaction_0" + "msg_1": "HTTP_MESSAGE_RES_LINE_HEADERS", + "msg_2": "HTTP_MESSAGE_RES_BODY_START", + "msg_3": "HTTP_MESSAGE_RES_BODY", + "msg_4": "HTTP_MESSAGE_RES_BODY_END", + "msg_5": "HTTP_TRANSACTION_END_transaction_0" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel.json b/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel.json index 4a66f37..ad22440 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel.json @@ -3,20 +3,16 @@ "msg_0": "HTTP_TRANSACTION_START_transaction_0", "msg_1": "HTTP_MESSAGE_REQ_LINE", "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END", "msg_8": "HTTP_TRANSACTION_START_transaction_1", "msg_9": "HTTP_MESSAGE_REQ_LINE", - "msg_10": "HTTP_MESSAGE_REQ_HEADER", - "msg_11": "HTTP_MESSAGE_REQ_HEADER_END" + "msg_10": "HTTP_MESSAGE_REQ_HEADER" }, { "msg_4": "HTTP_MESSAGE_RES_LINE", "msg_5": "HTTP_MESSAGE_RES_HEADER", - "msg_6": "HTTP_MESSAGE_RES_HEADER_END", "msg_7": "HTTP_TRANSACTION_END_transaction_0", "msg_12": "HTTP_MESSAGE_RES_LINE", "msg_13": "HTTP_MESSAGE_RES_HEADER", - "msg_14": "HTTP_MESSAGE_RES_HEADER_END", "msg_15": "HTTP_MESSAGE_RES_BODY", "msg_16": "HTTP_MESSAGE_RES_BODY", "msg_17": "HTTP_MESSAGE_RES_BODY", diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_c2s.json b/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_c2s.json index 5b7e588..6f8857b 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_c2s.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_c2s.json @@ -3,12 +3,10 @@ "msg_0": "HTTP_TRANSACTION_START_transaction_0", "msg_1": "HTTP_MESSAGE_REQ_LINE", "msg_2": "HTTP_MESSAGE_REQ_HEADER", - "msg_3": "HTTP_MESSAGE_REQ_HEADER_END", "msg_4": "HTTP_TRANSACTION_END_transaction_0", "msg_5": "HTTP_TRANSACTION_START_transaction_1", "msg_6": "HTTP_MESSAGE_REQ_LINE", "msg_7": "HTTP_MESSAGE_REQ_HEADER", - "msg_8": "HTTP_MESSAGE_REQ_HEADER_END", "msg_9": "HTTP_TRANSACTION_END_transaction_1" }, {} diff --git a/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_s2c.json b/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_s2c.json index 07a1451..66704f1 100644 --- a/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_s2c.json +++ b/test/decoders/http/benchmarks/json/http_msg_type_state_tunnel_s2c.json @@ -4,12 +4,10 @@ "msg_0": "HTTP_TRANSACTION_START_transaction_0", "msg_1": "HTTP_MESSAGE_RES_LINE", "msg_2": "HTTP_MESSAGE_RES_HEADER", - "msg_3": "HTTP_MESSAGE_RES_HEADER_END", "msg_4": "HTTP_TRANSACTION_END_transaction_0", "msg_5": "HTTP_TRANSACTION_START_transaction_1", "msg_6": "HTTP_MESSAGE_RES_LINE", "msg_7": "HTTP_MESSAGE_RES_HEADER", - "msg_8": "HTTP_MESSAGE_RES_HEADER_END", "msg_9": "HTTP_MESSAGE_RES_BODY", "msg_10": "HTTP_MESSAGE_RES_BODY", "msg_11": "HTTP_MESSAGE_RES_BODY", diff --git a/test/decoders/http/benchmarks/json/http_multi_parse_error.json b/test/decoders/http/benchmarks/json/http_multi_parse_error.json index c49d41e..d8d80cf 100644 --- a/test/decoders/http/benchmarks/json/http_multi_parse_error.json +++ b/test/decoders/http/benchmarks/json/http_multi_parse_error.json @@ -10,13 +10,14 @@ "req_version": "1.1", "major_version": 1, "minor_version": 1, + "Host": "", "User-Agent": "ulxmlrpcpp/1.7.5", "Connection": "Close", "Content-Type": "text/xml", "Date": "Sat Sep 7 10:05:13 2019", "Content-Length": "468", - "__X_HTTP_URL": ":4445/RPC2", - "__X_HTTP_RAW_PAYLOAD_MD5": "6eccbcf261f04aabfa69884aa283f4f3", + "__X_HTTP_URL": "/:4445/RPC2", + "__X_HTTP_HEADERS_INTERGRATION": "Host: \r\nUser-Agent: ulxmlrpcpp/1.7.5\r\nConnection: Close\r\nContent-Type: text/xml\r\nDate: Sat Sep 7 10:05:13 2019\r\nContent-Length: 468\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "6eccbcf261f04aabfa69884aa283f4f3" }, { @@ -31,8 +32,9 @@ "Content-Type": "text/xml", "Transfer-Encoding": "chunked", "X-Powered-By": "ulxmlrpcpp/1.7.4", + "Server": "", "Date": "Sat Sep 7 01:09:24 2019", - "__X_HTTP_RAW_PAYLOAD_MD5": "5cf8a4aa9a54e7f2d05b55ed05bf9071", + "__X_HTTP_HEADERS_INTERGRATION": "Connection: Close\r\nContent-Type: text/xml\r\nTransfer-Encoding: chunked\r\nX-Powered-By: ulxmlrpcpp/1.7.4\r\nServer: \r\nDate: Sat Sep 7 01:09:24 2019\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "5cf8a4aa9a54e7f2d05b55ed05bf9071" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_no_content_length.json b/test/decoders/http/benchmarks/json/http_no_content_length.json index 9310d04..e495a12 100644 --- a/test/decoders/http/benchmarks/json/http_no_content_length.json +++ b/test/decoders/http/benchmarks/json/http_no_content_length.json @@ -20,7 +20,8 @@ "Connection": "keep-alive", "Referer": "http://www.xxxxxxxx.com/xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxx.html", "Cookie": "trafic_ranking=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "__X_HTTP_URL": "xxxxxxx.xxxxxx.xx/js/xxxxxx.js" + "__X_HTTP_URL": "xxxxxxx.xxxxxx.xx/js/xxxxxx.js", + "__X_HTTP_HEADERS_INTERGRATION": "Host: xxxxxxx.xxxxxx.xx\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\r\nAccept: */*\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 115\r\nConnection: keep-alive\r\nReferer: http://www.xxxxxxxx.com/xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxx.html\r\nCookie: trafic_ranking=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -40,7 +41,7 @@ "P3P": "policyref=\"/w3c/p3p.xml\", CP=\"ALL IND DSP COR ADM CONo CUR IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI\"", "Set-Cookie": "trafic_ranking=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; expires=Sun, 11-Jan-2037 14:00:00 GMT; path=/; domain=.xxxxxx.xx", "connection": "close", - "__X_HTTP_RAW_PAYLOAD_MD5": "9fb54a2726ca3cf54a82804d0e66d08a", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "9fb54a2726ca3cf54a82804d0e66d08a" + "__X_HTTP_HEADERS_INTERGRATION": "Date: Mon, 10 May 2010 08:31:02 GMT\r\nServer: Apache\r\nContent-type: application/x-javascript\r\nExpires: Thu, 11 Jan 1973 16:00:00 GMT\r\nLast-Modified: Mon, 10 May 2010 08:31:02 GMT\r\nCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\nPragma: no-cache\r\nP3P: policyref=\"/w3c/p3p.xml\", CP=\"ALL IND DSP COR ADM CONo CUR IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI\"\r\nSet-Cookie: trafic_ranking=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx; expires=Sun, 11-Jan-2037 14:00:00 GMT; path=/; domain=.xxxxxx.xx\r\nconnection: close\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "9fb54a2726ca3cf54a82804d0e66d08a" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_no_cr_line_eof.json b/test/decoders/http/benchmarks/json/http_no_cr_line_eof.json new file mode 100644 index 0000000..62e90a5 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_no_cr_line_eof.json @@ -0,0 +1,18 @@ +[{ + "__X_HTTP_TUPLE4": "172.15.10.65:62992-10.48.139.110:6969-6-0" +}, { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "GET", + "uri": "/announce?info_hash=%8e%3e%16%be%a5c%f8%9bq%a4%9f%03b%f1%3f%9b%80%c1%2b0&peer_id=-LT1000-qooO5nKqTd*l&port=21881&uploaded=0&downloaded=0&left=381722&corrupt=0&key=B34AECB8&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "10.48.139.110:6969", + "User-Agent": "gscbthlper/1.0.10.0", + "Accept-Encoding": "gzip", + "Connection": "close", + "__X_HTTP_URL": "10.48.139.110:6969/announce?info_hash=%8e%3e%16%be%a5c%f8%9bq%a4%9f%03b%f1%3f%9b%80%c1%2b0&peer_id=-LT1000-qooO5nKqTd*l&port=21881&uploaded=0&downloaded=0&left=381722&corrupt=0&key=B34AECB8&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0", + "__X_HTTP_DECODED_URL": "10.48.139.110:6969/announce?info_hash=>\u0016¾¥c\u0003b0&peer_id=-LT1000-qooO5nKqTd*l&port=21881&uploaded=0&downloaded=0&left=381722&corrupt=0&key=B34AECB8&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=0", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 10.48.139.110:6969\r\nUser-Agent: gscbthlper/1.0.10.0\r\nAccept-Encoding: gzip\r\nConnection:close\r\n\r\n" +}]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_out_of_order.json b/test/decoders/http/benchmarks/json/http_out_of_order.json index 489b7c1..aeaade5 100644 --- a/test/decoders/http/benchmarks/json/http_out_of_order.json +++ b/test/decoders/http/benchmarks/json/http_out_of_order.json @@ -19,7 +19,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cookie": "_ga=GA1.2.1223391296.1710844147; _ga_CGYVD7S4G4=GS1.1.1711101500.1.1.1711101524.0.0.0; _gcl_au=1.1.45985360.1720059434; arialoadData=true; ariawapChangeViewPort=false; JSESSIONID=ZoFJbBlIeHCsA5414j6JC-vO6jvcBw7_xphcV3qerj5Q8htV6XH8!-1677015109", - "__X_HTTP_URL": "www.airchina.com/cn/images/globesite/airchina.jpg" + "__X_HTTP_URL": "www.airchina.com/cn/images/globesite/airchina.jpg", + "__X_HTTP_HEADERS_INTERGRATION": "Host: www.airchina.com\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36\r\nDNT: 1\r\nAccept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8\r\nReferer: http://www.airchina.com/website/ip2.jsp?v=20230128\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\nCookie: _ga=GA1.2.1223391296.1710844147; _ga_CGYVD7S4G4=GS1.1.1711101500.1.1.1711101524.0.0.0; _gcl_au=1.1.45985360.1720059434; arialoadData=true; ariawapChangeViewPort=false; JSESSIONID=ZoFJbBlIeHCsA5414j6JC-vO6jvcBw7_xphcV3qerj5Q8htV6XH8!-1677015109\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -38,7 +39,7 @@ "Keep-Alive": "timeout=120, max=1000", "Connection": "Keep-Alive", "Content-Type": "image/jpeg", - "__X_HTTP_RAW_PAYLOAD_MD5": "c4c9d459415e922f877a2af6afd9d316", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c4c9d459415e922f877a2af6afd9d316" + "__X_HTTP_HEADERS_INTERGRATION": "Date: Tue, 13 Aug 2024 01:48:28 GMT\r\nServer: Apache\r\nX-Frame-Options: SAMEORIGIN\r\nLast-Modified: Tue, 06 Aug 2019 02:10:09 GMT\r\nAccept-Ranges: bytes\r\nContent-Length: 67424\r\nKeep-Alive: timeout=120, max=1000\r\nConnection: Keep-Alive\r\nContent-Type: image/jpeg\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c4c9d459415e922f877a2af6afd9d316" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_over_pppoe.json b/test/decoders/http/benchmarks/json/http_over_pppoe.json index b4b4bfb..a6c9386 100644 --- a/test/decoders/http/benchmarks/json/http_over_pppoe.json +++ b/test/decoders/http/benchmarks/json/http_over_pppoe.json @@ -13,7 +13,8 @@ "User-Agent": "curl/7.34.0", "Host": "ipv6.icanhazip.com", "Accept": "*/*", - "__X_HTTP_URL": "ipv6.icanhazip.com/" + "__X_HTTP_URL": "ipv6.icanhazip.com/", + "__X_HTTP_HEADERS_INTERGRATION": "User-Agent: curl/7.34.0\r\nHost: ipv6.icanhazip.com\r\nAccept: */*\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -30,7 +31,7 @@ "X-RTFM": "Learn about this site at http://bit.ly/14DAh2o and don't abuse the service", "X-YOU-SHOULD-APPLY-FOR-A-JOB": "If you're reading this, apply here: http://rackertalent.com/", "X-ICANHAZNODE": "icanhazip1.nugget", - "__X_HTTP_RAW_PAYLOAD_MD5": "624520ac54235ac2284ed2dd2b17e1ad", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "624520ac54235ac2284ed2dd2b17e1ad" + "__X_HTTP_HEADERS_INTERGRATION": "Date: Thu, 02 Jan 2014 08:38:06 GMT\r\nServer: Apache\r\nContent-Length: 38\r\nContent-Type: text/plain; charset=UTF-8\r\nX-RTFM: Learn about this site at http://bit.ly/14DAh2o and don't abuse the service\r\nX-YOU-SHOULD-APPLY-FOR-A-JOB: If you're reading this, apply here: http://rackertalent.com/\r\nX-ICANHAZNODE: icanhazip1.nugget\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "624520ac54235ac2284ed2dd2b17e1ad" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_over_tcp_keepalive.json b/test/decoders/http/benchmarks/json/http_over_tcp_keepalive.json index 2754249..669c865 100644 --- a/test/decoders/http/benchmarks/json/http_over_tcp_keepalive.json +++ b/test/decoders/http/benchmarks/json/http_over_tcp_keepalive.json @@ -19,7 +19,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9", "Cookie": "UM_distinctid=17d37645f9c1a1-0281befa480414-b7a1a38-144000-17d37645f9d336; CNZZDATA1258295942=1778021578-1637307701-%7C1637307701; Hm_lvt_a6dc86f6e27435039966e994bd7f0792=1637311872; yumi_sid=JaMlFyTA07ikpZjTHZsRTWyGdMqFyFy%2B4hXGj%2FSoQRJYbrfBUQuOTIMZ8jUGmugDC594AYcbeRhg75xidhRxCW4zq9Y0gPwTmkhq4LQuprp4DrtDMLI3L5wLMqkG%2FuAX1aVFPfud5GRNxNFTSp%2Bos%2FKhfCFKhfN5%2BuT2xyVYSAjy2ftiSOGDi7FN13icuuyPhFCoWqOxWVu1CZ3AiYPJssv6kXqiR6paf75icdeROZY2bkFCDKkcIQcPy7o9EKpkL1Mbimeb40JMg9hUsWdmyhDkzVjSHJmC4z2ujpzSDTsjRIQOnxTy1PHZi%2FMwg3uyGLCusDwqbagpO4pcgEJ5ONDy%2BGwO7FmHXU3mFfR56c9HxxiiuLPnBt9ErpqqWKsxH6lUrlHaUp6AzyrgX7PFdksiMfPSk6%2F3%2FWOYr%2FkYuI4fopw7z8%2FLhxC9AiLr9Czz3MngFUGzkmaMVvAhZOSPzg%3D%3D; Hm_lpvt_a6dc86f6e27435039966e994bd7f0792=1637313847", - "__X_HTTP_URL": "www.yumi.com/" + "__X_HTTP_URL": "www.yumi.com/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: www.yumi.com\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\nCookie: UM_distinctid=17d37645f9c1a1-0281befa480414-b7a1a38-144000-17d37645f9d336; CNZZDATA1258295942=1778021578-1637307701-%7C1637307701; Hm_lvt_a6dc86f6e27435039966e994bd7f0792=1637311872; yumi_sid=JaMlFyTA07ikpZjTHZsRTWyGdMqFyFy%2B4hXGj%2FSoQRJYbrfBUQuOTIMZ8jUGmugDC594AYcbeRhg75xidhRxCW4zq9Y0gPwTmkhq4LQuprp4DrtDMLI3L5wLMqkG%2FuAX1aVFPfud5GRNxNFTSp%2Bos%2FKhfCFKhfN5%2BuT2xyVYSAjy2ftiSOGDi7FN13icuuyPhFCoWqOxWVu1CZ3AiYPJssv6kXqiR6paf75icdeROZY2bkFCDKkcIQcPy7o9EKpkL1Mbimeb40JMg9hUsWdmyhDkzVjSHJmC4z2ujpzSDTsjRIQOnxTy1PHZi%2FMwg3uyGLCusDwqbagpO4pcgEJ5ONDy%2BGwO7FmHXU3mFfR56c9HxxiiuLPnBt9ErpqqWKsxH6lUrlHaUp6AzyrgX7PFdksiMfPSk6%2F3%2FWOYr%2FkYuI4fopw7z8%2FLhxC9AiLr9Czz3MngFUGzkmaMVvAhZOSPzg%3D%3D; Hm_lpvt_a6dc86f6e27435039966e994bd7f0792=1637313847\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -39,7 +40,7 @@ "Pragma": "no-cache", "Cache-Control": "no-store", "Content-Encoding": "gzip", - "__X_HTTP_RAW_PAYLOAD_MD5": "3f80dc84438b2f2d6b5e58084e31671c", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "af9b1a0118edd2920db355f9eee4ab75" + "__X_HTTP_HEADERS_INTERGRATION": "Server: Tengine\r\nDate: Fri, 19 Nov 2021 09:57:40 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nVary: Accept-Encoding\r\nSet-Cookie: yumi_sid=V6EhlyovLp46BBzQWLVOBg%2F73RUD5E%2FfaRlkR8RLa8aKhGrPVdVHvHfFWRKKd9wZ%2BfFF4Tb2wnVOOn%2F9iXbBpyHsbxjmUqnbFSoAX7QIJjt%2BEEjAL3M7O7VSpAyMnrFKt7qu46oXV%2B6teyyTUY7Ucy285v6otvZcu8bN%2B5YxKZ1gYh56iJ0bHxnrnQ0vvAx3l%2BLwfw2y0c5IaF2tjrL%2Fn83nrHsPoYYRWAR2zLIXD%2FEMKRtyerwsM5LKhZZteFGWD2w%2B15alKF5T65i0lPvPcAdaqpceL5xz23twQULhs1tIJsOfJZ8JudLlRy6x3DvxQYqRe2xTCex5c77zJqfq%2FdryNbBycIq9gf6C2hXDRwDqRqVgXDMadwGnooKFkv%2ByCbohjHyBCZJypBcYFmglYhin23UC9i%2B%2BOA%2FxhlxcnU8kT8udpTNCktSmF950SQLOmvdvYuXGydKs8v05cxe5fg%3D%3D; expires=Fri, 19-Nov-2021 11:57:38 GMT; Max-Age=7200; path=/; domain=.yumi.com\r\nPragma: no-cache\r\nCache-Control: no-store\r\nContent-Encoding: gzip\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "af9b1a0118edd2920db355f9eee4ab75" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_pipeline_C2S.json b/test/decoders/http/benchmarks/json/http_pipeline_C2S.json new file mode 100644 index 0000000..4143138 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_pipeline_C2S.json @@ -0,0 +1,313 @@ +[ + { + "__X_HTTP_TUPLE4": "223.72.39.14:2545-192.168.182.147:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "GET", + "uri": "/postinfo.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/postinfo.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 1, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 2, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 3, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/dvwssr.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/dvwssr.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 4, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 5, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 6, + "method": "GET", + "uri": "/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 7, + "method": "GET", + "uri": "/postinfo.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/postinfo.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 8, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 9, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 10, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/dvwssr.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/dvwssr.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 11, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 12, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 13, + "method": "GET", + "uri": "/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 14, + "method": "GET", + "uri": "/_vti_bin/shtml.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/shtml.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 15, + "method": "GET", + "uri": "/_vti_bin/shtml.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/shtml.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 16, + "method": "GET", + "uri": "/_vti_pvt/_x_todo.htm", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/_x_todo.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 17, + "method": "GET", + "uri": "/_vti_pvt/_x_todoh.htm", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/_x_todoh.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 18, + "method": "GET", + "uri": "/_vti_pvt/access.cnf", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/access.cnf", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 19, + "method": "GET", + "uri": "/_vti_pvt/administrator.pwd", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/administrator.pwd", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 20, + "method": "GET", + "uri": "/_vti_pvt/administrators.pwd", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/administrators.pwd", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 21, + "method": "GET", + "uri": "/_vti_pvt/authors.pwd", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/authors.pwd", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + } +]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_pipeline_S2C.json b/test/decoders/http/benchmarks/json/http_pipeline_S2C.json new file mode 100644 index 0000000..13e29a3 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_pipeline_S2C.json @@ -0,0 +1,181 @@ +[ + { + "__X_HTTP_TUPLE4": "223.72.39.14:2545-192.168.182.147:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:01 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:01 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "32dc0b2772bd73a952abba009291a399" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 1, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:02 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:02 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "db2ff8008149d8e70d8a2929acbb0f56" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 2, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:03 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:03 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "f5df152f7d8f34c630f298d2fcb46ed3" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 3, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:04 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:04 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "73e98ca7b62764869357b3e3c40dcd68" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 4, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:05 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:05 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "a5733c8989bde7f08506fa68c20f0c62" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 5, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:06 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:06 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "4bc0dde3722f76d60fef6f1d878cbb14" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 6, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:07 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:07 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "728dc2eafd49c9be8149add7c6aff207" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 7, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:08 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:08 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "0cde98e33181ee0ded49e8d0a3178d55" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 8, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:09 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:09 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d627268e0aba817d818b6e2b7e41aa11" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 9, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:10 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:10 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "e99d9829d50bd94b3497b91011f6e349" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 10, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:11 GMT", + "Content-Type": "text/html", + "Content-Length": "86", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:11 GMT\r\nContent-Type: text/html\r\nContent-Length: 86\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "599705569a418eac39192bd13b133a35" + } +] diff --git a/test/decoders/http/benchmarks/json/http_pipeline_header_splitting.json b/test/decoders/http/benchmarks/json/http_pipeline_header_splitting.json index bebfa94..b5d24b8 100644 --- a/test/decoders/http/benchmarks/json/http_pipeline_header_splitting.json +++ b/test/decoders/http/benchmarks/json/http_pipeline_header_splitting.json @@ -1,69 +1,71 @@ [ - { - "__X_HTTP_TUPLE4": "127.0.0.1:44980-127.0.0.1:8080-6-0" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 0, - "method": "GET", - "uri": "/111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.html", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "127.0.0.1:8080 ", - "User-Agent": "curl/7.61.111", - "Accept": "*/*", - "-X-header1": "value111", - "-X-header2": "value222", - "-X-header3": "value333", - "-X-header4": "value444", - "-X-header5": "value5555", - "__X_HTTP_URL": "127.0.0.1:8080 /111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.html" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 0, - "res_version": "1.1", - "res_status": "OK", - "major_version": 1, - "minor_version": 1, - "status_code": 200, - "Server": "BaseHTTP/0.6 Python/3.6.88", - "Date": "Sun, 01 Sep 2024 07:31:09 GMTT", - "Content-length": "88", - "__X_HTTP_RAW_PAYLOAD_MD5": "c396b63d897591e928fae959915e9ebc", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c396b63d897591e928fae959915e9ebc" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 1, - "method": "GET", - "uri": "/2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.html", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "127.0.0.1:8080", - "User-Agent": "curl/7.61.1", - "Accept": "*/*", - "-X-header1": "value111", - "-X-header2": "value2222", - "-X-header3": "value3333", - "-X-header4": "value4444", - "-X-header5": "value55555", - "__X_HTTP_URL": "127.0.0.1:8080/2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.html" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 1, - "res_version": "1.1", - "res_status": "OK", - "major_version": 1, - "minor_version": 1, - "status_code": 200, - "Server": "BaseHTTP/0.6 Python/3.6.88", - "Date": "Sun, 01 Sep 2024 07:31:09 GMTT", - "Content-length": "89", - "__X_HTTP_RAW_PAYLOAD_MD5": "5e3c5a7de2696e52ef42d9ccfd8ce831", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "5e3c5a7de2696e52ef42d9ccfd8ce831" - } -]
\ No newline at end of file + { + "__X_HTTP_TUPLE4": "127.0.0.1:44980-127.0.0.1:8080-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "GET", + "uri": "/111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "127.0.0.1:8080 ", + "User-Agent": "curl/7.61.111", + "Accept": "*/*", + "-X-header1": "value111", + "-X-header2": "value222", + "-X-header3": "value333", + "-X-header4": "value444", + "-X-header5": "value5555", + "__X_HTTP_URL": "127.0.0.1:8080 /111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 127.0.0.1:8080 \r\nUser-Agent: curl/7.61.111\r\nAccept: */*\r\n-X-header1: value111\r\n-X-header2: value222\r\n-X-header3: value333\r\n-X-header4: value444\r\n-X-header5: value5555\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 1, + "method": "GET", + "uri": "/2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "127.0.0.1:8080", + "User-Agent": "curl/7.61.1", + "Accept": "*/*", + "-X-header1": "value111", + "-X-header2": "value2222", + "-X-header3": "value3333", + "-X-header4": "value4444", + "-X-header5": "value55555", + "__X_HTTP_URL": "127.0.0.1:8080/2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 127.0.0.1:8080\r\nUser-Agent: curl/7.61.1\r\nAccept: */*\r\n-X-header1: value111\r\n-X-header2: value2222\r\n-X-header3: value3333\r\n-X-header4: value4444\r\n-X-header5: value55555\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "OK", + "major_version": 1, + "minor_version": 1, + "status_code": 200, + "Server": "BaseHTTP/0.6 Python/3.6.88", + "Date": "Sun, 01 Sep 2024 07:31:09 GMTT", + "Content-length": "88", + "__X_HTTP_HEADERS_INTERGRATION": "Server: BaseHTTP/0.6 Python/3.6.88\r\nDate: Sun, 01 Sep 2024 07:31:09 GMTT\r\nContent-length:88\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c396b63d897591e928fae959915e9ebc" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 1, + "res_version": "1.1", + "res_status": "OK", + "major_version": 1, + "minor_version": 1, + "status_code": 200, + "Server": "BaseHTTP/0.6 Python/3.6.88", + "Date": "Sun, 01 Sep 2024 07:31:09 GMTT", + "Content-length": "89", + "__X_HTTP_HEADERS_INTERGRATION": "Server: BaseHTTP/0.6 Python/3.6.88\r\nDate: Sun, 01 Sep 2024 07:31:09 GMTT\r\nContent-length:89\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "5e3c5a7de2696e52ef42d9ccfd8ce831" + } +] diff --git a/test/decoders/http/benchmarks/json/http_post.json b/test/decoders/http/benchmarks/json/http_post.json new file mode 100644 index 0000000..cff5abc --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_post.json @@ -0,0 +1,39 @@ +[ + { + "__X_HTTP_TUPLE4": "192.168.40.139:48662-107.155.25.121:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "POST", + "uri": "/", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "www.xiongan.gov.cn", + "User-Agent": "curl/7.61.1", + "Accept": "*/*", + "Content-Length": "22", + "Content-Type": "application/x-www-form-urlencoded", + "__X_HTTP_URL": "www.xiongan.gov.cn/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: www.xiongan.gov.cn\r\nUser-Agent: curl/7.61.1\r\nAccept: */*\r\nContent-Length: 22\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d065af995d50f24b4fb2865c765cf72a" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "Method Not Allowed", + "major_version": 1, + "minor_version": 1, + "status_code": 405, + "Date": "Thu, 30 May 2024 10:53:44 GMT", + "Content-Type": "text/html", + "Transfer-Encoding": "chunked", + "Connection": "keep-alive", + "X-Ser": "BC9_dx-lt-yd-zhejiang-jinhua-5-cache-1, BC194_lt-obgp-fujian-xiamen-33-cache-1, BC68_SG-singapore-singapore-8-cache-2, BC121_HK-xianggang-xianggang-4-cache-3", + "X-Cache": "MISS from BC121_HK-xianggang-xianggang-4-cache-3(baishan)", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Thu, 30 May 2024 10:53:44 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nX-Ser: BC9_dx-lt-yd-zhejiang-jinhua-5-cache-1, BC194_lt-obgp-fujian-xiamen-33-cache-1, BC68_SG-singapore-singapore-8-cache-2, BC121_HK-xianggang-xianggang-4-cache-3\r\nX-Cache: MISS from BC121_HK-xianggang-xianggang-4-cache-3(baishan)\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "1858899995d46bf1ba568aa7f11761dc" + } +] diff --git a/test/decoders/http/benchmarks/json/http_post_c2s.json b/test/decoders/http/benchmarks/json/http_post_c2s.json new file mode 100644 index 0000000..69e41de --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_post_c2s.json @@ -0,0 +1,22 @@ +[ + { + "__X_HTTP_TUPLE4": "192.168.40.139:48662-107.155.25.121:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "POST", + "uri": "/", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "www.xiongan.gov.cn", + "User-Agent": "curl/7.61.1", + "Accept": "*/*", + "Content-Length": "22", + "Content-Type": "application/x-www-form-urlencoded", + "__X_HTTP_URL": "www.xiongan.gov.cn/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: www.xiongan.gov.cn\r\nUser-Agent: curl/7.61.1\r\nAccept: */*\r\nContent-Length: 22\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d065af995d50f24b4fb2865c765cf72a" + } +] diff --git a/test/decoders/http/benchmarks/json/http_post_multipart_form_data.json b/test/decoders/http/benchmarks/json/http_post_multipart_form_data.json index ac524f6..71a8235 100644 --- a/test/decoders/http/benchmarks/json/http_post_multipart_form_data.json +++ b/test/decoders/http/benchmarks/json/http_post_multipart_form_data.json @@ -17,7 +17,8 @@ "Accept-Encoding": "gzip,deflate,sdch", "Accept-Language": "zh-CN,zh;q=0.8", "Cookie": "JSESSIONID=969AC5FBD069EE6218EB10513726B244; JSESSIONID=400CC78DF5784F303702CC7F02C6122C", - "__X_HTTP_URL": "192.168.57.14:8080/fileupload/" + "__X_HTTP_URL": "192.168.57.14:8080/fileupload/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.57.14:8080\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\nCookie: JSESSIONID=969AC5FBD069EE6218EB10513726B244; JSESSIONID=400CC78DF5784F303702CC7F02C6122C\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -31,7 +32,7 @@ "Content-Type": "text/html;charset=UTF-8", "Content-Length": "468", "Date": "Thu, 28 Mar 2019 08:13:33 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "2b8cd757ab5ffba85acac26c008a1ffc", + "__X_HTTP_HEADERS_INTERGRATION": "Server: Apache-Coyote/1.1\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: 468\r\nDate: Thu, 28 Mar 2019 08:13:33 GMT\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "2b8cd757ab5ffba85acac26c008a1ffc" }, { @@ -49,7 +50,8 @@ "Accept-Encoding": "gzip,deflate,sdch", "Accept-Language": "zh-CN,zh;q=0.8", "Cookie": "JSESSIONID=969AC5FBD069EE6218EB10513726B244; JSESSIONID=400CC78DF5784F303702CC7F02C6122C", - "__X_HTTP_URL": "192.168.57.14:8080/fileupload/" + "__X_HTTP_URL": "192.168.57.14:8080/fileupload/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.57.14:8080\r\nConnection: keep-alive\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\nCookie: JSESSIONID=969AC5FBD069EE6218EB10513726B244; JSESSIONID=400CC78DF5784F303702CC7F02C6122C\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -63,7 +65,7 @@ "Content-Type": "text/html;charset=UTF-8", "Content-Length": "468", "Date": "Thu, 28 Mar 2019 08:13:33 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "2b8cd757ab5ffba85acac26c008a1ffc", + "__X_HTTP_HEADERS_INTERGRATION": "Server: Apache-Coyote/1.1\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: 468\r\nDate: Thu, 28 Mar 2019 08:13:33 GMT\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "2b8cd757ab5ffba85acac26c008a1ffc" }, { @@ -87,7 +89,7 @@ "Accept-Language": "zh-CN,zh;q=0.8", "Cookie": "JSESSIONID=969AC5FBD069EE6218EB10513726B244; JSESSIONID=400CC78DF5784F303702CC7F02C6122C", "__X_HTTP_URL": "192.168.57.14:8080/fileupload/servlet/UploadHandleServlet", - "__X_HTTP_RAW_PAYLOAD_MD5": "550be33bf0ac01b6f7ac175bb8f4522a", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.57.14:8080\r\nConnection: keep-alive\r\nContent-Length: 449\r\nCache-Control: max-age=0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nOrigin: http://192.168.57.14:8080\r\nUser-Agent: Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36\r\nContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryAe47vGj7ybAe6RwO\r\nReferer: http://192.168.57.14:8080/fileupload/\r\nAccept-Encoding: gzip,deflate,sdch\r\nAccept-Language: zh-CN,zh;q=0.8\r\nCookie: JSESSIONID=969AC5FBD069EE6218EB10513726B244; JSESSIONID=400CC78DF5784F303702CC7F02C6122C\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "550be33bf0ac01b6f7ac175bb8f4522a" }, { @@ -102,7 +104,7 @@ "Content-Type": "text/html;charset=UTF-8", "Content-Length": "144", "Date": "Thu, 28 Mar 2019 08:13:37 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "3fa07f3ec9f9fefed96e9886f80760bb", + "__X_HTTP_HEADERS_INTERGRATION": "Server: Apache-Coyote/1.1\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: 144\r\nDate: Thu, 28 Mar 2019 08:13:37 GMT\r\n\r\n", "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3fa07f3ec9f9fefed96e9886f80760bb" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_post_s2c.json b/test/decoders/http/benchmarks/json/http_post_s2c.json new file mode 100644 index 0000000..f82f3a5 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_post_s2c.json @@ -0,0 +1,22 @@ +[ + { + "__X_HTTP_TUPLE4": "192.168.40.139:48662-107.155.25.121:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "Method Not Allowed", + "major_version": 1, + "minor_version": 1, + "status_code": 405, + "Date": "Thu, 30 May 2024 10:53:44 GMT", + "Content-Type": "text/html", + "Transfer-Encoding": "chunked", + "Connection": "keep-alive", + "X-Ser": "BC9_dx-lt-yd-zhejiang-jinhua-5-cache-1, BC194_lt-obgp-fujian-xiamen-33-cache-1, BC68_SG-singapore-singapore-8-cache-2, BC121_HK-xianggang-xianggang-4-cache-3", + "X-Cache": "MISS from BC121_HK-xianggang-xianggang-4-cache-3(baishan)", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Thu, 30 May 2024 10:53:44 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nX-Ser: BC9_dx-lt-yd-zhejiang-jinhua-5-cache-1, BC194_lt-obgp-fujian-xiamen-33-cache-1, BC68_SG-singapore-singapore-8-cache-2, BC121_HK-xianggang-xianggang-4-cache-3\r\nX-Cache: MISS from BC121_HK-xianggang-xianggang-4-cache-3(baishan)\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "1858899995d46bf1ba568aa7f11761dc" + } +] diff --git a/test/decoders/http/benchmarks/json/http_post_single_trans.json b/test/decoders/http/benchmarks/json/http_post_single_trans.json index 823c310..e6c1bdf 100644 --- a/test/decoders/http/benchmarks/json/http_post_single_trans.json +++ b/test/decoders/http/benchmarks/json/http_post_single_trans.json @@ -1,38 +1,40 @@ [ - { - "__X_HTTP_TUPLE4": "192.168.38.83.55186>192.168.40.139.8080" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 0, - "method": "POST", - "uri": "/", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Content-Type": "application/json", - "User-Agent": "PostmanRuntime/7.37.3", - "Accept": "*/*", - "Cache-Control": "no-cache", - "Postman-Token": "71a004ad-901b-4461-ac3c-db9adb303c47", - "Host": "192.168.40.139:8080", - "Accept-Encoding": "gzip, deflate, br", - "Connection": "keep-alive", - "Content-Length": "26", - "__X_HTTP_URL": "192.168.40.139:8080/", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "5ffe2871e6d5f6ee25ad7c1bfdd9f7b3" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 0, - "res_version": "1.0", - "res_status": "OK", - "major_version": 1, - "minor_version": 0, - "status_code": 200, - "Server": "BaseHTTP/0.6 Python/3.6.8", - "Date": "Mon, 08 Apr 2024 07:19:16 GMT", - "Content-length": "84", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "cd8a54dd3e915946c4df262111e5aa05" - } -]
\ No newline at end of file + { + "__X_HTTP_TUPLE4": "192.168.38.83:55186-192.168.40.139:8080-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "POST", + "uri": "/", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Content-Type": "application/json", + "User-Agent": "PostmanRuntime/7.37.3", + "Accept": "*/*", + "Cache-Control": "no-cache", + "Postman-Token": "71a004ad-901b-4461-ac3c-db9adb303c47", + "Host": "192.168.40.139:8080", + "Accept-Encoding": "gzip, deflate, br", + "Connection": "keep-alive", + "Content-Length": "26", + "__X_HTTP_URL": "192.168.40.139:8080/", + "__X_HTTP_HEADERS_INTERGRATION": "Content-Type: application/json\r\nUser-Agent: PostmanRuntime/7.37.3\r\nAccept: */*\r\nCache-Control: no-cache\r\nPostman-Token: 71a004ad-901b-4461-ac3c-db9adb303c47\r\nHost: 192.168.40.139:8080\r\nAccept-Encoding: gzip, deflate, br\r\nConnection: keep-alive\r\nContent-Length: 26\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "5ffe2871e6d5f6ee25ad7c1bfdd9f7b3" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.0", + "res_status": "OK", + "major_version": 1, + "minor_version": 0, + "status_code": 200, + "Server": "BaseHTTP/0.6 Python/3.6.8", + "Date": "Mon, 08 Apr 2024 07:19:16 GMT", + "Content-length": "84", + "__X_HTTP_HEADERS_INTERGRATION": "Server: BaseHTTP/0.6 Python/3.6.8\r\nDate: Mon, 08 Apr 2024 07:19:16 GMT\r\nContent-length: 84\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "cd8a54dd3e915946c4df262111e5aa05" + } +] diff --git a/test/decoders/http/benchmarks/json/http_put_continue100.json b/test/decoders/http/benchmarks/json/http_put_continue100.json new file mode 100644 index 0000000..eda56b9 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_put_continue100.json @@ -0,0 +1,44 @@ +[ + { + "__X_HTTP_TUPLE4": "20.132.32.101:49732-10.254.0.2:10003-6-0" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "Continue", + "major_version": 1, + "minor_version": 1, + "status_code": 100 + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "PUT", + "uri": "/upload", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "10.254.0.2:10003", + "Accept": "*/*", + "Content-Length": "440", + "Expect": "100-continue", + "__X_HTTP_URL": "10.254.0.2:10003/upload", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 10.254.0.2:10003\r\nAccept: */*\r\nContent-Length: 440\r\nExpect: 100-continue\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "0f877bf24817b059d121a24e7c3e3c11" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 1, + "res_version": "1.1", + "res_status": "OK", + "major_version": 1, + "minor_version": 1, + "status_code": 200, + "Date": "Wed, 27 Jul 2022 02:07:52 GMT", + "Content-Length": "123", + "Content-Type": "text/xml; charset=utf-8", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Wed, 27 Jul 2022 02:07:52 GMT\r\nContent-Length: 123\r\nContent-Type: text/xml; charset=utf-8\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c387cb453dac1f48217edc338d891602" + } +] diff --git a/test/decoders/http/benchmarks/json/http_req_1byte_sliding_window.json b/test/decoders/http/benchmarks/json/http_req_1byte_sliding_window.json index 13b360d..47b34e0 100644 --- a/test/decoders/http/benchmarks/json/http_req_1byte_sliding_window.json +++ b/test/decoders/http/benchmarks/json/http_req_1byte_sliding_window.json @@ -13,8 +13,9 @@ "User-Agent": "Wget/1.14 (linux-gnu)", "Accept": "*/*", "Host": "192.168.42.40", + "Connection": "Keep-Alive", "__X_HTTP_URL": "192.168.42.40/index.html", - "Connection": "Keep-Alive" + "__X_HTTP_HEADERS_INTERGRATION": "User-Agent: Wget/1.14 (linux-gnu)\r\nAccept: */*\r\nHost: 192.168.42.40\r\nConnection: Keep-Alive\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -29,7 +30,7 @@ "Content-type": "text/html", "Content-Length": "144", "Last-Modified": "Fri, 29 Dec 2023 08:50:53 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76" + "__X_HTTP_HEADERS_INTERGRATION": "Server: SimpleHTTP/0.6 Python/2.7.5\r\nDate: Fri, 29 Dec 2023 09:11:12 GMT\r\nContent-type: text/html\r\nContent-Length: 144\r\nLast-Modified: Fri, 29 Dec 2023 08:50:53 GMT\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_res_1byte_sliding_window.json b/test/decoders/http/benchmarks/json/http_res_1byte_sliding_window.json index f527839..bccbc7d 100644 --- a/test/decoders/http/benchmarks/json/http_res_1byte_sliding_window.json +++ b/test/decoders/http/benchmarks/json/http_res_1byte_sliding_window.json @@ -14,7 +14,8 @@ "Accept": "*/*", "Host": "192.168.40.137", "Connection": "Keep-Alive", - "__X_HTTP_URL": "192.168.40.137/index.html" + "__X_HTTP_URL": "192.168.40.137/index.html", + "__X_HTTP_HEADERS_INTERGRATION": "User-Agent: Wget/1.14 (linux-gnu)\r\nAccept: */*\r\nHost: 192.168.40.137\r\nConnection: Keep-Alive\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -29,7 +30,7 @@ "Content-type": "text/html", "Content-Length": "144", "Last-Modified": "Fri, 29 Dec 2023 08:50:53 GMT", - "__X_HTTP_RAW_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76" + "__X_HTTP_HEADERS_INTERGRATION": "Server: SimpleHTTP/0.6 Python/2.7.5\r\nDate: Fri, 29 Dec 2023 09:32:21 GMT\r\nContent-type: text/html\r\nContent-Length: 144\r\nLast-Modified: Fri, 29 Dec 2023 08:50:53 GMT\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_res_gzip.json b/test/decoders/http/benchmarks/json/http_res_gzip.json index 9d3e9c7..355c4b3 100644 --- a/test/decoders/http/benchmarks/json/http_res_gzip.json +++ b/test/decoders/http/benchmarks/json/http_res_gzip.json @@ -19,7 +19,8 @@ "Keep-Alive": "300", "Connection": "keep-alive", "Cookie": "FGNCLIID=05c04axp1yaqynldtcdiwis0ag1", - "__X_HTTP_URL": "cerberus/test/ethereal.html" + "__X_HTTP_URL": "cerberus/test/ethereal.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: cerberus\r\nUser-Agent: Mozilla/5.0 (X11; U; Linux ppc; rv:1.7.3) Gecko/20041004 Firefox/0.10.1\r\nAccept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\nCookie: FGNCLIID=05c04axp1yaqynldtcdiwis0ag1\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -39,7 +40,7 @@ "Content-Length": "92", "Connection": "close", "Content-Type": "text/html; charset=UTF-8", - "__X_HTTP_RAW_PAYLOAD_MD5": "dc2c0aff94148ca24acb516113a4d018", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "61b9e97f96045587bb55db781f7543ad" + "__X_HTTP_HEADERS_INTERGRATION": "Date: Fri, 29 Oct 2004 05:21:00 GMT\r\nServer: Apache/2.0.50 (Fedora)\r\nLast-Modified: Fri, 29 Oct 2004 05:20:21 GMT\r\nETag: \"126e1f-6d-371b2f40\"\r\nAccept-Ranges: bytes\r\nVary: Accept-Encoding\r\nContent-Encoding: gzip\r\nContent-Length: 92\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "61b9e97f96045587bb55db781f7543ad" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_session_exception_c2s.json b/test/decoders/http/benchmarks/json/http_session_exception_c2s.json new file mode 100644 index 0000000..5a0c0d9 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_session_exception_c2s.json @@ -0,0 +1,26 @@ +[ + { + "__X_HTTP_TUPLE4": "192.168.38.83:55186-192.168.40.139:8080-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "POST", + "uri": "/", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Content-Type": "application/json", + "User-Agent": "PostmanRuntime/7.37.3", + "Accept": "*/*", + "Cache-Control": "no-cache", + "Postman-Token": "71a004ad-901b-4461-ac3c-db9adb303c47", + "Host": "192.168.40.139:8080", + "Accept-Encoding": "gzip, deflate, br", + "Connection": "keep-alive", + "Content-Length": "99", + "__X_HTTP_URL": "192.168.40.139:8080/", + "__X_HTTP_HEADERS_INTERGRATION": "Content-Type: application/json\r\nUser-Agent: PostmanRuntime/7.37.3\r\nAccept: */*\r\nCache-Control: no-cache\r\nPostman-Token: 71a004ad-901b-4461-ac3c-db9adb303c47\r\nHost: 192.168.40.139:8080\r\nAccept-Encoding: gzip, deflate, br\r\nConnection: keep-alive\r\nContent-Length: 99\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "a69d01b43757e639dc2b015bafcacda9" + } +] diff --git a/test/decoders/http/benchmarks/json/http_session_exception_s2c.json b/test/decoders/http/benchmarks/json/http_session_exception_s2c.json new file mode 100644 index 0000000..857071e --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_session_exception_s2c.json @@ -0,0 +1,35 @@ +[ + { + "__X_HTTP_TUPLE4": "192.168.38.73:50806-192.168.40.137:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "GET", + "uri": "/index.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "192.168.40.137", + "User-Agent": "curl/7.79.1", + "Accept": "*/*", + "__X_HTTP_URL": "192.168.40.137/index.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.40.137\r\nUser-Agent: curl/7.79.1\r\nAccept: */*\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.0", + "res_status": "OK", + "major_version": 1, + "minor_version": 0, + "status_code": 200, + "Server": "SimpleHTTP/0.6 Python/2.7.5", + "Date": "Thu, 30 Nov 2023 08:42:24 GMT", + "Content-type": "text/html", + "Content-Length": "999", + "Last-Modified": "Thu, 30 Nov 2023 08:38:54 GMT", + "__X_HTTP_HEADERS_INTERGRATION": "Server: SimpleHTTP/0.6 Python/2.7.5\r\nDate: Thu, 30 Nov 2023 08:42:24 GMT\r\nContent-type: text/html\r\nContent-Length: 999\r\nLast-Modified: Thu, 30 Nov 2023 08:38:54 GMT\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "f31e3caabfd0f38ed179b6ad262d857e" + } +] diff --git a/test/decoders/http/benchmarks/json/http_trans_pipeline.json b/test/decoders/http/benchmarks/json/http_trans_pipeline.json index 4bd0879..f803a7a 100644 --- a/test/decoders/http/benchmarks/json/http_trans_pipeline.json +++ b/test/decoders/http/benchmarks/json/http_trans_pipeline.json @@ -1,389 +1,503 @@ [ - { - "__X_HTTP_TUPLE4": "223.72.39.14:2545-192.168.182.147:80-6-0" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 0, - "method": "GET", - "uri": "/postinfo.html", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/postinfo.html" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 1, - "method": "GET", - "uri": "/_vti_bin/_vti_aut/author.dll", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.dll" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 2, - "method": "GET", - "uri": "/_vti_bin/_vti_aut/author.exe", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.exe" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 3, - "method": "GET", - "uri": "/_vti_bin/_vti_aut/dvwssr.dll", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/dvwssr.dll" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 4, - "method": "GET", - "uri": "/_vti_bin/_vti_adm/admin.dll", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.dll" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 5, - "method": "GET", - "uri": "/_vti_bin/_vti_adm/admin.exe", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.exe" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 6, - "method": "GET", - "uri": "/_vti_bin/fpcount.exe?Page=default.asp|Image=3", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/fpcount.exe?Page=default.asp|Image=3" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 0, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:01 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "32dc0b2772bd73a952abba009291a399", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "32dc0b2772bd73a952abba009291a399" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 1, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:02 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "db2ff8008149d8e70d8a2929acbb0f56", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "db2ff8008149d8e70d8a2929acbb0f56" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 2, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:03 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "f5df152f7d8f34c630f298d2fcb46ed3", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "f5df152f7d8f34c630f298d2fcb46ed3" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 3, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:04 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "73e98ca7b62764869357b3e3c40dcd68", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "73e98ca7b62764869357b3e3c40dcd68" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 4, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:05 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "a5733c8989bde7f08506fa68c20f0c62", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "a5733c8989bde7f08506fa68c20f0c62" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 7, - "method": "GET", - "uri": "/_vti_bin/shtml.dll", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/shtml.dll", - "Connection": "keep-alive" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 8, - "method": "GET", - "uri": "/_vti_bin/shtml.exe", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_bin/shtml.exe" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 9, - "method": "GET", - "uri": "/_vti_pvt/_x_todo.htm", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/_x_todo.htm" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 10, - "method": "GET", - "uri": "/_vti_pvt/_x_todoh.htm", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/_x_todoh.htm" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 11, - "method": "GET", - "uri": "/_vti_pvt/access.cnf", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/access.cnf" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 12, - "method": "GET", - "uri": "/_vti_pvt/administrator.pwd", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/administrator.pwd" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 13, - "method": "GET", - "uri": "/_vti_pvt/administrators.pwd", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/administrators.pwd" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 14, - "method": "GET", - "uri": "/_vti_pvt/authors.pwd", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/authors.pwd" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 5, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:06 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "4bc0dde3722f76d60fef6f1d878cbb14", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "4bc0dde3722f76d60fef6f1d878cbb14" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 6, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:07 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "728dc2eafd49c9be8149add7c6aff207", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "728dc2eafd49c9be8149add7c6aff207" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 7, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:08 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "0cde98e33181ee0ded49e8d0a3178d55", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "0cde98e33181ee0ded49e8d0a3178d55" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 8, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:09 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "d627268e0aba817d818b6e2b7e41aa11", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d627268e0aba817d818b6e2b7e41aa11" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 9, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:10 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "e99d9829d50bd94b3497b91011f6e349", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "e99d9829d50bd94b3497b91011f6e349" - }, - { - "__X_HTTP_TRANSACTION": "request", - "__X_HTTP_TRANSACTION_SEQ": 15, - "method": "GET", - "uri": "/_vti_pvt/bots.cnf", - "req_version": "1.1", - "major_version": 1, - "minor_version": 1, - "Host": "116.181.2.152", - "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", - "Connection": "keep-alive", - "__X_HTTP_URL": "116.181.2.152/_vti_pvt/bots.cnf" - }, - { - "__X_HTTP_TRANSACTION": "response", - "__X_HTTP_TRANSACTION_SEQ": 10, - "res_version": "1.1", - "res_status": "Not Found", - "major_version": 1, - "minor_version": 1, - "status_code": 404, - "Server": "nginx", - "Date": "Thu, 29 Oct 2020 09:59:11 GMT", - "Content-Type": "text/html", - "Content-Length": "146", - "Connection": "keep-alive", - "__X_HTTP_RAW_PAYLOAD_MD5": "99a813d29c5da4e6f7269be4c1a31c8e", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "99a813d29c5da4e6f7269be4c1a31c8e" - } -]
\ No newline at end of file + { + "__X_HTTP_TUPLE4": "223.72.39.14:2545-192.168.182.147:80-6-0" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 0, + "method": "GET", + "uri": "/postinfo.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/postinfo.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 1, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 2, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 3, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/dvwssr.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/dvwssr.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 4, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 5, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 6, + "method": "GET", + "uri": "/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 0, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:01 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:01 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "32dc0b2772bd73a952abba009291a399" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 1, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:02 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:02 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "db2ff8008149d8e70d8a2929acbb0f56" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 2, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:03 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:03 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "f5df152f7d8f34c630f298d2fcb46ed3" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 3, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:04 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:04 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "73e98ca7b62764869357b3e3c40dcd68" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 4, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:05 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:05 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "a5733c8989bde7f08506fa68c20f0c62" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 7, + "method": "GET", + "uri": "/postinfo.html", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/postinfo.html", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 8, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 9, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/author.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/author.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 10, + "method": "GET", + "uri": "/_vti_bin/_vti_aut/dvwssr.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_aut/dvwssr.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 11, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 12, + "method": "GET", + "uri": "/_vti_bin/_vti_adm/admin.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/_vti_adm/admin.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 13, + "method": "GET", + "uri": "/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/fpcount.exe?Page=default.asp|Image=3", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 14, + "method": "GET", + "uri": "/_vti_bin/shtml.dll", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/shtml.dll", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 15, + "method": "GET", + "uri": "/_vti_bin/shtml.exe", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_bin/shtml.exe", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 16, + "method": "GET", + "uri": "/_vti_pvt/_x_todo.htm", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/_x_todo.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 17, + "method": "GET", + "uri": "/_vti_pvt/_x_todoh.htm", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/_x_todoh.htm", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 18, + "method": "GET", + "uri": "/_vti_pvt/access.cnf", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/access.cnf", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 19, + "method": "GET", + "uri": "/_vti_pvt/administrator.pwd", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/administrator.pwd", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 20, + "method": "GET", + "uri": "/_vti_pvt/administrators.pwd", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/administrators.pwd", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 21, + "method": "GET", + "uri": "/_vti_pvt/authors.pwd", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/authors.pwd", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "request", + "__X_HTTP_TRANSACTION_SEQ": 22, + "method": "GET", + "uri": "/_vti_pvt/bots.cnf", + "req_version": "1.1", + "major_version": 1, + "minor_version": 1, + "Host": "116.181.2.152", + "User-Agent": "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", + "Connection": "keep-alive", + "__X_HTTP_URL": "116.181.2.152/_vti_pvt/bots.cnf", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 116.181.2.152\r\nUser-Agent: Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)\r\nConnection: keep-alive\r\n\r\n" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 5, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:06 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:06 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "4bc0dde3722f76d60fef6f1d878cbb14" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 6, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:07 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:07 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "728dc2eafd49c9be8149add7c6aff207" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 7, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:08 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:08 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "0cde98e33181ee0ded49e8d0a3178d55" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 8, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:09 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:09 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d627268e0aba817d818b6e2b7e41aa11" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 9, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:10 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:10 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "e99d9829d50bd94b3497b91011f6e349" + }, + { + "__X_HTTP_TRANSACTION": "response", + "__X_HTTP_TRANSACTION_SEQ": 10, + "res_version": "1.1", + "res_status": "Not Found", + "major_version": 1, + "minor_version": 1, + "status_code": 404, + "Server": "nginx", + "Date": "Thu, 29 Oct 2020 09:59:11 GMT", + "Content-Type": "text/html", + "Content-Length": "146", + "Connection": "keep-alive", + "__X_HTTP_HEADERS_INTERGRATION": "Server: nginx\r\nDate: Thu, 29 Oct 2020 09:59:11 GMT\r\nContent-Type: text/html\r\nContent-Length: 146\r\nConnection: keep-alive\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "99a813d29c5da4e6f7269be4c1a31c8e" + } +] diff --git a/test/decoders/http/benchmarks/json/http_upgrade_websocket.json b/test/decoders/http/benchmarks/json/http_upgrade_websocket.json index 6a7dfc3..05ae445 100644 --- a/test/decoders/http/benchmarks/json/http_upgrade_websocket.json +++ b/test/decoders/http/benchmarks/json/http_upgrade_websocket.json @@ -23,7 +23,8 @@ "Cookie": "s_cc=true; s_sq=%5B%5BB%5D%5D; iwe_user_noticecount_urn%3amace%3aucla.edu%3appid%3aperson%3a1223EF7211FC4EC1965579D0B8D85FBA=2; __utma=125574670.1759122974.1407127284.1407127284.1415755402.2; __utmc=125574670; __utma=126236063.2139843507.1390525421.1433785187.1435706244.46; __utmc=126236063; __utmz=126236063.1427934389.33.5.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _ucla_sso=2015-07-02T11%3A34%3A30-07%3A00; _ga=GA1.2.1759122974.1407127284", "Sec-WebSocket-Key": "sgD1adxQ3mk6BbBqab7owA==", "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits", - "__X_HTTP_URL": "spurs.cs.ucla.edu:9696/" + "__X_HTTP_URL": "spurs.cs.ucla.edu:9696/", + "__X_HTTP_HEADERS_INTERGRATION": "Host: spurs.cs.ucla.edu:9696\r\nConnection: Upgrade\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUpgrade: websocket\r\nOrigin: null\r\nSec-WebSocket-Version: 13\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36\r\nAccept-Encoding: gzip, deflate, sdch\r\nAccept-Language: en-US,en;q=0.8,lv;q=0.6,ru;q=0.4\r\nCookie: s_cc=true; s_sq=%5B%5BB%5D%5D; iwe_user_noticecount_urn%3amace%3aucla.edu%3appid%3aperson%3a1223EF7211FC4EC1965579D0B8D85FBA=2; __utma=125574670.1759122974.1407127284.1407127284.1415755402.2; __utmc=125574670; __utma=126236063.2139843507.1390525421.1433785187.1435706244.46; __utmc=126236063; __utmz=126236063.1427934389.33.5.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _ucla_sso=2015-07-02T11%3A34%3A30-07%3A00; _ga=GA1.2.1759122974.1407127284\r\nSec-WebSocket-Key: sgD1adxQ3mk6BbBqab7owA==\r\nSec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -36,6 +37,7 @@ "Connection": "upgrade", "Sec-WebSocket-Accept": "FRh9fmH0UaoLdY5BSFO4hP2Pcjw=", "Server": "WebSocket++/0.5.1", - "Upgrade": "websocket" + "Upgrade": "websocket", + "__X_HTTP_HEADERS_INTERGRATION": "Connection: upgrade\r\nSec-WebSocket-Accept: FRh9fmH0UaoLdY5BSFO4hP2Pcjw=\r\nServer: WebSocket++/0.5.1\r\nUpgrade: websocket\r\n\r\n" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_url_test_with_host.json b/test/decoders/http/benchmarks/json/http_url_test_with_host.json index ab91ded..59f98cc 100644 --- a/test/decoders/http/benchmarks/json/http_url_test_with_host.json +++ b/test/decoders/http/benchmarks/json/http_url_test_with_host.json @@ -1,6 +1,6 @@ [ { - "__X_HTTP_TUPLE4": "192.168.244.1.52412>192.168.244.128.8080" + "__X_HTTP_TUPLE4": "192.168.244.1:52412-192.168.244.128:8080-6-0" }, { "__X_HTTP_TRANSACTION": "request", @@ -17,7 +17,8 @@ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", - "__X_HTTP_URL": "192.168.244.128:8080/urltest/ttt" + "__X_HTTP_URL": "192.168.244.128:8080/urltest/ttt", + "__X_HTTP_HEADERS_INTERGRATION": "Host: 192.168.244.128:8080\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -30,6 +31,7 @@ "Server": "BaseHTTP/0.6 Python/3.6.8", "Date": "Thu, 14 Mar 2024 07:37:43 GMT", "Content-type": "application/json", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "49dfdd54b01cbcd2d2ab5e9e5ee6b9b9" + "__X_HTTP_HEADERS_INTERGRATION": "Server: BaseHTTP/0.6 Python/3.6.8\r\nDate: Thu, 14 Mar 2024 07:37:43 GMT\r\nContent-type: application/json\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "49dfdd54b01cbcd2d2ab5e9e5ee6b9b9" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_url_test_without_host.json b/test/decoders/http/benchmarks/json/http_url_test_without_host.json index 09427a7..3fc4621 100644 --- a/test/decoders/http/benchmarks/json/http_url_test_without_host.json +++ b/test/decoders/http/benchmarks/json/http_url_test_without_host.json @@ -11,7 +11,8 @@ "major_version": 1, "minor_version": 1, "User-Agent": "no h", - "__X_HTTP_URL": "192.168.244.128:8080/urltest/ttt" + "__X_HTTP_URL": "192.168.244.128:8080/urltest/ttt", + "__X_HTTP_HEADERS_INTERGRATION": "User-Agent: no h\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -24,7 +25,7 @@ "Server": "BaseHTTP/0.6 Python/3.6.8", "Date": "Thu, 14 Mar 2024 06:15:20 GMT", "Content-type": "application/json", - "__X_HTTP_RAW_PAYLOAD_MD5": "49dfdd54b01cbcd2d2ab5e9e5ee6b9b9", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "49dfdd54b01cbcd2d2ab5e9e5ee6b9b9" + "__X_HTTP_HEADERS_INTERGRATION": "Server: BaseHTTP/0.6 Python/3.6.8\r\nDate: Thu, 14 Mar 2024 06:15:20 GMT\r\nContent-type: application/json\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "49dfdd54b01cbcd2d2ab5e9e5ee6b9b9" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_url_test_without_host_v6.json b/test/decoders/http/benchmarks/json/http_url_test_without_host_v6.json index 2bc3934..7af1493 100644 --- a/test/decoders/http/benchmarks/json/http_url_test_without_host_v6.json +++ b/test/decoders/http/benchmarks/json/http_url_test_without_host_v6.json @@ -19,7 +19,8 @@ "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "If-Modified-Since": "Mon, 05 Aug 2024 00:26:26 GMT", - "__X_HTTP_URL": "2408:8722:840:f8::83:80/dist/aria.js?appid=1cea560ed256bea7ae52761bd9042164" + "__X_HTTP_URL": "2408:8722:840:f8::83:80/dist/aria.js?appid=1cea560ed256bea7ae52761bd9042164", + "__X_HTTP_HEADERS_INTERGRATION": "_HOT: ent.govwza.cn\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36\r\nDNT: 1\r\nAccept: */*\r\nReferer: http://www.airchina.com/\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\nIf-Modified-Since: Mon, 05 Aug 2024 00:26:26 GMT\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -37,6 +38,7 @@ "Connection": "close", "X-Cache-Lookup": "Cache Hit", "Access-Control-Allow-Origin": "*", - "Cache-Control": "max-age=86400" + "Cache-Control": "max-age=86400", + "__X_HTTP_HEADERS_INTERGRATION": "Date: Mon, 05 Aug 2024 07:51:04 GMT\r\nContent-Type: application/javascript;charset=UTF-8\r\nVary: origin,access-control-request-method,access-control-request-headers,accept-encoding\r\nServer: SLT-MID\r\nX-NWS-LOG-UUID: 1242198743243161630\r\nConnection: close\r\nX-Cache-Lookup: Cache Hit\r\nAccess-Control-Allow-Origin: *\r\nCache-Control: max-age=86400\r\n\r\n" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/json/http_whitespace_before_header.json b/test/decoders/http/benchmarks/json/http_whitespace_before_header.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/test/decoders/http/benchmarks/json/http_whitespace_before_header.json @@ -0,0 +1 @@ +[] diff --git a/test/decoders/http/benchmarks/json/http_zlib_deadlock.json b/test/decoders/http/benchmarks/json/http_zlib_deadlock.json index 0ea9b7f..425dab5 100644 --- a/test/decoders/http/benchmarks/json/http_zlib_deadlock.json +++ b/test/decoders/http/benchmarks/json/http_zlib_deadlock.json @@ -17,7 +17,8 @@ "Host": "xmc.ximalaya.com", "Connection": "Keep-Alive", "Accept-Encoding": "gzip", - "__X_HTTP_URL": "xmc.ximalaya.com/xmlymain-login-web/login/ts-1657244122966?appId=mainApp&appStatus=2&clientType=android&isFirstReq=false&lastSuccessIp=180.153.250.247:3814&userId=175776850" + "__X_HTTP_URL": "xmc.ximalaya.com/xmlymain-login-web/login/ts-1657244122966?appId=mainApp&appStatus=2&clientType=android&isFirstReq=false&lastSuccessIp=180.153.250.247:3814&userId=175776850", + "__X_HTTP_HEADERS_INTERGRATION": "Cookie2: $version=1\r\nAccept: */*\r\nuser-agent: ting_xmim1.0(Mi+10,Android29)\r\nxmTraceId: f30c74a5-c62d-46a0-80bd-d51dbf139976163\r\nHost: xmc.ximalaya.com\r\nConnection: Keep-Alive\r\nAccept-Encoding: gzip\r\n\r\n" }, { "__X_HTTP_TRANSACTION": "response", @@ -37,7 +38,7 @@ "X-NWS-LOG-UUID": "12197298277844186084", "Connection": "keep-alive", "X-Cache-Lookup": "Cache Miss", - "__X_HTTP_RAW_PAYLOAD_MD5": "3979c98326c16f482f364ee94be3c382", - "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d383effc464d797b5fdb4d98f4ab0111" + "__X_HTTP_HEADERS_INTERGRATION": "Server: Tengine\r\nDate: Fri, 08 Jul 2022 01:35:24 GMT\r\nContent-Type: application/json;charset=UTF-8\r\nVary: Accept-Encoding\r\nx-idc-gw: 0\r\nContent-Encoding: gzip\r\nTransfer-Encoding: chunked\r\nX-NWS-LOG-UUID: 12197298277844186084\r\nConnection: keep-alive\r\nX-Cache-Lookup: Cache Miss\r\n\r\n", + "__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "d383effc464d797b5fdb4d98f4ab0111" } ]
\ No newline at end of file diff --git a/test/decoders/http/benchmarks/pcap/http_connect_single.pcap b/test/decoders/http/benchmarks/pcap/http_connect_single.pcap Binary files differnew file mode 100644 index 0000000..791ce05 --- /dev/null +++ b/test/decoders/http/benchmarks/pcap/http_connect_single.pcap diff --git a/test/decoders/http/benchmarks/pcap/http_incomplete_header.pcap b/test/decoders/http/benchmarks/pcap/http_incomplete_header.pcap Binary files differnew file mode 100644 index 0000000..0e07df9 --- /dev/null +++ b/test/decoders/http/benchmarks/pcap/http_incomplete_header.pcap diff --git a/test/decoders/http/benchmarks/pcap/http_no_cr_line_eof.pcap b/test/decoders/http/benchmarks/pcap/http_no_cr_line_eof.pcap Binary files differnew file mode 100644 index 0000000..63763cd --- /dev/null +++ b/test/decoders/http/benchmarks/pcap/http_no_cr_line_eof.pcap diff --git a/test/decoders/http/benchmarks/pcap/http_put_continue100.pcap b/test/decoders/http/benchmarks/pcap/http_put_continue100.pcap Binary files differnew file mode 100644 index 0000000..7f43528 --- /dev/null +++ b/test/decoders/http/benchmarks/pcap/http_put_continue100.pcap diff --git a/test/decoders/http/http_gtest.cpp b/test/decoders/http/http_gtest.cpp index 4f99fb6..300e221 100644 --- a/test/decoders/http/http_gtest.cpp +++ b/test/decoders/http/http_gtest.cpp @@ -3,14 +3,45 @@ #include <stdio.h> #include "zlib.h" #include "md5/md5.h" +#include "stellar/http.h" +#include "http_decoder.h" +#include "http_decoder_utils.h" +#include "http_decoder_half.h" +#include "http_decoder_decompress.h" +#ifdef __cplusplus +extern "C" +{ +#endif #include "http.h" -#include "http_decoder_private.h" +#include "llhttp.h" #include "brotli/decode.h" #include "brotli/encode.h" -#include "event2/buffer.h" +#ifdef __cplusplus +} +#endif #define ZIP_UNZIP_TEST_DATA_LEN (1024 * 1024) void httpd_url_decode(const char *string, size_t length, char *ostring, size_t *olen); +TEST(http_url_decoder, onebyte_ascii) +{ + char decoded_url_buf[2048] = {}; + size_t decode_url_buf_len = sizeof(decoded_url_buf); + const char *encode_url = "h"; + size_t decoded_url_len = http_url_decode(encode_url, strlen(encode_url), decoded_url_buf, decode_url_buf_len); + EXPECT_EQ(decoded_url_len, strlen("h")); + EXPECT_STREQ("h", decoded_url_buf); +} + +TEST(http_url_decoder, onebyte_hex) +{ + char decoded_url_buf[2048] = {}; + size_t decode_url_buf_len = sizeof(decoded_url_buf); + const char *encode_url = "%FF"; + size_t decoded_url_len = http_url_decode(encode_url, strlen(encode_url), decoded_url_buf, decode_url_buf_len); + EXPECT_EQ(decoded_url_len, 1); + EXPECT_EQ((unsigned char)decoded_url_buf[0], 0xFF); +} + TEST(http_url_decoder, none_encode) { char decoded_url_buf[2048] = {}; @@ -60,27 +91,55 @@ TEST(http_url_decoder, chinese2) EXPECT_EQ(decoded_url_len, strlen("http://www.baidu.com/\xE7\xBC\x96\xE8\xA7\xA3\xE7\xA0\x81\xE6\xB5\x8B\xE8\xAF\x95\xE5\x93\x88\xE5\x93\x88")); } -TEST(http, event_buffer) +TEST(http, buffer) { - struct evbuffer *evbuf = evbuffer_new(); + struct http_buffer *hbuf = http_buffer_new(); - evbuffer_add(evbuf, "hello", 5); + http_buffer_add(hbuf, "hello", 5); + + char *data; + size_t len; + http_buffer_read(hbuf, &data, &len); - size_t len = evbuffer_get_length(evbuf); - EXPECT_EQ(len, 5); - char outbuf[16]; - len = evbuffer_copyout(evbuf, outbuf, sizeof(outbuf)); EXPECT_EQ(len, 5); - EXPECT_EQ(0, memcmp(outbuf, "hello", 5)); + EXPECT_EQ(0, memcmp(data, "hello", 5)); - evbuffer_add(evbuf, ",", 1); - evbuffer_add(evbuf, "world", 5); + http_buffer_add(hbuf, ",", 1); + http_buffer_add(hbuf, "world", 5); - len = evbuffer_copyout(evbuf, outbuf, sizeof(outbuf)); + http_buffer_read(hbuf, &data, &len); EXPECT_EQ(len, 11); - EXPECT_EQ(0, memcmp(outbuf, "hello,world", 11)); + EXPECT_EQ(0, memcmp(data, "hello,world", 11)); + + http_buffer_free(hbuf); +} + +TEST(http, strtoll) +{ + ASSERT_EQ(0, http_strtoll(NULL, 0)); + ASSERT_EQ(0, http_strtoll("", 1)); + ASSERT_EQ(0, http_strtoll("abcd", 4)); + ASSERT_EQ(123, http_strtoll("123", 3)); + ASSERT_EQ(123, http_strtoll(" 123", 4)); + ASSERT_EQ(123, http_strtoll(" 123\r\n", 6)); + ASSERT_EQ(123456789, http_strtoll("123456789", 9)); +} - evbuffer_free(evbuf); +TEST(http, line_header_is_completed) +{ + ASSERT_EQ(0, http_line_header_completed(NULL, 0)); + ASSERT_EQ(0, http_line_header_completed("GET ", 4)); + ASSERT_EQ(0, http_line_header_completed("GET / HTTP/1.1\r\n", strlen("GET / HTTP/1.1\r\n"))); + ASSERT_EQ(strlen("GET / HTTP/1.1\r\n\r\n"), http_line_header_completed("GET / HTTP/1.1\r\n\r\n", strlen("GET / HTTP/1.1\r\n\r\n"))); +} + +TEST(http, identify) +{ + ASSERT_EQ(-1, http_protocol_identify(NULL, 0)); + ASSERT_EQ(-1, http_protocol_identify("123", 3)); + ASSERT_EQ(1, http_protocol_identify("GET / HTTP/1.1\r\n", strlen("GET / HTTP/1.1\r\n"))); + ASSERT_EQ(1, http_protocol_identify("POST / HTTP/1.1\r\n", strlen("POST / HTTP/1.1\r\n"))); + ASSERT_EQ(1, http_protocol_identify("HTTP/1.1 200 OK\r\n", strlen("HTTP/1.1 200 OK\r\n"))); } static int http_compress_use_deflate(unsigned char *indata, size_t indata_len, unsigned char *zip_data, size_t *zip_data_len) @@ -351,6 +410,230 @@ TEST(http, DISABLED_brotli_ascii) free(raw_data); } +#include "http_decoder_half.c" +#include "http_decoder_llhttp_wrap.c" +struct gtest_llhttp_callback_flag +{ + uint8_t on_message_begin; + uint8_t on_message_complete; + uint8_t on_uri; + uint8_t on_uri_complete; + uint8_t on_status; + uint8_t on_status_complete; + uint8_t on_method; + uint8_t on_method_complete; + uint8_t on_version; + uint8_t on_version_complete; + uint8_t on_header_field; + uint8_t on_header_field_complete; + uint8_t on_header_value; + uint8_t on_header_value_complete; + uint8_t on_chunk_header; + uint8_t on_chunk_header_complete; + uint8_t on_headers_complete; + uint8_t on_body; +}; +static struct gtest_llhttp_callback_flag gtest_llhttp_cb_flags; +static struct http_half_data gtest_flow_data; + +static int gtest_llhttp_on_message_begin(UNUSED llhttp_t *http) +{ + struct http_half_parser *parser = container_of(http, struct http_half_parser, llhttp_parser); + struct http_half *flow = parser->flow_ref; + flow->event = HTTP_EVENT_REQ_INIT; + gtest_llhttp_cb_flags.on_message_begin++; + return 0; +} +static int gtest_llhttp_on_message_complete(llhttp_t *http) +{ + struct http_half_parser *parser = container_of(http, struct http_half_parser, llhttp_parser); + struct http_half *flow = parser->flow_ref; + flow->event = __HTTP_EVENT_RESERVED; + flow->shaper.headers_cache = NULL; + gtest_llhttp_cb_flags.on_message_complete++; + return 0; +} +static int gtest_llhttp_on_headers_complete(llhttp_t *http) +{ + struct http_half_parser *parser = container_of(http, struct http_half_parser, llhttp_parser); + struct http_half *flow = parser->flow_ref; + flow->event = HTTP_EVENT_REQ_HDR_END; + gtest_llhttp_cb_flags.on_headers_complete++; + return 0; +} +static int gtest_llhttp_on_uri(UNUSED llhttp_t *http, UNUSED const char *at, UNUSED size_t length) +{ + gtest_llhttp_cb_flags.on_uri++; + return 0; +} +static int gtest_llhttp_on_method(UNUSED llhttp_t *http, UNUSED const char *at, UNUSED size_t length) +{ + gtest_llhttp_cb_flags.on_method++; + return 0; +} +static int gtest_llhttp_on_version(UNUSED llhttp_t *http, UNUSED const char *at, UNUSED size_t length) +{ + gtest_llhttp_cb_flags.on_version++; + return 0; +} +static int gtest_llhttp_on_body(UNUSED llhttp_t *http, UNUSED const char *at, UNUSED size_t length) +{ + gtest_llhttp_cb_flags.on_body++; + return 0; +} + +static void gtest_llhttp_init(struct http_half *flow) +{ + memset(flow, 0, sizeof(struct http_half)); + flow->flow_data = >est_flow_data; + flow->parser.flow_ref = flow; + llhttp_settings_init(&flow->parser.settings); + memset(>est_llhttp_cb_flags, 0, sizeof(gtest_llhttp_cb_flags)); + flow->parser.settings.on_message_begin = gtest_llhttp_on_message_begin; + flow->parser.settings.on_message_complete = gtest_llhttp_on_message_complete; + flow->parser.settings.on_url = gtest_llhttp_on_uri; + flow->parser.settings.on_method = gtest_llhttp_on_method; + flow->parser.settings.on_version = gtest_llhttp_on_version; + flow->parser.settings.on_body = gtest_llhttp_on_body; + flow->parser.settings.on_headers_complete = gtest_llhttp_on_headers_complete; + + llhttp_init(&flow->parser.llhttp_parser, HTTP_BOTH, &flow->parser.settings); +} + +TEST(http, stage_request_completed) +{ + const char *newdata = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: keep-alive\r\n\r\n"; + size_t new_datalen = strlen(newdata); + struct http_half flow = {}; + gtest_llhttp_init(&flow); + + http_flow_stage_shaping(&flow, newdata, new_datalen); + + llhttp_finish(&flow.parser.llhttp_parser); + http_buffer_free(flow.shaper.headers_cache); + + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_message_begin); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_method); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_uri); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_version); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_message_complete); +} + +TEST(http, headers_extract) +{ + const char *raw_data = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: keep-alive\r\n\r\n"; + const char *headers_start, *headers_end; + http_truncate_extract_headers(raw_data, strlen(raw_data), &headers_start, &headers_end); + ASSERT_TRUE(headers_start != NULL); + ASSERT_TRUE(headers_end != NULL); + ASSERT_EQ(0, memcmp(headers_start, "Host: www.example.com\r\nConnection: keep-alive\r\n\r\n", headers_end - headers_start)); +} + +TEST(http, stage_request_with_body) +{ + const char *newdata = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,world"; + size_t new_datalen = strlen(newdata); + struct http_half flow = {}; + gtest_llhttp_init(&flow); + + gtest_flow_data.header.content_length = 11; + http_flow_stage_shaping(&flow, newdata, new_datalen); + + llhttp_finish(&flow.parser.llhttp_parser); + http_buffer_free(flow.shaper.headers_cache); + + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_message_begin); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_method); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_uri); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_version); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_body); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_message_complete); +} + +TEST(http, stage_request_with_body_pipeline_many) +{ + const char *newdata = "GET / HTTP/1.1\r\nHost: www.example1.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,worldGET / HTTP/1.1\r\nHost: www.example2.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,secndGET / HTTP/1.1\r\nHost: www.example3.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,third"; + size_t new_datalen = strlen(newdata); + struct http_half flow = {}; + gtest_llhttp_init(&flow); + + gtest_flow_data.header.content_length = 11; + http_flow_stage_shaping(&flow, newdata, new_datalen); + + llhttp_finish(&flow.parser.llhttp_parser); + http_buffer_free(flow.shaper.headers_cache); + + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_message_begin); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_method); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_uri); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_version); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_body); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_message_complete); +} + +TEST(http, stage_request_with_body_pipeline_many_one_by_one) +{ + const char *newdata = "GET / HTTP/1.1\r\nHost: www.example1.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,worldGET / HTTP/1.1\r\nHost: www.example2.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,secndGET / HTTP/1.1\r\nHost: www.example3.com\r\nConnection: keep-alive\r\nContent-Length: 11\r\n\r\nhello,third"; + size_t new_datalen = strlen(newdata); + struct http_half flow = {}; + gtest_llhttp_init(&flow); + + gtest_flow_data.header.content_length = 11; + + for (size_t i = 0; i < new_datalen; i++) + { + http_flow_stage_shaping(&flow, newdata + i, 1); + } + + llhttp_finish(&flow.parser.llhttp_parser); + http_buffer_free(flow.shaper.headers_cache); + + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_message_begin); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_method); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_uri); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_version); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_message_complete); +} + +TEST(http, stage_request_completed_pipeline) +{ + const char *newdata = "GET / HTTP/1.1\r\nHost: www.example1.com\r\nConnection: keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost: www.example2.com\r\nConnection: keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost: www.example3.com\r\nConnection: keep-alive\r\n\r\n"; + size_t new_datalen = strlen(newdata); + struct http_half flow = {}; + gtest_llhttp_init(&flow); + + http_flow_stage_shaping(&flow, newdata, new_datalen); + llhttp_finish(&flow.parser.llhttp_parser); + http_buffer_free(flow.shaper.headers_cache); + + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_message_begin); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_method); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_uri); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_version); + ASSERT_EQ(3, gtest_llhttp_cb_flags.on_message_complete); +} + +TEST(http, stage_request_one_by_one) +{ + const char *newdata = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: keep-alive\r\n\r\n"; + size_t new_datalen = strlen(newdata); + struct http_half flow = {}; + gtest_llhttp_init(&flow); + + for (size_t i = 0; i < new_datalen; i++) + { + http_flow_stage_shaping(&flow, newdata + i, 1); + } + llhttp_finish(&flow.parser.llhttp_parser); + http_buffer_free(flow.shaper.headers_cache); + + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_message_begin); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_method); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_uri); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_version); + ASSERT_EQ(1, gtest_llhttp_cb_flags.on_message_complete); +} + int main(int argc, char const *argv[]) { ::testing::InitGoogleTest(&argc, (char **)argv); diff --git a/test/decoders/http/http_gtest.h b/test/decoders/http/http_gtest.h index 362bd39..7c74379 100644 --- a/test/decoders/http/http_gtest.h +++ b/test/decoders/http/http_gtest.h @@ -4,8 +4,8 @@ extern "C" { #endif #include <stellar/session.h> -#include <stellar/stellar_mq.h> -#include <stellar/stellar_exdata.h> +#include <stellar/mq.h> +#include <stellar/exdata.h> #include <stellar/stellar.h> #ifdef __cplusplus } @@ -44,6 +44,7 @@ extern "C" #define EX_DATA_MAX_SIZE 10 #define PIPELINE_MAX_NUM 8 +#define GTEST_RESULT_FILENAME "http_gtest.json" #define GTEST_FIX_PAYLOAD_CSTR "<Hello http decoder World!!!>" #define GTEST_FIX_PAYLOAD_MD5 "e91e072f772737c7a45013cc3b1a916c" @@ -53,8 +54,9 @@ extern "C" #define GTEST_HTTP_TRANS_SEQ_NAME "__X_HTTP_TRANSACTION_SEQ" #define GTEST_HTTP_TUPLE4_NAME "__X_HTTP_TUPLE4" #define GTEST_HTTP_PAYLOAD_NAME "__X_HTTP_PAYLOAD" -#define GTEST_HTTP_RAW_PAYLOAD_MD5_NAME "__X_HTTP_RAW_PAYLOAD_MD5" +#define GTEST_HTTP_RAW_PAYLOAD_MD5_NAME "__X_HTTP_DECOMPRESS_PAYLOAD_MD5" #define GTEST_HTTP_DECOMPRESS_PAYLOAD_MD5_NAME "__X_HTTP_DECOMPRESS_PAYLOAD_MD5" +#define GTEST_HTTP_ALL_HEADERS "__X_HTTP_HEADERS_INTERGRATION" struct stellar *stellar_init(void); diff --git a/test/decoders/http/http_gtest_llhttp.cpp b/test/decoders/http/http_gtest_llhttp.cpp index 58ff281..ce3c4f4 100644 --- a/test/decoders/http/http_gtest_llhttp.cpp +++ b/test/decoders/http/http_gtest_llhttp.cpp @@ -51,6 +51,10 @@ static int on_message_begin(llhttp_t *parser) static int on_url(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("URI cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_url++; @@ -59,6 +63,10 @@ static int on_url(llhttp_t *parser, const char *at, size_t length) static int on_method(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("method cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_method++; @@ -67,6 +75,10 @@ static int on_method(llhttp_t *parser, const char *at, size_t length) static int on_status(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("status cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_status++; @@ -75,6 +87,10 @@ static int on_status(llhttp_t *parser, const char *at, size_t length) static int on_version(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("version cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_version++; @@ -83,6 +99,10 @@ static int on_version(llhttp_t *parser, const char *at, size_t length) static int on_header_field(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("Header field cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_header_field++; @@ -99,6 +119,10 @@ static int on_header_field_complete(llhttp_t *parser) static int on_header_value(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("Header value cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_header_value++; @@ -131,6 +155,10 @@ static int on_message_complete(llhttp_t *parser) static int on_body(llhttp_t *parser, const char *at, size_t length) { + if (length == 0) + { + return 0; + } printf("on_body cb: %.*s\n", (int)length, at); struct gtest_http_parm *para = container_of(parser, struct gtest_http_parm, llhttp_parser); para->count.flag_on_body++; @@ -174,6 +202,27 @@ TEST(HTTP_llhttp, request_base) ASSERT_EQ(para.count.flag_on_message_complete, 1); } +TEST(HTTP_llhttp, request_one_bytes) +{ + struct gtest_http_parm para = {}; + gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); + const char *request = "GET /path/index.html HTTP/1.1\r\nHost: example.com\r\nContent-Length: 0\r\n\r\n"; + for (size_t i = 0; i < strlen(request); i++) + { + enum llhttp_errno lerr = llhttp_execute(¶.llhttp_parser, request + i, 1); + ASSERT_EQ(lerr, HPE_OK); + } + ASSERT_EQ(para.count.flag_on_message_begin, 1); + ASSERT_EQ(para.count.flag_on_url, 16); + ASSERT_EQ(para.count.flag_on_method, 3); + ASSERT_EQ(para.count.flag_on_version, 3); + ASSERT_EQ(para.count.flag_on_header_field, 18); + ASSERT_EQ(para.count.flag_on_header_value, 12); + ASSERT_EQ(para.count.flag_on_header_field_complete, 2); + ASSERT_EQ(para.count.flag_on_headers_complete, 1); + ASSERT_EQ(para.count.flag_on_message_complete, 1); +} + TEST(HTTP_llhttp, request_dir_error) { struct gtest_http_parm para = {}; @@ -197,7 +246,7 @@ TEST(HTTP_llhttp, request_uncompleted) ASSERT_EQ(para.count.flag_on_message_complete, 0); } -TEST(HTTP_llhttp, request_hdr_pipeline) +TEST(HTTP_llhttp, get_request_hdr_pipeline_cont_len_zero) { struct gtest_http_parm para = {}; gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); @@ -212,6 +261,51 @@ TEST(HTTP_llhttp, request_hdr_pipeline) ASSERT_EQ(para.count.flag_on_message_complete, 3); } +TEST(HTTP_llhttp, post_request_hdr_pipeline_cont_len_zero) +{ + struct gtest_http_parm para = {}; + gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); + const char *request = "POST /path/index.html HTTP/1.1\r\nHost: example1.com\r\nContent-Length: 0\r\n\r\nPOST /path/index.html HTTP/1.1\r\nHost: example2.com\r\nContent-Length: 0\r\n\r\nPOST /path/index.html HTTP/1.1\r\nHost: example3.com\r\nContent-Length: 0\r\n\r\n"; + enum llhttp_errno lerr = llhttp_execute(¶.llhttp_parser, request, strlen(request)); + ASSERT_EQ(lerr, HPE_OK); + ASSERT_EQ(para.count.flag_on_message_begin, 3); + ASSERT_EQ(para.count.flag_on_url, 3); + ASSERT_EQ(para.count.flag_on_method, 3); + ASSERT_EQ(para.count.flag_on_version, 3); + ASSERT_EQ(para.count.flag_on_headers_complete, 3); + ASSERT_EQ(para.count.flag_on_message_complete, 3); +} + +TEST(HTTP_llhttp, get_request_hdr_pipeline_no_cont_len) +{ + struct gtest_http_parm para = {}; + gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); + const char *request = "GET /path/index.html HTTP/1.1\r\nHost: example1.com\r\n\r\nGET /path/index.html HTTP/1.1\r\nHost: example2.com\r\n\r\nGET /path/index.html HTTP/1.1\r\nHost: example3.com\r\n\r\n"; + enum llhttp_errno lerr = llhttp_execute(¶.llhttp_parser, request, strlen(request)); + ASSERT_EQ(lerr, HPE_OK); + ASSERT_EQ(para.count.flag_on_message_begin, 3); + ASSERT_EQ(para.count.flag_on_url, 3); + ASSERT_EQ(para.count.flag_on_method, 3); + ASSERT_EQ(para.count.flag_on_version, 3); + ASSERT_EQ(para.count.flag_on_headers_complete, 3); + ASSERT_EQ(para.count.flag_on_message_complete, 3); +} + +TEST(HTTP_llhttp, post_request_hdr_pipeline_no_cont_len) +{ + struct gtest_http_parm para = {}; + gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); + const char *request = "POST /path/index.html HTTP/1.1\r\nHost: example1.com\r\n\r\nPOST /path/index.html HTTP/1.1\r\nHost: example2.com\r\n\r\nPOST /path/index.html HTTP/1.1\r\nHost: example3.com\r\n\r\n"; + enum llhttp_errno lerr = llhttp_execute(¶.llhttp_parser, request, strlen(request)); + ASSERT_EQ(lerr, HPE_OK); + ASSERT_EQ(para.count.flag_on_message_begin, 3); + ASSERT_EQ(para.count.flag_on_url, 3); + ASSERT_EQ(para.count.flag_on_method, 3); + ASSERT_EQ(para.count.flag_on_version, 3); + ASSERT_EQ(para.count.flag_on_headers_complete, 3); + ASSERT_EQ(para.count.flag_on_message_complete, 3); +} + TEST(HTTP_llhttp, request_hdr_body_pipeline) { struct gtest_http_parm para = {}; @@ -431,6 +525,7 @@ TEST(HTTP_llhttp, response_no_len_no_type_body) ASSERT_EQ(para.count.flag_on_headers_complete, 1); ASSERT_EQ(para.count.flag_on_body, 1); ASSERT_EQ(para.count.flag_on_message_complete, 0); // no completed + llhttp_reset(¶.llhttp_parser); } TEST(HTTP_llhttp, response_no_len_has_type_body) @@ -446,6 +541,7 @@ TEST(HTTP_llhttp, response_no_len_has_type_body) ASSERT_EQ(para.count.flag_on_headers_complete, 1); ASSERT_EQ(para.count.flag_on_body, 1); ASSERT_EQ(para.count.flag_on_message_complete, 0); // no completed + llhttp_reset(¶.llhttp_parser); } TEST(HTTP_llhttp, response_no_len_no_type_pipeline) diff --git a/test/decoders/http/http_gtest_llhttp_headers_buf.cpp b/test/decoders/http/http_gtest_llhttp_headers_buf.cpp new file mode 100644 index 0000000..f3f8044 --- /dev/null +++ b/test/decoders/http/http_gtest_llhttp_headers_buf.cpp @@ -0,0 +1,424 @@ +#include <cstdint> +#include <stdio.h> +#include <string.h> +#include <assert.h> +#include <gtest/gtest.h> +#include <bits/types/struct_iovec.h> +#ifdef __cplusplus +extern "C" +{ +#endif +#include <llhttp.h> +#include "stellar/utils.h" +#ifdef __cplusplus +} +#endif + +#define MAX_HEADER_FIELD_NUM (32) + +struct http_filed +{ + struct iovec field_name; + struct iovec field_value; +}; + +enum gtest_llhttp_callback_type +{ + CALLBACK_TYPE_MESSAGE_BEGIN = 0, + CALLBACK_TYPE_URL, + CALLBACK_TYPE_METHOD, + CALLBACK_TYPE_STATUS, + CALLBACK_TYPE_VERSION, + CALLBACK_TYPE_HEADER_FIELD, + CALLBACK_TYPE_HEADER_FIELD_COMPLETE, + CALLBACK_TYPE_HEADER_VALUE, + CALLBACK_TYPE_HEADER_VALUE_COMPLETE, + CALLBACK_TYPE_HEADERS_COMPLETE, + CALLBACK_TYPE_BODY, + CALLBACK_TYPE_MESSAGE_COMPLETE, +}; + +struct gtest_http_counter +{ + uint8_t flag_on_message_begin; + uint8_t flag_on_url; + uint8_t flag_on_method; + uint8_t flag_on_status; + uint8_t flag_on_version; + uint8_t flag_on_header_field; + uint8_t flag_on_header_field_complete; + uint8_t flag_on_header_value; + uint8_t flag_on_header_value_complete; + uint8_t flag_on_headers_complete; + uint8_t flag_on_body; + uint8_t flag_on_message_complete; +}; + +struct header_buffer +{ + char *data; + size_t len; +}; + +struct gtest_http_header_compose +{ + llhttp_t llhttp_parser; + llhttp_settings_t settings; + struct gtest_http_counter count; + const char *last_header_value_complete_ptr; /* at + length + 4 \r\n\r\n) */ + const char *last_headers_complete_ptr; + size_t last_callback_offset; /* at + length + eof (header_value = 2, header_completed = 4) */ + struct header_buffer hdr_buf; + + enum gtest_llhttp_callback_type lastest_callback_type; + + struct http_filed header_fields[MAX_HEADER_FIELD_NUM]; + int current_header_field_index; + const char *header_begin; + size_t headers_len; +}; + +static int on_message_begin(llhttp_t *parser) +{ + printf("Message begin cb\n"); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_message_begin++; + para->lastest_callback_type = CALLBACK_TYPE_MESSAGE_BEGIN; + return 0; +} + +static int on_url(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("URI cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_url++; + para->lastest_callback_type = CALLBACK_TYPE_URL; + return 0; +} + +static int on_method(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("method cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_method++; + para->lastest_callback_type = CALLBACK_TYPE_METHOD; + return 0; +} + +static int on_status(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("status cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_status++; + para->lastest_callback_type = CALLBACK_TYPE_STATUS; + return 0; +} + +static int on_version(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("version cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_version++; + para->lastest_callback_type = CALLBACK_TYPE_VERSION; + return 0; +} + +static int on_header_field(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("Header field cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_header_field++; + para->lastest_callback_type = CALLBACK_TYPE_HEADER_FIELD; + para->header_fields[para->current_header_field_index].field_name.iov_base = (void *)at; + para->header_fields[para->current_header_field_index].field_name.iov_len = length; + return 0; +} + +static int on_header_field_complete(llhttp_t *parser) +{ + printf("Header field complete cb\n"); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_header_field_complete++; + para->lastest_callback_type = CALLBACK_TYPE_HEADER_FIELD_COMPLETE; + return 0; +} + +static int on_header_value(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("Header value cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_header_value++; + para->lastest_callback_type = CALLBACK_TYPE_HEADER_VALUE; + + para->header_fields[para->current_header_field_index].field_value.iov_base = (void *)at; + para->header_fields[para->current_header_field_index].field_value.iov_len = length; + + para->last_header_value_complete_ptr = at + length; + return 0; +} + +static int on_header_value_complete(llhttp_t *parser) +{ + printf("Header value complete cb\n"); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_header_value_complete++; + para->lastest_callback_type = CALLBACK_TYPE_HEADER_VALUE_COMPLETE; + para->current_header_field_index++; + + if (strncmp("\r\n", para->last_header_value_complete_ptr, 2) == 0) + { + para->last_header_value_complete_ptr += 2; + } + return 0; +} + +static int on_headers_complete(llhttp_t *parser) +{ + printf("All Headers complete cb\n"); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_headers_complete++; + para->lastest_callback_type = CALLBACK_TYPE_HEADERS_COMPLETE; + + para->last_headers_complete_ptr = para->last_header_value_complete_ptr; + if (strncmp("\r\n", para->last_headers_complete_ptr, 2) == 0) + { + para->last_headers_complete_ptr += 2; + } + return 0; +} + +static int on_body(llhttp_t *parser, const char *at, size_t length) +{ + if (length == 0) + { + return 0; + } + printf("on_body cb: %.*s\n", (int)length, at); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_body++; + para->lastest_callback_type = CALLBACK_TYPE_BODY; + return 0; +} + +static int on_message_complete(llhttp_t *parser) +{ + printf("Message complete cb\n"); + struct gtest_http_header_compose *para = container_of(parser, struct gtest_http_header_compose, llhttp_parser); + para->count.flag_on_message_complete++; + para->lastest_callback_type = CALLBACK_TYPE_MESSAGE_COMPLETE; + return 0; +} + +static int gtest_llhttp_init(llhttp_t *parser, llhttp_type_t type, llhttp_settings_t *settings) +{ + llhttp_settings_init(settings); + settings->on_message_begin = on_message_begin; + settings->on_url = on_url; + settings->on_version = on_version; + settings->on_status = on_status; + settings->on_method = on_method; + settings->on_header_field = on_header_field; + settings->on_header_field_complete = on_header_field_complete; + settings->on_header_value = on_header_value; + settings->on_header_value_complete = on_header_value_complete; + settings->on_headers_complete = on_headers_complete; + settings->on_body = on_body; + settings->on_message_complete = on_message_complete; + + llhttp_init(parser, type, settings); + return 0; +} + +static void header_buf_append(struct header_buffer *hdr_buf, char *newdata, size_t len) +{ + hdr_buf->data = (char *)realloc(hdr_buf->data, hdr_buf->len + len); + memcpy(hdr_buf->data + hdr_buf->len, newdata, len); + hdr_buf->len += len; +} + +static void header_buf_free(struct header_buffer *hdr_buf) +{ + if (hdr_buf->data) + { + free(hdr_buf->data); + hdr_buf->data = NULL; + } + hdr_buf->len = 0; +} + +static void header_compose_reset(struct gtest_http_header_compose *para) +{ + llhttp_reset(¶->llhttp_parser); + para->last_header_value_complete_ptr = NULL; + para->last_headers_complete_ptr = NULL; + para->last_callback_offset = 0; + para->current_header_field_index = 0; + para->header_begin = NULL; + para->headers_len = 0; + memset(¶->count, 0, sizeof(para->count)); + // can not reset hdr_buf +} + +#if 1 +TEST(HTTP_llhttp_header, one_transaction_no_pipeline) +{ + struct gtest_http_header_compose para = {}; + gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); + + /* first packet : header is not complete */ + char *pkt_data = strdup("GET /path/index1.html HTTP/1.1\r\nHost: example.com\r\nContent-Length"); + size_t pkt_datalen = strlen(pkt_data); + enum llhttp_errno lerr = llhttp_execute(¶.llhttp_parser, pkt_data, pkt_datalen); + ASSERT_EQ(lerr, HPE_OK); + if (para.count.flag_on_headers_complete == 0) + { + header_buf_append(¶.hdr_buf, pkt_data, pkt_datalen); + printf("headers not complete\n"); + header_compose_reset(¶); + } + free(pkt_data); + + /* second packet: recv some new header filed, but headers not completed */ + if (para.hdr_buf.len > 0) + { + lerr = llhttp_execute(¶.llhttp_parser, para.hdr_buf.data, para.hdr_buf.len); + ASSERT_EQ(lerr, HPE_OK); + } + char *pkt_data2 = strdup(": 0\r\nUser-Agent:"); + size_t pkt_datalen2 = strlen(pkt_data2); + lerr = llhttp_execute(¶.llhttp_parser, pkt_data2, pkt_datalen2); + ASSERT_EQ(lerr, HPE_OK); + if (para.count.flag_on_headers_complete == 0) + { + header_buf_append(¶.hdr_buf, pkt_data2, pkt_datalen2); + printf("headers not complete\n"); + header_compose_reset(¶); + } + free(pkt_data2); + + /* third packet: recv last header filed, all headers completed */ + if (para.hdr_buf.len > 0) + { + lerr = llhttp_execute(¶.llhttp_parser, para.hdr_buf.data, para.hdr_buf.len); + ASSERT_EQ(lerr, HPE_OK); + } + char *pkt_data3 = strdup(" Mozilla/5.0\r\n\r\n"); + size_t pkt_datalen3 = strlen(pkt_data3); + lerr = llhttp_execute(¶.llhttp_parser, pkt_data3, pkt_datalen3); + ASSERT_EQ(lerr, HPE_OK); + if (para.count.flag_on_headers_complete) + { + header_buf_append(¶.hdr_buf, pkt_data3, pkt_datalen3); + printf("headers complete\n"); + header_compose_reset(¶); + lerr = llhttp_execute(¶.llhttp_parser, para.hdr_buf.data, para.hdr_buf.len); + ASSERT_EQ(lerr, HPE_OK); + para.header_begin = para.hdr_buf.data; + para.headers_len = para.hdr_buf.len; + printf("===================================================\r\n"); + printf("headers completed buf: \r\n%.*s\n", (int)para.headers_len, para.header_begin); + for (int i = 0; i < para.current_header_field_index; i++) + { + printf("header field: %.*s, header value: %.*s\n", + (int)para.header_fields[i].field_name.iov_len, (char *)para.header_fields[i].field_name.iov_base, + (int)para.header_fields[i].field_value.iov_len, (char *)para.header_fields[i].field_value.iov_base); + } + printf("===================================================\r\n"); + } + free(pkt_data3); + header_buf_free(¶.hdr_buf); +} +#endif + +#if 1 +TEST(HTTP_llhttp_header, two_transaction_and_pipeline) +{ + struct gtest_http_header_compose para = {}; + gtest_llhttp_init(¶.llhttp_parser, HTTP_REQUEST, ¶.settings); + + /* first packet : transqction-1 is completed! transqction-2 headers is not complete */ + char *pkt_data = strdup("GET /path/index1.html HTTP/1.1\r\nHost: example1.com\r\n\r\nGET /path/index2.html HTTP/1.1\r\nHost: example2.com"); + size_t pkt_datalen = strlen(pkt_data); + enum llhttp_errno lerr = llhttp_execute(¶.llhttp_parser, pkt_data, pkt_datalen); + ASSERT_EQ(lerr, HPE_OK); + + /* + some headers not complete, in middle state + ignore transaction-1, all start-line and fileds are pointer to raw packet. + */ + if (para.count.flag_on_headers_complete != 0 && para.lastest_callback_type < CALLBACK_TYPE_HEADERS_COMPLETE) + { + const char *cached_begin_ptr = pkt_data; + long long cached_len = (long long)pkt_datalen; + if (para.last_headers_complete_ptr != NULL) + { + cached_begin_ptr = para.last_headers_complete_ptr + 4; + cached_len = (long long)pkt_datalen - (long long)(para.last_headers_complete_ptr + 4 - pkt_data); + header_buf_append(¶.hdr_buf, (char *)cached_begin_ptr, (size_t)cached_len); + free(pkt_data); + + printf("### transaction-2 cached header data: %.*s\n", (int)para.hdr_buf.len, para.hdr_buf.data); + } + printf("headers not complete\n"); + header_compose_reset(¶); + } + + /* second packet: transaction-2 completed */ + if (para.hdr_buf.len > 0) + { + lerr = llhttp_execute(¶.llhttp_parser, para.hdr_buf.data, para.hdr_buf.len); + ASSERT_EQ(lerr, HPE_OK); + } + char *pkt_data2 = strdup("\r\nContent-Length: 0\r\n\r\n"); + size_t pkt_datalen2 = strlen(pkt_data2); + lerr = llhttp_execute(¶.llhttp_parser, pkt_data2, pkt_datalen2); + ASSERT_EQ(lerr, HPE_OK); + if (para.lastest_callback_type >= CALLBACK_TYPE_HEADERS_COMPLETE) + { + header_buf_append(¶.hdr_buf, pkt_data2, pkt_datalen2); + + printf("headers complete\n"); + header_compose_reset(¶); + + lerr = llhttp_execute(¶.llhttp_parser, para.hdr_buf.data, para.hdr_buf.len); + ASSERT_EQ(lerr, HPE_OK); + para.header_begin = para.hdr_buf.data; + para.headers_len = para.hdr_buf.len; + printf("=========================================\r\n"); + printf("headers complete buf: \r\n%.*s\n", (int)para.headers_len, para.header_begin); + printf("=========================================\r\n"); + } + free(pkt_data2); + header_buf_free(¶.hdr_buf); +} +#endif + +int main(int argc, char const *argv[]) +{ + ::testing::InitGoogleTest(&argc, (char **)argv); + return RUN_ALL_TESTS(); +} diff --git a/test/decoders/http/http_gtest_main.cpp b/test/decoders/http/http_gtest_main.cpp new file mode 100644 index 0000000..64203c7 --- /dev/null +++ b/test/decoders/http/http_gtest_main.cpp @@ -0,0 +1,97 @@ +#include <stdio.h> +#include <time.h> +#include <unistd.h> +#include <assert.h> +#include <gtest/gtest.h> +#include "stellar/stellar.h" +#include "cJSON.h" + +static cJSON *load_result_from_jsonfile(const char *json_path) +{ + if (json_path == NULL) + return NULL; + + long file_len = 0; + char *file_content = NULL; + FILE *fp = NULL; + + fp = fopen(json_path, "r+"); + if (NULL == fp) + { + return NULL; + } + fseek(fp, 0, SEEK_END); + file_len = ftell(fp); + fseek(fp, 0, SEEK_SET); + if (file_len == 0) + { + fclose(fp); + return NULL; + } + file_content = (char *)malloc(file_len + 1); + fread(file_content, file_len, 1, fp); + file_content[file_len] = '\0'; + cJSON *load = cJSON_Parse(file_content); + free(file_content); + fclose(fp); + return load; +} + +static void show_json_diff(cJSON *expect_json_root, cJSON *test_module_root) +{ + if (NULL == expect_json_root || NULL == test_module_root) + { + return; + } + cJSON *t_load = expect_json_root->child, *t_test = test_module_root->child; + int ret; + char *load_json_str = NULL; + char *result_json_str = NULL; + while (t_load != NULL && t_test != NULL) + { + ret = cJSON_Compare(t_load, t_test, 0); + if (ret != 1) + { + load_json_str = cJSON_Print(t_load); + printf("LOAD Diff:\n%s\n", load_json_str); + free(load_json_str); + result_json_str = cJSON_Print(t_test); + printf("TEST Diff:\n%s\n", result_json_str); + free(result_json_str); + } + t_load = t_load->next; + t_test = t_test->next; + } +} + +int main(int argc, char *argv[]) +{ + if (argc != 3) + { + fprintf(stderr, "\nUsage: ./%s <expect-result> <test-module-result>\n\n", argv[0]); + exit(1); + } + ::testing::InitGoogleTest(&argc, (char **)argv); + const char *expect_json_path = argv[1]; + const char *test_module_json_path = argv[2]; + + struct stellar *st = stellar_new("./conf/stellar.toml"); + EXPECT_TRUE(st != NULL); + stellar_run(st); + stellar_free(st); + + cJSON *expect_json_root = load_result_from_jsonfile(expect_json_path); + EXPECT_TRUE(expect_json_root != NULL); + cJSON *test_json_root = load_result_from_jsonfile(test_module_json_path); + EXPECT_TRUE(test_json_root != NULL); + + int ret = cJSON_Compare(expect_json_root, test_json_root, 0); + EXPECT_EQ(1, ret); + if (ret != 1) + { + show_json_diff(expect_json_root, test_json_root); + } + cJSON_Delete(expect_json_root); + cJSON_Delete(test_json_root); + return ::testing::Test::HasFailure() ? 1 : 0; +} diff --git a/test/decoders/http/http_gtest_module.cpp b/test/decoders/http/http_gtest_module.cpp new file mode 100644 index 0000000..42e507f --- /dev/null +++ b/test/decoders/http/http_gtest_module.cpp @@ -0,0 +1,474 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <assert.h> +#include "cJSON.h" +#ifdef __cplusplus +extern "C" +{ +#endif +#include "stellar/http.h" +#include "stellar/session.h" +#include "stellar/module.h" +#include "http_gtest.h" +#include "http_decoder_utils.h" +#include "md5/md5.h" +#include "toml/toml.h" + +#define SAVE_BODY_AS_LOCAL_FILE 1 /* for debug */ + +#define MAX_KEY_STR_LEN 2048 + static int g_result_count = 0; + static cJSON *gtest_http_json_root; + + enum http_transaction_type + { + HTTP_TRANSACTION_REQ = 0, + HTTP_TRANSACTION_RES, + HTTP_TRANSACTION_SESSION, // global session info + HTTP_TRANSACTION_MAX + }; + enum payload_compress_mode + { + PAYLOAD_RAW = 0, + PAYLOAD_DECOMPRESS = 1, + PAYLOAD_MAX = 2, + }; + + struct http_gtest_exdata + { + cJSON *result_jnode[HTTP_TRANSACTION_MAX]; + MD5_CTX *payload_md5ctx[PAYLOAD_MAX][HTTP_TRANSACTION_MAX]; +#if SAVE_BODY_AS_LOCAL_FILE + FILE *body_fp[HTTP_TRANSACTION_MAX]; +#endif + }; + + struct http_gtest_env + { + struct module_manager *mod_mgr; + int exdata_idx; + }; + + static int commit_test_result_json(cJSON *node) + { + if (gtest_http_json_root) + { + // cJSON_AddItemToObject(g_test_result_root, name, node); + // cJSON_AddStringToObject(node, "name", name); + cJSON_AddItemToArray(gtest_http_json_root, node); + return 0; + } + return -1; + } + + void cJSON_Add_QStringToObject(cJSON *object, const char *name, const char *value, size_t value_len) + { + char *tmp = (char *)calloc(1, value_len + 1); + memcpy(tmp, value, value_len); + cJSON_AddStringToObject(object, name, tmp); + free(tmp); + } + + void http_gtest_trans_id_to_json(cJSON *ctx, int transaction_index) + { + cJSON_AddNumberToObject(ctx, GTEST_HTTP_TRANS_SEQ_NAME, transaction_index); + } + + static int http_field_to_json(cJSON *object, const char *key, char *val, size_t val_len) + { + if (NULL == object || NULL == key || NULL == val || 0 == val_len) + { + return -1; + } + char *tmp = CALLOC(char, val_len + 1); + memcpy(tmp, val, val_len); + cJSON_AddStringToObject(object, key, tmp); + FREE(tmp); + return 0; + } + + static void http_header_to_json(cJSON *ctx, const struct http_header_field *header, int *uniq_name_count) + { + char key[MAX_KEY_STR_LEN] = {0}; + if ((header->field_name == NULL)) + { + return; + } + const char *field_value = header->field_value; + size_t field_value_len = header->field_value_len; + if (header->field_value == NULL || header->field_value_len == 0) + { + /* header value mayby NULL */ + field_value = ""; + field_value_len = 1; + } + + memcpy(key, header->field_name, header->field_name_len); + if (cJSON_HasObjectItem(ctx, key) == FALSE) + { + http_field_to_json(ctx, key, (char *)field_value, field_value_len); + } + else + { + // ctx already has the same name key, so rename key plus index(%d) + char new_key[field_value_len + 64] = {0}; + if (uniq_name_count) + { + snprintf(new_key, sizeof(new_key), "%s.%d", key, ++(*uniq_name_count)); + } + else + { + snprintf(new_key, sizeof(new_key), "%s.%d", key, 1); + } + http_field_to_json(ctx, new_key, (char *)field_value, field_value_len); + } + } + + static void http_gtest_url_add_to_json(cJSON *ctx, const char *url, size_t url_sz) + { + if (cJSON_GetObjectItem(ctx, GTEST_HTTP_URL_NAME)) + { + return; + } + struct http_header_field raw_url_header_result = {}; + raw_url_header_result.field_name = (char *)GTEST_HTTP_URL_NAME; + raw_url_header_result.field_name_len = strlen(GTEST_HTTP_URL_NAME); + raw_url_header_result.field_value = (char *)url; + raw_url_header_result.field_value_len = url_sz; + http_header_to_json(ctx, &raw_url_header_result, NULL); + + char decoded_url_buffer[url_sz] = {0}; + size_t decode_url_len = http_url_decode((const char *)url, url_sz, decoded_url_buffer, sizeof(decoded_url_buffer)); + + if (decode_url_len < url_sz) + { + struct http_header_field decode_url_header_result = {}; + decode_url_header_result.field_name = (char *)"__X_HTTP_DECODED_URL"; + decode_url_header_result.field_name_len = strlen("__X_HTTP_DECODED_URL"); + decode_url_header_result.field_value = decoded_url_buffer; + decode_url_header_result.field_value_len = decode_url_len; + http_header_to_json(ctx, &decode_url_header_result, NULL); + } + } + + static void http_gtest_commit_body_md5(cJSON *last_jnode, struct http_gtest_exdata *gtest_plug_exdata, enum http_transaction_type type) + { + // finish md5 streming hash + for (int mode = 0; mode < PAYLOAD_MAX; mode++) + { + if (gtest_plug_exdata->payload_md5ctx[mode][type]) + { + unsigned char md5_result_bin[16] = {0}; + unsigned char md5_result_cstr[33] = {0}; + MD5Final(md5_result_bin, gtest_plug_exdata->payload_md5ctx[mode][type]); + + for (int i = 0; i < 16; i++) + sprintf((char *)md5_result_cstr + 2 * i, "%02x", md5_result_bin[i]); + md5_result_cstr[32] = '\0'; + if (mode == PAYLOAD_RAW) + { + cJSON_AddStringToObject(last_jnode, GTEST_HTTP_RAW_PAYLOAD_MD5_NAME, (char *)md5_result_cstr); + } + else + { + cJSON_AddStringToObject(last_jnode, GTEST_HTTP_DECOMPRESS_PAYLOAD_MD5_NAME, (char *)md5_result_cstr); + } + FREE(gtest_plug_exdata->payload_md5ctx[mode][type]); + gtest_plug_exdata->payload_md5ctx[mode][type] = NULL; + } + } + } + + static void http_gtest_update_session_tuple4(struct session *sess, struct http_gtest_exdata *gtest_plug_exdata) + { + char sess_addr_string[256] = {}; + + enum session_state state = session_get_current_state(sess); + if (state == SESSION_STATE_CLOSED) + { + return; + } + + struct http_session_addr sesaddr = {}; + httpd_session_get_addr(sess, &sesaddr); + http_session_addr_ntop(&sesaddr, sess_addr_string, sizeof(sess_addr_string)); + + if (gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION] == NULL) + { + const char *human_addr_cstr = session_get_readable_addr(sess); + if (NULL == human_addr_cstr) + { + fprintf(stderr, "can't get readable_addr, to use session_get_readable_addr() the log level must <= INFO\n"); + return; + } + assert(0 == strncasecmp(human_addr_cstr, sess_addr_string, strlen(sess_addr_string))); + char result_name[MAX_KEY_STR_LEN] = {0}; + gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION] = cJSON_CreateObject(); + cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION], GTEST_HTTP_TUPLE4_NAME, human_addr_cstr); + sprintf(result_name, "%d", g_result_count++); + commit_test_result_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION]); + } + } + + static void req_line_to_json(cJSON *ctx, const struct http_request_line *req_line) + { + http_field_to_json(ctx, "method", (char *)req_line->method, req_line->method_len); + http_field_to_json(ctx, "uri", (char *)req_line->uri, req_line->uri_len); + http_field_to_json(ctx, "req_version", (char *)req_line->version, req_line->version_len); + cJSON_AddNumberToObject(ctx, "major_version", req_line->major_version); + cJSON_AddNumberToObject(ctx, "minor_version", req_line->minor_version); + } + + static void http_gtest_status_line_to_json(cJSON *ctx, const struct http_status_line *res_line) + { + http_field_to_json(ctx, "res_version", (char *)res_line->version, res_line->version_len); + http_field_to_json(ctx, "res_status", (char *)res_line->status, res_line->status_len); + cJSON_AddNumberToObject(ctx, "major_version", res_line->major_version); + cJSON_AddNumberToObject(ctx, "minor_version", res_line->minor_version); + cJSON_AddNumberToObject(ctx, "status_code", res_line->status_code); + } + + static void http_gtest_header_buf_to_json(cJSON *ctx, const char *header_buf, size_t buf_len) + { + if (NULL == header_buf || 0 == buf_len) + { + return; + } + http_field_to_json(ctx, GTEST_HTTP_ALL_HEADERS, (char *)header_buf, buf_len); + } + + static void http_gtest_append_body(struct http_gtest_exdata *gtest_plug_exdata, enum payload_compress_mode mode, + const char *body, size_t body_sz, enum http_transaction_type type) + { + if (NULL == body || 0 == body_sz) + { + return; + } + if (NULL == gtest_plug_exdata->payload_md5ctx[mode][type]) + { + gtest_plug_exdata->payload_md5ctx[mode][type] = MMALLOC(MD5_CTX, sizeof(MD5_CTX)); + MD5Init(gtest_plug_exdata->payload_md5ctx[mode][type]); + } + MD5Update(gtest_plug_exdata->payload_md5ctx[mode][type], (unsigned char *)body, body_sz); +#if SAVE_BODY_AS_LOCAL_FILE + if (NULL == gtest_plug_exdata->body_fp[type]) + { + const char *filename = (type == HTTP_TRANSACTION_REQ) ? "gtest_request.body" : "gtest_response.body"; + gtest_plug_exdata->body_fp[type] = fopen(filename, "w+"); + } + fwrite(body, body_sz, 1, gtest_plug_exdata->body_fp[type]); +#endif + } + + static int http_request_flow_is_finished(const struct http_request_line *req_line, const struct http_header *header) + { + if (strncasecmp(req_line->method, "get", 3) == 0) + { + return 1; + } + if (header->content_length == 0) + { + return 1; + } + return 0; + } + + static void http_gtest_on_request_header_cb(struct session *sess, int transaction_seq, + const struct http_request_line *req_line, + const struct http_header *header, + const char *url, size_t url_sz, + void *args) + { + struct http_gtest_env *env = (struct http_gtest_env *)args; + struct http_gtest_exdata *http_ext = (struct http_gtest_exdata *)session_get_exdata(sess, env->exdata_idx); + if (NULL == http_ext) + { + http_ext = (struct http_gtest_exdata *)calloc(1, sizeof(struct http_gtest_exdata)); + session_set_exdata(sess, env->exdata_idx, http_ext); + } + + http_gtest_update_session_tuple4(sess, http_ext); + + cJSON *cur_flow_json = http_ext->result_jnode[HTTP_TRANSACTION_REQ]; + if (NULL == cur_flow_json) + { + http_ext->result_jnode[HTTP_TRANSACTION_REQ] = cJSON_CreateObject(); + cur_flow_json = http_ext->result_jnode[HTTP_TRANSACTION_REQ]; + cJSON_AddStringToObject(cur_flow_json, GTEST_HTTP_TRANS_NAME, "request"); + } + + http_gtest_trans_id_to_json(cur_flow_json, transaction_seq); + req_line_to_json(cur_flow_json, req_line); + int uniq_name_count = 0; + for (size_t i = 0; i < header->field_array_num; i++) + { + http_header_to_json(cur_flow_json, &header->field_array[i], &uniq_name_count); + } + http_gtest_url_add_to_json(cur_flow_json, url, url_sz); + http_gtest_header_buf_to_json(cur_flow_json, header->header_buf, header->header_buf_sz); + + if (http_request_flow_is_finished(req_line, header)) + { + cJSON_AddItemToArray(gtest_http_json_root, http_ext->result_jnode[HTTP_TRANSACTION_REQ]); + http_ext->result_jnode[HTTP_TRANSACTION_REQ] = NULL; + } + } + + static int http_response_flow_is_finished(const struct http_status_line *status_line, const struct http_header *header) + { + if (100 == status_line->status_code) + { + return 1; + } + if (header->content_length == 0) + { + return 1; + } + return 0; + } + + static void http_gtest_on_response_header_cb(struct session *sess, int transaction_seq, + const struct http_status_line *status_line, + const struct http_header *header, + void *args) + { + struct http_gtest_env *env = (struct http_gtest_env *)args; + struct http_gtest_exdata *http_ext = (struct http_gtest_exdata *)session_get_exdata(sess, env->exdata_idx); + if (NULL == http_ext) + { + http_ext = (struct http_gtest_exdata *)calloc(1, sizeof(struct http_gtest_exdata)); + session_set_exdata(sess, env->exdata_idx, http_ext); + } + + http_gtest_update_session_tuple4(sess, http_ext); + + cJSON *cur_flow_json = http_ext->result_jnode[HTTP_TRANSACTION_RES]; + if (NULL == cur_flow_json) + { + http_ext->result_jnode[HTTP_TRANSACTION_RES] = cJSON_CreateObject(); + cur_flow_json = http_ext->result_jnode[HTTP_TRANSACTION_RES]; + cJSON_AddStringToObject(cur_flow_json, GTEST_HTTP_TRANS_NAME, "response"); + } + + http_gtest_trans_id_to_json(cur_flow_json, transaction_seq); + http_gtest_status_line_to_json(cur_flow_json, status_line); + int uniq_name_count = 0; + for (size_t i = 0; i < header->field_array_num; i++) + { + http_header_to_json(cur_flow_json, &header->field_array[i], &uniq_name_count); + } + http_gtest_header_buf_to_json(cur_flow_json, header->header_buf, header->header_buf_sz); + + if (http_response_flow_is_finished(status_line, header)) + { + cJSON_AddItemToArray(gtest_http_json_root, http_ext->result_jnode[HTTP_TRANSACTION_RES]); + http_ext->result_jnode[HTTP_TRANSACTION_RES] = NULL; + } + } + + static void http_gtest_on_body_cb(struct session *sess, const char *body, size_t body_sz, size_t offset, + int transaction_seq, int is_finished, void *args, enum http_transaction_type trans_type) + { + (void)offset; + (void)transaction_seq; + struct http_gtest_env *env = (struct http_gtest_env *)args; + struct http_gtest_exdata *http_ext = (struct http_gtest_exdata *)session_get_exdata(sess, env->exdata_idx); + http_gtest_append_body(http_ext, PAYLOAD_DECOMPRESS, body, body_sz, trans_type); + if (is_finished) + { + http_gtest_commit_body_md5(http_ext->result_jnode[trans_type], http_ext, trans_type); + cJSON_AddItemToArray(gtest_http_json_root, http_ext->result_jnode[trans_type]); + http_ext->result_jnode[trans_type] = NULL; + } + } + static void http_gtest_on_reqbody_cb(struct session *sess, const char *body, size_t body_sz, size_t offset, + int transaction_seq, int is_finished, void *args) + { + http_gtest_on_body_cb(sess, body, body_sz, offset, transaction_seq, is_finished, args, HTTP_TRANSACTION_REQ); + } + static void http_gtest_on_resbody_cb(struct session *sess, const char *body, size_t body_sz, size_t offset, + int transaction_seq, int is_finished, void *args) + { + http_gtest_on_body_cb(sess, body, body_sz, offset, transaction_seq, is_finished, args, HTTP_TRANSACTION_RES); + } + + static void http_gtest_session_exdata_free_cb(int idx, void *ex_ptr, void *arg) + { + (void)idx; + (void)arg; + struct http_gtest_exdata *http_ext = (struct http_gtest_exdata *)ex_ptr; +#if SAVE_BODY_AS_LOCAL_FILE + if (http_ext && http_ext->body_fp[HTTP_TRANSACTION_REQ]) + { + fclose(http_ext->body_fp[HTTP_TRANSACTION_REQ]); + } + if (http_ext && http_ext->body_fp[HTTP_TRANSACTION_RES]) + { + fclose(http_ext->body_fp[HTTP_TRANSACTION_RES]); + } +#endif + if (http_ext) + { + for (int i = 0; i < PAYLOAD_MAX; i++) + { + for (int j = 0; j < HTTP_TRANSACTION_MAX; j++) + { + http_gtest_commit_body_md5(http_ext->result_jnode[j], http_ext, (enum http_transaction_type)j); + } + } + } + if (http_ext && gtest_http_json_root) + { + if (http_ext->result_jnode[HTTP_TRANSACTION_REQ]) + { + cJSON_AddItemToArray(gtest_http_json_root, http_ext->result_jnode[HTTP_TRANSACTION_REQ]); + } + if (http_ext->result_jnode[HTTP_TRANSACTION_RES]) + { + cJSON_AddItemToArray(gtest_http_json_root, http_ext->result_jnode[HTTP_TRANSACTION_RES]); + } + free(ex_ptr); + } + } + + struct module *gtest_http_init(struct module_manager *mod_mgr) + { + gtest_http_json_root = cJSON_CreateArray(); + struct http_gtest_env *env = (struct http_gtest_env *)calloc(1, sizeof(struct http_gtest_env)); + env->mod_mgr = mod_mgr; + + struct module *http_mod = module_manager_get_module(mod_mgr, HTTP_MODULE_NAME); + struct http *http = http_module_to_http(http_mod); + + struct http_subscirbe_params sub_para = {}; + sub_para.req_hdr_cb = http_gtest_on_request_header_cb; + sub_para.res_hdr_cb = http_gtest_on_response_header_cb; + sub_para.req_body_cb = http_gtest_on_reqbody_cb; + sub_para.res_body_cb = http_gtest_on_resbody_cb; + http_subscribe(http, &sub_para, env); + struct module *sess_mod = module_manager_get_module(mod_mgr, SESSION_MANAGER_MODULE_NAME); + struct session_manager *sess_mgr = module_to_session_manager(sess_mod); + env->exdata_idx = session_manager_new_session_exdata_index(sess_mgr, "HTTP_GTEST_EXDATA", http_gtest_session_exdata_free_cb, env); + return module_new("GTEST_HTTP", env); + } + + void gtest_http_exit(struct module_manager *mod_mgr, struct module *mod) + { + (void)mod_mgr; + struct http_gtest_env *env = (struct http_gtest_env *)module_get_ctx(mod); + free(env); + char *json_str = cJSON_PrintUnformatted(gtest_http_json_root); + FILE *json_fp = fopen(GTEST_RESULT_FILENAME, "w+"); + fwrite(json_str, strlen(json_str), 1, json_fp); + fclose(json_fp); + free(json_str); + cJSON_Delete(gtest_http_json_root); + module_free(mod); + return; + } + +#ifdef __cplusplus +} +#endif diff --git a/test/decoders/http/http_module.toml b/test/decoders/http/http_module.toml new file mode 100644 index 0000000..1274423 --- /dev/null +++ b/test/decoders/http/http_module.toml @@ -0,0 +1,11 @@ +#load http module +[[module]] +path = "" +init = "http_init" +exit = "http_exit" + +#load http gtest module +[[module]] +path = "" +init = "gtest_http_init" +exit = "gtest_http_exit" diff --git a/test/decoders/http/http_test_plug.cpp b/test/decoders/http/http_test_plug.cpp deleted file mode 100644 index 8085ab2..0000000 --- a/test/decoders/http/http_test_plug.cpp +++ /dev/null @@ -1,674 +0,0 @@ -#include <stdio.h> -#include <time.h> -#include <unistd.h> -#include <assert.h> -#include <string.h> - -#include "http.h" -#include "http_decoder_private.h" - -#ifdef __cplusplus -extern "C" -{ -#include "cJSON.h" -#include "http_gtest.h" -#include "md5/md5.h" -#include "toml/toml.h" - - int commit_test_result_json(cJSON *node, const char *name); - extern void http_decoder_test_entry(struct session *sess, int topic_id, const void *raw_msg, void *no_use_ctx, void *plugin_env); - extern void http_decoder_test_state_entry(struct session *sess, int topic_id, const void *raw_msg, void *no_use_ctx, void *plugin_env); - extern void http_decoder_tunnel_entry(struct session *sess, int topic_id, const void *raw_msg, void *no_use_ctx, void *plugin_env); - static on_session_msg_cb_func *g_entry_fun = http_decoder_test_entry; -} -#endif - -#define MAX_KEY_STR_LEN 2048 -#define GTEST_PLUG_ENTRY_CFG "./etc/http/gtest_entry.toml" - -struct plug_entry_t -{ - const char *name; - on_session_msg_cb_func *entry; -}; - -static struct plug_entry_t g_entry_tbl[] = { - {"http_decoder_test_entry", http_decoder_test_entry}, - {"http_decoder_test_state_entry", http_decoder_test_state_entry}, - {"http_decoder_tunnel_entry", http_decoder_tunnel_entry}, - {NULL, NULL}}; - -enum http_transaction_type -{ - HTTP_TRANSACTION_REQ = 0, - HTTP_TRANSACTION_RES, - HTTP_TRANSACTION_SESSION, // global session info - HTTP_TRANSACTION_MAX -}; - -enum payload_compress_mode -{ - PAYLOAD_RAW = 0, - PAYLOAD_DECOMPRESS = 1, - PAYLOAD_MAX = 2, -}; - -struct gtest_plug_exdata_t -{ - cJSON *result_jnode[HTTP_TRANSACTION_MAX]; - MD5_CTX *payload_md5ctx[PAYLOAD_MAX][HTTP_TRANSACTION_MAX]; -}; - -static int g_result_count = 0; -static int g_header_count = 1; -static int g_http_gtest_plugin_id = -1; -static int g_exdata_idx = -1; -static int g_topic_id = -1; - -#if 0 -void output_http_req_line(struct http_request_line *req_line) -{ - char tmp_str[MAX_KEY_STR_LEN] = {0}; - memcpy(tmp_str, req_line->method.iov_base, req_line->method.iov_len); - printf("req_method:%s\n", tmp_str); - - memset(tmp_str, 0, sizeof(tmp_str)); - memcpy(tmp_str, req_line->uri.iov_base, req_line->uri.iov_len); - printf("req_uri:%s\n", tmp_str); - - memset(tmp_str, 0, sizeof(tmp_str)); - memcpy(tmp_str, req_line->version.iov_base, req_line->version.iov_len); - printf("req_version:%s\n", tmp_str); -} - -void output_http_res_line(struct http_response_line *res_line) -{ - char tmp_str[MAX_KEY_STR_LEN] = {0}; - memcpy(tmp_str, res_line->version.iov_base, res_line->version.iov_len); - printf("res_version:%s\n", tmp_str); - - memset(tmp_str, 0, sizeof(tmp_str)); - memcpy(tmp_str, res_line->status.iov_base, res_line->status.iov_len); - printf("res_status:%s\n", tmp_str); -} - -void output_http_header(struct http_header_field *header) -{ - char tmp_key[MAX_KEY_STR_LEN] = {0}; - char tmp_val[MAX_KEY_STR_LEN] = {0}; - - memcpy(tmp_key, header->key.iov_base, header->key.iov_len); - memcpy(tmp_val, header->val.iov_base, header->val.iov_len); - printf("<%s:%s>\n", tmp_key, tmp_val); -} - -void output_http_body(hstring *body, int decompress_flag) -{ - int counter = 0; - - if (1 == decompress_flag) - { - printf("\n\n----------------decompress body len:%zu---------------\n", - body->iov_len); - } - else - { - printf("\n\n----------------raw body len:%zu---------------\n", - body->iov_len); - } - - for (size_t i = 0; i < body->iov_len; i++) - { - if (counter % 16 == 0) - { - printf("\n"); - } - printf("%02x ", (unsigned char)body->iov_base[i]); - counter++; - } - printf("\n"); -} -#endif - -static void append_http_payload(struct session *sess, struct gtest_plug_exdata_t *gtest_plug_exdata, enum payload_compress_mode mode, - const hstring *body, enum http_transaction_type type) -{ - (void)sess; - if (NULL == body->iov_base || 0 == body->iov_len) - { - return; - } - if (NULL == gtest_plug_exdata->payload_md5ctx[mode][type]) - { - gtest_plug_exdata->payload_md5ctx[mode][type] = MMALLOC(MD5_CTX, sizeof(MD5_CTX)); - MD5Init(gtest_plug_exdata->payload_md5ctx[mode][type]); - } - MD5Update(gtest_plug_exdata->payload_md5ctx[mode][type], (unsigned char *)body->iov_base, body->iov_len); -} - -int http_field_to_json(cJSON *object, const char *key, char *val, size_t val_len) -{ - if (NULL == object || NULL == key || NULL == val || 0 == val_len) - { - return -1; - } - - char *tmp = CALLOC(char, val_len + 1); - memcpy(tmp, val, val_len); - cJSON_AddStringToObject(object, key, tmp); - FREE(tmp); - - return 0; -} - -void transaction_index_to_json(cJSON *ctx, int transaction_index) -{ - cJSON_AddNumberToObject(ctx, GTEST_HTTP_TRANS_SEQ_NAME, transaction_index); -} - -void req_line_to_json(cJSON *ctx, struct http_request_line *req_line) -{ - http_field_to_json(ctx, "method", (char *)req_line->method, req_line->method_len); - http_field_to_json(ctx, "uri", (char *)req_line->uri, req_line->uri_len); - http_field_to_json(ctx, "req_version", (char *)req_line->version, req_line->version_len); - - cJSON_AddNumberToObject(ctx, "major_version", req_line->major_version); - cJSON_AddNumberToObject(ctx, "minor_version", req_line->minor_version); -} - -void res_line_to_json(cJSON *ctx, struct http_response_line *res_line) -{ - http_field_to_json(ctx, "res_version", (char *)res_line->version, res_line->version_len); - http_field_to_json(ctx, "res_status", (char *)res_line->status, res_line->status_len); - - cJSON_AddNumberToObject(ctx, "major_version", res_line->major_version); - cJSON_AddNumberToObject(ctx, "minor_version", res_line->minor_version); - cJSON_AddNumberToObject(ctx, "status_code", res_line->status_code); -} - -void http_header_to_json(cJSON *ctx, struct http_header_field *header) -{ - char key[MAX_KEY_STR_LEN] = {0}; - if ((header->name == NULL) || (header->value == NULL)) - { - return; - } - - memcpy(key, header->name, header->name_len); - - if (cJSON_HasObjectItem(ctx, key) == FALSE) - { - http_field_to_json(ctx, key, (char *)header->value, header->value_len); - } - else - { - // ctx already has the key, so rename key by key%d - char new_key[header->value_len + 64] = {0}; - snprintf(new_key, sizeof(new_key), "%s%d", key, g_header_count++); - http_field_to_json(ctx, new_key, (char *)header->value, header->value_len); - } -} - -void http_url_add_to_json(cJSON *ctx, struct http_message *msg) -{ - hstring raw_url_result = {}; - - if (cJSON_GetObjectItem(ctx, GTEST_HTTP_URL_NAME)) - { - return; - } - - http_message_get0_raw_url(msg, (const char **)&raw_url_result, &raw_url_result.iov_len); - if (raw_url_result.iov_base == NULL) - { - return; - } - - struct http_header_field raw_url_header_result = {}; - - raw_url_header_result.name = (char *)GTEST_HTTP_URL_NAME; - raw_url_header_result.name_len = strlen(GTEST_HTTP_URL_NAME); - raw_url_header_result.value = (char *)raw_url_result.iov_base; - raw_url_header_result.value_len = raw_url_result.iov_len; - - http_header_to_json(ctx, &raw_url_header_result); - - char decoded_url_buffer[raw_url_result.iov_len] = {0}; - size_t decode_url_len = http_url_decode((const char *)raw_url_result.iov_base, raw_url_result.iov_len, decoded_url_buffer, sizeof(decoded_url_buffer)); - - if (decode_url_len < raw_url_result.iov_len) - { - struct http_header_field decode_url_header_result = {}; - decode_url_header_result.name = (char *)"__X_HTTP_DECODED_URL"; - decode_url_header_result.name_len = strlen("__X_HTTP_DECODED_URL"); - decode_url_header_result.value = decoded_url_buffer; - decode_url_header_result.value_len = decode_url_len; - http_header_to_json(ctx, &decode_url_header_result); - } -} - -static void commit_payload_md5sum(cJSON *last_jnode, struct gtest_plug_exdata_t *gtest_plug_exdata, enum http_transaction_type type) -{ - // finish md5 streming hash - for (int mode = 0; mode < PAYLOAD_MAX; mode++) - { - if (gtest_plug_exdata->payload_md5ctx[mode][type]) - { - unsigned char md5_result_bin[16] = {0}; - unsigned char md5_result_cstr[33] = {0}; - MD5Final(md5_result_bin, gtest_plug_exdata->payload_md5ctx[mode][type]); - - for (int i = 0; i < 16; i++) - sprintf((char *)md5_result_cstr + 2 * i, "%02x", md5_result_bin[i]); - md5_result_cstr[32] = '\0'; - if (mode == PAYLOAD_RAW) - { - cJSON_AddStringToObject(last_jnode, GTEST_HTTP_RAW_PAYLOAD_MD5_NAME, (char *)md5_result_cstr); - } - else - { - cJSON_AddStringToObject(last_jnode, GTEST_HTTP_DECOMPRESS_PAYLOAD_MD5_NAME, (char *)md5_result_cstr); - } - FREE(gtest_plug_exdata->payload_md5ctx[mode][type]); - gtest_plug_exdata->payload_md5ctx[mode][type] = NULL; - } - } -} - -// Full duplex -static void commit_last_half_flow_data(struct gtest_plug_exdata_t *gtest_plug_exdata, - struct http_message *msg, enum http_transaction_type type, int final) -{ - char result_name[MAX_KEY_STR_LEN] = {0}; - - cJSON *last_jnode = gtest_plug_exdata->result_jnode[type]; - if (last_jnode) - { - commit_payload_md5sum(last_jnode, gtest_plug_exdata, type); - sprintf(result_name, "%d", g_result_count); - commit_test_result_json(last_jnode, result_name); - gtest_plug_exdata->result_jnode[type] = NULL; - g_result_count++; - } - - if (0 == final) - { - gtest_plug_exdata->result_jnode[type] = cJSON_CreateObject(); - if (HTTP_TRANSACTION_REQ == type) - { - cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[type], GTEST_HTTP_TRANS_NAME, "request"); - } - else if (HTTP_TRANSACTION_RES == type) - { - cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[type], GTEST_HTTP_TRANS_NAME, "response"); - } - if (msg) - { - transaction_index_to_json(gtest_plug_exdata->result_jnode[type], http_message_get_transaction_seq(msg)); - } - } -} - -static void http_decoder_test_update_session_tuple4(struct session *sess, struct gtest_plug_exdata_t *gtest_plug_exdata) -{ - if (gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION] == NULL) - { - const char *human_addr_cstr = session_get_readable_addr(sess); - if (NULL == human_addr_cstr) - { - fprintf(stderr, "can't get readable_addr, to use session_get_readable_addr() the sapp_log.conf level must <= INFO\n"); - return; - } - char result_name[MAX_KEY_STR_LEN] = {0}; - gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION] = cJSON_CreateObject(); - cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION], GTEST_HTTP_TUPLE4_NAME, human_addr_cstr); - sprintf(result_name, "%d", g_result_count++); - commit_test_result_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION], result_name); - } -} - -static int get_gtest_plug_entry(const char *cfg_path, char *entry_name, int max_len, char *topic_name, int topic_max_len) -{ - FILE *fp = fopen(cfg_path, "r"); - if (NULL == fp) - { - fprintf(stderr, "[%s:%d]Can't open config file:%s", - __FUNCTION__, __LINE__, cfg_path); - return -1; - } - - char errbuf[256] = {0}; - - toml_table_t *root = toml_parse_file(fp, errbuf, sizeof(errbuf)); - fclose(fp); - - toml_table_t *basic_sec_tbl = toml_table_in(root, "entry"); - if (NULL == basic_sec_tbl) - { - fprintf(stderr, "[%s:%d]config file:%s has no key: [entry]", - __FUNCTION__, __LINE__, cfg_path); - toml_free(root); - return -1; - } - - toml_datum_t str_val = toml_string_in(basic_sec_tbl, "name"); - if (str_val.ok != 0) - { - strncpy(entry_name, str_val.u.s, max_len); - free(str_val.u.s); - } - - toml_datum_t topic_str_val = toml_string_in(basic_sec_tbl, "topic"); - if (str_val.ok != 0) - { - strncpy(topic_name, topic_str_val.u.s, topic_max_len); - free(topic_str_val.u.s); - } - - toml_free(root); - return 0; -} - -static void set_gtest_plug_entry(const char *entry_name) -{ - if (NULL == entry_name) - { - g_entry_fun = http_decoder_test_entry; // set default - return; - } - for (size_t i = 0; g_entry_tbl[i].name != NULL; i++) - { - if (strcmp(entry_name, g_entry_tbl[i].name) == 0) - { - g_entry_fun = g_entry_tbl[i].entry; - return; - } - } - g_entry_fun = http_decoder_test_entry; // set default -} - -extern "C" void http_decoder_test_entry(struct session *sess, int topic_id, const void *raw_msg, void *no_use_ctx, void *plugin_env) -{ - (void)topic_id; - (void)no_use_ctx; - (void)plugin_env; - struct http_request_line req_line = {}; - struct http_response_line res_line = {}; - struct http_header_field header = {}; - hstring body = {}; - struct http_message *msg = (struct http_message *)raw_msg; - enum http_message_type msg_type = http_message_get_type(msg); - - struct gtest_plug_exdata_t *gtest_plug_exdata = (struct gtest_plug_exdata_t *)session_exdata_get(sess, g_exdata_idx); - if (NULL == gtest_plug_exdata) - { - gtest_plug_exdata = (struct gtest_plug_exdata_t *)calloc(1, sizeof(struct gtest_plug_exdata_t)); - session_exdata_set(sess, g_exdata_idx, gtest_plug_exdata); - } - - // if (http_message_type_is_req(sess, msg_type)) - // { - // cJSON *json = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ]; - // } - // else - // { - // cJSON *json = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES]; - // } - - http_decoder_test_update_session_tuple4(sess, gtest_plug_exdata); - - switch (msg_type) - { - case HTTP_MESSAGE_REQ_LINE: - commit_last_half_flow_data(gtest_plug_exdata, msg, HTTP_TRANSACTION_REQ, 0); - http_message_get0_request_line(msg, &req_line); - req_line_to_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ], &req_line); - break; - case HTTP_MESSAGE_REQ_HEADER: - while (http_message_get0_next_header(msg, &header) >= 0) - { - http_header_to_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ], &header); - } - g_header_count = 1; - break; - case HTTP_MESSAGE_REQ_HEADER_END: - http_url_add_to_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ], msg); - break; - case HTTP_MESSAGE_REQ_BODY_START: - case HTTP_MESSAGE_REQ_BODY: - memset(&body, 0, sizeof(hstring)); - http_message_get0_uncompressed_body(msg, (const char **)&body.iov_base, &body.iov_len); - if (body.iov_base && body.iov_len) - { - append_http_payload(sess, gtest_plug_exdata, PAYLOAD_RAW, &body, HTTP_TRANSACTION_REQ); - } - // output_http_body(&body, 0); - http_message_get0_decompressed_body(msg, (const char **)&body.iov_base, &body.iov_len); - // output_http_body(&body, 1); - if (body.iov_base && body.iov_len) - { - append_http_payload(sess, gtest_plug_exdata, PAYLOAD_DECOMPRESS, &body, HTTP_TRANSACTION_REQ); - } - break; - case HTTP_MESSAGE_RES_LINE: - commit_last_half_flow_data(gtest_plug_exdata, msg, HTTP_TRANSACTION_RES, 0); - http_message_get0_response_line(msg, &res_line); - res_line_to_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES], &res_line); - break; - case HTTP_MESSAGE_RES_HEADER: - while (http_message_get0_next_header(msg, &header) >= 0) - { - http_header_to_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES], &header); - } - g_header_count = 1; - break; - case HTTP_MESSAGE_RES_BODY_START: - case HTTP_MESSAGE_RES_BODY: - memset(&body, 0, sizeof(hstring)); - http_message_get0_uncompressed_body(msg, (const char **)&body.iov_base, &body.iov_len); - if (body.iov_base && body.iov_len) - { - append_http_payload(sess, gtest_plug_exdata, PAYLOAD_RAW, &body, HTTP_TRANSACTION_RES); - } - // output_http_body(&body, 0); - memset(&body, 0, sizeof(hstring)); - http_message_get0_decompressed_body(msg, (const char **)&body.iov_base, &body.iov_len); - // output_http_body(&body, 1); - if (body.iov_base && body.iov_len) - { - append_http_payload(sess, gtest_plug_exdata, PAYLOAD_DECOMPRESS, &body, HTTP_TRANSACTION_RES); - } - break; - - // to do: check payload - default: - break; - } - - return; -} - -void http_decoder_test_exdata_free(int idx, void *ex_ptr, void *arg) -{ - (void)idx; - (void)arg; - if (ex_ptr != NULL) - { - struct gtest_plug_exdata_t *gtest_plug_exdata = (struct gtest_plug_exdata_t *)ex_ptr; - if (gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ]) - { - commit_last_half_flow_data(gtest_plug_exdata, NULL, HTTP_TRANSACTION_REQ, 1); - } - if (gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES]) - { - commit_last_half_flow_data(gtest_plug_exdata, NULL, HTTP_TRANSACTION_RES, 1); - } - free(ex_ptr); - } -} - -// static int update_config_file(const char *filename, const char *key, const char *value) -// { -// char cmd_buf[1024] = {}; -// snprintf(cmd_buf, 1024, "sed 's/^[ \t]*%s=.*/%s=%s/g' -i %s", key, key, value, filename); -// int ret = system(cmd_buf); -// return ret; -// } - -extern "C" void http_decoder_test_state_entry(struct session *sess, int topic_id, const void *raw_msg, void *no_use_ctx, void *plugin_env) -{ - (void)topic_id; - (void)no_use_ctx; - (void)plugin_env; - static int msg_index = 0; - char msg_index_name[64] = {}; - char msg_index_value[64] = {}; - cJSON *json_object = NULL; - enum http_message_type msg_type = http_message_get_type((struct http_message *)raw_msg); - - struct gtest_plug_exdata_t *gtest_plug_exdata = (struct gtest_plug_exdata_t *)session_exdata_get(sess, g_exdata_idx); - if (NULL == gtest_plug_exdata) - { - gtest_plug_exdata = (struct gtest_plug_exdata_t *)calloc(1, sizeof(struct gtest_plug_exdata_t)); - gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ] = cJSON_CreateObject(); - gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES] = cJSON_CreateObject(); - session_exdata_set(sess, g_exdata_idx, gtest_plug_exdata); - } - - if (http_message_type_is_req(sess, msg_type)) - { - json_object = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ]; - } - else - { - json_object = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES]; - } - if (HTTP_TRANSACTION_END == msg_type) - { - unsigned char flow_flag; - session_is_symmetric(sess, &flow_flag); - if (SESSION_SEEN_C2S_FLOW == flow_flag) - { - json_object = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ]; - } - else if (SESSION_SEEN_S2C_FLOW == flow_flag) - { - json_object = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES]; - } - else - { // is symmetric - json_object = gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES]; - } - } - int cur_transaction_id = http_message_get_transaction_seq((const http_message *)raw_msg); - - if (HTTP_TRANSACTION_START == msg_type || HTTP_TRANSACTION_END == msg_type) - { - snprintf(msg_index_name, sizeof(msg_index_name), "msg_%d", msg_index++); - snprintf(msg_index_value, sizeof(msg_index_value), "%s_transaction_%d", http_message_type_to_string(msg_type), cur_transaction_id); - cJSON_AddStringToObject(json_object, msg_index_name, msg_index_value); - } - else - { - snprintf(msg_index_name, sizeof(msg_index_name), "msg_%d", msg_index++); - cJSON_AddStringToObject(json_object, msg_index_name, http_message_type_to_string(msg_type)); - } - return; -} - -extern "C" void http_decoder_tunnel_entry(struct session *sess, int topic_id, const void *raw_msg, void *no_use_ctx, void *plugin_env) -{ - (void)topic_id; - (void)no_use_ctx; - (void)plugin_env; - struct gtest_plug_exdata_t *gtest_plug_exdata; - enum http_tunnel_message_type tmsg_type = http_tunnel_message_type_get((const struct http_tunnel_message *)raw_msg); - static size_t req_payload_block = 0, req_payload_size = 0; - static size_t res_payload_block = 0, res_payload_size = 0; - gtest_plug_exdata = (struct gtest_plug_exdata_t *)session_exdata_get(sess, g_exdata_idx); - - switch (tmsg_type) - { - case HTTP_TUNNEL_OPENING: - { - if (NULL == gtest_plug_exdata) - { - gtest_plug_exdata = (struct gtest_plug_exdata_t *)calloc(1, sizeof(struct gtest_plug_exdata_t)); - session_exdata_set(sess, g_exdata_idx, gtest_plug_exdata); - } - const char *human_addr_cstr = session_get_readable_addr(sess); - gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ] = cJSON_CreateObject(); - gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES] = cJSON_CreateObject(); - gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION] = cJSON_CreateObject(); - cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION], GTEST_HTTP_TUPLE4_NAME, human_addr_cstr); - commit_test_result_json(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_SESSION], "TUNNEL_NEW"); - } - break; - - case HTTP_TUNNEL_ACTIVE: - { - enum flow_type curdir = session_get_flow_type(sess); - hstring tunnel_payload = {}; - http_tunnel_message_get_payload((const struct http_tunnel_message *)raw_msg, &tunnel_payload); - if (FLOW_TYPE_C2S == curdir) - { - req_payload_block++; - req_payload_size += tunnel_payload.iov_len; - } - else - { - res_payload_block++; - res_payload_size += tunnel_payload.iov_len; - } - } - break; - case HTTP_TUNNEL_CLOSING: - { - cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ], "flow", "C2S"); - cJSON_AddStringToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES], "flow", "S2C"); - cJSON_AddNumberToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ], "payload_block", req_payload_block); - cJSON_AddNumberToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_REQ], "payload_size", req_payload_size); - cJSON_AddNumberToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES], "payload_block", res_payload_block); - cJSON_AddNumberToObject(gtest_plug_exdata->result_jnode[HTTP_TRANSACTION_RES], "payload_size", res_payload_size); - } - break; - default: - assert(0); - break; - } -} - -extern "C" void *http_decoder_test_init(struct stellar *st) -{ - g_http_gtest_plugin_id = stellar_session_plugin_register(st, NULL, NULL, NULL); - g_exdata_idx = stellar_exdata_new_index(st, "HTTP_DECODER_GTEST_EXDATA", http_decoder_test_exdata_free, NULL); - if (g_exdata_idx < 0) - { - printf("[%s:%d]: can't get http_decoder exdata index !!!\n", __FUNCTION__, __LINE__); - return NULL; - } - - char entry_name[64] = ""; - char topic_name[64] = ""; - get_gtest_plug_entry(GTEST_PLUG_ENTRY_CFG, entry_name, sizeof(entry_name) - 1, topic_name, sizeof(topic_name) - 1); - set_gtest_plug_entry(entry_name); - g_topic_id = stellar_mq_get_topic_id(st, topic_name); - if (g_topic_id < 0) - { - printf("[%s:%d]: can't get http_decoder topic:%s id !!!\n", __FUNCTION__, __LINE__, topic_name); - return NULL; - } - stellar_session_mq_subscribe(st, g_topic_id, g_entry_fun, g_http_gtest_plugin_id); - printf("http_decoder_gtest_init succ, plugin_id:%d, sub_topic_id:%d\n", g_http_gtest_plugin_id, g_topic_id); - - return (void *)strdup("http_decoder_test_ctx"); -} - -extern "C" void http_decoder_test_exit(void *test_ctx) -{ - if (test_ctx != NULL) - { - FREE(test_ctx); - } - printf("http_decoder_test_exit OK!\n"); -}
\ No newline at end of file diff --git a/test/decoders/http/test_based_on_stellar/CMakeLists.txt b/test/decoders/http/test_based_on_stellar/CMakeLists.txt deleted file mode 100644 index bc08289..0000000 --- a/test/decoders/http/test_based_on_stellar/CMakeLists.txt +++ /dev/null @@ -1,125 +0,0 @@ -set(DECODER_NAME http) - -set(TEST_RUN_DIR ${CMAKE_BINARY_DIR}/test/decoders/http) -set(SAPP_DEVEL_DIR ${TEST_RUN_DIR}/lib) -set(TEST_MAIN http_test_main) - -include_directories(${CMAKE_SOURCE_DIR}/include) -include_directories(${CMAKE_SOURCE_DIR}/test) - -#various ways to add -rdynamic for centos7, centos8, and different cmake version -add_definitions(-rdynamic) - -# assemble test env -add_test(NAME HTTP_MKDIR_METRIC COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/metrics; mkdir -p ${TEST_RUN_DIR}/plugin; mkdir -p ${TEST_RUN_DIR}/log; mkdir -p ${TEST_RUN_DIR}/pcap") -add_test(NAME HTTP_COPY_SPEC COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/plugin/ && cp ${CMAKE_CURRENT_SOURCE_DIR}/env/spec.toml ${TEST_RUN_DIR}/plugin/spec.toml") -add_test(NAME HTTP_COPY_CONF COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/conf/ && cp ${CMAKE_CURRENT_SOURCE_DIR}/env/stellar.toml ${TEST_RUN_DIR}/conf/stellar.toml") -add_test(NAME HTTP_COPY_LOG_CONF COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/conf/ && cp ${CMAKE_CURRENT_SOURCE_DIR}/env/log.toml ${TEST_RUN_DIR}/conf/log.toml") -add_test(NAME HTTP_COPY_HTTP_DECODER_CONF COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/etc/http && cp ${CMAKE_CURRENT_SOURCE_DIR}/env/http_decoder.toml ${TEST_RUN_DIR}/etc/http/") -add_test(NAME HTTP_COPY_HTTP_GTEST_ENTRY_CONF COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/etc/http && cp ${CMAKE_CURRENT_SOURCE_DIR}/env/gtest_entry.toml ${TEST_RUN_DIR}/etc/http/") - -# update config files -add_test(NAME HTTP_UPDATE_GTEST_PLUG_ENTRY COMMAND bash -c "sed -i 's/name=.*/name=\\x22http_decoder_test_entry\\x22/' ${TEST_RUN_DIR}/etc/http/gtest_entry.toml") -add_test(NAME HTTP_UPDATE_GTEST_PLUG_TOPIC COMMAND bash -c "sed -i 's/topic=.*/topic=\\x22HTTP_MESSAGE\\x22/' ${TEST_RUN_DIR}/etc/http/gtest_entry.toml") - -# update plugin to be tested -add_test(NAME HTTP_CP_DECODER_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/decoders/http/http_dyn.so ${TEST_RUN_DIR}/plugin/http.so") -add_test(NAME HTTP_CP_DECODER_GTEST_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/test/decoders/http/http_test.so ${TEST_RUN_DIR}/plugin/http_test.so") - -set_tests_properties(HTTP_MKDIR_METRIC HTTP_COPY_SPEC HTTP_COPY_HTTP_DECODER_CONF HTTP_COPY_HTTP_GTEST_ENTRY_CONF - HTTP_COPY_CONF HTTP_COPY_LOG_CONF - HTTP_CP_DECODER_SO HTTP_CP_DECODER_GTEST_SO - HTTP_UPDATE_GTEST_PLUG_ENTRY HTTP_UPDATE_GTEST_PLUG_TOPIC - PROPERTIES FIXTURES_SETUP HTTP_GTEST) - -set(TEST_JSON_DIR ${PROJECT_SOURCE_DIR}/test/decoders/http/benchmarks/json) -set(TEST_PCAP_DIR ${PROJECT_SOURCE_DIR}/test/decoders/http/benchmarks/pcap) - -# run tests -add_test(NAME HTTP_GET_SINGLE_TRANS_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_single_trans.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_get_single_trans.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_GET_MULTI_TRANS_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_multi_trans.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_get_multi_trans.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_GET_LONG_COOKIE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_long_cookie.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_get_long_cookie.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_GET_ENCODED_URI_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_encoded_uri.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_get_encoded_uri.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_RES_GZIP_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_res_gzip.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_res_gzip.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_CHUNKED_RES_GZIP_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_chunked_res_gzip.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_chunked_res_gzip.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_OVER_TCP_KEEPALIVE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_over_tcp_keepalive.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_over_tcp_keepalive.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_OVER_PPPOE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_over_pppoe.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_over_pppoe.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_OVER_TLS_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_over_tls.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_over_tls.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME NON_HTTP_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/non_http.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/non_http.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_REQ_1BYTE_SLIDING_WINDOW_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_req_1byte_sliding_window.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_req_1byte_sliding_window.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_RES_1BYTE_SLIDING_WINDOW_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_res_1byte_sliding_window.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_res_1byte_sliding_window.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_NO_CONTENT_LENGTH_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_no_content_length.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_no_content_length.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_POST_MULTIPART_FORM_DATA_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_post_multipart_form_data.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_post_multipart_form_data.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_HEADERS_EXCEED_MAXIMUM_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_hdrs_exceed_maximum.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_hdrs_exceed_maximum.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_GET_MALFORMED_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_malformed.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_get_malformed.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_URL_WITHOUT_HOST_V4_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_url_test_without_host.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_url_test_without_host.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_URL_WITHOUT_HOST_V6_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_url_test_without_host_v6.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_url_test_without_host_v6.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -#no SYN, steallar not support ! -# add_test(NAME HTTP_HEADER_VALUE_EMPTY_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_hdr_value_empty.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_hdr_value_empty.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_UPGRADE_WEBSOCKET_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_upgrade_websocket.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_upgrade_websocket.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_MULTI_PARSE_ERROR_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_multi_parse_error.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_multi_parse_error.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_GET_REQ_PIPELINE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_req_pipeline.pcap ${TEST_RUN_DIR}/pcap/test.pcap;./${TEST_MAIN} ${TEST_JSON_DIR}/http_get_req_pipeline.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_TRANS_PIPELINE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_trans_pipeline.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_trans_pipeline.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -#no SYN, steallar not support ! -# add_test(NAME HTTP_HEADER_TRUNCATED_IN_KV_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_hdr_truncated_in_kv.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_hdr_truncated_in_kv.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -# add_test(NAME HTTP_HEADER_TRUNCATED_AFTER_KV_TEST COMMAND ./${TEST_MAIN} ${TEST_JSON_DIR}/http_hdr_truncated_after_kv.json -r ${TEST_PCAP_DIR}/http_hdr_truncated_after_kv.pcap WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_FIN_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_fin.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/non_http.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -# add_test(NAME HTTP_TUNNEL_ONLY_HDR_TEST COMMAND ./${TEST_MAIN} ${TEST_JSON_DIR}/http_tunnel_s2c_only_hdr.json -# -r ${TEST_PCAP_DIR}/http_tunnel_s2c_only_hdr.pcap WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_CHN_ENCODE_URL COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_chn_encode_url.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_chn_encode_url.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_ZLIB_DEADLOCK COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_zlib_deadlock.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_zlib_deadlock.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_OUT_OF_ORDER COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_out_of_order.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_out_of_order.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_GZIP_OUT_OF_ORDER COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_gzip_out_of_order.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_gzip_out_of_order.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_HEADER_SPLITTING COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_pipeline_header_splitting.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_pipeline_header_splitting.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) - -set_tests_properties(HTTP_GET_SINGLE_TRANS_TEST - HTTP_GET_MULTI_TRANS_TEST - HTTP_GET_LONG_COOKIE_TEST - HTTP_GET_ENCODED_URI_TEST - HTTP_RES_GZIP_TEST - HTTP_CHUNKED_RES_GZIP_TEST - HTTP_OVER_TCP_KEEPALIVE_TEST - HTTP_OVER_PPPOE_TEST - HTTP_OVER_TLS_TEST - NON_HTTP_TEST - HTTP_REQ_1BYTE_SLIDING_WINDOW_TEST - HTTP_RES_1BYTE_SLIDING_WINDOW_TEST - HTTP_NO_CONTENT_LENGTH_TEST - HTTP_POST_MULTIPART_FORM_DATA_TEST - HTTP_HEADERS_EXCEED_MAXIMUM_TEST - HTTP_GET_MALFORMED_TEST - HTTP_URL_WITHOUT_HOST_V4_TEST - HTTP_URL_WITHOUT_HOST_V6_TEST - HTTP_MULTI_PARSE_ERROR_TEST - HTTP_UPGRADE_WEBSOCKET_TEST - HTTP_GET_REQ_PIPELINE_TEST - HTTP_TRANS_PIPELINE_TEST - HTTP_FIN_TEST - HTTP_CHN_ENCODE_URL - HTTP_ZLIB_DEADLOCK - HTTP_OUT_OF_ORDER - HTTP_GZIP_OUT_OF_ORDER - HTTP_HEADER_SPLITTING - PROPERTIES FIXTURES_REQUIRED HTTP_GTEST) - -add_test(NAME HTTP_UPDATE_STATE_PLUG_ENTRY COMMAND bash -c "sed -i 's/name=.*/name=\\x22http_decoder_test_state_entry\\x22/' ${TEST_RUN_DIR}/etc/http/gtest_entry.toml") -add_test(NAME HTTP_UPDATE_STATE_PLUG_TOPIC COMMAND bash -c "sed -i 's/topic=.*/topic=\\x22HTTP_MESSAGE\\x22/' ${TEST_RUN_DIR}/etc/http/gtest_entry.toml") - -set_tests_properties(HTTP_UPDATE_STATE_PLUG_ENTRY HTTP_UPDATE_STATE_PLUG_TOPIC HTTP_CP_DECODER_SO HTTP_CP_DECODER_GTEST_SO HTTP_MKDIR_METRIC - PROPERTIES FIXTURES_SETUP HTTP_STATE_TEST) - -add_test(NAME HTTP_MSG_TYPE_STATE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_post.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_msg_type_state.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_MSG_TYPE_STATE_C2S_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_post_c2s.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_msg_type_state_c2s.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_MSG_TYPE_STATE_S2C_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_post_s2c.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_msg_type_state_s2c.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_MSG_TYPE_STATE_PIPELINE_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_get_multi_trans.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_msg_type_state_pipeline.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_MSG_TYPE_STATE_SES_EXCEPTION_C2S_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_session_exception_c2s.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_msg_type_state_exception_c2s.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) -add_test(NAME HTTP_MSG_TYPE_STATE_SES_EXCEPTION_S2C_TEST COMMAND sh -c "ln -sf ${TEST_PCAP_DIR}/http_session_exception_s2c.pcap ${TEST_RUN_DIR}/pcap/test.pcap; ./${TEST_MAIN} ${TEST_JSON_DIR}/http_msg_type_state_exception_s2c.json" WORKING_DIRECTORY ${TEST_RUN_DIR}) - -set_tests_properties(HTTP_MSG_TYPE_STATE_TEST - HTTP_MSG_TYPE_STATE_C2S_TEST - HTTP_MSG_TYPE_STATE_S2C_TEST - HTTP_MSG_TYPE_STATE_PIPELINE_TEST - HTTP_MSG_TYPE_STATE_SES_EXCEPTION_C2S_TEST - HTTP_MSG_TYPE_STATE_SES_EXCEPTION_S2C_TEST - PROPERTIES FIXTURES_REQUIRED HTTP_STATE_TEST) - diff --git a/test/decoders/http/test_based_on_stellar/env/gtest_entry.toml b/test/decoders/http/test_based_on_stellar/env/gtest_entry.toml deleted file mode 100644 index 7491e9d..0000000 --- a/test/decoders/http/test_based_on_stellar/env/gtest_entry.toml +++ /dev/null @@ -1,3 +0,0 @@ -[entry] -name="http_decoder_test_state_entry" -topic="HTTP_MESSAGE" diff --git a/test/decoders/http/test_based_on_stellar/env/http_decoder.toml b/test/decoders/http/test_based_on_stellar/env/http_decoder.toml deleted file mode 100644 index a2bb060..0000000 --- a/test/decoders/http/test_based_on_stellar/env/http_decoder.toml +++ /dev/null @@ -1,18 +0,0 @@ -[basic] -# Switch for decompress body, open(1) closed(0), default(0) -decompress=1 - -# per session mempool size, default(32Ki) -mempool_size=32768 - -# per session http parsed result queue length -result_queue_len=16 - -# call fieldstat every stat_interval_pkts -stat_interval_pkts=1000 - -# fieldstat output interval -stat_output_interval=1 - -# connect tunnel -proxy_enable=0
\ No newline at end of file diff --git a/test/decoders/http/test_based_on_stellar/env/log.toml b/test/decoders/http/test_based_on_stellar/env/log.toml deleted file mode 100644 index b5213d9..0000000 --- a/test/decoders/http/test_based_on_stellar/env/log.toml +++ /dev/null @@ -1,4 +0,0 @@ -[log] -output = "stderr" # stderr, file -file = "log/stellar.log" -level = "INFO" # TRACE, DEBUG, INFO, WARN, ERROR, FATAL diff --git a/test/decoders/http/test_based_on_stellar/env/spec.toml b/test/decoders/http/test_based_on_stellar/env/spec.toml deleted file mode 100644 index cce2c71..0000000 --- a/test/decoders/http/test_based_on_stellar/env/spec.toml +++ /dev/null @@ -1,9 +0,0 @@ -[[plugin]] -path = "./plugin/http.so" -init = "http_decoder_init" -exit = "http_decoder_exit" - -[[plugin]] -path = "./plugin/http_test.so" -init = "http_decoder_test_init" -exit = "http_decoder_test_exit" diff --git a/test/decoders/http/test_based_on_stellar/env/stellar.toml b/test/decoders/http/test_based_on_stellar/env/stellar.toml deleted file mode 100644 index 308c884..0000000 --- a/test/decoders/http/test_based_on_stellar/env/stellar.toml +++ /dev/null @@ -1,64 +0,0 @@ -[instance] - id = 1 # range: [0, 4095] (20 bit) - -[packet_io] - mode = "pcapfile" # pcapfile, pcaplist, marsio - app_symbol = "stellar" - dev_symbol = "nf_0_fw" - pcap_path = "./pcap/test.pcap" - nr_worker_thread = 1 # range: [1, 256] - cpu_mask = [5, 6, 7, 8, 9, 10, 11, 12] - idle_yield_interval_ms = 90 # range: [0, 60000] (ms) - -[ip_reassembly] - enable = 1 - bucket_entries = 32 # range: [1, 4294967295] (must be power of 2) - bucket_num = 1024 # range: [1, 4294967295] - - ip_frag_timeout_ms = 1000 # range: [1, 60000] (ms) - ip_frag_expire_polling_interval_ms = 0 # range: [0, 60000] (ms) - ip_frag_expire_polling_limit = 1024 # range: [1, 1024] - -[session_manager] - tcp_session_max = 500 - udp_session_max = 500 - - evict_old_on_tcp_table_limit = 1 # range: [0, 1] - evict_old_on_udp_table_limit = 1 # range: [0, 1] - - expire_period_ms = 0 # range: [0, 60000] (ms) - expire_batch_max = 1024 # range: [1, 1024] - - [session_manager.tcp_timeout_ms] - init = 500 # range: [1, 60000] (ms) - handshake = 500 # range: [1, 60000] (ms) - data = 500 # range: [1, 15999999000] (ms) - half_closed = 500 # range: [1, 604800000] (ms) - time_wait = 500 # range: [1, 600000] (ms) - discard_default = 1000 # range: [1, 15999999000] (ms) - unverified_rst = 500 # range: [1, 600000] (ms) - - [session_manager.udp_timeout_ms] - data = 500 # range: [1, 15999999000] (ms) - discard_default = 500 # range: [1, 15999999000] (ms) - - [session_manager.duplicated_packet_bloom_filter] - enable = 0 - capacity = 1000000 # range: [1, 4294967295] - time_window_ms = 10000 # range: [1, 60000] (ms) - error_rate = 0.00001 # range: [0.0, 1.0] - - [session_manager.evicted_session_bloom_filter] - enable = 0 # range: [0, 1] - capacity = 1000000 # range: [1, 4294967295] - time_window_ms = 10000 # range: [1, 60000] (ms) - error_rate = 0.00001 # range: [0.0, 1.0] - - [session_manager.tcp_reassembly] - enable = 1 # range: [0, 1] - timeout_ms = 100 # range: [1, 60000] (ms) - buffered_segments_max = 256 # range: [2, 4096] per flow - -[stat] - merge_interval_ms = 500 # range: [0, 60000] (ms) - output_interval_ms = 1000 # range: [0, 60000] (ms) |
