Merge branch 'master' of git.komect.net:ISG/secogateway
This commit is contained in:
commit
d00a31c369
|
@ -468,7 +468,7 @@ static ret_code user_config_add_proc(uint source, uint config_type,
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
char *temp_begin_time, *temp_end_time, *temp_udesp, *temp_pwd;
|
char *temp_begin_time, *temp_end_time, *temp_udesp, *temp_pwd;
|
||||||
int temp_multi, temp_valid, temp_output_len;
|
int temp_multi, temp_valid, temp_output_len;
|
||||||
char *message[] = {"新增成功","用户组名不存在","用户名长度不符合","用户名中包含特殊字符","用户名重名","用户数已达到最大(最大用户数100)","数据库操作失败","系统错误"};
|
char *message[] = {"新增成功","用户组名不存在","用户名或描述长度不符合","用户名中包含特殊字符","用户名重名","用户数已达到最大(最大用户数100)","数据库操作失败","系统错误"};
|
||||||
|
|
||||||
/* 解析json串 */
|
/* 解析json串 */
|
||||||
root = cJSON_Parse(input);
|
root = cJSON_Parse(input);
|
||||||
|
@ -723,13 +723,29 @@ static ret_code user_config_mod_web_proc(uint source, uint config_type,
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cJSON * temp_udes_json = cJSON_GetObjectItem(data, "udescription");
|
||||||
|
if(!temp_udes_json)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(UDESIZE < strlen(temp_udes_json->valuestring))
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
s2j_create_struct_obj(input_data, USERLIST);
|
s2j_create_struct_obj(input_data, USERLIST);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, ID);
|
s2j_struct_get_basic_element(input_data, data, int, ID);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, GID);
|
s2j_struct_get_basic_element(input_data, data, int, GID);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, uname,UNAMESIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, uname,UNAMESIZE);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, gname, GNAMESIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, gname, GNAMESIZE);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, passwd, UPWDSIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, passwd, UPWDSIZE);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, udescription, UDESIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, udescription, UDESIZE+1);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, resetpwd);
|
s2j_struct_get_basic_element(input_data, data, int, resetpwd);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, multi);
|
s2j_struct_get_basic_element(input_data, data, int, multi);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, valid);
|
s2j_struct_get_basic_element(input_data, data, int, valid);
|
||||||
|
|
|
@ -95,15 +95,30 @@ do{ \
|
||||||
/* 去除字符串前后空格 */
|
/* 去除字符串前后空格 */
|
||||||
#define TRIM_NAME(in, out) \
|
#define TRIM_NAME(in, out) \
|
||||||
do { \
|
do { \
|
||||||
char * c; \
|
char * c;\
|
||||||
int i; \
|
int i;\
|
||||||
size_t nLen = strlen(in); \
|
int len;\
|
||||||
i = 0; \
|
size_t nLen = strlen(in);\
|
||||||
while(in[i] == ' ') {i++;} \
|
i = 0;\
|
||||||
c = &in[i]; \
|
while(in[i] == ' ')\
|
||||||
i = nLen - 1; \
|
{\
|
||||||
while(in[i] == ' ') {i--;} \
|
i++; \
|
||||||
memcpy(out, c, i + 1 - (c - in)); \
|
}\
|
||||||
|
if (i != nLen)\
|
||||||
|
{\
|
||||||
|
c = &in[i];\
|
||||||
|
i = nLen - 1;\
|
||||||
|
while(in[i] == ' ') \
|
||||||
|
{\
|
||||||
|
i--;\
|
||||||
|
}\
|
||||||
|
len = i + 1 - (c - in);\
|
||||||
|
memcpy(out, c, i + 1 - (c - in));\
|
||||||
|
}\
|
||||||
|
else\
|
||||||
|
{\
|
||||||
|
memset(out, 0 ,strlen(out));\
|
||||||
|
}\
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#define ADDUSER_FAIL_USERFULL 5 //用户已满
|
#define ADDUSER_FAIL_USERFULL 5 //用户已满
|
||||||
#define ADDUSER_FAIL_DATABASE 6 //存数据库失败
|
#define ADDUSER_FAIL_DATABASE 6 //存数据库失败
|
||||||
#define ADDUSER_ERROR 7 //系统错误
|
#define ADDUSER_ERROR 7 //系统错误
|
||||||
|
#define ADDUSER_FAIL_TIME 8 //有效时间错误
|
||||||
|
|
||||||
|
|
||||||
#define DELUSER_SUCCESS 0
|
#define DELUSER_SUCCESS 0
|
||||||
|
|
|
@ -73,6 +73,12 @@ void usermanager_add_user(char* uname_in, char* gname, char* udesp, char* pwd, i
|
||||||
/* 去除用户名前后空格 */
|
/* 去除用户名前后空格 */
|
||||||
TRIM_NAME(uname_in, uname);
|
TRIM_NAME(uname_in, uname);
|
||||||
|
|
||||||
|
if(0 == strlen(uname))
|
||||||
|
{
|
||||||
|
uaddres->result = ADDUSER_FAIL_LENGTH;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (NULL == pwd || 0 == strcmp("",pwd))
|
if (NULL == pwd || 0 == strcmp("",pwd))
|
||||||
{
|
{
|
||||||
pwd = "A31as%4Gb";
|
pwd = "A31as%4Gb";
|
||||||
|
@ -87,24 +93,43 @@ void usermanager_add_user(char* uname_in, char* gname, char* udesp, char* pwd, i
|
||||||
{
|
{
|
||||||
valid = 0;
|
valid = 0;
|
||||||
}
|
}
|
||||||
if(NULL == valid_begin_time)
|
if(NULL == valid_begin_time || "" == valid_begin_time)
|
||||||
{
|
{
|
||||||
valid_begin_time = "";
|
valid_begin_time = "";
|
||||||
begin_time = 0;
|
begin_time = 0;
|
||||||
}else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
STRING2TIME_T(valid_begin_time, begin_time);
|
STRING2TIME_T(valid_begin_time, begin_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(NULL == valid_end_time)
|
if(NULL == valid_end_time || "" == valid_end_time)
|
||||||
{
|
{
|
||||||
valid_end_time = "";
|
valid_end_time = "";
|
||||||
end_time = 0;
|
end_time = 0;
|
||||||
}else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
STRING2TIME_T(valid_end_time, end_time);
|
STRING2TIME_T(valid_end_time, end_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 校验开始、结束时间 */
|
||||||
|
if(1 == valid)
|
||||||
|
{
|
||||||
|
if(begin_time >= end_time)
|
||||||
|
{
|
||||||
|
uaddres->result = ADDUSER_FAIL_TIME;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
time_t time_now = time(NULL);
|
||||||
|
if(time_now >= end_time)
|
||||||
|
{
|
||||||
|
uaddres->result = ADDUSER_FAIL_TIME;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
re_connect();
|
re_connect();
|
||||||
if(NULL == um_hdbc)
|
if(NULL == um_hdbc)
|
||||||
|
@ -236,7 +261,7 @@ bool get_user_detail_by_user_uuid(int user_uuid, char ** user_detail)
|
||||||
bool mod_user_web(USERLIST* ulist)
|
bool mod_user_web(USERLIST* ulist)
|
||||||
{
|
{
|
||||||
int ret_release;
|
int ret_release;
|
||||||
time_t cur_time;
|
time_t cur_time, begin_time, end_time;
|
||||||
char *temp_begin_time, *temp_end_time, *temp_pwd, *temp_udes, *temp_user_json;
|
char *temp_begin_time, *temp_end_time, *temp_pwd, *temp_udes, *temp_user_json;
|
||||||
|
|
||||||
/* 可以修改的数据:用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */
|
/* 可以修改的数据:用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */
|
||||||
|
@ -274,6 +299,29 @@ bool mod_user_web(USERLIST* ulist)
|
||||||
temp_end_time = "";
|
temp_end_time = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 校验开始、结束时间 */
|
||||||
|
cur_time = time(NULL);
|
||||||
|
if(1 == ulist->valid)
|
||||||
|
{
|
||||||
|
if(NULL == ulist->valid_begin_time || "" == ulist->valid_begin_time || NULL == ulist->valid_end_time || "" == ulist->valid_end_time)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
STRING2TIME_T(ulist->valid_begin_time, begin_time);
|
||||||
|
STRING2TIME_T(ulist->valid_end_time, end_time);
|
||||||
|
|
||||||
|
if(begin_time >= end_time)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cur_time >= end_time)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(0 == ulist->resetpwd)
|
if(0 == ulist->resetpwd)
|
||||||
{
|
{
|
||||||
if(NULL == ulist->passwd)
|
if(NULL == ulist->passwd)
|
||||||
|
@ -287,7 +335,7 @@ bool mod_user_web(USERLIST* ulist)
|
||||||
bool ret_getuser = get_user_detail_by_user_uuid(ulist->ID, &temp_user_json);
|
bool ret_getuser = get_user_detail_by_user_uuid(ulist->ID, &temp_user_json);
|
||||||
if (!ret_getuser)
|
if (!ret_getuser)
|
||||||
{
|
{
|
||||||
UCHAR_FREE(temp_user_json);
|
//UCHAR_FREE(temp_user_json); //多余释放
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,8 +453,8 @@ bool mod_user_web(USERLIST* ulist)
|
||||||
if (1 == ulist->valid)
|
if (1 == ulist->valid)
|
||||||
{
|
{
|
||||||
//if(判断是否符合格式)
|
//if(判断是否符合格式)
|
||||||
STRING2TIME_T(ulist->valid_begin_time, g_user_table[user_id].valid_begin_time);
|
g_user_table[user_id].valid_begin_time = begin_time;
|
||||||
STRING2TIME_T(ulist->valid_end_time, g_user_table[user_id].valid_end_time);
|
g_user_table[user_id].valid_end_time = end_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 查询该用户是否有在线IP */
|
/* 查询该用户是否有在线IP */
|
||||||
|
@ -442,7 +490,6 @@ bool mod_user_web(USERLIST* ulist)
|
||||||
/* 当前时间不在有效期内,下线用户 */
|
/* 当前时间不在有效期内,下线用户 */
|
||||||
if (1 == ulist->valid)
|
if (1 == ulist->valid)
|
||||||
{
|
{
|
||||||
cur_time = time(NULL);
|
|
||||||
if (cur_time < g_user_table[user_id].valid_begin_time || cur_time > g_user_table[user_id].valid_end_time)
|
if (cur_time < g_user_table[user_id].valid_begin_time || cur_time > g_user_table[user_id].valid_end_time)
|
||||||
{
|
{
|
||||||
//offline_force_one_user(user_id);
|
//offline_force_one_user(user_id);
|
||||||
|
|
|
@ -59,6 +59,11 @@ int add_group(char* name_in, char* description)
|
||||||
/* 去除用户组名前后空格 */
|
/* 去除用户组名前后空格 */
|
||||||
TRIM_NAME(name_in, name);
|
TRIM_NAME(name_in, name);
|
||||||
|
|
||||||
|
if(0 == strlen(name))
|
||||||
|
{
|
||||||
|
return ADDGROUP_FAIL_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
re_connect();
|
re_connect();
|
||||||
if(NULL == um_hdbc)
|
if(NULL == um_hdbc)
|
||||||
|
|
|
@ -289,6 +289,7 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
unsigned int ret_int = 0;
|
unsigned int ret_int = 0;
|
||||||
int portresult = 0;
|
int portresult = 0;
|
||||||
|
char* err_msg = NULL;
|
||||||
|
|
||||||
auth_parameters = (auth_parameters_t *)malloc(sizeof(auth_parameters_t));
|
auth_parameters = (auth_parameters_t *)malloc(sizeof(auth_parameters_t));
|
||||||
|
|
||||||
|
@ -300,16 +301,27 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/*判断长度*/
|
/*判断长度*/
|
||||||
if(input_len < sizeof(auth_parameters_t)) {
|
if(input_len < sizeof(auth_parameters_t)) {
|
||||||
|
free(auth_parameters);
|
||||||
return RET_INPUTERR;
|
return RET_INPUTERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*判断认证范围是否有效*/
|
|
||||||
if((auth_parameters->timehorizon < HORIZON_MIN_VALUE) || (auth_parameters->timehorizon > HORIZON_MAX_VALUE)) {
|
if((auth_parameters->timehorizon < HORIZON_MIN_VALUE) || (auth_parameters->timehorizon > HORIZON_MAX_VALUE)) {
|
||||||
|
err_msg = "认证时间范围无效";
|
||||||
|
} else if((auth_parameters->failcount < FAIL_MIN_NUM) || (auth_parameters->failcount > FAIL_MAX_NUM)) {
|
||||||
|
err_msg = "失败次数无效";
|
||||||
|
} else if((auth_parameters->locktime < LOCK_MIN_TIME) || (auth_parameters->locktime > LOCK_MAX_TIME)) {
|
||||||
|
err_msg = "锁定时间无效";
|
||||||
|
} else if((auth_parameters->aging_time < AGINGTIME_MIN_NUM) || (auth_parameters->aging_time > AGINGTIME_MAX_NUM)) {
|
||||||
|
err_msg = "老化时间无效";
|
||||||
|
} else if((auth_parameters->port < PARA_DPORT_MIN_NUM) || (auth_parameters->port > PARA_DPORT_MAX_NUM)) {
|
||||||
|
err_msg = "认证端口无效";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(err_msg != NULL) {
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
unsigned int ret_int = 0;
|
unsigned int ret_int = 0;
|
||||||
cJSON *res;
|
cJSON *res;
|
||||||
|
|
||||||
printf("timehorizon is not vaild\n");
|
|
||||||
/*创建json对象 */
|
/*创建json对象 */
|
||||||
res = cJSON_CreateObject();
|
res = cJSON_CreateObject();
|
||||||
|
|
||||||
|
@ -320,7 +332,7 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
/*将json对象转换成json字符串 返回处理结果*/
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 1);
|
cJSON_AddNumberToObject(res, "resultcode", 1);
|
||||||
cJSON_AddStringToObject(res, "message", "timehorizon is not vaild");
|
cJSON_AddStringToObject(res, "message", err_msg);
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
ret_char = cJSON_PrintUnformatted(res);
|
||||||
ret_int = strlen(ret_char);
|
ret_int = strlen(ret_char);
|
||||||
|
|
||||||
|
@ -344,209 +356,6 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
|
||||||
return RET_INPUTERR;
|
return RET_INPUTERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*判断认证失败次数是否有效*/
|
|
||||||
if((auth_parameters->failcount < FAIL_MIN_NUM) || (auth_parameters->timehorizon > FAIL_MAX_NUM)) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("failcount is not vaild\n");
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
ret = RET_ERR;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 1);
|
|
||||||
cJSON_AddStringToObject(res, "message", "failcount is not vaild");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(auth_parameters);
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
|
|
||||||
return RET_INPUTERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*判断锁定次数是否有效*/
|
|
||||||
if((auth_parameters->locktime < LOCK_MIN_TIME) || (auth_parameters->locktime > LOCK_MAX_TIME)) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("locktime is not vaild\n");
|
|
||||||
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
ret = RET_ERR;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 1);
|
|
||||||
cJSON_AddStringToObject(res, "message", "locktime is not vaild");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(auth_parameters);
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_INPUTERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*判断老化时间是否有效*/
|
|
||||||
if((auth_parameters->aging_time < AGINGTIME_MIN_NUM) || (auth_parameters->aging_time > AGINGTIME_MAX_NUM)) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("aging_time is not vaild\n");
|
|
||||||
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
ret = RET_ERR;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 1);
|
|
||||||
cJSON_AddStringToObject(res, "message", "aging_time is not vaild");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(auth_parameters);
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_INPUTERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*校验端口号*/
|
|
||||||
if((auth_parameters->port < PARA_DPORT_MIN_NUM) || (auth_parameters->port > PARA_DPORT_MAX_NUM)) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("the port is error\n");
|
|
||||||
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
ret = RET_ERR;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 1);
|
|
||||||
cJSON_AddStringToObject(res, "message", "the port is error");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(auth_parameters);
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_IPINVALID;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*判断端口号是否占用*/
|
|
||||||
portresult = _valid_port(auth_parameters->port);
|
|
||||||
printf("portresult:%d\n", portresult);
|
|
||||||
|
|
||||||
if(portresult != 0) {
|
|
||||||
cJSON *port;
|
|
||||||
char *ret_port;
|
|
||||||
unsigned int port_int = 0;
|
|
||||||
/*创建json对象 */
|
|
||||||
port = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!port) {
|
|
||||||
ret = RET_ERR;
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON_AddNumberToObject(port, "resultcode", 1);
|
|
||||||
cJSON_AddStringToObject(port, "message", "port occupied");
|
|
||||||
ret_port = cJSON_PrintUnformatted(port);
|
|
||||||
port_int = strlen(ret_port);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = port_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(port_int >= 1024 * 2) {
|
|
||||||
free(ret_port);
|
|
||||||
cJSON_Delete(port);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_port, port_int);
|
|
||||||
|
|
||||||
free(ret_port);
|
|
||||||
cJSON_Delete(port);
|
|
||||||
return RET_CHKERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
mod_authpara(auth_parameters->port, auth_parameters->timehorizon, auth_parameters->failcount,
|
mod_authpara(auth_parameters->port, auth_parameters->timehorizon, auth_parameters->failcount,
|
||||||
auth_parameters->locktime, auth_parameters->aging_time, &configure_result);
|
auth_parameters->locktime, auth_parameters->aging_time, &configure_result);
|
||||||
|
|
||||||
|
@ -556,6 +365,7 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/*存数据库成功,则下发到内核态auth_hook*/
|
/*存数据库成功,则下发到内核态auth_hook*/
|
||||||
int r = -1;
|
int r = -1;
|
||||||
|
|
||||||
if(0 == configure_result->resultcode) {
|
if(0 == configure_result->resultcode) {
|
||||||
/*用户态下发到内核态auth_hook */
|
/*用户态下发到内核态auth_hook */
|
||||||
printf("cfgchannel main begin:\r\n");
|
printf("cfgchannel main begin:\r\n");
|
||||||
|
@ -583,13 +393,13 @@ ret_code authpara_config_mod_proc(uint source, uint config_type,
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/*Portal server的port通过redis消息队列接口发布给web server*/
|
/*Portal server的port通过redis消息队列接口发布给web server*/
|
||||||
memset(auth_port, 0, 20);
|
memset(auth_port, 0, 20);
|
||||||
sprintf(auth_port, "%d ", auth_parameters.port);
|
sprintf(auth_port, "%d ", auth_parameters.port);
|
||||||
printf("The number 'port' is %d and the string 'port' is %s. \n", auth_parameters.port, auth_port);
|
printf("The number 'port' is %d and the string 'port' is %s. \n", auth_parameters.port, auth_port);
|
||||||
local_portal_port(auth_port);
|
local_portal_port(auth_port);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*创建json对象 */
|
/*创建json对象 */
|
||||||
res = cJSON_CreateObject();
|
res = cJSON_CreateObject();
|
||||||
|
|
|
@ -44,6 +44,21 @@ int isIpV4Addr(const char *ipAddr)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*组播报文的目的地址使用D类IP地址,范围是从224.0.0.0到239.255.255.255*/
|
||||||
|
int isMulticastAddr(uint32_t address)
|
||||||
|
{
|
||||||
|
uint32_t addressInNetwork = htonl(address);
|
||||||
|
printf("%ld\n", addressInNetwork);
|
||||||
|
if((addressInNetwork > 0xE00000FF) && (addressInNetwork <= 0xEFFFFFFF))
|
||||||
|
{
|
||||||
|
printf("ip is multicast\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
printf("ip is not multicast\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*判断ip地址是广播地址 255.255.255.255*/
|
/*判断ip地址是广播地址 255.255.255.255*/
|
||||||
int isBroadcastIpV4Addr(const char *ipAddr)
|
int isBroadcastIpV4Addr(const char *ipAddr)
|
||||||
{
|
{
|
||||||
|
@ -59,13 +74,14 @@ int isBroadcastIpV4Addr(const char *ipAddr)
|
||||||
|
|
||||||
if(4 == sscanf(ipAddr,"%d.%d.%d.%d", &ip_part_1, &ip_part_2, &ip_part_3, &ip_part_4))
|
if(4 == sscanf(ipAddr,"%d.%d.%d.%d", &ip_part_1, &ip_part_2, &ip_part_3, &ip_part_4))
|
||||||
{
|
{
|
||||||
if((ip_part_1 = 255) &&(ip_part_2 = 255) &&
|
if((ip_part_1 == 255) &&(ip_part_2 == 255) &&
|
||||||
(ip_part_3 = 255) &&(ip_part_4 = 255))
|
(ip_part_3 == 255) &&(ip_part_4 == 255))
|
||||||
{
|
{
|
||||||
|
printf("ip is broadcast\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
printf("ip is not broadcast\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,7 +379,7 @@ ret_code authfree_config_json_parse_array(pointer input, uint *conf_type, freeau
|
||||||
return RET_INPUTERR;
|
return RET_INPUTERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
rpc_json_print(cjson);
|
rpc_log_info("json input:%s \n", cJSON_Print(cjson));
|
||||||
|
|
||||||
/*获取免认证规则的data部分 */
|
/*获取免认证规则的data部分 */
|
||||||
data = cJSON_GetObjectItem(cjson, "data");
|
data = cJSON_GetObjectItem(cjson, "data");
|
||||||
|
@ -487,6 +503,7 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
unsigned int ret_int = 0;
|
unsigned int ret_int = 0;
|
||||||
authfree_result_t authfree_result;
|
authfree_result_t authfree_result;
|
||||||
|
char* err_msg = NULL;
|
||||||
char str[INET_ADDRSTRLEN];
|
char str[INET_ADDRSTRLEN];
|
||||||
char dtr[INET_ADDRSTRLEN];
|
char dtr[INET_ADDRSTRLEN];
|
||||||
|
|
||||||
|
@ -506,112 +523,46 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
|
||||||
return RET_INPUTERR;
|
return RET_INPUTERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 校验用户名中不含特殊字符 */
|
|
||||||
if(SPECHAR(freeauth_configure->name)) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("username 含有特殊字符\n");
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
free(freeauth_configure);
|
|
||||||
return RET_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 2);
|
|
||||||
cJSON_AddStringToObject(res, "message", "username 含有特殊字符");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
free(freeauth_configure);
|
|
||||||
|
|
||||||
return RET_INPUTERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(str, 0, INET_ADDRSTRLEN);
|
memset(str, 0, INET_ADDRSTRLEN);
|
||||||
inet_ntop(AF_INET,&freeauth_configure->sip, str, sizeof(str));
|
inet_ntop(AF_INET,&freeauth_configure->sip, str, sizeof(str));
|
||||||
|
|
||||||
printf("%s\n", str);
|
|
||||||
/*校验源ip地址 两种错误情况:ip地址不符合返回值为1 ip地址为255.255.255.255 返回值为1*/
|
|
||||||
if((1 == isIpV4Addr(str)) || (0 == isBroadcastIpV4Addr(str)) ) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("sip is not vaild\n");
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
free(freeauth_configure);
|
|
||||||
return RET_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 2);
|
|
||||||
cJSON_AddStringToObject(res, "message", "sip is not vaild");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
free(freeauth_configure);
|
|
||||||
return RET_INPUTERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(dtr, 0, INET_ADDRSTRLEN);
|
memset(dtr, 0, INET_ADDRSTRLEN);
|
||||||
inet_ntop(AF_INET,&freeauth_configure->dip, dtr, sizeof(dtr));
|
inet_ntop(AF_INET,&freeauth_configure->dip, dtr, sizeof(dtr));
|
||||||
|
|
||||||
/*校验目的ip地址*/
|
/*判断输入参数是否有效*/
|
||||||
if((1 == isIpV4Addr(dtr)) || (0 == isBroadcastIpV4Addr(dtr))) {
|
if(SPECHAR(freeauth_configure->name)) {
|
||||||
|
err_msg = "免认证规则名称含有特殊字符";
|
||||||
|
} else if ( 1 == isIpV4Addr(str)) {
|
||||||
|
err_msg = "源IP地址无效";
|
||||||
|
} else if( 1 == isBroadcastIpV4Addr(str)) {
|
||||||
|
err_msg = "源IP地址是广播地址";
|
||||||
|
} else if(0 == isMulticastAddr(freeauth_configure->sip)) {
|
||||||
|
err_msg = "源IP地址是组播地址";
|
||||||
|
}else if ( 1 == isIpV4Addr(dtr)) {
|
||||||
|
err_msg = "目的IP地址无效";
|
||||||
|
} else if( 1 == isBroadcastIpV4Addr(dtr)) {
|
||||||
|
err_msg = "目的IP地址是广播地址";
|
||||||
|
} else if(0 == isMulticastAddr(freeauth_configure->dip)) {
|
||||||
|
err_msg = "目的IP地址是组播地址";
|
||||||
|
}else if((freeauth_configure->dport < DPORT_MIN_NUM) || (freeauth_configure->dport > DPORT_MAX_NUM)) {
|
||||||
|
err_msg = "免认证规则端口无效";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(err_msg != NULL) {
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
unsigned int ret_int = 0;
|
unsigned int ret_int = 0;
|
||||||
cJSON *res;
|
cJSON *res;
|
||||||
|
|
||||||
printf("dip is not vaild\n");
|
|
||||||
/*创建json对象 */
|
/*创建json对象 */
|
||||||
res = cJSON_CreateObject();
|
res = cJSON_CreateObject();
|
||||||
|
|
||||||
if(!res) {
|
if(!res) {
|
||||||
free(freeauth_configure);
|
|
||||||
return RET_ERR;
|
return RET_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
/*将json对象转换成json字符串 返回处理结果*/
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 2);
|
cJSON_AddNumberToObject(res, "resultcode", 2);
|
||||||
cJSON_AddStringToObject(res, "message", "dip is not vaild");
|
cJSON_AddStringToObject(res, "message", err_msg);
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
ret_char = cJSON_PrintUnformatted(res);
|
||||||
ret_int = strlen(ret_char);
|
ret_int = strlen(ret_char);
|
||||||
|
|
||||||
|
@ -635,46 +586,6 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
|
||||||
return RET_INPUTERR;
|
return RET_INPUTERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*校验端口号*/
|
|
||||||
if((freeauth_configure->dport < DPORT_MIN_NUM) || (freeauth_configure->dport > DPORT_MAX_NUM)) {
|
|
||||||
char *ret_char = NULL;
|
|
||||||
unsigned int ret_int = 0;
|
|
||||||
cJSON *res;
|
|
||||||
|
|
||||||
printf("the port is not vaild\n");
|
|
||||||
/*创建json对象 */
|
|
||||||
res = cJSON_CreateObject();
|
|
||||||
|
|
||||||
if(!res) {
|
|
||||||
free(freeauth_configure);
|
|
||||||
return RET_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 2);
|
|
||||||
cJSON_AddStringToObject(res, "message", "port is not vaild");
|
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
|
||||||
ret_int = strlen(ret_char);
|
|
||||||
|
|
||||||
if(output_len) {
|
|
||||||
*output_len = ret_int + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*超出2k的内存,报错 */
|
|
||||||
if(ret_int >= 1024 * 2) {
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
return RET_NOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
|
||||||
|
|
||||||
free(ret_char);
|
|
||||||
cJSON_Delete(res);
|
|
||||||
free(freeauth_configure);
|
|
||||||
|
|
||||||
return RET_IPINVALID;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*查找要增加的未认证权限是否重名 该名字已存在 则退出程序 */
|
/*查找要增加的未认证权限是否重名 该名字已存在 则退出程序 */
|
||||||
for(i = 0; i < RULE_MAX_NUM; i++) {
|
for(i = 0; i < RULE_MAX_NUM; i++) {
|
||||||
|
@ -693,7 +604,7 @@ ret_code freeauth_config_add_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
/*将json对象转换成json字符串 返回处理结果*/
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 2);
|
cJSON_AddNumberToObject(res, "resultcode", 2);
|
||||||
cJSON_AddStringToObject(res, "message", "rule existed");
|
cJSON_AddStringToObject(res, "message", "免认证规则名已存在");
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
ret_char = cJSON_PrintUnformatted(res);
|
||||||
ret_int = strlen(ret_char);
|
ret_int = strlen(ret_char);
|
||||||
|
|
||||||
|
@ -890,13 +801,10 @@ ret_code freeauth_config_del_proc(uint source, uint config_type,
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
unsigned int ret_int = 0;
|
unsigned int ret_int = 0;
|
||||||
cJSON *pJsonArry, *pJsonsub;
|
cJSON *pJsonArry, *pJsonsub;
|
||||||
|
char name[256];
|
||||||
|
|
||||||
authfree_config_json_parse_array(input, &conf_type, &freeauth_configure, &cnt);
|
authfree_config_json_parse_array(input, &conf_type, &freeauth_configure, &cnt);
|
||||||
|
|
||||||
if(input_len < sizeof(freeauth_configure_t)) {
|
|
||||||
return RET_INPUTERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("打印全局数组内全部元素\n");
|
printf("打印全局数组内全部元素\n");
|
||||||
/*打印数组内全部元素*/
|
/*打印数组内全部元素*/
|
||||||
for(i = 0; i < RULE_MAX_NUM; i++)
|
for(i = 0; i < RULE_MAX_NUM; i++)
|
||||||
|
@ -911,30 +819,36 @@ ret_code freeauth_config_del_proc(uint source, uint config_type,
|
||||||
printf("[%s %d]\n", freeauth_configure[j].name, j);
|
printf("[%s %d]\n", freeauth_configure[j].name, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
pJsonArry= cJSON_CreateArray(); /*创建数组*/
|
pJsonArry = cJSON_CreateArray(); /*创建数组*/
|
||||||
|
|
||||||
/*数据库删除 存入全局变量*/
|
/*数据库删除 存入全局变量*/
|
||||||
for(int j = 0; j < cnt; j++) {
|
for(int j = 0; j < cnt; j++)
|
||||||
|
{
|
||||||
|
memset(name, 0, 256);
|
||||||
|
strncpy(name, freeauth_configure[j].name, 31);
|
||||||
|
|
||||||
del_authfree(freeauth_configure[j].name, &authfree_result);
|
del_authfree(freeauth_configure[j].name, &authfree_result);
|
||||||
|
|
||||||
cJSON_AddItemToArray(pJsonArry, pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对象*/
|
if(6 == authfree_result.resultcode)
|
||||||
|
|
||||||
/*在json对象上添加键值对*/
|
|
||||||
char *result_message = malloc(strlen(freeauth_configure[j].name)+strlen(authfree_result.message)+1);//+1 for the zero-terminator
|
|
||||||
//in real code you would check for errors in malloc here
|
|
||||||
if (result_message == NULL)
|
|
||||||
{
|
{
|
||||||
return RET_NOMEM;
|
cJSON_AddItemToArray(pJsonArry, pJsonsub = cJSON_CreateObject()); /* 给创建的数组增加对象*/
|
||||||
|
cJSON_AddStringToObject(pJsonsub, "name", name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(result_message, freeauth_configure[j].name);
|
/*创建json对象 */
|
||||||
strcat(result_message, authfree_result.message);
|
res = cJSON_CreateObject();
|
||||||
printf("%s\n", result_message);
|
|
||||||
|
|
||||||
cJSON_AddNumberToObject(pJsonsub, "resultcode", authfree_result.resultcode);
|
if(!res)
|
||||||
cJSON_AddStringToObject(pJsonsub, "message", result_message);
|
{
|
||||||
|
return RET_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
ret_char = cJSON_Print(pJsonArry);
|
/*将json对象转换成json字符串 返回处理结果*/
|
||||||
|
cJSON_AddNumberToObject(res, "resultcode", authfree_result.resultcode);
|
||||||
|
cJSON_AddStringToObject(res, "message", authfree_result.message);
|
||||||
|
cJSON_AddItemToObject(res, "data", pJsonArry);
|
||||||
|
ret_char = cJSON_PrintUnformatted(res);
|
||||||
ret_int = strlen(ret_char);
|
ret_int = strlen(ret_char);
|
||||||
|
|
||||||
if(output_len)
|
if(output_len)
|
||||||
|
@ -946,20 +860,19 @@ ret_code freeauth_config_del_proc(uint source, uint config_type,
|
||||||
if(ret_int >= 1024 * 2)
|
if(ret_int >= 1024 * 2)
|
||||||
{
|
{
|
||||||
free(ret_char);
|
free(ret_char);
|
||||||
cJSON_Delete(pJsonArry);
|
cJSON_Delete(res);
|
||||||
return RET_NOMEM;
|
return RET_NOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(output, ret_char, ret_int);
|
memcpy(output, ret_char, ret_int);
|
||||||
}
|
|
||||||
|
|
||||||
free(ret_char);
|
free(ret_char);
|
||||||
|
cJSON_Delete(res);
|
||||||
|
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*修改未认证权限规则*/
|
/*修改未认证权限规则*/
|
||||||
ret_code freeauth_config_mod_proc(uint source, uint config_type,
|
ret_code freeauth_config_mod_proc(uint source, uint config_type,
|
||||||
pointer input, int input_len,
|
pointer input, int input_len,
|
||||||
|
@ -1120,9 +1033,6 @@ ret_code freeauth_config_get_proc(uint source, uint config_type,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char *ret_arry = cJSON_PrintUnformatted(pJsonArry);
|
|
||||||
printf("%s\n", ret_arry);
|
|
||||||
|
|
||||||
/*创建json对象 */
|
/*创建json对象 */
|
||||||
res = cJSON_CreateObject();
|
res = cJSON_CreateObject();
|
||||||
|
|
||||||
|
@ -1132,8 +1042,8 @@ ret_code freeauth_config_get_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/*将json对象转换成json字符串 返回处理结果*/
|
/*将json对象转换成json字符串 返回处理结果*/
|
||||||
cJSON_AddNumberToObject(res, "resultcode", 11);
|
cJSON_AddNumberToObject(res, "resultcode", 11);
|
||||||
cJSON_AddStringToObject(res, "message", "get success");
|
cJSON_AddStringToObject(res, "message", "查询规则成功");
|
||||||
cJSON_AddStringToObject(res, "data", ret_arry);
|
cJSON_AddItemToObject(res, "data", pJsonArry);
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
ret_char = cJSON_PrintUnformatted(res);
|
||||||
ret_int = strlen(ret_char);
|
ret_int = strlen(ret_char);
|
||||||
|
|
||||||
|
@ -1288,4 +1198,3 @@ ret_code freeauth_config_proc(uint source, uint config_type,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,9 @@ extern int rule_order[];
|
||||||
|
|
||||||
extern void * auth_hdbc;
|
extern void * auth_hdbc;
|
||||||
|
|
||||||
static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success",
|
static char *authfreemes[] = {"添加规则成功", "添加规则失败", "规则名已存在", "修改规则成功",
|
||||||
"modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum",
|
"修改规则失败", "未发现规则名称", "删除规则成功", "删除规则失败", "免认证规则数量达到最大值",
|
||||||
"rule full","mov success" , "get success","allrule del success"
|
"内存数据已满","移动规则成功" , "查询规则成功","删除所有规则成功"
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *get_sql_ret_message(SQL_RET_CODE code)
|
static char *get_sql_ret_message(SQL_RET_CODE code)
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
extern auth_parameters_t *auth_para;
|
extern auth_parameters_t *auth_para;
|
||||||
extern void * auth_hdbc;
|
extern void * auth_hdbc;
|
||||||
|
|
||||||
char * mes[]={"mod success", "mod failure", "get success", "get failure"};
|
char * mes[]={"修改成功", "修改失败", "查询成功", "查询失败"};
|
||||||
|
|
||||||
/*前端type类型只有修改,修改数据库中的内容,返回值为code message——修改成功 修改失败*/
|
/*前端type类型只有修改,修改数据库中的内容,返回值为code message——修改成功 修改失败*/
|
||||||
void mod_authpara(int port, int timehorizon, int failcount, int locktime, int aging_time, configure_result_t *configure_result)
|
void mod_authpara(int port, int timehorizon, int failcount, int locktime, int aging_time, configure_result_t *configure_result)
|
||||||
|
|
|
@ -126,23 +126,34 @@ int main5(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void trim(char *out, char *in)
|
void trim(char *in, char *out)
|
||||||
{
|
{
|
||||||
char * c;
|
char * c;
|
||||||
int i;
|
int i;
|
||||||
|
int len;
|
||||||
size_t nLen = strlen(in);
|
size_t nLen = strlen(in);
|
||||||
i = 0;
|
i = 0;
|
||||||
while(in[i] == ' ')
|
while(in[i] == ' ')
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
if (i != nLen)
|
||||||
|
{
|
||||||
c = &in[i]; // 找到第一个非空字符指针
|
c = &in[i]; // 找到第一个非空字符指针
|
||||||
i = nLen - 1;
|
i = nLen - 1;
|
||||||
while(in[i] == ' ')
|
while(in[i] == ' ')
|
||||||
{
|
{
|
||||||
i--; // 找到最后一个非空字符
|
i--; // 找到最后一个非空字符
|
||||||
}
|
}
|
||||||
|
len = i + 1 - (c - in);
|
||||||
memcpy(out, c, i + 1 - (c - in));
|
memcpy(out, c, i + 1 - (c - in));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memset(out, 0 ,strlen(out));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,12 +162,15 @@ int main(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
char *name1 = " xi阿斯蒂芬就aom ig ";
|
char *name1 = "a a ";
|
||||||
int len = strlen(name1);
|
int len = strlen(name1);
|
||||||
char name2[100] = {0};
|
char name2[100] = {0};
|
||||||
|
printf("name2 len=%ld.\n",strlen(name2));
|
||||||
printf("name1=%s.\n",name1);
|
printf("name1=%s.\n",name1);
|
||||||
TRIM_NAME(name1, name2);
|
TRIM_NAME(name1, name2);
|
||||||
printf("name1=%s.\n",name2);
|
printf("name1=%s.\n",name2);
|
||||||
|
printf("name2 len=%ld.\n",strlen(name2));
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include "http_header.h"
|
||||||
#include "json.h"
|
#include "json.h"
|
||||||
#include "../../../../Common/config_manager.h"
|
#include "../../../../Common/config_manager.h"
|
||||||
|
|
||||||
|
@ -786,7 +787,10 @@ static handler_t mod_webm_uri_handler(server *srv, connection *con, void *p_d)
|
||||||
}
|
}
|
||||||
buffer_free(content_buffer);
|
buffer_free(content_buffer);
|
||||||
}
|
}
|
||||||
|
http_header_response_set(con, HTTP_HEADER_CONTENT_TYPE,
|
||||||
|
CONST_STR_LEN("Content-Type"),
|
||||||
|
CONST_STR_LEN("text/xml; charset=\"utf-8\""));
|
||||||
|
con->mode = DIRECT;
|
||||||
con->http_status = 200;
|
con->http_status = 200;
|
||||||
con->file_finished = 1;
|
con->file_finished = 1;
|
||||||
return HANDLER_FINISHED;
|
return HANDLER_FINISHED;
|
||||||
|
|
Loading…
Reference in New Issue