feat(integration decoders): http and glimpse_detector

compile pass, todo test
This commit is contained in:
yangwei
2024-08-20 19:01:06 +08:00
committed by lijia
parent 6e46dbf762
commit dafbecd49a
804 changed files with 66904 additions and 4 deletions

View File

View File

@@ -0,0 +1,33 @@
set(DECODER_NAME http_decoder)
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/toml DEPS_SRC)
add_library(${DECODER_NAME}_test SHARED http_decoder_test_plug.cpp md5.c ${DEPS_SRC})
add_dependencies(${DECODER_NAME}_test ${DECODER_NAME})
target_link_libraries(${DECODER_NAME}_test MESA_prof_load cjson-static)
set_target_properties(${DECODER_NAME}_test PROPERTIES PREFIX "")
add_library(${DECODER_NAME}_perf SHARED http_decoder_perf_plug.cpp)
add_dependencies(${DECODER_NAME}_perf ${DECODER_NAME})
set_target_properties(${DECODER_NAME}_perf PROPERTIES PREFIX "")
set(TEST_RUN_DIR /home/mesasoft/sapp_run)
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/deps)
include_directories(/opt/tsg/stellar/include/)
include_directories(/opt/tsg/framework/include/)
include_directories(/opt/MESA/include/MESA)
include_directories(${CMAKE_BINARY_DIR}/vendor/vbuild/include)
include_directories(${CMAKE_BINARY_DIR}/vendor/cjson/src/cjson/include)
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/mempool PERF_TEST_DEP_SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/deps/toml PERF_TEST_DEP_SRC)
aux_source_directory(${PROJECT_SOURCE_DIR}/src PERF_TEST_DEP_SRC)
# add_executable(httpd_perf_test ${PERF_TEST_DEP_SRC} http_decoder_perf_main.cpp http_decoder_perf_plug.cpp http_stellar_mock.cpp)
# target_link_libraries(httpd_perf_test z brotlidec llhttp-static fieldstat4 pthread)
add_executable(httpd_gtest http_decoder_gtest.cpp http_stellar_mock.cpp ${PROJECT_SOURCE_DIR}/src/http_decoder_utils.cpp)
target_link_libraries(httpd_gtest gtest stellar_devel)

164
test/http_decoder/base64.c Normal file
View File

@@ -0,0 +1,164 @@
/* This is a public domain base64 implementation written by WEI Zhicheng. */
#include "base64.h"
#define BASE64_PAD '='
#define BASE64DE_FIRST '+'
#define BASE64DE_LAST 'z'
/* BASE 64 encode table */
static const char base64en[] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '+', '/',
};
/* ASCII order for BASE 64 decode, 255 in unused character */
static const unsigned char base64de[] = {
/* nul, soh, stx, etx, eot, enq, ack, bel, */
255, 255, 255, 255, 255, 255, 255, 255,
/* bs, ht, nl, vt, np, cr, so, si, */
255, 255, 255, 255, 255, 255, 255, 255,
/* dle, dc1, dc2, dc3, dc4, nak, syn, etb, */
255, 255, 255, 255, 255, 255, 255, 255,
/* can, em, sub, esc, fs, gs, rs, us, */
255, 255, 255, 255, 255, 255, 255, 255,
/* sp, '!', '"', '#', '$', '%', '&', ''', */
255, 255, 255, 255, 255, 255, 255, 255,
/* '(', ')', '*', '+', ',', '-', '.', '/', */
255, 255, 255, 62, 255, 255, 255, 63,
/* '0', '1', '2', '3', '4', '5', '6', '7', */
52, 53, 54, 55, 56, 57, 58, 59,
/* '8', '9', ':', ';', '<', '=', '>', '?', */
60, 61, 255, 255, 255, 255, 255, 255,
/* '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', */
255, 0, 1, 2, 3, 4, 5, 6,
/* 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', */
7, 8, 9, 10, 11, 12, 13, 14,
/* 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', */
15, 16, 17, 18, 19, 20, 21, 22,
/* 'X', 'Y', 'Z', '[', '\', ']', '^', '_', */
23, 24, 25, 255, 255, 255, 255, 255,
/* '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', */
255, 26, 27, 28, 29, 30, 31, 32,
/* 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', */
33, 34, 35, 36, 37, 38, 39, 40,
/* 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', */
41, 42, 43, 44, 45, 46, 47, 48,
/* 'x', 'y', 'z', '{', '|', '}', '~', del, */
49, 50, 51, 255, 255, 255, 255, 255
};
unsigned int
base64_encode(const unsigned char *in, unsigned int inlen, char *out)
{
int s;
unsigned int i;
unsigned int j;
unsigned char c;
unsigned char l;
s = 0;
l = 0;
for (i = j = 0; i < inlen; i++) {
c = in[i];
switch (s) {
case 0:
s = 1;
out[j++] = base64en[(c >> 2) & 0x3F];
break;
case 1:
s = 2;
out[j++] = base64en[((l & 0x3) << 4) | ((c >> 4) & 0xF)];
break;
case 2:
s = 0;
out[j++] = base64en[((l & 0xF) << 2) | ((c >> 6) & 0x3)];
out[j++] = base64en[c & 0x3F];
break;
}
l = c;
}
switch (s) {
case 1:
out[j++] = base64en[(l & 0x3) << 4];
out[j++] = BASE64_PAD;
out[j++] = BASE64_PAD;
break;
case 2:
out[j++] = base64en[(l & 0xF) << 2];
out[j++] = BASE64_PAD;
break;
}
out[j] = 0;
return j;
}
unsigned int
base64_decode(const char *in, unsigned int inlen, unsigned char *out)
{
unsigned int i;
unsigned int j;
unsigned char c;
if (inlen & 0x3) {
return 0;
}
for (i = j = 0; i < inlen; i++) {
if (in[i] == BASE64_PAD) {
break;
}
if (in[i] < BASE64DE_FIRST || in[i] > BASE64DE_LAST) {
return 0;
}
c = base64de[(unsigned char)in[i]];
if (c == 255) {
return 0;
}
switch (i & 0x3) {
case 0:
out[j] = (c << 2) & 0xFF;
break;
case 1:
out[j++] |= (c >> 4) & 0x3;
out[j] = (c & 0xF) << 4;
break;
case 2:
out[j++] |= (c >> 2) & 0xF;
out[j] = (c & 0x3) << 6;
break;
case 3:
out[j++] |= c;
break;
}
}
return j;
}

View File

@@ -0,0 +1,28 @@
#ifndef BASE64_H
#define BASE64_H
#define BASE64_ENCODE_OUT_SIZE(s) ((unsigned int)((((s) + 2) / 3) * 4 + 1))
#define BASE64_DECODE_OUT_SIZE(s) ((unsigned int)(((s) / 4) * 3))
#ifdef __cplusplus
extern "C"
{
#endif
/*
* out is null-terminated encode string.
* return values is out length, exclusive terminating `\0'
*/
unsigned int
base64_encode(const unsigned char *in, unsigned int inlen, char *out);
/*
* return values is out length
*/
unsigned int
base64_decode(const char *in, unsigned int inlen, unsigned char *out);
#ifdef __cplusplus
}
#endif
#endif /* BASE64_H */

View File

View File

@@ -0,0 +1,3 @@
[entry]
name="http_decoder_test_state_entry"
topic="HTTP_DECODER_MESSAGE"

View File

