maat_redis支持配置port范围,例如12345-54321,kni.conf中变量名称不变

This commit is contained in:
liuyang
2018-12-04 22:29:50 +08:00
parent 8e3e5a7ad1
commit 58999736c8
5 changed files with 66 additions and 16 deletions

View File

@@ -4,6 +4,7 @@
#include <unistd.h>
#include <ctype.h>
#include <stdarg.h>
#include <assert.h>
#include <arpa/inet.h>
#include "stream.h"
#include "MESA_prof_load.h"
@@ -602,7 +603,7 @@ int kni_get_service_defined(int new_action,struct Maat_rule_t* maat_result,struc
pmeinfo->cfg_id = maat_result->config_id;
pmeinfo->ser_def_len = maat_result->serv_def_len;
assert(sizeof(pmeinfo->service_defined) > maat_result->serv_def_len);
assert((int)sizeof(pmeinfo->service_defined) > maat_result->serv_def_len);
memcpy(pmeinfo->service_defined,maat_result->service_defined,maat_result->serv_def_len);
}

View File

@@ -12,7 +12,7 @@
int g_kni_version_VERSION_20181129;
int g_kni_version_VERSION_20181204;
struct kni_var_comm g_kni_comminfo;
struct kni_var_struct g_kni_structinfo;
@@ -548,7 +548,7 @@ char kni_first_tcpdata(const struct streaminfo* pstream,const void* a_packet,str
pmeinfo->protocol=kni_protocol_identify(pstream,a_packet,data,datalen,domain,&domain_len);
assert(domain_len<sizeof(domain));
assert(domain_len<(int)sizeof(domain));
if((pmeinfo->protocol==KNI_FLAG_HTTP) ||(pmeinfo->protocol==KNI_FLAG_SSL))
{
if(domain_len != 0)
@@ -1296,8 +1296,11 @@ int init_kni_dyn_maat_info()
char redis_ip[INET_ADDRSTRLEN]={0};
int redis_db_index=0;
int redis_port=0;
unsigned short redis_port_real=0;
int redis_port_begin=0,redis_port_end=0;
unsigned short redis_port_select=0;
char redis_port_range[KNI_CONF_MAXLEN]={0};
int scandir_interval=KNI_SCANDIR_INTERVAL;
int effect_interval=KNI_EFFECT_INTERVAL;
@@ -1311,9 +1314,10 @@ int init_kni_dyn_maat_info()
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_scandir_interval",&scandir_interval,KNI_SCANDIR_INTERVAL);
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_effect_interval",&effect_interval,KNI_EFFECT_INTERVAL);
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_db_index",&redis_db_index,0);
MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_port",(int*)&redis_port);
// MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_port",(int*)&redis_port);
MESA_load_profile_string_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_server",redis_ip,INET_ADDRSTRLEN);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_port",redis_port_range,sizeof(redis_port_range),"6379");
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_stat_file_path",stat_file_dir,KNI_CONF_MAXLEN,KNI_DYN_STAT_FILEPATH);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_table_info_path",table_info_path,KNI_CONF_MAXLEN,KNI_TABLEINFO_PATH);
@@ -1331,9 +1335,29 @@ int init_kni_dyn_maat_info()
}
else if(maat_readconf_mode==KNI_READCONF_REDIS)
{
redis_port_real=(unsigned short)redis_port;
ret=sscanf(redis_port_range,"%d-%d", &redis_port_begin, &redis_port_end);
if(ret==1)
{
redis_port_select=(unsigned short)redis_port_begin;
}
else if(ret==2)
{
srand(time(NULL));
redis_port_select=(unsigned short)(redis_port_begin+rand()%(redis_port_end-redis_port_begin));
}
else
{
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"Invalid redis port range %s, MAAT init failed.", redis_port_range);
return -1;
}
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"dynmic_maat_redis select port:%d",redis_port_select);
Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_IP,(void*)redis_ip,strlen(redis_ip)+1);
Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_real,sizeof(unsigned short));
Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_select,sizeof(unsigned short));
Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_INDEX,(void*)&redis_db_index,sizeof(int));
}
@@ -1369,8 +1393,8 @@ int init_kni_static_maat_info()
char redis_ip[INET_ADDRSTRLEN]={0};
int redis_db_index=0;
int redis_port=0;
unsigned short redis_port_real=0;
int redis_port_begin=0,redis_port_end=0;
unsigned short redis_port_select=0;
int scandir_interval=KNI_SCANDIR_INTERVAL;
int effect_interval=KNI_EFFECT_INTERVAL;
@@ -1380,19 +1404,24 @@ int init_kni_static_maat_info()
char full_cfg_dir[KNI_CONF_MAXLEN]={0};
char inc_cfg_dir[KNI_CONF_MAXLEN]={0};
char redis_port_range[KNI_CONF_MAXLEN]={0};
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"maat_readconf_mode",&maat_readconf_mode,KNI_READCONF_IRIS);
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"scandir_interval",&scandir_interval,KNI_SCANDIR_INTERVAL);
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"effect_interval",&effect_interval,KNI_EFFECT_INTERVAL);
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_db_index",&redis_db_index,0);
MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_port",(int*)&redis_port);
// MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_port",(int*)&redis_port);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_port",redis_port_range,sizeof(redis_port_range),"6379");
MESA_load_profile_string_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_server",redis_ip,INET_ADDRSTRLEN);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"table_info_path",table_info_path,KNI_CONF_MAXLEN,KNI_TABLEINFO_PATH);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"inc_cfg_dir",inc_cfg_dir,KNI_CONF_MAXLEN,KNI_INCCFG_FILEPATH);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"stat_file_path",stat_file_dir,KNI_CONF_MAXLEN,KNI_STAT_FILEPATH);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"full_cfg_dir",full_cfg_dir,KNI_CONF_MAXLEN,KNI_FULLCFG_FILEPATH);
g_kni_maatinfo.maat_feather=Maat_feather(g_iThreadNum,table_info_path,g_kni_comminfo.logger);
if(g_kni_maatinfo.maat_feather==NULL)
@@ -1412,9 +1441,27 @@ int init_kni_static_maat_info()
}
else if(maat_readconf_mode==KNI_READCONF_REDIS)
{
redis_port_real=(unsigned short)redis_port;
ret=sscanf(redis_port_range,"%d-%d", &redis_port_begin, &redis_port_end);
if(ret==1)
{
redis_port_select=(unsigned short)redis_port_begin;
}
else if(ret==2)
{
srand(time(NULL));
redis_port_select=(unsigned short)(redis_port_begin+rand()%(redis_port_end-redis_port_begin));
}
else
{
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"Invalid redis port range %s, MAAT init failed.", redis_port_range);
return -1;
}
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"static_maat_redis select port:%d",redis_port_select);
Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_IP,(void*)redis_ip,strlen(redis_ip)+1);
Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_real,sizeof(unsigned short));
Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_select,sizeof(unsigned short));
Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_INDEX,(void*)&redis_db_index,sizeof(int));
}

