diff options
| author | lishu <[email protected]> | 2019-12-20 17:49:02 +0800 |
|---|---|---|
| committer | lishu <[email protected]> | 2019-12-20 17:49:02 +0800 |
| commit | fa339fd667b1db0ddd09765d5897e957f0765a51 (patch) | |
| tree | 14bd7026ec6f5347c9a74d4bcc81e273c904f095 /src | |
| parent | fe6855dcc15a7fefdd025f5b5add52e8320b51e1 (diff) | |
add field_stat
Diffstat (limited to 'src')
| -rw-r--r-- | src/SSL_Analyze.c | 72 | ||||
| -rw-r--r-- | src/SSL_Analyze.h | 40 | ||||
| -rw-r--r-- | src/ssl_update.txt | 3 |
3 files changed, 103 insertions, 12 deletions
diff --git a/src/SSL_Analyze.c b/src/SSL_Analyze.c index 138e742..73dbbad 100644 --- a/src/SSL_Analyze.c +++ b/src/SSL_Analyze.c @@ -15,10 +15,13 @@ #include "SSL_Message.h" #include "ssl.h" #include "SSL_Proc.h" +#include "field_stat2.h" +#include "MESA_prof_load.h" + ssl_prog_runtime_parameter_t g_ssl_prog_para; -int SSL_VERSION_1_20190128 = 0; +int SSL_VERSION_1_20191220 = 0; void ssl_history() { @@ -65,7 +68,7 @@ void ssl_history() //2018-12-04 V0.2 openssl parse certificate bug //2018-12-07 V0.2 certificate maxnum; memcheck //2019-01-28 V0.2 1. bug update: memset in cert 2. ssl cert_chain:FF FF - +//2019-12-20 V0.2 add info statistics @@ -111,14 +114,50 @@ int ssl_readconf(const char* filename) return 0; } +int ssl_readMainConf(const char* filename) +{ + char http_log_filename[256]; + + + MESA_load_profile_int_def(filename, "FUNCTION", "stat_screen_print", &g_ssl_prog_para.stat_screen_print_trigger,0); + MESA_load_profile_int_def(filename, "FUNCTION", "stat_cycle", &g_ssl_prog_para.stat_cycle,0); + MESA_load_profile_string_def(filename, "FUNCTION", "stat_file", g_ssl_prog_para.stat_filename, sizeof(g_ssl_prog_para.stat_filename),"./log/ssl/ssl_stat.log"); + MESA_load_profile_short_def(filename, "FUNCTION", "switch_no_biz", (short*)&g_ssl_prog_para.ssl_switch_no_biz,0); + + return 0; +} + int SSL_INIT(void) { + int value = 0; memset(&g_ssl_prog_para,0,sizeof(ssl_prog_runtime_parameter_t)); strcat(g_ssl_prog_para.ssl_conf_filename, "./conf/ssl/ssl.conf"); if(0!=ssl_readconf(g_ssl_prog_para.ssl_conf_filename)) return -1; + ssl_readMainConf("./conf/ssl/ssl_main.conf"); + + + if(g_ssl_prog_para.stat_cycle) + { + g_ssl_prog_para.stat_handler = FS_create_handle(); + FS_set_para(g_ssl_prog_para.stat_handler, OUTPUT_DEVICE, g_ssl_prog_para.stat_filename, strlen(g_ssl_prog_para.stat_filename)+1); + value = 1;//flush by date + FS_set_para(g_ssl_prog_para.stat_handler, FLUSH_BY_DATE, &value, sizeof(value)); + value = 2;//append + FS_set_para(g_ssl_prog_para.stat_handler, PRINT_MODE, &value, sizeof(value)); + FS_set_para(g_ssl_prog_para.stat_handler, STAT_CYCLE, &g_ssl_prog_para.stat_cycle, sizeof(g_ssl_prog_para.stat_cycle)); + value = (g_ssl_prog_para.stat_cycle!=0) ? 1 : 0; + FS_set_para(g_ssl_prog_para.stat_handler, PRINT_TRIGGER, &value, sizeof(value)); + value = 1; + FS_set_para(g_ssl_prog_para.stat_handler, CREATE_THREAD, &value, sizeof(value)); + g_ssl_prog_para.stat_field[SSL_STAT_PKTS_C2S] = FS_register(g_ssl_prog_para.stat_handler,FS_STYLE_FIELD,FS_CALC_CURRENT,"ssl_c2s_pkts"); + g_ssl_prog_para.stat_field[SSL_STAT_PKTS_S2C] = FS_register(g_ssl_prog_para.stat_handler,FS_STYLE_FIELD,FS_CALC_CURRENT,"ssl_s2c_pkts"); + g_ssl_prog_para.stat_field[SSL_STAT_BITS_C2S] = FS_register(g_ssl_prog_para.stat_handler,FS_STYLE_FIELD,FS_CALC_CURRENT,"ssl_c2s_bytes"); + g_ssl_prog_para.stat_field[SSL_STAT_BITS_S2C] = FS_register(g_ssl_prog_para.stat_handler,FS_STYLE_FIELD,FS_CALC_CURRENT,"ssl_s2c_bytes"); + FS_start(g_ssl_prog_para.stat_handler); + } return 0; }/*SSL_INIT*/ @@ -392,13 +431,16 @@ char SSL_ENTRY(struct streaminfo *a_tcp, void**pme, int thread_seq, void *a_pack UCHAR return_val=0; ssl_stream *a_ssl_stream = NULL; - switch(ssl_doWithInsterestedRegion(a_tcp)) - { - case APP_STATE_DROPME: - return APP_STATE_DROPME; - default: - break; - } + if(!g_ssl_prog_para.ssl_switch_no_biz) + { + switch(ssl_doWithInsterestedRegion(a_tcp)) + { + case APP_STATE_DROPME: + return APP_STATE_DROPME; + default: + break; + } + } switch(a_tcp->opstate) { @@ -421,6 +463,18 @@ char SSL_ENTRY(struct streaminfo *a_tcp, void**pme, int thread_seq, void *a_pack { a_ssl_stream->over_flag = SSL_TRUE; } + if(g_ssl_prog_para.stat_cycle && a_ssl_stream->uiSslVersion!=UNKNOWN_VERSION) + { + atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_PKTS_C2S], a_tcp->ptcpdetail->serverpktnum); + atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_PKTS_S2C], a_tcp->ptcpdetail->clientpktnum); + atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_BITS_C2S], a_tcp->ptcpdetail->serverbytes); + atomic_add(&g_ssl_prog_para.stat_value[SSL_STAT_BITS_S2C], a_tcp->ptcpdetail->clientbytes); + + FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_PKTS_C2S],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_PKTS_C2S]); + FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_PKTS_S2C],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_PKTS_S2C]); + FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_BITS_C2S],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_BITS_C2S]); + FS_operate(g_ssl_prog_para.stat_handler, g_ssl_prog_para.stat_field[SSL_STAT_BITS_S2C],0, FS_OP_SET, g_ssl_prog_para.stat_value[SSL_STAT_BITS_S2C]); + } return_val = ssl_analyseStream(a_tcp, pme ,thread_seq, a_packet); if(NULL!=a_ssl_stream) { diff --git a/src/SSL_Analyze.h b/src/SSL_Analyze.h index 98c8f19..58718ba 100644 --- a/src/SSL_Analyze.h +++ b/src/SSL_Analyze.h @@ -18,13 +18,39 @@ #include "ssl.h" +#if(__GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__ >= 410) +#define atomic_inc(x) __sync_add_and_fetch((x),1) +#define atomic_dec(x) __sync_sub_and_fetch((x),1) +#define atomic_add(x,y) __sync_add_and_fetch((x),(y)) +#define atomic_sub(x,y) __sync_sub_and_fetch((x),(y)) +typedef long atomic_t; +#define ATOMIC_INIT(i) { (i) } +#define atomic_read(x) __sync_add_and_fetch((x),0) +#define atomic_set(x,y) __sync_lock_test_and_set((x),y) +#else +typedef long atomic_t; +#define atomic_inc(x) ((*(x))++) +#define atomic_dec(x) ((*(x))--) +#define atomic_add(x,y) ((*(x))+=(y)) +#define atomic_sub(x,y) ((*(x))-=(y)) +#define ATOMIC_INIT(i) { (i) } +#define atomic_read(x) (*(x)) +#define atomic_set(x,y) ((*(x))=(y)) +#endif + #define SSL_RETURN_NORM 0x53 #define SSL_RETURN_UNNORM 0x54 #define SSL_RETURN_RESET_BUFFER 0x55 #define SSL_RETURN_DROPME 0x57 -#define MAX_REGION_NUM 15 -#define REGION_NAME_LEN 32 +#define MAX_REGION_NUM 15 +#define REGION_NAME_LEN 32 + +#define SSL_STAT_PKTS_C2S 0 +#define SSL_STAT_PKTS_S2C 1 +#define SSL_STAT_BITS_C2S 2 +#define SSL_STAT_BITS_S2C 3 +#define SSL_MAX_STAT_FIELD 4 typedef struct ssl_prog_runtime_parameter_t { @@ -32,7 +58,15 @@ typedef struct ssl_prog_runtime_parameter_t unsigned long long ssl_region_cnt; char ssl_conf_filename[256]; unsigned short ssl_plugid; - char ssl_conf_regionname[MAX_REGION_NUM][REGION_NAME_LEN]; + char ssl_conf_regionname[MAX_REGION_NUM][REGION_NAME_LEN]; + void* stat_handler; + int stat_screen_print_trigger; + int stat_cycle; + int ssl_switch_no_biz; + + int stat_field[SSL_MAX_STAT_FIELD]; + uint64_t stat_value[SSL_MAX_STAT_FIELD]; + char stat_filename[256]; }ssl_prog_runtime_parameter_t; diff --git a/src/ssl_update.txt b/src/ssl_update.txt index 267c59a..020deb2 100644 --- a/src/ssl_update.txt +++ b/src/ssl_update.txt @@ -10,6 +10,9 @@ https://www.cnblogs.com/huhu0013/p/4791430.html BIO https://blog.csdn.net/liujiayu2/article/details/51860172 ************************************************* +2019.12.20 +1.����field_stat +************************************************* 2019.7.4 1.����cmake ************************************************* |