@@ -0,0 +1,18 @@
[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

View File

@@ -0,0 +1,64 @@
#include <gtest/gtest.h>
#include <unistd.h>
#include <stdio.h>
#include "http_decoder.h"
#include "http_decoder_inc.h"
void httpd_url_decode(const char *string, size_t length, char *ostring, size_t *olen);
TEST(url_decoder, none)
{
char decode_url_buf[2048];
size_t decode_url_len = sizeof(decode_url_buf);
const char *encode_url = "https://docs.geedge.net/#all-updates";
httpd_url_decode(encode_url, strlen(encode_url), decode_url_buf, &decode_url_len);
EXPECT_STREQ("https://docs.geedge.net/#all-updates", decode_url_buf);
EXPECT_EQ(decode_url_len, strlen("https://docs.geedge.net/#all-updates"));
}
TEST(url_decoder, simple)
{
char decode_url_buf[2048];
size_t decode_url_len = sizeof(decode_url_buf);
const char *encode_url = "http://a.b.cn/%A1%B2%C3%D4";
httpd_url_decode(encode_url, strlen(encode_url), decode_url_buf, &decode_url_len);
const unsigned char expect_result[] =
{0x68, 0x74, 0x74, 0x70,
0x3A, 0x2F, 0x2F, 0x61,
0x2E, 0x62, 0x2E, 0x63,
0x6E, 0x2F, 0xA1, 0xB2,
0xC3, 0xD4, 0x00
};
EXPECT_STREQ((char *)expect_result, decode_url_buf);
EXPECT_EQ(decode_url_len, sizeof(expect_result)-1);
}
TEST(url_decoder, chinese1)
{
char decode_url_buf[2048];
size_t decode_url_len = sizeof(decode_url_buf);
const char *encode_url = "http://www.baidu.com/%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87%E8%A7%A3%E7%A0%81";
httpd_url_decode(encode_url, strlen(encode_url), decode_url_buf, &decode_url_len);
EXPECT_STREQ("http://www.baidu.com/\xE6\xB5\x8B\xE8\xAF\x95\xE4\xB8\xAD\xE6\x96\x87\xE8\xA7\xA3\xE7\xA0\x81", decode_url_buf);
EXPECT_EQ(decode_url_len, strlen("http://www.baidu.com/\xE6\xB5\x8B\xE8\xAF\x95\xE4\xB8\xAD\xE6\x96\x87\xE8\xA7\xA3\xE7\xA0\x81"));
}
TEST(url_decoder, chinese2)
{
char decode_url_buf[2048];
size_t decode_url_len = sizeof(decode_url_buf);
const char *encode_url = "http%3A%2F%2Fwww.baidu.com%2F%E7%BC%96%E8%A7%A3%E7%A0%81%E6%B5%8B%E8%AF%95%E5%93%88%E5%93%88";
httpd_url_decode(encode_url, strlen(encode_url), decode_url_buf, &decode_url_len);
EXPECT_STREQ("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", decode_url_buf);
EXPECT_EQ(decode_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"));
}
int main(int argc, char const *argv[])
{
::testing::InitGoogleTest(&argc, (char **)argv);
return RUN_ALL_TESTS();
}

View File

@@ -0,0 +1,66 @@
#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <stellar/session.h>
#include <stellar/stellar_mq.h>
#include <stellar/stellar_exdata.h>
#include <stellar/stellar.h>
#ifdef __cplusplus
}
#endif
#include "http_decoder.h"
#include "md5.h"
#include <stdint.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <pcap/pcap.h>
#include "cJSON.h"
#define TRUE 1
#define FLASE 0
#define JSON_KEY_VALUE_STRING_MAX_LEN (4096)
#ifndef MAX
#define MAX(a, b) ((a) >= (b) ? (a) : (b))
#endif
#ifndef MIN
#define MIN(a, b) ((a) >= (b) ? (b) : (a))
#endif
#define MMALLOC(type, size) ((type *)calloc(1, size))
#define MFREE(p) \
do \
{ \
free(p); \
p = NULL; \
} while (0)
#if 0
#define DEBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
#define DEBUG_PRINT(fmt, ...)
#endif
#define EX_DATA_MAX_SIZE 10
#define PIPELINE_MAX_NUM 8
#define GTEST_FIX_PAYLOAD_CSTR "<Hello http decoder World!!!>"
#define GTEST_FIX_PAYLOAD_MD5 "e91e072f772737c7a45013cc3b1a916c"
#define GTEST_HTTP_URL_NAME "__X_HTTP_URL"
#define GTEST_HTTP_TRANS_NAME "__X_HTTP_TRANSACTION"
#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_DECOMPRESS_PAYLOAD_MD5_NAME "__X_HTTP_DECOMPRESS_PAYLOAD_MD5"
struct stellar *stellar_init(void);
void stellar_destroy(struct stellar *st);
int stellar_load_plugin(struct stellar *st, void *(plugin_init_cb)(struct stellar *st));
struct session *stellar_session_new(struct stellar *st, int topic_id, const char *payload, size_t payload_len, u_int8_t dir);
void stellar_session_active(struct stellar *st, struct session *sess, int topic_id, const char *payload, size_t payload_len, u_int8_t dir);
void stellar_session_close(struct stellar *st, struct session *sess, int topic_id);

View File

@@ -0,0 +1,226 @@
#ifdef __cplusplus
extern "C"
{
#endif
#include <stellar/session.h>
#include <stellar/stellar_mq.h>
#include <stellar/stellar_exdata.h>
#include <stellar/stellar.h>
#ifdef __cplusplus
}
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include <fieldstat/fieldstat_easy.h>
#include "http_decoder_gtest.h"
#define TIME_MEASURE 1
#if TIME_MEASURE
#define TIME_START() struct timespec _start_time, _end_time; long long time_diff_ns; clock_gettime(CLOCK_REALTIME, &_start_time)
#define TIME_UPDATE() clock_gettime(CLOCK_REALTIME, &_start_time)
#define TIME_DIFF() \
do { \
clock_gettime(CLOCK_REALTIME, &_end_time); \
if (_end_time.tv_sec == _start_time.tv_sec)\
{\
time_diff_ns = (_end_time.tv_nsec - _start_time.tv_nsec);\
}else{\
time_diff_ns = (_end_time.tv_sec * 1000 * 1000 * 1000 + _end_time.tv_nsec) - (_start_time.tv_sec * 1000 * 1000 * 1000 + _start_time.tv_nsec);\
}\
}while (0)
#else
#define TIME_START()
#define TIME_DIFF()
#endif
struct test_packet{
const char *payload;
size_t payload_len;
u_int8_t dir;
};
extern "C" void *http_decoder_perf_plug_init(struct stellar *st);
extern "C" void *http_decoder_init(struct stellar *st);
extern "C" void http_decoder_exit(void *plugin_env);
extern "C" void *httpd_session_ctx_new_cb(struct session *sess, void *plugin_env);
extern "C" void _httpd_ex_data_free_cb(struct session *s, int idx,void *ex_data, void *arg);
extern "C" void http_decoder_tcp_stream_msg_cb(struct session *sess, int topic_id, const void *msg, void *no_use_ctx, void *plugin_env);
extern "C" void http_decoder_perf_entry(struct session *sess, int topic_id, const void *raw_msg, void *per_session_ctx, void *plugin_env);
static struct fieldstat_easy *fs4_instance;
static int fs4_simple_id;
static int fs4_long_long_url_id;
static int fs4_frag_id;
static void perf_test_loop(struct stellar *st, int tcp_stream_topic_id, struct test_packet *test_payload, int test_payload_index_max, int fs4_metric_id)
{
int idx = 0;
struct session *sess;
TIME_START();
sess = stellar_session_new(st, tcp_stream_topic_id, test_payload[idx].payload, test_payload[idx].payload_len, test_payload[idx].dir);
idx++;
TIME_DIFF();
fieldstat_easy_histogram_record(fs4_instance, 0, fs4_metric_id, NULL, 0, time_diff_ns);
for(; idx < test_payload_index_max; idx++){
TIME_UPDATE();
stellar_session_active(st, sess, tcp_stream_topic_id, test_payload[idx].payload, test_payload[idx].payload_len, test_payload[idx].dir);
TIME_DIFF();
fieldstat_easy_histogram_record(fs4_instance, 0, fs4_metric_id, NULL, 0, time_diff_ns);
}
TIME_UPDATE();
stellar_session_close(st, sess, tcp_stream_topic_id);
TIME_DIFF();
fieldstat_easy_histogram_record(fs4_instance, 0, fs4_metric_id, NULL, 0, time_diff_ns);
}
#define SET_DATA_LENGTH_DIR(pkt_payload, cstr_in_heap, cur_dir, tmp_index) \
pkt_payload.payload = cstr_in_heap; \
pkt_payload.payload_len = strlen(pkt_payload.payload); \
pkt_payload.dir = cur_dir;\
tmp_index++;
static void init_test_data_simple(struct test_packet *test_payload, int *index)
{
int tmp_index = 0;
const char *c2s_payload = strdup("GET / HTTP/1.1\r\nHost: www.simple.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/58.0.3029.110 Safari/537.36 Edge/16.16299\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n");
SET_DATA_LENGTH_DIR(test_payload[tmp_index], c2s_payload, FLOW_DIRECTION_C2S , tmp_index);
const char *content = "Hello, http decoder perf test simple!!!";
int content_length = strlen(content);
char *s2c_payload = (char *)malloc(1024);
snprintf(s2c_payload, 1024, "HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nConnection: keep-alive\r\nDate: Sat, 01 May 2024 01:36:57 GMT\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: %d\r\n\r\n%s", content_length, content);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], s2c_payload, FLOW_DIRECTION_S2C, tmp_index);
*index = tmp_index;
}
static void init_test_data_frag(struct test_packet *test_payload, int *index)
{
int tmp_index = 0;
/* c2s */
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("GET / HTTP/1.1\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Host: www.fragment.com\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Cache-Control: max-age=0\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Connection: keep-alive\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Referer: http://fragment.com/register.jsp?redirect:http://aa.bb.cc.dd.com/?\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Cookie: JSESSIONID=385C79E211D561C0CA13D90F150F603D34875GH87FSHG8S7RTHG74875GHS8R7THG87SRTH\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Accept: */*\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Accept-Encoding: gzip, deflate\r\n"), FLOW_DIRECTION_C2S , tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("\r\n"), FLOW_DIRECTION_C2S , tmp_index); //header EOF
/* s2c */
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("HTTP/1.1 200 OK\r\n"), FLOW_DIRECTION_S2C, tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Server: Apache-Coyote/1.1\r\n"), FLOW_DIRECTION_S2C, tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Connection: keep-alive\r\n"), FLOW_DIRECTION_S2C, tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Content-Type: text/html;charset=UTF-8\r\n"), FLOW_DIRECTION_S2C, tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("Date: Sat, 01 May 2024 01:36:57 GMT\r\n"), FLOW_DIRECTION_S2C, tmp_index);
char *cont_len_buf = (char *)malloc(1024);
const char *s2c_payload = strdup("Hello, http decoder perf test fragment!!!");
int content_length = strlen(s2c_payload);
snprintf(cont_len_buf, 1024, "Content-Length: %d\r\n", content_length);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], cont_len_buf, FLOW_DIRECTION_S2C, tmp_index);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], strdup("\r\n"), FLOW_DIRECTION_S2C, tmp_index); //header EOF
SET_DATA_LENGTH_DIR(test_payload[tmp_index], s2c_payload, FLOW_DIRECTION_S2C, tmp_index);
*index = tmp_index;
}
static void init_test_data_long_long_url(struct test_packet *test_payload, int *index)
{
int tmp_index = 0;
const char *request_line_frag1 = strdup("GET /long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/");
SET_DATA_LENGTH_DIR(test_payload[tmp_index], request_line_frag1, FLOW_DIRECTION_C2S , tmp_index);
const char *request_line_frag2 = strdup("long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/\
/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long/long.index.html HTTP/1.1\r\n");
SET_DATA_LENGTH_DIR(test_payload[tmp_index], request_line_frag2, FLOW_DIRECTION_C2S , tmp_index);
const char *request_line_frag3 = strdup("Host: www.long-long-url.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/58.0.3029.110 Safari/537.36 Edge/16.16299\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n");
SET_DATA_LENGTH_DIR(test_payload[tmp_index], request_line_frag3, FLOW_DIRECTION_C2S , tmp_index);
const char *content = "Hello, http decoder perf test long long url!!!";
int content_length = strlen(content);
char *s2c_payload = (char *)malloc(1024);
snprintf(s2c_payload, 1024, "HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nConnection: keep-alive\r\nDate: Sat, 01 May 2024 01:36:57 GMT\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: %d\r\n\r\n%s", content_length, content);
SET_DATA_LENGTH_DIR(test_payload[tmp_index], s2c_payload, FLOW_DIRECTION_S2C, tmp_index);
*index = tmp_index;
}
static void test_payload_free(struct test_packet *test_payload, int test_payload_index_max)
{
for(int i = 0; i < test_payload_index_max; i++){
if(test_payload[i].payload){
free((void *)test_payload[i].payload);
}
}
}
static void perf_stat_init(void)
{
fs4_instance = fieldstat_easy_new(1, "http_decoder_test", NULL, 0);
fieldstat_easy_enable_auto_output(fs4_instance, "./httpd_hisgram.json", 1);
fs4_simple_id = fieldstat_easy_register_histogram(fs4_instance, "simple", 1, 99999999, 5);
fs4_frag_id = fieldstat_easy_register_histogram(fs4_instance, "frag", 1, 99999999, 5);
fs4_long_long_url_id = fieldstat_easy_register_histogram(fs4_instance, "long-url", 1, 99999999, 5);
}
int main(int argc, char const *argv[])
{
struct test_packet test_payload_simple [4] = {};
int payload_index_simple = 0;
struct test_packet test_payload_long_long_url [8] = {};
int payload_index_long_long_url = 0;
struct test_packet test_payload_frag [32] = {};
int payload_index_frag = 0;
struct stellar *st = stellar_init();
int tcp_stream_topic_id = stellar_mq_get_topic_id(st, TOPIC_TCP_STREAM);
if(stellar_load_plugin(st, http_decoder_init) < 0){
fprintf(stderr, "load plugin 'http_decoder_init' failed\n");
return -1;
}
if(stellar_load_plugin(st, http_decoder_perf_plug_init) < 0){
fprintf(stderr, "load plugin 'http_decoder_perf_plug_init' failed\n");
return -1;
}
perf_stat_init();
init_test_data_simple(test_payload_simple, &payload_index_simple);
init_test_data_long_long_url(test_payload_long_long_url, &payload_index_long_long_url);
init_test_data_frag(test_payload_frag, &payload_index_frag);
// while(1){
for(int i = 0; i < 1000; i++){
perf_test_loop(st, tcp_stream_topic_id,test_payload_simple, payload_index_simple, fs4_simple_id);
perf_test_loop(st, tcp_stream_topic_id,test_payload_long_long_url, payload_index_long_long_url, fs4_long_long_url_id);
perf_test_loop(st, tcp_stream_topic_id,test_payload_frag, payload_index_frag, fs4_frag_id);
}
test_payload_free(test_payload_simple, sizeof(test_payload_simple)/sizeof(struct test_packet)) ;
test_payload_free(test_payload_long_long_url, sizeof(test_payload_long_long_url)/sizeof(struct test_packet)) ;
test_payload_free(test_payload_frag, sizeof(test_payload_frag)/sizeof(struct test_packet)) ;
stellar_destroy(st);
sleep(1);
fieldstat_easy_free(fs4_instance);
return 0;
}

View File

@@ -0,0 +1,143 @@
#include "http_decoder.h"
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#ifdef __cplusplus
extern "C"
{
#include "http_decoder_inc.h"
#include "cJSON.h"
}
#endif
#define MAX_KEY_STR_LEN 2048
static int g_result_count = 0;
static int g_header_count = 1;
static int g_exdata_idx = -1;
static int g_topic_id = -1;
static int g_plugin_id = -1;
#define DEBUG_PRINT(fmt, ...) //printf(fmt, ##__VA_ARGS__)
extern "C" void http_decoder_perf_entry(struct session *sess, int topic_id, const void *raw_msg, void *per_session_ctx, void *plugin_env)
{
struct http_request_line req_line = {0};
struct http_response_line res_line = {0};
struct http_header header = {0};
hstring url = {};
hstring body = {};
struct http_message *msg = (struct http_message *)raw_msg;
enum http_message_type msg_type = http_message_type_get(msg);
void *ret1, *ret2;
switch (msg_type)
{
case HTTP_MESSAGE_REQ_LINE:
DEBUG_PRINT("---------------------------------------------------------------\n");
http_message_request_line_get0(msg, &req_line);
if (req_line.uri.iov_base)
{
DEBUG_PRINT("req_line.method.iov_base: %.*s\n", req_line.method.iov_len, req_line.method.iov_base);
ret1 = memmem(req_line.method.iov_base, req_line.method.iov_len, "PUT", 3);
DEBUG_PRINT("req_line.version.iov_base: %.*s\n", req_line.version.iov_len, req_line.version.iov_base);
}
break;
case HTTP_MESSAGE_REQ_HEADER:
while (http_message_header_next(msg, &header) >= 0)
{
ret1 = memmem(header.key.iov_base, header.key.iov_len, "key", 3);
ret2 = memmem(header.val.iov_base, header.val.iov_len, "val", 3);
DEBUG_PRINT("REQ header: %.*s : %.*s\n", (int)header.key.iov_len, header.key.iov_base, (int)header.val.iov_len, header.val.iov_base);
}
http_message_raw_url_get0(msg, &url);
if(url.iov_base && url.iov_len){
DEBUG_PRINT("URL: %.*s\n", url.iov_len, url.iov_base);
}
break;
case HTTP_MESSAGE_REQ_BODY:
// http_message_get_request_raw_body(msg, &body);
// output_http_body(&body, 0);
http_message_decompress_body_get0(msg, &body);
// output_http_body(&body, 1);
ret1 = memmem(body.iov_base, body.iov_len, "</html>", 7);
break;
case HTTP_MESSAGE_RES_LINE:
http_message_response_line_get0(msg, &res_line);
ret1 = memmem(res_line.status.iov_base, res_line.status.iov_len, "OK", 2);
DEBUG_PRINT("res_line.status.iov_base: %.*s\n", (int)res_line.status.iov_len, res_line.status.iov_base);
break;
case HTTP_MESSAGE_RES_HEADER:
while (http_message_header_next(msg, &header) >= 0)
{
ret1 = memmem(header.key.iov_base, header.key.iov_len, "key", 3);
ret2 = memmem(header.val.iov_base, header.val.iov_len, "val", 3);
DEBUG_PRINT("RES header: %.*s : %.*s\n", (int)header.key.iov_len, header.key.iov_base, (int)header.val.iov_len, header.val.iov_base);
}
break;
case HTTP_MESSAGE_RES_BODY_START:
case HTTP_MESSAGE_RES_BODY:
case HTTP_MESSAGE_RES_BODY_END:
http_message_raw_body_get0(msg, &body);
if(body.iov_base!=NULL && body.iov_len > 0){
DEBUG_PRINT("res raw body: %.*s\n", body.iov_len, body.iov_base);
}
// output_http_body(&body, 0);
http_message_decompress_body_get0(msg, &body);
if(body.iov_base!=NULL && body.iov_len > 0){
// output_http_body(&body, 1);
ret1 = memmem(body.iov_base, body.iov_len, "</html>", 7);
DEBUG_PRINT("res unzip body: %.*s\n", body.iov_len, body.iov_base);
DEBUG_PRINT("---------------------------------------------------------------\n");
}
break;
// to do: check payload
default:
break;
}
return;
}
static on_session_msg_cb_func*g_entry_fun = &http_decoder_perf_entry;
static void http_decoder_test_exdata_free(int idx, void *ex_ptr, void *arg)
{
return;
}
extern "C" void *http_decoder_perf_plug_init(struct stellar *st)
{
g_plugin_id = stellar_session_plugin_register(st, NULL, NULL, NULL);
g_exdata_idx = stellar_exdata_new_index(st, "HTTP_DECODER_REQ_TEST",
http_decoder_test_exdata_free,
NULL);
if (g_exdata_idx < 0)
{
printf("[%s:%d]: can't get http_decoder exdata index !!!\n", __FUNCTION__, __LINE__);
exit(-1);
}
g_topic_id = stellar_mq_get_topic_id(st, "HTTP_DECODER_MESSAGE");
if (g_topic_id < 0)
{
printf("[%s:%d]: can't get http_decoder topic id !!!\n", __FUNCTION__, __LINE__);
exit(-1);
}
stellar_session_mq_subscribe(st, g_topic_id, g_entry_fun, g_plugin_id);
// printf("http_decoder_test_init OK!\n");
return NULL;
}
extern "C" void http_decoder_perf_plug_exit(void *test_ctx)
{
if (test_ctx != NULL)
{
FREE(test_ctx);
}
printf("http_decoder_perf plug exit OK!\n");
}