View File

@@ -12,6 +12,7 @@
#include "kni_comm.h"
#include "kni_intercept.h"
#include "kni_ratelimit.h"
#include "kni_utils.h"
#ifndef TH_FIN

View File

@@ -1001,7 +1001,7 @@ char tun_write_data(int fd, const char* send_buf, size_t send_buflen,struct stre
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"write() error %d, %s",errno,strerror(errno));
ret=APP_STATE_DROPPKT|APP_STATE_DROPME;
}
else if(succ_sendlen<send_buflen)
else if(succ_sendlen<(int)send_buflen)
{
kni_htable_del(pstream,(const void*)send_buf);

View File

@@ -1,6 +1,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include "kni_replace.h"
#include "kni_entry.h"
@@ -48,11 +49,11 @@ int kni_get_replace(int cfg_id,int ser_def_len,char* service_defined,struct kni_
replace_len = strlen(replace);
replace_info->original_len = replace - original -1;
assert(sizeof(replace_info->find)>=replace_info->original_len);
assert((int)sizeof(replace_info->find)>=replace_info->original_len);
memcpy(replace_info->find,original,replace_info->original_len);
replace_info->replace_len = replace_len;
assert(sizeof(replace_info->replace)>=replace_info->replace_len);
assert((int)sizeof(replace_info->replace)>=replace_info->replace_len);
memcpy(replace_info->replace,replace,replace_info->replace_len);
return 0;