View File

@@ -0,0 +1,661 @@
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#include "http_decoder.h"
#include "http_decoder_inc.h"
#ifdef __cplusplus
extern "C"
{
#include "cJSON.h"
#include "http_decoder_gtest.h"
#include "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 *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)
{
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.iov_base,
req_line->method.iov_len);
http_field_to_json(ctx, "uri", (char *)req_line->uri.iov_base, req_line->uri.iov_len);
http_field_to_json(ctx, "req_version", (char *)req_line->version.iov_base,
req_line->version.iov_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.iov_base,
res_line->version.iov_len);
http_field_to_json(ctx, "res_status", (char *)res_line->status.iov_base,
res_line->status.iov_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 *header)
{
char key[MAX_KEY_STR_LEN] = {0};
if ((header->key.iov_base == NULL) || (header->val.iov_base == NULL))
{
return;
}
memcpy(key, header->key.iov_base, header->key.iov_len);
if (cJSON_HasObjectItem(ctx, key) == FALSE)
{
http_field_to_json(ctx, key, (char *)header->val.iov_base, header->val.iov_len);
}
else
{
// ctx already has the key, so rename key by key%d
char new_key[MAX_KEY_STR_LEN] = {0};
sprintf(new_key, "%s%d", key, g_header_count++);
http_field_to_json(ctx, new_key, (char *)header->val.iov_base, header->val.iov_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_raw_url_get0(msg, &raw_url_result);
if (raw_url_result.iov_base == NULL)
{
return;
}
struct http_header raw_url_header_result = {};
raw_url_header_result.key.iov_base = (char *)GTEST_HTTP_URL_NAME;
raw_url_header_result.key.iov_len = strlen(GTEST_HTTP_URL_NAME);
raw_url_header_result.val = raw_url_result;
http_header_to_json(ctx, &raw_url_header_result);
hstring decode_url_result = {};
struct http_header decode_url_header_result = {};
http_message_decoded_url_get0(msg, &decode_url_result);
if (decode_url_result.iov_len != raw_url_result.iov_len)
{
decode_url_header_result.key.iov_base = (char *)"__X_HTTP_DECODED_URL";
decode_url_header_result.key.iov_len = strlen("__X_HTTP_DECODED_URL");
decode_url_header_result.val = decode_url_result;
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_get0_readable_addr(sess);
if (NULL == human_addr_cstr)
{
fprintf(stderr, "can't get readable_addr, to use session_get0_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;
}
int ret = 0;
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)
{
struct http_request_line req_line = {0};
struct http_response_line res_line = {0};
struct http_header header = {0};
hstring body = {0};
struct http_message *msg = (struct http_message *)raw_msg;
enum http_message_type msg_type = http_message_type_get(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_request_line_get0(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_header_next(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_raw_body_get0(msg, &body);
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_decompress_body_get0(msg, &body);
// 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_response_line_get0(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_header_next(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_raw_body_get0(msg, &body);
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_decompress_body_get0(msg, &body);
// 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)
{
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)
{
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_type_get((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)
{
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_get0_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");
}
// OPENING state has payload, go on
case HTTP_TUNNEL_ACTIVE:
{
enum flow_direction curdir = session_get_current_flow_direction(sess);
hstring tunnel_payload = {};
http_tunnel_message_get_payload((const struct http_tunnel_message *)raw_msg, &tunnel_payload);
if (FLOW_DIRECTION_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");
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,287 @@
#include "uthash-2.3.0/include/utlist.h"
#include "http_decoder_gtest.h"
#include "http_stellar_mock.h"
static int G_TCP_STREAM_TOPIC_ID = -1;
static int G_UDP_TOPIC_ID = -1;
static struct stellar *G_STELLAR;
static struct plugin_mgr *g_plugin_mgr_list_head = NULL;
static struct stellar *g_st;
static void stellar_internal_msg_free_cb_func(void *msg, void *msg_free_arg) {/* do nothing*/}
static void stellar_register_internal_topic(struct stellar *st)
{
G_TCP_STREAM_TOPIC_ID = stellar_mq_get_topic_id(st, TOPIC_TCP_STREAM);
if(G_TCP_STREAM_TOPIC_ID < 0){
G_TCP_STREAM_TOPIC_ID = stellar_mq_create_topic(st, TOPIC_TCP_STREAM, stellar_internal_msg_free_cb_func, NULL);
}
G_UDP_TOPIC_ID = stellar_mq_get_topic_id(st, TOPIC_UDP);
if(G_UDP_TOPIC_ID < 0){
G_UDP_TOPIC_ID = stellar_mq_create_topic(st, TOPIC_UDP, stellar_internal_msg_free_cb_func, NULL);
}
}
void stellar_session_plugin_dettach_current_session(struct session *sess) { return; }
int stellar_mq_destroy_topic(struct stellar *st, int topic_id) { return 0; }
int stellar_get_worker_thread_num(struct stellar *st) { return 1; }
uint16_t stellar_get_current_thread_index(void) { return 0; }
int stellar_get_current_thread_index(struct session *sess) { return 0; }
int session_mq_ignore_message(struct session *sess, int topic_id, int plugin_id) { return 0; }
int session_mq_unignore_message(struct session *sess, int topic_id, int plugin_id) { return 0; }
int stellar_session_exdata_new_index(struct stellar *st, const char *name, stellar_exdata_free *free_func,void *arg)
{
int list_count = 0;
struct exdata_mgr *tmp, *new_exdata = (struct exdata_mgr *)calloc(1, sizeof(struct exdata_mgr));
DL_FOREACH(st->exdata_mgr_head, tmp){
if(0 == strcmp(tmp->name, name) && (strlen(tmp->name) == strlen(name))){
return 0; //already exist
}
}
DL_COUNT(st->exdata_mgr_head, tmp, list_count);
new_exdata->exdata_id = list_count;
new_exdata->name = strdup(name);
new_exdata->free_func = free_func;
new_exdata->arg = arg;
DL_APPEND(st->exdata_mgr_head, new_exdata);
return 0;
}
int session_exdata_set(struct session *sess, int idx, void *ex_ptr)
{
struct exdata_mgr *el = NULL;
DL_FOREACH(sess->runtime_exdata_head, el){
if(el->exdata_id == idx){
el->user_ptr = ex_ptr;
return 0;
}
}
struct exdata_mgr *new_exdata = (struct exdata_mgr *)calloc(1, sizeof(struct exdata_mgr));
new_exdata->exdata_id = idx;
new_exdata->user_ptr = ex_ptr;
DL_APPEND(sess->runtime_exdata_head, new_exdata);
return 0;
}
void *session_exdata_get(struct session *sess, int idx)
{
struct exdata_mgr *el = NULL;
DL_FOREACH(sess->runtime_exdata_head, el){
if(el->exdata_id == idx){
return el->user_ptr;
}
}
return NULL;
}
enum session_state session_get_current_state(struct session *sess)
{
return sess->sess_state;
}
const char *session_get0_current_payload(struct session *sess, uint16_t *payload_len)
{
const struct packet *test_payload = &sess->pkt;
*payload_len = test_payload->payload_len;
return test_payload->payload;
}
struct session_addr *session_get0_addr(struct session *sess, enum session_addr_type *addr_type)
{
*addr_type = SESSION_ADDR_TYPE_IPV4_TCP;
return &sess->addr;
}
const struct packet *session_get0_current_packet(struct session *sess)
{
return &sess->pkt;
}
int session_is_symmetric(struct session *sess, unsigned char *flag)
{
*flag = (SESSION_SEEN_C2S_FLOW | SESSION_SEEN_S2C_FLOW);
return 1;
}
static struct plugin_mgr *get_stat_by_plugin_id(int plugin_id)
{
struct plugin_mgr *plugin = NULL;
DL_FOREACH(g_plugin_mgr_list_head, plugin){
if(plugin->plugin_id == plugin_id){
break;
}
}
return plugin;
}
int stellar_session_mq_subscribe(struct stellar *st, int topic_id, on_session_msg_cb_func *plugin_on_msg_cb, int plugin_id)
{
struct topic_mgr *topic_el = NULL;
DL_FOREACH(st->topic_mgr_head, topic_el){
if(topic_el->topic_id == topic_id){
break;
}
}
if(NULL == topic_el){
return -1;
}
struct plugin_mgr *plugin = get_stat_by_plugin_id(plugin_id);
struct sub_topic_cb_list *sub_cb_list = (struct sub_topic_cb_list *)calloc(1, sizeof(struct sub_topic_cb_list));
sub_cb_list->sub_cb = plugin_on_msg_cb;
sub_cb_list->plugin_id = plugin_id;
sub_cb_list->plugin_env = plugin->plugin_env;
DL_APPEND(topic_el->sub_free_cb_list_head, sub_cb_list);
return 0;
}
int stellar_mq_get_topic_id(struct stellar *st, const char *topic_name)
{
struct topic_mgr *el = NULL;
DL_FOREACH(st->topic_mgr_head, el){
if(0 == strcmp(el->topic_name, topic_name) && (strlen(el->topic_name) == strlen(topic_name))){
return el->topic_id;
}
}
return -1;
}
int stellar_session_mq_create_topic(struct stellar *st, const char *topic_name, stellar_msg_free_cb_func *msg_free_cb, void *msg_free_arg)
{
int topic_id = stellar_mq_get_topic_id(st, topic_name);
if(topic_id >= 0){
return topic_id;//already exist
}
struct topic_mgr *tmp, *new_topic = (struct topic_mgr *)calloc(1, sizeof(struct topic_mgr));
int list_count;
DL_APPEND(st->topic_mgr_head, new_topic);
DL_COUNT(st->topic_mgr_head, tmp, list_count);
new_topic->topic_id = list_count;
new_topic->pub_free_cb = msg_free_cb;
new_topic->pub_free_arg = msg_free_arg;
new_topic->topic_name = strdup(topic_name);
return new_topic->topic_id;
}
int stellar_session_plugin_register(struct stellar *st, session_ctx_new_func session_ctx_new,
session_ctx_free_func session_ctx_free, void *plugin_env)
{
int list_count;
struct plugin_mgr *tmp, *plugin = (struct plugin_mgr *)calloc(1, sizeof(struct plugin_mgr));
DL_APPEND(g_plugin_mgr_list_head, plugin);
DL_COUNT(g_plugin_mgr_list_head, tmp, list_count);
plugin->plugin_id = list_count;
plugin->plugin_env = plugin_env;
plugin->session_ctx_new = session_ctx_new;
plugin->session_ctx_free = session_ctx_free;
return plugin->plugin_id;
}
int session_mq_publish_message(struct session *sess, int topic_id, void *msg)
{
struct topic_mgr *el = NULL;
DL_FOREACH(sess->st->topic_mgr_head, el){
if(el->topic_id == topic_id){
break;
}
}
if(NULL == el){
return -1;
}
sub_topic_cb_list *sub_cb_node = NULL;
DL_FOREACH(el->sub_free_cb_list_head, sub_cb_node){
(*sub_cb_node->sub_cb)(sess, topic_id, msg, NULL, sub_cb_node->plugin_env); //todo
}
el->pub_free_cb(msg, el->pub_free_arg);
return 0;
}
int stellar_load_plugin(struct stellar *st, void *(plugin_init_cb)(struct stellar *st))
{
plugin_init_cb(st);
return 0;
}
struct session *stellar_session_new(struct stellar *st, int topic_id, const char *payload, size_t payload_len, u_int8_t dir)
{
struct session *sess = (struct session *)calloc(1, sizeof(struct session));
sess->st = st;
sess->sess_state = SESSION_STATE_OPENING;
sess->addr.ipv4.saddr = 0x7f000001;
sess->addr.ipv4.daddr = 0x7f000002;
sess->addr.ipv4.sport = htons(12345);
sess->addr.ipv4.dport = htons(80);
if(G_TCP_STREAM_TOPIC_ID == topic_id){
sess->addr_type = SESSION_ADDR_TYPE_IPV4_TCP;
}else{
sess->addr_type = SESSION_ADDR_TYPE_IPV4_UDP;
}
sess->pkt.dir = dir;
sess->pkt.payload = payload;
sess->pkt.payload_len = payload_len;
stellar_message *message = (stellar_message *)&sess->pkt;
session_mq_publish_message(sess, topic_id, message);
return sess;
}
void stellar_session_active(struct stellar *st, struct session *sess, int topic_id, const char *payload, size_t payload_len, u_int8_t dir)
{
sess->sess_state = SESSION_STATE_ACTIVE;
sess->pkt.dir = dir;
sess->pkt.payload = payload;
sess->pkt.payload_len = payload_len;
stellar_message *message = (stellar_message *)&sess->pkt;
session_mq_publish_message(sess, topic_id, message);
return;
}
static void session_plugin_exdata_free(struct stellar *st, struct session *sess, int exdata_idx, void *user_ptr)
{
struct exdata_mgr *el = NULL;
DL_FOREACH(st->exdata_mgr_head, el){
if(el->exdata_id == exdata_idx){
el->free_func(exdata_idx, user_ptr, el->arg);
}
}
}
static void session_plugin_exdata_free_all(struct stellar *st, struct session *sess)
{
struct exdata_mgr *el = NULL, *tmp = NULL;
DL_FOREACH_SAFE(sess->runtime_exdata_head, el, tmp){
session_plugin_exdata_free(st, sess, el->exdata_id, el->user_ptr);
DL_DELETE(sess->runtime_exdata_head, el);
free(el);
}
}
static void stellar_session_free(struct stellar *st, struct session *sess)
{
session_plugin_exdata_free_all(st, sess);
free(sess);
}
void stellar_session_close(struct stellar *st, struct session *sess, int topic_id)
{
sess->sess_state = SESSION_STATE_CLOSING;
sess->pkt.payload = NULL;
sess->pkt.payload_len = 0;
stellar_message *message = (stellar_message *)&sess->pkt;
session_mq_publish_message(sess, topic_id, message);
stellar_session_free(st, sess);
return;
}
struct stellar *stellar_init(void)
{
if(NULL == g_st){
g_st = (struct stellar *)calloc(1, sizeof(struct stellar));
}
stellar_register_internal_topic(g_st);
return g_st;
}
static void stellar_sub_topi_mgr_destroy(struct topic_mgr *topic_mgr)
{
struct sub_topic_cb_list *sub_cb_node = NULL, *tmp = NULL;
DL_FOREACH_SAFE(topic_mgr->sub_free_cb_list_head, sub_cb_node, tmp){
DL_DELETE(topic_mgr->sub_free_cb_list_head, sub_cb_node);
free(sub_cb_node);
}
return;
}
void stellar_destroy(struct stellar *st)
{
struct exdata_mgr *el = NULL, *tmp;
DL_FOREACH_SAFE(st->exdata_mgr_head, el, tmp){
free((void *)el->name);
DL_DELETE(st->exdata_mgr_head, el);
free(el);
}
struct topic_mgr *el_topic, *tmp_topic;
DL_FOREACH_SAFE(st->topic_mgr_head, el_topic, tmp_topic){
DL_DELETE(st->topic_mgr_head, el_topic);
stellar_sub_topi_mgr_destroy(el_topic);
free((void *)el_topic->topic_name);
free(el_topic);
}
free(st);
return;
}

View File

@@ -0,0 +1,112 @@
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
#include </usr/include/bits/types/struct_iovec.h>
#ifdef __cplusplus
extern "C"
{
#endif
#include <stellar/session.h>
#include <stellar/stellar_mq.h>
#include <stellar/stellar_exdata.h>
#include <stellar/stellar.h>
#ifdef __cplusplus
}
#endif
struct packet{
const char *payload;
size_t payload_len;
u_int8_t dir; //FLOW_DIRECTION_C2S FLOW_DIRECTION_S2C
};
typedef struct packet stellar_message;
struct exdata_mgr{
const char *name;
int exdata_id;
void *arg;
void *user_ptr;
stellar_exdata_free *free_func;
struct exdata_mgr *next, *prev;
};
struct sub_topic_mgr{
int topic_id;
int plugin_id;
void *plugin_env;
};
struct topic_mgr{
struct topic_mgr *next, *prev;
const char *topic_name;
int topic_id;
stellar_msg_free_cb_func *pub_free_cb;
void *pub_free_arg;
struct sub_topic_cb_list *sub_free_cb_list_head;
};
struct stellar{
struct topic_mgr *topic_mgr_head;
struct exdata_mgr *exdata_mgr_head;
};
//todo, native stellar can't get addr
enum session_addr_type
{
SESSION_ADDR_TYPE_IPV4_TCP,
SESSION_ADDR_TYPE_IPV4_UDP,
SESSION_ADDR_TYPE_IPV6_TCP,
SESSION_ADDR_TYPE_IPV6_UDP,
SESSION_ADDR_TYPE_UNKNOWN,
__SESSION_ADDR_TYPE_MAX,
};
struct session_addr_ipv4{
uint32_t saddr; /* network order */
uint32_t daddr; /* network order */
uint16_t sport; /* network order */
uint16_t dport; /* network order */
};
#include <netinet/in.h>
#ifndef IPV6_ADDR_LEN
#define IPV6_ADDR_LEN (sizeof(struct in6_addr))
#endif
struct session_addr_ipv6
{
uint8_t saddr[IPV6_ADDR_LEN] ;
uint8_t daddr[IPV6_ADDR_LEN] ;
uint16_t sport; /* network order */
uint16_t dport; /* network order */
};
struct session_addr
{
union
{
struct session_addr_ipv4 ipv4;
struct session_addr_ipv6 ipv6;
};
};
struct session{
struct stellar *st;
enum session_state sess_state;
enum session_addr_type addr_type;
struct session_addr addr;
void *exdata;
struct packet pkt;
struct exdata_mgr *runtime_exdata_head;
};
struct plugin_mgr{
struct plugin_mgr *next, *prev;
int plugin_id;
void *plugin_env;
session_ctx_new_func *session_ctx_new;
session_ctx_free_func *session_ctx_free;
};
struct sub_topic_cb_list{
int plugin_id;
void *plugin_env;
on_session_msg_cb_func *sub_cb;
struct sub_topic_cb_list *next, *prev;
};

356
test/http_decoder/md5.c Normal file
View File

@@ -0,0 +1,356 @@
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm */
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software. */
#ifdef __cplusplus
extern "C"
{
#endif
#include <stdio.h>
#include "md5.h"
/* Constants for MD5Transform routine. */
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21
static void MD5Transform PROTO_LIST((UINT4[4], unsigned char[64]));
static void Encode PROTO_LIST((unsigned char *, UINT4 *, unsigned int));
static void Decode PROTO_LIST((UINT4 *, unsigned char *, unsigned int));
static void MD5_memcpy PROTO_LIST((POINTER, POINTER, unsigned int));
static void MD5_memset PROTO_LIST((POINTER, int, unsigned int));
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/* F, G, H and I are basic MD5 functions. */
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
/* ROTATE_LEFT rotates x left n bits. */
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation. */
#define FF(a, b, c, d, x, s, ac) \
{ \
(a) += F((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT((a), (s)); \
(a) += (b); \
}
#define GG(a, b, c, d, x, s, ac) \
{ \
(a) += G((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT((a), (s)); \
(a) += (b); \
}
#define HH(a, b, c, d, x, s, ac) \
{ \
(a) += H((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT((a), (s)); \
(a) += (b); \
}
#define II(a, b, c, d, x, s, ac) \
{ \
(a) += I((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT((a), (s)); \
(a) += (b); \
}
/* MD5 initialization. Begins an MD5 operation, writing a new context. */
void MD5Init(MD5_CTX *context)
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.*/
context->state[0] = 0x67452301;
context->state[1] = 0xefcdab89;
context->state[2] = 0x98badcfe;
context->state[3] = 0x10325476;
}
/* MD5 block update operation. Continues an MD5 message-digest
operation, processing another message block, and updating the
context. */
void MD5Update(
MD5_CTX *context, /* context */
unsigned char *input, /* input block */
unsigned int inputLen) /* length of input block */
{
unsigned int i, index, partLen;
/* Compute number of bytes mod 64 */
index = (unsigned int)((context->count[0] >> 3) & 0x3F);
/* Update number of bits */
if ((context->count[0] += ((UINT4)inputLen << 3))
< ((UINT4)inputLen << 3))
context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);
partLen = 64 - index;
/* Transform as many times as possible.*/
if (inputLen >= partLen)
{
MD5_memcpy((POINTER)&context->buffer[index], (POINTER)input, partLen);
MD5Transform(context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64)
MD5Transform(context->state, &input[i]);
index = 0;
}
else
i = 0;
/* Buffer remaining input */
MD5_memcpy((POINTER)&context->buffer[index], (POINTER)&input[i],
inputLen - i);
}
/* MD5 finalization. Ends an MD5 message-digest operation, writing the
the message digest and zeroizing the context. */
void MD5Final(
unsigned char digest[16], /* message digest */
MD5_CTX *context) /* context */
{
unsigned char bits[8];
unsigned int index, padLen;
/* Save number of bits */
Encode(bits, context->count, 8);
/* Pad out to 56 mod 64.*/
index = (unsigned int)((context->count[0] >> 3) & 0x3f);
padLen = (index < 56) ? (56 - index) : (120 - index);
MD5Update(context, PADDING, padLen);
/* Append length (before padding) */
MD5Update(context, bits, 8);
/* Store state in digest */
Encode(digest, context->state, 16);
/* Zeroize sensitive information.*/
MD5_memset((POINTER)context, 0, sizeof(*context));
}
/* MD5 basic transformation. Transforms state based on block. */
static void MD5Transform(
UINT4 state[4],
unsigned char block[64])
{
UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
Decode(x, block, 64);
/* Round 1 */
FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */
FF(d, a, b, c, x[1], S12, 0xe8c7b756); /* 2 */
FF(c, d, a, b, x[2], S13, 0x242070db); /* 3 */
FF(b, c, d, a, x[3], S14, 0xc1bdceee); /* 4 */
FF(a, b, c, d, x[4], S11, 0xf57c0faf); /* 5 */
FF(d, a, b, c, x[5], S12, 0x4787c62a); /* 6 */
FF(c, d, a, b, x[6], S13, 0xa8304613); /* 7 */
FF(b, c, d, a, x[7], S14, 0xfd469501); /* 8 */
FF(a, b, c, d, x[8], S11, 0x698098d8); /* 9 */
FF(d, a, b, c, x[9], S12, 0x8b44f7af); /* 10 */
FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
/* Round 2 */
GG(a, b, c, d, x[1], S21, 0xf61e2562); /* 17 */
GG(d, a, b, c, x[6], S22, 0xc040b340); /* 18 */
GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
GG(b, c, d, a, x[0], S24, 0xe9b6c7aa); /* 20 */
GG(a, b, c, d, x[5], S21, 0xd62f105d); /* 21 */
GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */
GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
GG(b, c, d, a, x[4], S24, 0xe7d3fbc8); /* 24 */
GG(a, b, c, d, x[9], S21, 0x21e1cde6); /* 25 */
GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
GG(c, d, a, b, x[3], S23, 0xf4d50d87); /* 27 */
GG(b, c, d, a, x[8], S24, 0x455a14ed); /* 28 */
GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
GG(d, a, b, c, x[2], S22, 0xfcefa3f8); /* 30 */
GG(c, d, a, b, x[7], S23, 0x676f02d9); /* 31 */
GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
/* Round 3 */
HH(a, b, c, d, x[5], S31, 0xfffa3942); /* 33 */
HH(d, a, b, c, x[8], S32, 0x8771f681); /* 34 */
HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
HH(a, b, c, d, x[1], S31, 0xa4beea44); /* 37 */
HH(d, a, b, c, x[4], S32, 0x4bdecfa9); /* 38 */
HH(c, d, a, b, x[7], S33, 0xf6bb4b60); /* 39 */
HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
HH(d, a, b, c, x[0], S32, 0xeaa127fa); /* 42 */
HH(c, d, a, b, x[3], S33, 0xd4ef3085); /* 43 */
HH(b, c, d, a, x[6], S34, 0x4881d05); /* 44 */
HH(a, b, c, d, x[9], S31, 0xd9d4d039); /* 45 */
HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
HH(b, c, d, a, x[2], S34, 0xc4ac5665); /* 48 */
/* Round 4 */
II(a, b, c, d, x[0], S41, 0xf4292244); /* 49 */
II(d, a, b, c, x[7], S42, 0x432aff97); /* 50 */
II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
II(b, c, d, a, x[5], S44, 0xfc93a039); /* 52 */
II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
II(d, a, b, c, x[3], S42, 0x8f0ccc92); /* 54 */
II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
II(b, c, d, a, x[1], S44, 0x85845dd1); /* 56 */
II(a, b, c, d, x[8], S41, 0x6fa87e4f); /* 57 */
II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
II(c, d, a, b, x[6], S43, 0xa3014314); /* 59 */
II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
II(a, b, c, d, x[4], S41, 0xf7537e82); /* 61 */
II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
II(c, d, a, b, x[2], S43, 0x2ad7d2bb); /* 63 */
II(b, c, d, a, x[9], S44, 0xeb86d391); /* 64 */
state[0] += a;
state[1] += b;
state[2] += c;
state[3] += d;
/* Zeroize sensitive information. */
MD5_memset((POINTER)x, 0, sizeof(x));
}
/* Encodes input (UINT4) into output (unsigned char). Assumes len is
a multiple of 4. */
static void Encode(
unsigned char *output,
const UINT4 *input,
unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
{
output[j] = (unsigned char)(input[i] & 0xff);
output[j + 1] = (unsigned char)((input[i] >> 8) & 0xff);
output[j + 2] = (unsigned char)((input[i] >> 16) & 0xff);
output[j + 3] = (unsigned char)((input[i] >> 24) & 0xff);
}
}
/* Decodes input (unsigned char) into output (UINT4). Assumes len is
a multiple of 4. */
static void Decode(
UINT4 *output,
unsigned char *input,
unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
output[i] = ((UINT4)input[j]) | (((UINT4)input[j + 1]) << 8) |
(((UINT4)input[j + 2]) << 16) | (((UINT4)input[j + 3]) << 24);
}
/* Note: Replace "for loop" with standard memcpy if possible. */
static void MD5_memcpy(
POINTER output,
const POINTER input,
unsigned int len)
{
unsigned int i;
for (i = 0; i < len; i++)
output[i] = input[i];
}
/* Note: Replace "for loop" with standard memset if possible. */
static void MD5_memset(
POINTER output,
int value,
unsigned int len)
{
unsigned int i;
for (i = 0; i < len; i++)
((char *)output)[i] = (char)value;
}
char *MESA_MD5_sum_str(unsigned char *raw_data, unsigned int raw_data_len, char result[33])
{
int i;
MD5_CTX context;
unsigned char digest[16];
MD5Init(&context);
MD5Update(&context, raw_data, raw_data_len);
MD5Final(digest, &context);
for (i = 0; i < 16; i++)
sprintf(result + 2 * i, "%02x", digest[i]);
result[32] = 0;
return result;
}
char *MESA_MD5_sum_bin(unsigned char *raw_data, unsigned int raw_data_len, char result[16])
{
MD5_CTX context;
MD5Init(&context);
MD5Update(&context, raw_data, raw_data_len);
MD5Final(result, &context);
return result;
}
#ifdef __cplusplus
}
#endif

74
test/http_decoder/md5.h Normal file
View File

@@ -0,0 +1,74 @@
/* MD5.H - header file for MD5C.C */
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
rights reserved.
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software. */
#ifndef __MD5_H
#define __MD5_H
#ifndef PROTOTYPES
#define PROTOTYPES 0
#endif
/* POINTER defines a generic pointer type */
typedef unsigned char *POINTER;
/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;
/* UINT4 defines a four byte word */
// typedef unsigned long int UINT4;
typedef unsigned int UINT4;
/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
returns an empty list. */
#if PROTOTYPES
#define PROTO_LIST(list) list
#else
#define PROTO_LIST(list) ()
#endif
/* MD5 context. */
typedef struct
{
UINT4 state[4]; /* state (ABCD) */
UINT4 count[2]; /* number of bits, modulo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
} MD5_CTX;
#ifdef __cplusplus
extern "C"
{
void MD5Init(MD5_CTX *context);
void MD5Update(
MD5_CTX *context, /* context */
unsigned char *input, /* input block */
unsigned int inputLen); /* length of input block */
void MD5Final(
unsigned char digest[16], /* message digest */
MD5_CTX *context); /* context */
char *MESA_MD5_sum_str(unsigned char *raw_data, unsigned int raw_data_len, char result[33]);
char *MESA_MD5_sum_bin(unsigned char *raw_data, unsigned int raw_data_len, char result[16]);
}
#endif
#endif

View File

@@ -0,0 +1,142 @@
set(DECODER_NAME http_decoder)
set(TEST_RUN_DIR ${CMAKE_INSTALL_PREFIX}/stellar)
set(SAPP_DEVEL_DIR ${TEST_RUN_DIR}/lib)
set(TEST_MAIN plugin_test_main)
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/test)
include_directories(/usr/local/include/cjson)
include_directories(/opt/tsg/framework/include/stellar)
include_directories(/opt/MESA/include/MESA)
include_directories(/opt/tsg/stellar/include/)
#various ways to add -rdynamic for centos7, centos8, and different cmake version
add_definitions(-rdynamic)
link_directories(${SAPP_DEVEL_DIR})
add_executable(plugin_test_main plugin_test_main.cpp)
set_target_properties(plugin_test_main
PROPERTIES
LINK_OPTIONS
"-rdynamic"
)
set_target_properties(plugin_test_main
PROPERTIES
LINK_FLAGS
"-rdynamic"
)
set(LINK_FLAGS "-rdynamic")
target_link_libraries(plugin_test_main gtest cjson-static stellar_devel)
# assemble test env
add_test(NAME STELLAR_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 STELLAR_INSTALL_TEST_MAIN COMMAND sh -c "cp ${CMAKE_CURRENT_BINARY_DIR}/${TEST_MAIN} ${TEST_RUN_DIR}/${TEST_MAIN}")
add_test(NAME STELLAR_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 STELLAR_COPY_STELLAR_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 STELLAR_COPY_STELLAR_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 STELLAR_COPY_HTTP_DECODER_CONF COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/etc/http && cp ${PROJECT_SOURCE_DIR}/conf/http_decoder.toml ${TEST_RUN_DIR}/etc/http/")
add_test(NAME STELLAR_COPY_HTTP_GTEST_ENTRY_CONF COMMAND sh -c "mkdir -p ${TEST_RUN_DIR}/etc/http && cp ${PROJECT_SOURCE_DIR}/conf/gtest_entry.toml ${TEST_RUN_DIR}/etc/http/")
# update config files
add_test(NAME 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 UPDATE_GTEST_PLUG_TOPIC COMMAND bash -c "sed -i 's/topic=.*/topic=\\x22HTTP_DECODER_MESSAGE\\x22/' ${TEST_RUN_DIR}/etc/http/gtest_entry.toml")
# update plugin to be tested
add_test(NAME STELLAR_HTTP_DECODER_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/src/${DECODER_NAME}.so ${TEST_RUN_DIR}/plugin/${DECODER_NAME}.so")
add_test(NAME STELLAR_HTTP_DECODER_GTEST_SO COMMAND sh -c "cp ${CMAKE_BINARY_DIR}/test/${DECODER_NAME}_test.so ${TEST_RUN_DIR}/plugin/${DECODER_NAME}_test.so")
set_tests_properties(STELLAR_MKDIR_METRIC STELLAR_INSTALL_TEST_MAIN STELLAR_COPY_SPEC STELLAR_COPY_HTTP_DECODER_CONF STELLAR_COPY_HTTP_GTEST_ENTRY_CONF
STELLAR_COPY_STELLAR_CONF STELLAR_COPY_STELLAR_LOG_CONF
STELLAR_HTTP_DECODER_SO STELLAR_HTTP_DECODER_GTEST_SO
UPDATE_GTEST_PLUG_ENTRY UPDATE_GTEST_PLUG_TOPIC
PROPERTIES FIXTURES_SETUP TestFixture)
set(TEST_JSON_DIR ${PROJECT_SOURCE_DIR}/test/test_result_json)
set(TEST_PCAP_DIR ${PROJECT_SOURCE_DIR}/test/http_pcap)
# run tests
add_test(NAME STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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})
set_tests_properties(STELLAR_HTTP_GET_SINGLE_TRANS_TEST
STELLAR_HTTP_GET_MULTI_TRANS_TEST
STELLAR_HTTP_GET_LONG_COOKIE_TEST
STELLAR_HTTP_GET_ENCODED_URI_TEST
STELLAR_HTTP_RES_GZIP_TEST
STELLAR_HTTP_CHUNKED_RES_GZIP_TEST
STELLAR_HTTP_OVER_TCP_KEEPALIVE_TEST
STELLAR_HTTP_OVER_PPPOE_TEST
STELLAR_HTTP_OVER_TLS_TEST
STELLAR_NON_HTTP_TEST
STELLAR_HTTP_REQ_1BYTE_SLIDING_WINDOW_TEST
STELLAR_HTTP_RES_1BYTE_SLIDING_WINDOW_TEST
STELLAR_HTTP_NO_CONTENT_LENGTH_TEST
STELLAR_HTTP_POST_MULTIPART_FORM_DATA_TEST
STELLAR_HTTP_HEADERS_EXCEED_MAXIMUM_TEST
STELLAR_HTTP_GET_MALFORMED_TEST
STELLAR_HTTP_URL_WITHOUT_HOST_V4_TEST
STELLAR_HTTP_URL_WITHOUT_HOST_V6_TEST
STELLAR_HTTP_MULTI_PARSE_ERROR_TEST
STELLAR_HTTP_UPGRADE_WEBSOCKET_TEST
STELLAR_HTTP_GET_REQ_PIPELINE_TEST
STELLAR_HTTP_TRANS_PIPELINE_TEST
STELLAR_HTTP_FIN_TEST
STELLAR_HTTP_CHN_ENCODE_URL
STELLAR_HTTP_ZLIB_DEADLOCK
STELLAR_HTTP_OUT_OF_ORDER
STELLAR_HTTP_GZIP_OUT_OF_ORDER
PROPERTIES FIXTURES_REQUIRED TestFixture)
add_test(NAME 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 UPDATE_STATE_PLUG_TOPIC COMMAND bash -c "sed -i 's/topic=.*/topic=\\x22HTTP_DECODER_MESSAGE\\x22/' ${TEST_RUN_DIR}/etc/http/gtest_entry.toml")
set_tests_properties(UPDATE_STATE_PLUG_ENTRY UPDATE_STATE_PLUG_TOPIC STELLAR_HTTP_DECODER_SO STELLAR_HTTP_DECODER_GTEST_SO STELLAR_MKDIR_METRIC
PROPERTIES FIXTURES_SETUP TestState)
add_test(NAME STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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 STELLAR_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(STELLAR_HTTP_MSG_TYPE_STATE_TEST
STELLAR_HTTP_MSG_TYPE_STATE_C2S_TEST
STELLAR_HTTP_MSG_TYPE_STATE_S2C_TEST
STELLAR_HTTP_MSG_TYPE_STATE_PIPELINE_TEST
STELLAR_HTTP_MSG_TYPE_STATE_SES_EXCEPTION_C2S_TEST
STELLAR_HTTP_MSG_TYPE_STATE_SES_EXCEPTION_S2C_TEST
PROPERTIES FIXTURES_REQUIRED TestState)

View File

@@ -0,0 +1,4 @@
[log]
output = file # stderr, file
file = "log/stellar.log"
level = DEBUG # TRACE, DEBUG, INFO, WARN, ERROR, FATAL

View File

@@ -0,0 +1,9 @@
[[plugin]]
path = "./plugin/http_decoder.so"
init = "http_decoder_init"
exit = "http_decoder_exit"
[[plugin]]
path = "./plugin/http_decoder_test.so"
init = "http_decoder_test_init"
exit = "http_decoder_test_exit"

View File

@@ -0,0 +1,57 @@
[id_generator]
snowflake_worker_id_base = 1 # [0, 31]
snowflake_worker_id_offset = 2 # [0, 127]
[packet_io]
mode = dumpfile # dumpfile, marsio
app_symbol = stellar
dev_symbol = nf_0_fw
dumpfile_dir = "./pcap"
nr_threads = 1 # [1, 256]
#cpu_mask = [5, 6, 7, 8, 9, 10, 11, 12]
cpu_mask = [5]
[ip_reassembly]
enable = 1
timeout = 10000 # range: [1, 60000] (ms)
bucket_entries = 256 # range: [1, 4294967295] (must be power of 2)
bucket_num = 4096 # range: [1, 4294967295]
[session_manager]
# max session number
max_tcp_session_num = 1000
max_udp_session_num = 1000
# session overload evict
tcp_overload_evict_old_sess = 1 # 1: evict old session, 0: bypass new session
udp_overload_evict_old_sess = 1 # 1: evict old session, 0: bypass new session
# TCP timeout
tcp_init_timeout = 10 # range: [1, 60000] (ms)
tcp_handshake_timeout = 10 # range: [1, 60000] (ms)
tcp_data_timeout = 10 # range: [1, 15999999000] (ms)
tcp_half_closed_timeout = 10 # range: [1, 604800000] (ms)
tcp_time_wait_timeout = 10 # range: [1, 600000] (ms)
tcp_discard_timeout = 10 # range: [1, 15999999000] (ms)
tcp_unverified_rst_timeout = 10 # range: [1, 600000] (ms)
# UDP timeout
udp_data_timeout = 10 # range: [1, 15999999000] (ms)
udp_discard_timeout = 10 # range: [1, 15999999000] (ms)
# duplicate packet filter
duplicated_packet_filter_enable = 0
duplicated_packet_filter_capacity = 1000000 # range: [1, 4294967295]
duplicated_packet_filter_timeout = 10 # range: [1, 60000] (ms)
duplicated_packet_filter_error_rate = 0.00001 # range: [0.0, 1.0]
# evicted session filter
evicted_session_filter_enable = 0
evicted_session_filter_capacity = 1000000 # range: [1, 4294967295]
evicted_session_filter_timeout = 10 # range: [1, 60000] (ms)
evicted_session_filter_error_rate = 0.00001 # range: [0.0, 1.0]
# TCP reassembly (Per direction)
tcp_reassembly_enable = 1
tcp_reassembly_max_timeout = 10 # range: [1, 60000] (ms)
tcp_reassembly_max_segments = 256 # range: [2, 4096]

View File

@@ -0,0 +1,151 @@
#include "stream.h"
#include "cJSON.h"
#include <gtest/gtest.h>
#include <unistd.h>
#include <stdio.h>
#include <assert.h>
#include "http_decoder_gtest.h"
#ifdef __cplusplus
extern "C"
{
#endif
#include "stellar/stellar.h"
#ifdef __cplusplus
}
#endif
// #define IGNORE_PRINTF
#ifdef IGNORE_PRINTF
#define printf(fmt, ...) (0)
#endif
static cJSON *g_test_result_root = NULL;
static cJSON *g_load_result_root = NULL;
static const char *result_json_path = NULL;
extern "C" int commit_test_result_json(cJSON *node, const char *name)
{
if (g_test_result_root)
{
// cJSON_AddItemToObject(g_test_result_root, name, node);
// cJSON_AddStringToObject(node, "name", name);
cJSON_AddItemToArray(g_test_result_root, node);
return 0;
}
return -1;
}
static void hdgt_prune_non_result_item(cJSON *benchmark_json_root)
{
int array_size = cJSON_GetArraySize(benchmark_json_root);
for (int i = 0; i < array_size; i++)
{
cJSON *object_root = cJSON_GetArrayItem(benchmark_json_root, i);
cJSON_DeleteItemFromObject(object_root, GTEST_HTTP_PAYLOAD_NAME);
}
}
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);
hdgt_prune_non_result_item(load);
return load;
}
TEST(PROTOCOL, compare_result_json)
{
EXPECT_EQ(cJSON_GetArraySize(g_test_result_root), cJSON_GetArraySize(g_load_result_root));
int ret = cJSON_Compare(g_test_result_root, g_load_result_root, 0);
EXPECT_EQ(1, ret);
if (ret != 1)
{
char *load_json_str = cJSON_Print(g_load_result_root);
printf("LOAD Raw:\n%s\n", load_json_str);
free(load_json_str);
char *result_json_str = cJSON_Print(g_test_result_root);
printf("TEST Raw:\n%s\n", result_json_str);
free(result_json_str);
cJSON *t_load = g_load_result_root->child, *t_test = g_test_result_root->child;
while (t_load != 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);
goto fail;
}
t_load = t_load->next;
t_test = t_test->next;
}
}
cJSON_Delete(g_load_result_root);
cJSON_Delete(g_test_result_root);
return;
fail:
cJSON_Delete(g_load_result_root);
cJSON_Delete(g_test_result_root);
return;
}
int main(int argc, char *argv[])
{
int ret = 0;
if (argc < 2)
{
printf("Usage: %s <result_json_path>\n", argv[0]);
result_json_path = NULL;
}
else
{
result_json_path = argv[1];
g_test_result_root = cJSON_CreateArray();
g_load_result_root = load_result_from_jsonfile(result_json_path);
assert(g_load_result_root != NULL && g_test_result_root != NULL);
}
::testing::InitGoogleTest(&argc, argv);
if (stellar_run(argc - 1, argv + 1) < 0)
{
return -1;
}
if (result_json_path != NULL)
{
ret = RUN_ALL_TESTS();
}
return ret;
}

View File

@@ -0,0 +1,34 @@
[
{
"__X_HTTP_TUPLE4": "2001:da8:200:900e:200:5efe:d24d:58a3.52556>2600:140e:6::1702:1058.80"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/ncsi.txt",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Connection": "Close",
"User-Agent": "Microsoft NCSI",
"Host": "www.msftncsi.com",
"__X_HTTP_URL": "www.msftncsi.com/ncsi.txt"
},
{
"__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,
"Content-Length": "14",
"Date": "Tue, 01 Dec 2015 03:41:27 GMT",
"Connection": "close",
"Content-Type": "text/plain",
"Cache-Control": "max-age=30, must-revalidate",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "cd5a4d3fdd5bffc16bf959ef75cf37bc",
"__X_HTTP_PAYLOAD": "TWljcm9zb2Z0IE5DU0k="
}
]

View File

@@ -0,0 +1,42 @@
[
{
"__X_HTTP_TUPLE4": "2607:5d00:2:2::38:2:56343-240e:928:101:80::80:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/%E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87URL%E7%BC%96%E8%A7%A3%E7%A0%81",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "www.airchina.com.cn",
"Connection": "keep-alive",
"DNT": "1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"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",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 0,
"res_version": "1.1",
"res_status": "Moved Temporarily",
"major_version": 1,
"minor_version": 1,
"status_code": 302,
"Date": "Tue, 16 Jul 2024 08:57:32 GMT",
"Content-Length": "0",
"Connection": "keep-alive",
"Server": "waf/4.39.0-0.el7",
"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"
}
]

View File

@@ -0,0 +1,46 @@
[
{
"__X_HTTP_TUPLE4": "127.0.0.1:33412-127.0.0.1:8080-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "www.wireshark.org:8080",
"User-Agent": "curl/7.46.0",
"Accept": "*/*",
"Connection": "close",
"Accept-Encoding": "chunked, gzip",
"__X_HTTP_URL": "www.wireshark.org:8080/"
},
{
"__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": "cloudflare-nginx",
"Date": "Wed, 06 Jan 2016 20:42:10 GMT",
"Content-Type": "text/html",
"Transfer-Encoding": "chunked",
"Connection": "close",
"Set-Cookie": "__cfduid=d8d37b52eaa3137bdfd7fd67a4ffc8a7a1452112929; expires=Thu, 05-Jan-17 20:42:09 GMT; path=/; domain=.wireshark.org; HttpOnly",
"X-Frame-Options": "SAMEORIGIN",
"Strict-Transport-Security": "max-age=31536000;",
"X-Slogan": "It's a great product with a great story to tell. I'm pumped!",
"X-Mod-Pagespeed": "1.9.32.11-7550",
"Vary": "Accept-Encoding",
"Cache-control": "max-age=0, no-cache, no-store",
"X-Slogan1": "Go deep.",
"CF-RAY": "260a3f709d7b0761-AMS",
"Content-Encoding": "gzip",
"__X_HTTP_RAW_PAYLOAD_MD5": "5387fc115327b819ba920ad6ce8f3e3a",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "855f8310be999de806e89a420a95435d"
}
]

View File

@@ -0,0 +1,686 @@
[
{
"Tuple4": "10.128.0.2.18762>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110929 Iceweasel/3.5.16",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_1"
},
{
"Tuple4": "10.128.0.2.18746>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_2"
},
{
"Tuple4": "10.128.0.2.18744>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_3"
},
{
"Tuple4": "10.128.0.2.18748>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_4"
},
{
"Tuple4": "10.128.0.2.18750>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_5"
},
{
"Tuple4": "10.128.0.2.18752>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_6"
},
{
"Tuple4": "10.128.0.2.18754>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_7"
},
{
"Tuple4": "10.128.0.2.18756>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_8"
},
{
"Tuple4": "10.128.0.2.18758>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_9"
},
{
"Tuple4": "10.128.0.2.18760>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_10"
},
{
"Tuple4": "10.128.0.2.18762>10.0.0.2.80",
"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",
"name": "HTTP_DECODER_RESULT_11"
},
{
"Tuple4": "10.128.0.2.18768>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Safari/5.00 (Macintosh; U; en)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_12"
},
{
"Tuple4": "10.128.0.2.18766>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_13"
},
{
"Tuple4": "10.128.0.2.18770>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Opera/9.00 (Windows NT 5.1; U; en)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_14"
},
{
"Tuple4": "10.128.0.2.18772>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Opera/9.00 (Windows NT 5.1; U; en)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_15"
},
{
"Tuple4": "10.128.0.2.18776>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "GooglePocket/2.1 ( http://www.googlePocket.com/Pocket.html)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_16"
},
{
"Tuple4": "10.128.0.2.18774>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.4.0",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_17"
},
{
"Tuple4": "10.128.0.2.18780>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030505 Mozilla Firebird/0.6",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_18"
},
{
"Tuple4": "10.128.0.2.18778>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "DoCoMo/2.0 SH902i (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_19"
},
{
"Tuple4": "10.128.0.2.18782>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "IE/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322;)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_20"
},
{
"Tuple4": "10.128.0.2.18784>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110929 Iceweasel/3.5.16",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_21"
},
{
"Tuple4": "10.128.0.2.18768>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_22"
},
{
"Tuple4": "10.128.0.2.18766>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_23"
},
{
"Tuple4": "10.128.0.2.18770>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_24"
},
{
"Tuple4": "10.128.0.2.18772>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_25"
},
{
"Tuple4": "10.128.0.2.18776>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_26"
},
{
"Tuple4": "10.128.0.2.18780>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_27"
},
{
"Tuple4": "10.128.0.2.18774>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_28"
},
{
"Tuple4": "10.128.0.2.18778>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_29"
},
{
"Tuple4": "10.128.0.2.18782>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_30"
},
{
"Tuple4": "10.128.0.2.18784>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:39 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_31"
},
{
"Tuple4": "10.128.0.2.18790>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Safari/5.00 (Macintosh; U; en)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_32"
},
{
"Tuple4": "10.128.0.2.18792>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_33"
},
{
"Tuple4": "10.128.0.2.18796>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Opera/9.00 (Windows NT 5.1; U; en)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_34"
},
{
"Tuple4": "10.128.0.2.18794>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Opera/9.00 (Windows NT 5.1; U; en)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_35"
},
{
"Tuple4": "10.128.0.2.18798>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "GooglePocket/2.1 ( http://www.googlePocket.com/Pocket.html)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_36"
},
{
"Tuple4": "10.128.0.2.18800>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030505 Mozilla Firebird/0.6",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_37"
},
{
"Tuple4": "10.128.0.2.18804>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "DoCoMo/2.0 SH902i (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_38"
},
{
"Tuple4": "10.128.0.2.18802>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.4.0",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_39"
},
{
"Tuple4": "10.128.0.2.18806>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "IE/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322;)",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_40"
},
{
"Tuple4": "10.128.0.2.18808>10.0.0.2.80",
"method": "CONNECT",
"uri": "test.mazebolt.com:80",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.mazebolt.com",
"User-Agent": "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.16) Gecko/20110929 Iceweasel/3.5.16",
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "0",
"name": "HTTP_DECODER_RESULT_41"
},
{
"Tuple4": "10.128.0.2.18790>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_42"
},
{
"Tuple4": "10.128.0.2.18792>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_43"
},
{
"Tuple4": "10.128.0.2.18796>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_44"
},
{
"Tuple4": "10.128.0.2.18798>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_45"
},
{
"Tuple4": "10.128.0.2.18794>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_46"
},
{
"Tuple4": "10.128.0.2.18800>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_47"
},
{
"Tuple4": "10.128.0.2.18804>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_48"
},
{
"Tuple4": "10.128.0.2.18802>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_49"
},
{
"Tuple4": "10.128.0.2.18806>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_50"
},
{
"Tuple4": "10.128.0.2.18808>10.0.0.2.80",
"res_version": "1.1",
"res_status": "Forbidden",
"major_version": 1,
"minor_version": 1,
"status_code": 403,
"Date": "Thu, 03 Sep 2020 10:26:41 GMT",
"Server": "Apache",
"Content-Length": "199",
"Content-Type": "text/html; charset=iso-8859-1",
"name": "HTTP_DECODER_RESULT_51"
}
]

View File

@@ -0,0 +1,81 @@
[
{
"__X_HTTP_TUPLE4": "192.168.117.60:39655-58.16.70.122:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "POST",
"uri": "/disAll/tcCertType.html",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.8,en-us,en;q=0.5",
"Origin": "http://58.16.70.122",
"X-Requested-With": "XMLHttpRequest",
"Referer": "http://58.16.70.122/register.jsp?redirect:http://58.16.70.122.r87.com/?",
"Cache-Control": "no-cache",
"X-Scanner": "Netsparker",
"Cookie": "JSESSIONID=385C79E211D561C0CA13D90F150F603D",
"Host": "58.16.70.122",
"Content-Length": "0",
"Accept-Encoding": "gzip, deflate",
"__X_HTTP_URL": "58.16.70.122/disAll/tcCertType.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": "Apache-Coyote/1.1",
"Pragma": "No-cache",
"Expires": "Thu, 01 Jan 1970 00:00:00 GMT",
"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_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 1,
"method": "GET",
"uri": "/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",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
"Cache-Control": "no-cache",
"Accept-Language": "en-us,en;q=0.5",
"X-Scanner": "Netsparker",
"Cookie": "JSESSIONID=385C79E211D561C0CA13D90F150F603D",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 1,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "Apache-Coyote/1.1",
"Accept-Ranges": "bytes",
"ETag": "W/\"1703517-1546572172000\"",
"Last-Modified": "Fri, 04 Jan 2019 03:22:52 GMT",
"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"
}
]

View File

@@ -0,0 +1,24 @@
[
{
"__X_HTTP_TUPLE4": "202.127.156.91:27282-14.17.32.203:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/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",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "livep.l.qq.com",
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36",
"Accept": "*/*",
"Referer": "http://imgcache.qq.com/tencentvideo_v1/player/TPout.swf?max_age=86400&v=20140714",
"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"
}
]

View File

@@ -0,0 +1,2 @@
[
]

View File

@@ -0,0 +1,149 @@
[
{
"__X_HTTP_TUPLE4": "192.168.50.18:60400-192.168.42.1:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/account/login.htm",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.pro.testin.cn",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
"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.9",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 0,
"res_version": "1.1",
"major_version": 1,
"minor_version": 1,
"status_code": 302,
"Server": "nginx/1.16.1",
"Date": "Tue, 31 May 2022 06:41:23 GMT",
"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",
"Location": "http://test.pro.testin.cn/enterprise/index.htm",
"Content-Language": "zh-CN"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 1,
"method": "GET",
"uri": "/enterprise/index.htm",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.pro.testin.cn",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
"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.9",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 1,
"res_version": "1.1",
"major_version": 1,
"minor_version": 1,
"status_code": 302,
"Server": "nginx/1.16.1",
"Date": "Tue, 31 May 2022 06:41:23 GMT",
"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",
"Location": "http://test.pro.testin.cn/enterprise/into.htm?eid=1",
"Content-Language": "zh-CN"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 2,
"method": "GET",
"uri": "/enterprise/into.htm?eid=1",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.pro.testin.cn",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
"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.9",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 2,
"res_version": "1.1",
"major_version": 1,
"minor_version": 1,
"status_code": 302,
"Server": "nginx/1.16.1",
"Date": "Tue, 31 May 2022 06:41:23 GMT",
"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",
"Location": "http://test.pro.testin.cn/realmachine/index.htm",
"Content-Language": "zh-CN"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 3,
"method": "GET",
"uri": "/realmachine/index.htm",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "test.pro.testin.cn",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36",
"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.9",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 3,
"res_version": "1.1",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx/1.16.1",
"Date": "Tue, 31 May 2022 06:41:23 GMT",
"Content-Type": "text/html;charset=UTF-8",
"Transfer-Encoding": "chunked",
"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",
"Content-Language": "zh-CN",
"Content-Encoding": "gzip",
"__X_HTTP_RAW_PAYLOAD_MD5": "5d761720e42f13d01ba981fb19b850ca",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "39cb5f3a9cbcfbd16f66e040ec49b8c4"
}
]

View File

@@ -0,0 +1,68 @@
[
{
"__X_HTTP_TUPLE4": "192.168.40.81:52802-192.168.40.137:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/aa.mp4?asf=sdaf",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "113.31.27.226",
"Connection": "keep-alive",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.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_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 1,
"method": "GET",
"uri": "/fetch_ldns.png",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "ns.pb.cachecn.net",
"Connection": "keep-alive",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.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_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 2,
"method": "GET",
"uri": "/40x.jpg",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "ns.pb.cachecn.net",
"Connection": "keep-alive",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 0,
"res_version": "1.0",
"res_status": "File not found",
"major_version": 1,
"minor_version": 0,
"status_code": 404,
"Server": "SimpleHTTP/0.6 Python/2.7.5",
"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"
}
]

View File

@@ -0,0 +1,34 @@
[
{
"__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_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": "144",
"Last-Modified": "Thu, 30 Nov 2023 08:38:54 GMT",
"__X_HTTP_RAW_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "3e11876cd3a234541ae37d833c088a76"
}
]

View File

@@ -0,0 +1,39 @@
[
{
"__X_HTTP_TUPLE4": "192.168.61.10:2064-192.168.40.139:8088-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "192.168.40.139:8088",
"Connection": "keep-alive",
"DNT": "1",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"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_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": "Tue, 13 Aug 2024 14:21:42 GMT",
"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"
}
]

View File

@@ -0,0 +1,311 @@
[
{
"__X_HTTP_TUPLE4": "196.188.112.76.51494>23.246.50.149.80"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABQSwLpJi-yDFZ7k9eqarY3x3-b99vNxxOt5xDeIOapZB6Y5QXPSa54b7cbWYTXYdFimDKCeJ4s7ngqpqByvtt0aLh85nSucLTcR3-OKleuNwVltHUscQhSgVfHc.jpg?r=392",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABQSwLpJi-yDFZ7k9eqarY3x3-b99vNxxOt5xDeIOapZB6Y5QXPSa54b7cbWYTXYdFimDKCeJ4s7ngqpqByvtt0aLh85nSucLTcR3-OKleuNwVltHUscQhSgVfHc.jpg?r=392",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABQSwLpJi-yDFZ7k9eqarY3x3-b99vNxxOt5xDeIOapZB6Y5QXPSa54b7cbWYTXYdFimDKCeJ4s7ngqpqByvtt0aLh85nSucLTcR3-OKleuNwVltHUscQhSgVfHc.jpg?r=392"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 1,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABUWN8S1k3yM2coX2bwxbP699Jdr0BUqBRzIfiAJXKC5Ywt7DXqJOCjrBSYs36Tny8277IXm2BF_cgTmY18NJlocglKjhaoJhFeGoIg1cwntFduyxyRPP2EJQL5Y.jpg?r=e0e",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABUWN8S1k3yM2coX2bwxbP699Jdr0BUqBRzIfiAJXKC5Ywt7DXqJOCjrBSYs36Tny8277IXm2BF_cgTmY18NJlocglKjhaoJhFeGoIg1cwntFduyxyRPP2EJQL5Y.jpg?r=e0e",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABUWN8S1k3yM2coX2bwxbP699Jdr0BUqBRzIfiAJXKC5Ywt7DXqJOCjrBSYs36Tny8277IXm2BF_cgTmY18NJlocglKjhaoJhFeGoIg1cwntFduyxyRPP2EJQL5Y.jpg?r=e0e"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 2,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABR1YQS01SaHGzoxgWBJF1Gas0Gv9_DPebb4irdCTRjcQ_FUaVbXFTTrJ68_bvJds1sb28VMq22Qn3oSSKKJ7DdLN8ybgkJooYlCD3gAntrqgIFugqv5Z3kV8rRE.jpg?r=ec7",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABR1YQS01SaHGzoxgWBJF1Gas0Gv9_DPebb4irdCTRjcQ_FUaVbXFTTrJ68_bvJds1sb28VMq22Qn3oSSKKJ7DdLN8ybgkJooYlCD3gAntrqgIFugqv5Z3kV8rRE.jpg?r=ec7",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABR1YQS01SaHGzoxgWBJF1Gas0Gv9_DPebb4irdCTRjcQ_FUaVbXFTTrJ68_bvJds1sb28VMq22Qn3oSSKKJ7DdLN8ybgkJooYlCD3gAntrqgIFugqv5Z3kV8rRE.jpg?r=ec7"
},
{
"__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": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "18377",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Wed, 10 Nov 2021 08:00:14 GMT",
"ETag": "\"c289a42885b30107ad119e2a6e405e4d\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c289a42885b30107ad119e2a6e405e4d"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 3,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABYo5IGwDn1LaWbeaa7amS0JhH3bU5MEVlcBsC4OK0mGbea97_xoi8EbqJt8_Zp0bMuuKPE80qUUjb4wq5po_lBtulA.jpg?r=c83",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABYo5IGwDn1LaWbeaa7amS0JhH3bU5MEVlcBsC4OK0mGbea97_xoi8EbqJt8_Zp0bMuuKPE80qUUjb4wq5po_lBtulA.jpg?r=c83",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABYo5IGwDn1LaWbeaa7amS0JhH3bU5MEVlcBsC4OK0mGbea97_xoi8EbqJt8_Zp0bMuuKPE80qUUjb4wq5po_lBtulA.jpg?r=c83"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 4,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABaYF3Rmi954cg6Afu9jOtirnvF3iIMHPZCCnP34eDeYQXfRGG9Vg0qgn7hHpMVV4jOr8OZmcD2Nb7MhQv6gl-fNmVQ.jpg?r=257",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABaYF3Rmi954cg6Afu9jOtirnvF3iIMHPZCCnP34eDeYQXfRGG9Vg0qgn7hHpMVV4jOr8OZmcD2Nb7MhQv6gl-fNmVQ.jpg?r=257",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABaYF3Rmi954cg6Afu9jOtirnvF3iIMHPZCCnP34eDeYQXfRGG9Vg0qgn7hHpMVV4jOr8OZmcD2Nb7MhQv6gl-fNmVQ.jpg?r=257"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 5,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABfC-ByjFJSfWZf7MFtjVl3ONnaQ69824xWP1l-cpAFGgAfaNFk4XR9uoHNWwnbG8N2UVDctVKz0a4Uyv0mEnC2kI9Q.jpg?r=532",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABfC-ByjFJSfWZf7MFtjVl3ONnaQ69824xWP1l-cpAFGgAfaNFk4XR9uoHNWwnbG8N2UVDctVKz0a4Uyv0mEnC2kI9Q.jpg?r=532",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABfC-ByjFJSfWZf7MFtjVl3ONnaQ69824xWP1l-cpAFGgAfaNFk4XR9uoHNWwnbG8N2UVDctVKz0a4Uyv0mEnC2kI9Q.jpg?r=532"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 6,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABSyGFXaB0IqQ6VR92uKMi38mNtoz7eeWxDziAf9VYKfauhh5Qo7FnnCRb31ff6Ez9yTXsqRszsGuz0GA9FVDf_NLn-9F60IcUHm59J73eYX6BD0h4wLLK0Da6YM.jpg?r=aaa",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABSyGFXaB0IqQ6VR92uKMi38mNtoz7eeWxDziAf9VYKfauhh5Qo7FnnCRb31ff6Ez9yTXsqRszsGuz0GA9FVDf_NLn-9F60IcUHm59J73eYX6BD0h4wLLK0Da6YM.jpg?r=aaa",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABSyGFXaB0IqQ6VR92uKMi38mNtoz7eeWxDziAf9VYKfauhh5Qo7FnnCRb31ff6Ez9yTXsqRszsGuz0GA9FVDf_NLn-9F60IcUHm59J73eYX6BD0h4wLLK0Da6YM.jpg?r=aaa"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 7,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABZbHXQr7bRUpSQ2vQe8F8p3xODTJjUbSjEcLgQrFVyGsPgQT1GVhqGWFetJhebcGrVeZGOTmQ3qvHTe9eBRJdjFsVg.jpg?r=723",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABZbHXQr7bRUpSQ2vQe8F8p3xODTJjUbSjEcLgQrFVyGsPgQT1GVhqGWFetJhebcGrVeZGOTmQ3qvHTe9eBRJdjFsVg.jpg?r=723",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABZbHXQr7bRUpSQ2vQe8F8p3xODTJjUbSjEcLgQrFVyGsPgQT1GVhqGWFetJhebcGrVeZGOTmQ3qvHTe9eBRJdjFsVg.jpg?r=723"
},
{
"__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": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "13488",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Mon, 08 Nov 2021 19:50:54 GMT",
"ETag": "\"35d56b6a0ef3b5857013f44620bd8888\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "35d56b6a0ef3b5857013f44620bd8888"
},
{
"__X_HTTP_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 2,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "14129",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Tue, 26 Oct 2021 15:12:58 GMT",
"ETag": "\"bb83961ad5fe366dcbb5240ead69f650\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "bb83961ad5fe366dcbb5240ead69f650"
},
{
"__X_HTTP_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 3,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "11493",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Thu, 04 Nov 2021 20:44:22 GMT",
"ETag": "\"c5be6a7137482da270bb2adc8d44a28d\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "c5be6a7137482da270bb2adc8d44a28d"
},
{
"__X_HTTP_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 4,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "14219",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Sat, 25 Sep 2021 05:02:49 GMT",
"ETag": "\"61bec96775876749bb57139f86f6b0ca\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "61bec96775876749bb57139f86f6b0ca"
},
{
"__X_HTTP_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 5,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "21967",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Fri, 02 Jul 2021 10:15:04 GMT",
"ETag": "\"841065529f1e89eabd0ef235a3d3291c\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "841065529f1e89eabd0ef235a3d3291c"
},
{
"__X_HTTP_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 6,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "21670",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Tue, 19 Oct 2021 14:00:02 GMT",
"ETag": "\"21d4b2c21a3a2f26ba665670e8513940\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "21d4b2c21a3a2f26ba665670e8513940"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 8,
"method": "GET",
"uri": "/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABSFXjTUaVrddq_nehO4yuLziSjuekxJuv3oEsyUpmt3oK3InJcXjtZUHrBBuu0EP05WRC8wFVe78VtxtW_ZuZQ65MIcApb0oZF4JoFlHHnv363RbgJn898Q4tQc.jpg?r=590",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Accept": "image/*",
"Accept-Encoding": "deflate, gzip",
"Connection": "Keep-Alive",
"Host": "occ-0-778-360.1.nflxso.net",
"Language": "en-ET,en",
"Referer": "https://secure.netflix.com/us/tvui/ql/patch/20211109_18752/2/release/darwinBootstrap.js?getMainUrlFromCodex=true&taskDefaultTimeoutV2=120000&bootloader_trace=apiusernotnull__false&nq=true&nq_control_tag=tvui-main&startup_key=e38d3c70814421931b0189d91d872546326f05d8f470150d07340df9e9d72275&device_type=TCL-TVS88L&e=TCL-TVS88L0000000000000000342914&env=prod&fromNM=true&nm_prefetch=true&nrdapp_version=2015.1.1&plain=true&dh=720&dw=1280&dar=16_9&reg=undefined&authType=login&authclid=845becf0-992c-46f7-a938-1bc22b097c58&q=source_type%3D1%26additionalDataUrl%3Dhttp%253A%252F%252Flocalhost%253A56789%252Fapps%252FNetflix%252Fdial_data%26source_type_payload%3D",
"User-Agent": "Gibbon/2015.1.1/2015.1.1: Netflix/2015.1.1 (DEVTYPE=TCL-TVS88L; CERTVER=1)",
"__X_HTTP_URL": "occ-0-778-360.1.nflxso.net/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABSFXjTUaVrddq_nehO4yuLziSjuekxJuv3oEsyUpmt3oK3InJcXjtZUHrBBuu0EP05WRC8wFVe78VtxtW_ZuZQ65MIcApb0oZF4JoFlHHnv363RbgJn898Q4tQc.jpg?r=590",
"X-Gibbon-Cache-Control": "max-age=2592000, priority=4, key=/dnm/api/v6/Da_vleYcahiCE7JMYt8LJRyoenc/AAAABSFXjTUaVrddq_nehO4yuLziSjuekxJuv3oEsyUpmt3oK3InJcXjtZUHrBBuu0EP05WRC8wFVe78VtxtW_ZuZQ65MIcApb0oZF4JoFlHHnv363RbgJn898Q4tQc.jpg?r=590"
},
{
"__X_HTTP_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 7,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Server": "nginx",
"Date": "Sat, 13 Nov 2021 14:15:58 GMT",
"Content-Type": "image/jpeg",
"Content-Length": "14215",
"Connection": "keep-alive",
"Cache-Control": "max-age=2592000",
"Last-Modified": "Thu, 11 Nov 2021 17:32:01 GMT",
"ETag": "\"837a2051f7d0f2899baf54ff20b3d9ad\"",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "f18a76ecf35648cb46ea6f42e4391cb8"
}
]

View File

@@ -0,0 +1,53 @@
[
{
"__X_HTTP_TUPLE4": "196.190.248.93.32727>94.130.141.49.80"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/iframes2/e38f4959d33f4fa390045b0d7123997d.html?subid=65843620",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "tsyndicate.com",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Linux; Android 11; SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.74 Mobile Safari/537.36",
"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.9",
"Referer": "http://the-sexy-tube.com/",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8",
"__X_HTTP_URL": "tsyndicate.com/iframes2/e38f4959d33f4fa390045b0d7123997d.html?subid=65843620"
},
{
"__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": "nginx",
"Date": "Sat, 13 Nov 2021 13:58:01 GMT",
"Content-Type": "text/html; charset=utf-8",
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Vary": "Accept-Encoding",
"Cache-Control": "no-cache, no-store, no-transform, must-revalidate",
"Pragma": "no-cache",
"Expires": "0",
"Vary1": "*",
"X-Api-Version": "2",
"Link": "<http://lcdn.tsyndicate.com/sdk/v1/b.b.js>; rel=preload; as=script",
"X-Request-Id": "2ceed9968bf8c648",
"Set-Cookie": "ts_uid=6ec96511-9fa6-4e10-86b8-31fdb4531864; expires=Fri, 13 May 2022 13:58:01 GMT; domain=.tsyndicate.com; path=/; HttpOnly; secure; SameSite=None",
"Set-Cookie2": "bfq=e0SIEaFjiwwZNWjkkDGjCwsRYwpuifFQRJmJMWzMsIEjBw4ZOCr2URAQ; expires=Sun, 14 Nov 2021 13:58:01 GMT; domain=.tsyndicate.com; path=/; secure; SameSite=None",
"X-Robots-Tag": "none",
"Cache-Control3": "no-transform",
"X-Robots-Tag4": "noindex, nofollow",
"Report-To": "{ \"url\": \"https://pxl.tsyndicate.com/api/v1/heavy-ad/report\", \"max_age\": 86401 }",
"Content-Encoding": "gzip",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "075802aa31b42d465d56b213915fb0a2"
}
]

View File

@@ -0,0 +1,36 @@
[
{
"__X_HTTP_TUPLE4": "192.168.131.33.47164>192.168.204.67.4445"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "POST",
"uri": "http://:4445/RPC2",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"User-Agent": "ulxmlrpcpp/1.7.5",
"Connection": "Close",
"Content-Type": "text/xml",
"Date": "Sat Sep 7 10:04:57 2019",
"Content-Length": "468",
"__X_HTTP_URL": ":4445/RPC2",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "033e27f72bc41b4a7e222df464749420"
},
{
"__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,
"Connection": "Close",
"Content-Type": "text/xml",
"Transfer-Encoding": "chunked",
"X-Powered-By": "ulxmlrpcpp/1.7.4",
"Date": "Sat Sep 7 01:09:08 2019",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "69db29507d10b0d57fcaa5afffd81934"
}
]

View File

@@ -0,0 +1,51 @@
[
{
"__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_DECOMPRESS_PAYLOAD_MD5": "ad480fd0732d0f6f1a8b06359e3a42bb"
}
]

View File

@@ -0,0 +1,15 @@
[
{
"__X_HTTP_TUPLE4": "192.168.40.139.59234>192.168.38.83.8080"
},
{
"flow": "C2S",
"payload_block": 1,
"payload_size": 77
},
{
"flow": "S2C",
"payload_block": 3,
"payload_size": 2781
}
]

View File

@@ -0,0 +1,15 @@
[
{
"__X_HTTP_TUPLE4": "192.168.10.58.51798>192.168.10.144.808"
},
{
"flow": "C2S",
"payload_block": 6,
"payload_size": 68
},
{
"flow": "S2C",
"payload_block": 7,
"payload_size": 1737
}
]

View File

@@ -0,0 +1,20 @@
[
{
"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_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"
}
]

View File

@@ -0,0 +1,13 @@
[
{
"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"
},
{}
]

View File

@@ -0,0 +1,13 @@
[
{
"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_TRANSACTION_END_transaction_0"
}
]

View File

@@ -0,0 +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_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"
}
]

View File

@@ -0,0 +1,61 @@
[
{
"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_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_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"
}
]

View File

@@ -0,0 +1,13 @@
[
{},
{
"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"
}
]

View File

@@ -0,0 +1,26 @@
[
{
"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_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",
"msg_18": "HTTP_MESSAGE_RES_BODY_END",
"msg_19": "HTTP_TRANSACTION_END_transaction_1"
}
]

View File

@@ -0,0 +1,15 @@
[
{
"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"
},
{}
]

View File

@@ -0,0 +1,19 @@
[
{},
{
"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",
"msg_12": "HTTP_MESSAGE_RES_BODY_END",
"msg_13": "HTTP_TRANSACTION_END_transaction_1"
}
]

View File

@@ -0,0 +1,38 @@
[
{
"__X_HTTP_TUPLE4": "192.168.131.33:47172-192.168.204.67:4445-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "POST",
"uri": "http://:4445/RPC2",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"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_DECOMPRESS_PAYLOAD_MD5": "6eccbcf261f04aabfa69884aa283f4f3"
},
{
"__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,
"Connection": "Close",
"Content-Type": "text/xml",
"Transfer-Encoding": "chunked",
"X-Powered-By": "ulxmlrpcpp/1.7.4",
"Date": "Sat Sep 7 01:09:24 2019",
"__X_HTTP_RAW_PAYLOAD_MD5": "5cf8a4aa9a54e7f2d05b55ed05bf9071",
"__X_HTTP_DECOMPRESS_PAYLOAD_MD5": "5cf8a4aa9a54e7f2d05b55ed05bf9071"
}
]

View File

@@ -0,0 +1,46 @@
[
{
"__X_HTTP_TUPLE4": "10.0.0.1:50384-10.0.0.2:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/js/xxxxxx.js",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "xxxxxxx.xxxxxx.xx",
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3",
"Accept": "*/*",
"Accept-Language": "en-us,en;q=0.5",
"Accept-Encoding": "gzip,deflate",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
"Keep-Alive": "115",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 0,
"res_version": "1.0",
"res_status": "OK",
"major_version": 1,
"minor_version": 0,
"status_code": 200,
"Date": "Mon, 10 May 2010 08:31:02 GMT",
"Server": "Apache",
"Content-type": "application/x-javascript",
"Expires": "Thu, 11 Jan 1973 16:00:00 GMT",
"Last-Modified": "Mon, 10 May 2010 08:31:02 GMT",
"Cache-Control": "no-store, no-cache, must-revalidate, post-check=0, pre-check=0",
"Pragma": "no-cache",
"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"
}
]

View File

@@ -0,0 +1,44 @@
[
{
"__X_HTTP_TUPLE4": "192.168.38.2:49243-202.96.17.37:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/cn/images/globesite/airchina.jpg",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"Host": "www.airchina.com",
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"DNT": "1",
"Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
"Referer": "http://www.airchina.com/website/ip2.jsp?v=20230128",
"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_TRANSACTION": "response",
"__X_HTTP_TRANSACTION_SEQ": 0,
"res_version": "1.1",
"res_status": "OK",
"major_version": 1,
"minor_version": 1,
"status_code": 200,
"Date": "Tue, 13 Aug 2024 01:48:28 GMT",
"Server": "Apache",
"X-Frame-Options": "SAMEORIGIN",
"Last-Modified": "Tue, 06 Aug 2019 02:10:09 GMT",
"Accept-Ranges": "bytes",
"Content-Length": "67424",
"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"
}
]

View File

@@ -0,0 +1,36 @@
[
{
"__X_HTTP_TUPLE4": "2a00:5e80:101:212d:504:7b1:2572:db22:37034-2606:f200:0:7:bad:f00d:d00d:1:80-6-0"
},
{
"__X_HTTP_TRANSACTION": "request",
"__X_HTTP_TRANSACTION_SEQ": 0,
"method": "GET",
"uri": "/",
"req_version": "1.1",
"major_version": 1,
"minor_version": 1,
"User-Agent": "curl/7.34.0",
"Host": "ipv6.icanhazip.com",
"Accept": "*/*",
"__X_HTTP_URL": "ipv6.icanhazip.com/"
},
{
"__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": "Thu, 02 Jan 2014 08:38:06 GMT",
"Server": "Apache",
"Content-Length": "38",
"Content-Type": "text/plain; charset=UTF-8",
"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"
}
]

Some files were not shown because too many files have changed in this diff Show More