From 86c70251770141f0d2121b63ea9243e36e2b7aa3 Mon Sep 17 00:00:00 2001 From: liangxia Date: Tue, 27 Aug 2019 08:49:47 +0800 Subject: [PATCH 01/15] =?UTF-8?q?Add=20=20aaa-12=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=96=87=E4=BB=B6=E9=85=8D=E7=BD=AE=E3=80=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96console=E9=85=8D=E7=BD=AE=E3=80=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96tty=E9=85=8D=E7=BD=AE=E3=80=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=BF=9C=E7=AB=AF=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Aliangxia=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/config_manager.h | 1 + Common/log_types.h | 8 + .../configm/config-server/include/configm.h | 35 +- .../config-server/include/log_config.h | 29 +- .../config-server/log_config/log_config_cm.c | 219 +++++++ .../config-server/log_config/log_config_cm.h | 28 +- .../log_config/log_config_console.c | 104 ++++ .../log_config/log_config_file.c | 94 +++ .../log_config/log_config_monitor.c | 103 ++++ .../log_config/log_config_remote.c | 564 ++++++++++++++++++ Platform/user/logging/cmd_file.c | 149 +++-- Platform/user/logging/cmd_remote.c | 255 +++++++- Platform/user/logging/logging_common.c | 51 +- Platform/user/logging/logging_common.h | 35 +- Platform/user/logging/logging_main.c | 4 +- 15 files changed, 1591 insertions(+), 88 deletions(-) diff --git a/Common/config_manager.h b/Common/config_manager.h index 64a2888eb..dcbf0869e 100755 --- a/Common/config_manager.h +++ b/Common/config_manager.h @@ -55,6 +55,7 @@ #define LOG_CONFIG_REMOTE_DEL_HOST (uint64)((uint64)LOG_CONFIG_MODULE<<32|4) #define LOG_CONFIG_REMOTE_LEVEL (uint64)((uint64)LOG_CONFIG_MODULE<<32|5) #define LOG_CONFIG_FILE (uint64)((uint64)LOG_CONFIG_MODULE<<32|6) +#define LOG_CONFIG_REMOTE_GET_HOST (uint64)((uint64)LOG_CONFIG_MODULE<<32|7) #define VLAN_CONFIG (uint64)((uint64)VLAN_CONFIG_MODULE<<32|1) diff --git a/Common/log_types.h b/Common/log_types.h index 276ddb91b..ad4225790 100755 --- a/Common/log_types.h +++ b/Common/log_types.h @@ -41,6 +41,14 @@ typedef struct _log_remote_level { u8 level; } log_remote_level_t; +typedef struct _log_remote_host_x { + log_rfc_t rfc; + char host[LOG_HOST_SZ]; + u16 port; + u8 level; +} log_remote_host_x_t; + + typedef enum { LOG_UNCOMPRESS = 0, LOG_COMPRESS diff --git a/Platform/user/configm/config-server/include/configm.h b/Platform/user/configm/config-server/include/configm.h index 7ad4c64a8..c0e539a71 100755 --- a/Platform/user/configm/config-server/include/configm.h +++ b/Platform/user/configm/config-server/include/configm.h @@ -131,8 +131,8 @@ FALSE, \ log_console_config_chk, \ log_console_config_proc, \ - NULL, \ - NULL \ + log_console_config_get, \ + log_console_config_getall \ },\ {\ LOG_CONFIG_MONITOR, \ @@ -140,8 +140,8 @@ FALSE, \ log_monitor_config_chk, \ log_monitor_config_proc, \ - NULL, \ - NULL \ + log_monitor_config_get, \ + log_monitor_config_getall \ },\ {\ LOG_CONFIG_REMOTE_ADD_HOST, \ @@ -162,13 +162,13 @@ NULL \ },\ {\ - LOG_CONFIG_REMOTE_LEVEL, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_remote_level_config_chk, \ - log_remote_level_config_proc, \ - NULL, \ - NULL \ + LOG_CONFIG_REMOTE_LEVEL, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_remote_level_config_chk, \ + log_remote_level_config_proc, \ + log_remote_level_config_get, \ + log_remote_level_config_getall \ },\ {\ LOG_CONFIG_FILE, \ @@ -176,8 +176,17 @@ FALSE, \ log_file_config_chk, \ log_file_config_proc, \ - NULL, \ - NULL \ + log_file_config_get, \ + log_file_config_getall \ + },\ + {\ + LOG_CONFIG_REMOTE_GET_HOST, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_remote_host_x_config_chk, \ + NULL, \ + log_remote_host_x_config_get, \ + log_remote_host_x_config_getall \ },\ {\ NAT4_CONFIG, \ diff --git a/Platform/user/configm/config-server/include/log_config.h b/Platform/user/configm/config-server/include/log_config.h index 047246bbf..db5f5d450 100755 --- a/Platform/user/configm/config-server/include/log_config.h +++ b/Platform/user/configm/config-server/include/log_config.h @@ -40,5 +40,32 @@ ret_code log_file_config_chk(uint source, uint *config_type, ret_code log_file_config_proc(uint source, uint config_type, pointer input, int input_len, pointer output, int *output_len); - +ret_code log_file_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len); +ret_code log_file_config_getall(uint source, + pointer output, int *output_len); +ret_code log_remote_level_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len); +ret_code log_remote_level_config_getall(uint source, + pointer output, int *output_len); +ret_code log_console_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len); +ret_code log_console_config_getall(uint source, + pointer output, int *output_len); +ret_code log_monitor_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len); +ret_code log_monitor_config_getall(uint source, + pointer output, int *output_len); +ret_code log_remote_host_x_config_chk(uint source, uint *config_type, + pointer input, int *input_len, + pointer output, int *output_len); +ret_code log_remote_host_x_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len); +ret_code log_remote_host_x_config_getall(uint source, + pointer output, int *output_len); #endif \ No newline at end of file diff --git a/Platform/user/configm/config-server/log_config/log_config_cm.c b/Platform/user/configm/config-server/log_config/log_config_cm.c index 98b39eb48..ca1487e8d 100755 --- a/Platform/user/configm/config-server/log_config/log_config_cm.c +++ b/Platform/user/configm/config-server/log_config/log_config_cm.c @@ -1,3 +1,5 @@ +#include + #include "log_config_cm.h" #include "rpc_server.h" #include "rpc_client.h" @@ -20,3 +22,220 @@ ret_code log_rpc_exec(char* service_name, char* method_name, pointer input, int } +/* 仅适用于以“key=value”方式保存的配置解析,适用于log-sched.conf的解析 */ +ret_code cm_log_get_keyvalue_from_file(const char *file_str, const char *key_str, char *value_str, int value_len) +{ + ret_code ret = RET_ERR; + FILE *fp = NULL; + char *pos = NULL; + + if (NULL == file_str || '\0' == file_str[0] || NULL == key_str || (NULL == value_str && value_len>0)) + { + ULOG_ERR(g_log_h, "get log key-value from file: bad input"); + return ret; + } + + fp = fopen(file_str, "r"); + if (NULL == fp) { + return ret; + } + + if (fseek(fp, 0, SEEK_SET) == -1) + { + ULOG_ERR(g_log_h, "Seeknig config to begin is faiure:%s", strerror(errno)); + + fclose(fp); + return ret; + } + + ssize_t n; + char *line = NULL; + while ((getline(&line, &n, fp)) != -1) + { + pos = strstr(line, key_str); + if (pos != NULL) + { + /* 跳过key与value间的"=" */ + strcpy(value_str, pos+strlen(key_str)+1); + + /* 滤除掉段尾的回车换行 */ + if ('\n' == value_str[strlen(value_str)-1]) + { + value_str[strlen(value_str)-1] = '\0'; + } + + ULOG_DEBUG(g_log_h, "get config %s:%s", key_str, value_str); + break; + } + } + + ret = RET_OK; + if (NULL != fp) + { + fclose(fp); + } + return ret; +} + + +/* 检查的文件存在,本函数返回1,否则,本函数返回0 */ +int cm_log_check_file_is_exist(const char *file_str) +{ + int is_exist = 0; + + if (NULL == file_str || '\0' == file_str[0]) + { + is_exist = 0; + } + else + { + /* 如果文件存在,access返回0,不存在,access返回-1 */ + is_exist = ((access(file_str, 0) == 0) ? 1 : 0); + } + + return is_exist; +} + + +/* 适用于log-console.conf与log-pty.conf的解析 */ +ret_code cm_log_get_module_from_file(const char *file_str, char *value_str, int value_len) +{ + ret_code ret = RET_ERR; + FILE *fp = NULL; + char *pos = NULL; + char *pos2 = NULL; + size_t tmp_len = 0; + + if (NULL == file_str || '\0' == file_str[0] || (NULL == value_str && value_len>0)) + { + ULOG_ERR(g_log_h, "get log module from file: bad input"); + return ret; + } + + fp = fopen(file_str, "r"); + if (NULL == fp) + { + return ret; + } + + if (fseek(fp, 0, SEEK_SET) == -1) + { + ULOG_ERR(g_log_h, "Seeknig config to begin is faiure:%s", strerror(errno)); + + fclose(fp); + return ret; + } + + ssize_t n; + char *line = NULL; + while ((getline(&line, &n, fp)) != -1) + { + pos = strstr(line, "\"["); + pos2 = strstr(line, "]\""); + + tmp_len = pos2-pos-strlen("\"["); + if (pos != NULL && pos2 != NULL && tmp_len < value_len) + { + strncpy(value_str, pos+strlen("\"["), tmp_len); + value_str[tmp_len] = '\0'; + + ULOG_DEBUG(g_log_h, "get module: %s", value_str); + break; + } + } + + ret = RET_OK; + if (NULL != fp) + { + fclose(fp); + } + return ret; +} + +/* 适用于log-console.conf与log-pty.conf的解析 */ +ret_code cm_log_get_level_from_file(const char *file_str, u8 *value) +{ + ret_code ret = RET_ERR; + FILE *fp = NULL; + ssize_t n; + char *line = NULL; + char *sub_line = NULL; + char *pos = NULL; + char *pos2 = NULL; + size_t tmp_len = 0; + char tmp_str[128] = ""; + int tmp_value; + + if (NULL == file_str || '\0' == file_str[0] || NULL == value) + { + ULOG_ERR(g_log_h, "get log level from file: bad input"); + } + + fp = fopen(file_str, "r"); + if (NULL == fp) + { + return ret; + } + + if (fseek(fp, 0, SEEK_SET) == -1) + { + ULOG_ERR(g_log_h, "Seeknig config to begin is faiure:%s", strerror(errno)); + + fclose(fp); + return ret; + } + + while ((getline(&line, &n, fp)) != -1) + { + pos = line; + + if (NULL == strstr(pos, ".=")) + { + continue; + } + + while (1) + { + sub_line = strstr(pos, ".="); + + if (NULL == sub_line) + { + break; + } + + if (strlen(sub_line) <= strlen(".=")) + { + break; + } + + pos = sub_line+strlen(".="); + } + pos2 = strstr(pos, " "); + + if (pos != NULL && pos2 != NULL) + { + tmp_len = pos2-pos; + strncpy(tmp_str, pos, tmp_len); + tmp_str[tmp_len] = '\0'; + + tmp_value = log_str_to_level(tmp_str); + if( -1 == tmp_value) + { + continue; + } + *value = (u8)tmp_value; + + ULOG_DEBUG(g_log_h, "get level: %u", *value); + break; + } + } + + ret = RET_OK; + if (NULL != fp) + { + fclose(fp); + } + return ret; +} + + diff --git a/Platform/user/configm/config-server/log_config/log_config_cm.h b/Platform/user/configm/config-server/log_config/log_config_cm.h index 85c3cc0db..f7a8ae2c2 100755 --- a/Platform/user/configm/config-server/log_config/log_config_cm.h +++ b/Platform/user/configm/config-server/log_config/log_config_cm.h @@ -52,5 +52,31 @@ extern rpc_client *g_log_client; extern ulog_t *g_log_h; ret_code log_rpc_exec(char* service_name, char* method_name, pointer input, int input_len, int last_lenth); +ret_code cm_log_get_keyvalue_from_file(const char *file_str, const char *key_str, char *value_str, int value_len); -#endif \ No newline at end of file +int cm_log_check_file_is_exist(const char *file_str); +ret_code cm_log_get_module_from_file(const char *file_str, char *value_str, int value_len); +ret_code cm_log_get_level_from_file(const char *file_str, u8 *value); + + +#ifndef CM_LOG_CONF_CONSOLE_FILE +#define CM_LOG_CONF_CONSOLE_FILE "/etc/rsyslog.d/log-console.conf" +#endif + +#ifndef CM_LOG_CONF_PTY_FILE +#define CM_LOG_CONF_PTY_FILE "/etc/rsyslog.d/log-pty.conf" +#endif + +#ifndef CM_LOG_CONF_REMOTE_FILE +#define CM_LOG_CONF_REMOTE_FILE "/etc/rsyslog.d/log-remote.conf" +#endif + +#ifndef CM_LOG_CONF_REMOTE_LEVEL_FILE +#define CM_LOG_CONF_REMOTE_LEVEL_FILE "/etc/log-sched.conf" +#endif + +#ifndef CM_LOG_CONF_LOGFILE_FILE +#define CM_LOG_CONF_LOGFILE_FILE "/etc/log-sched.conf" +#endif + +#endif diff --git a/Platform/user/configm/config-server/log_config/log_config_console.c b/Platform/user/configm/config-server/log_config/log_config_console.c index 595631b44..53a48cc32 100755 --- a/Platform/user/configm/config-server/log_config/log_config_console.c +++ b/Platform/user/configm/config-server/log_config/log_config_console.c @@ -1,5 +1,7 @@ #include "log_config.h" #include "log_config_cm.h" +#include "rpc.h" + ret_code log_console_config_chk(uint source, uint *config_type, pointer input, int *input_len, @@ -14,3 +16,105 @@ ret_code log_console_config_proc(uint source, uint config_type, { return log_rpc_exec(SERIVCE_LOG_CONSOLE_NAME, CONF_LOG_CONSOLE_FUNC, input, input_len, sizeof(log_console_t)); } + +static ret_code cm_get_log_console_elems(log_console_t *log_console_conf, int *err_no) +{ + char tmp_module[MAX_MODULE_NAME_SZ] = ""; + u8 tmp_level = 0; + + if (NULL == log_console_conf || NULL == err_no) + { + return RET_ERR; + } + + memset(log_console_conf, 0, sizeof(*log_console_conf)); + + if (cm_log_check_file_is_exist(CM_LOG_CONF_CONSOLE_FILE) != 1) + { + log_console_conf->on = LOG_OFF; + } + else + { + log_console_conf->on = LOG_ON; + + memset(tmp_module, 0, MAX_MODULE_NAME_SZ); + if (cm_log_get_module_from_file(CM_LOG_CONF_CONSOLE_FILE, tmp_module, MAX_MODULE_NAME_SZ) == 0) + { + strncpy(log_console_conf->module, tmp_module, MAX_MODULE_NAME_SZ); + } + + if (cm_log_get_level_from_file(CM_LOG_CONF_CONSOLE_FILE, &tmp_level) == 0) + { + log_console_conf->level = tmp_level; + } + } + + ULOG_DEBUG(g_log_h, "get log console :level=%u, is_on=%s, module=%s", + log_console_conf->level, + log_console_conf->on==LOG_ON?"on":"off", + log_console_conf->module); + + return RET_OK; +} + + +static ret_code cm_log_console_format_json(log_console_t *log_console_conf, + pointer output, int *outlen) +{ + char *json_log_file = NULL; + + /* create Student JSON object */ + s2j_create_json_obj(json_obj); + if (json_obj == NULL) + { + return RET_NOMEM; + } + + s2j_json_set_basic_element(json_obj, log_console_conf, int, level); + s2j_json_set_basic_element(json_obj, log_console_conf, int, on); + s2j_json_set_basic_element(json_obj, log_console_conf, string, module); + + json_log_file = cJSON_PrintUnformatted(json_obj); + *outlen = strlen(json_log_file) + 1; + memcpy(output, json_log_file, *outlen); + + free(json_log_file); + cJSON_Delete(json_obj); + + return RET_OK; +} + +ret_code log_console_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_console_t *log_console_conf = NULL; + int err_no = 0; + + log_console_conf = (log_console_t *)input; + + ret = cm_get_log_console_elems(log_console_conf, &err_no); + + RET_ERR_FORMART(ret, err_no, output, *output_len); + ASSERT_RET(ret); + + cm_log_console_format_json(log_console_conf, output, output_len); + + return ret; +} + + +ret_code log_console_config_getall(uint source, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_console_t *log_console_conf = NULL; + int err_no = 0; + + log_console_conf = rpc_new(log_console_t, 1); + ret = log_console_config_get(source, (pointer)log_console_conf, sizeof(log_console_t)*1, output, output_len); + rpc_free(log_console_conf); + return ret; +} + diff --git a/Platform/user/configm/config-server/log_config/log_config_file.c b/Platform/user/configm/config-server/log_config/log_config_file.c index 6b30b5652..15d05c630 100755 --- a/Platform/user/configm/config-server/log_config/log_config_file.c +++ b/Platform/user/configm/config-server/log_config/log_config_file.c @@ -1,5 +1,6 @@ #include "log_config.h" #include "log_config_cm.h" +#include "rpc.h" #define FILE_JSON(s, o) { \ s2j_struct_get_basic_element(s, o, int, level); \ @@ -9,6 +10,8 @@ S2J_STRUCT_GET_STRING_ELEMENT_N(s, o, del_over_size, MAX_U64_SZ); \ } +#define LOG_CONF_KEY_FILE_MAX_SIZE_STR "file.max_size" + ret_code log_file_config_chk(uint source, uint *config_type, pointer input, int *input_len, pointer output, int *output_len) @@ -24,3 +27,94 @@ ret_code log_file_config_proc(uint source, uint config_type, } +static ret_code cm_get_log_file_elems(log_file_t *log_file_conf, int *err_no) +{ + char value[MAX_LINE_SZ] = ""; + + if (NULL == log_file_conf || NULL == err_no) + { + return RET_ERR; + } + + memset(log_file_conf, 0, sizeof(*log_file_conf)); + + /* level、path、is_compress、del_over_days暂未实现 */ + + /* 日志文件大小上限:del_over_size */ + memset(value, 0, MAX_LINE_SZ); + if (cm_log_get_keyvalue_from_file(CM_LOG_CONF_LOGFILE_FILE, LOG_CONF_KEY_FILE_MAX_SIZE_STR, value, sizeof(value)) == 0) + { + if (strlen(value) < MAX_U64_SZ) + { + memset(log_file_conf->del_over_size, 0, MAX_U64_SZ); + strncpy(log_file_conf->del_over_size, value, strlen(value)); + } + } + + ULOG_DEBUG(g_log_h, "get log file del_over_size:%s", log_file_conf->del_over_size); + return RET_OK; +} + +static ret_code cm_log_file_format_json(log_file_t *log_file_conf, + pointer output, int *outlen) +{ + char *json_log_file = NULL; + + /* create Student JSON object */ + s2j_create_json_obj(json_obj); + if (json_obj == NULL) + { + return RET_NOMEM; + } + + s2j_json_set_basic_element(json_obj, log_file_conf, int, level); + s2j_json_set_basic_element(json_obj, log_file_conf, string, path); + s2j_json_set_basic_element(json_obj, log_file_conf, int, is_compress); + s2j_json_set_basic_element(json_obj, log_file_conf, int, del_over_days); + s2j_json_set_basic_element(json_obj, log_file_conf, string, del_over_size); + + json_log_file = cJSON_PrintUnformatted(json_obj); + *outlen = strlen(json_log_file) + 1; + memcpy(output, json_log_file, *outlen); + + free(json_log_file); + cJSON_Delete(json_obj); + + return RET_OK; +} + + +ret_code log_file_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_file_t *log_file_conf = NULL; + int err_no = 0; + + log_file_conf = (log_file_t *)input; + + ret = cm_get_log_file_elems(log_file_conf, &err_no); + + RET_ERR_FORMART(ret, err_no, output, *output_len); + ASSERT_RET(ret); + + cm_log_file_format_json(log_file_conf, output, output_len); + + return ret; +} + + +ret_code log_file_config_getall(uint source, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_file_t *log_file_conf = NULL; + int err_no = 0; + + log_file_conf = rpc_new(log_file_t, 1); + ret = log_file_config_get(source, (pointer)log_file_conf, sizeof(log_file_t)*1, output, output_len); + rpc_free(log_file_conf); + return ret; +} + diff --git a/Platform/user/configm/config-server/log_config/log_config_monitor.c b/Platform/user/configm/config-server/log_config/log_config_monitor.c index 214c0fda7..a42c30c3c 100755 --- a/Platform/user/configm/config-server/log_config/log_config_monitor.c +++ b/Platform/user/configm/config-server/log_config/log_config_monitor.c @@ -1,5 +1,6 @@ #include "log_config.h" #include "log_config_cm.h" +#include "rpc.h" ret_code log_monitor_config_chk(uint source, uint *config_type, pointer input, int *input_len, @@ -15,3 +16,105 @@ ret_code log_monitor_config_proc(uint source, uint config_type, return log_rpc_exec(SERVICE_LOG_PTY_NAME, CONF_LOG_PTY_FUNC, input, input_len, sizeof(log_console_t)); } + +static ret_code cm_get_log_monitor_elems(log_console_t *log_console_conf, int *err_no) +{ + char tmp_module[MAX_MODULE_NAME_SZ] = ""; + u8 tmp_level = 0; + + if (NULL == log_console_conf || NULL == err_no) + { + return RET_ERR; + } + + memset(log_console_conf, 0, sizeof(*log_console_conf)); + + if (cm_log_check_file_is_exist(CM_LOG_CONF_PTY_FILE) != 1) + { + log_console_conf->on = LOG_OFF; + } + else + { + log_console_conf->on = LOG_ON; + + memset(tmp_module, 0, MAX_MODULE_NAME_SZ); + if (cm_log_get_module_from_file(CM_LOG_CONF_PTY_FILE, tmp_module, MAX_MODULE_NAME_SZ) == 0) + { + strncpy(log_console_conf->module, tmp_module, MAX_MODULE_NAME_SZ); + } + + if (cm_log_get_level_from_file(CM_LOG_CONF_PTY_FILE, &tmp_level) == 0) + { + log_console_conf->level = tmp_level; + } + } + + ULOG_DEBUG(g_log_h, "get log monitor :level=%u, is_on=%s, module=%s", + log_console_conf->level, + log_console_conf->on==LOG_ON?"on":"off", + log_console_conf->module); + + return RET_OK; +} + + +static ret_code cm_log_monitor_format_json(log_console_t *log_console_conf, + pointer output, int *outlen) +{ + char *json_log_file = NULL; + + /* create Student JSON object */ + s2j_create_json_obj(json_obj); + if (json_obj == NULL) + { + return RET_NOMEM; + } + + s2j_json_set_basic_element(json_obj, log_console_conf, int, level); + s2j_json_set_basic_element(json_obj, log_console_conf, int, on); + s2j_json_set_basic_element(json_obj, log_console_conf, string, module); + + json_log_file = cJSON_PrintUnformatted(json_obj); + *outlen = strlen(json_log_file) + 1; + memcpy(output, json_log_file, *outlen); + + free(json_log_file); + cJSON_Delete(json_obj); + + return RET_OK; +} + +ret_code log_monitor_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_console_t *log_console_conf = NULL; + int err_no = 0; + + log_console_conf = (log_console_t *)input; + + ret = cm_get_log_monitor_elems(log_console_conf, &err_no); + + RET_ERR_FORMART(ret, err_no, output, *output_len); + ASSERT_RET(ret); + + cm_log_monitor_format_json(log_console_conf, output, output_len); + + return ret; +} + + +ret_code log_monitor_config_getall(uint source, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_console_t *log_console_conf = NULL; + int err_no = 0; + + log_console_conf = rpc_new(log_console_t, 1); + ret = log_monitor_config_get(source, (pointer)log_console_conf, sizeof(log_console_t)*1, output, output_len); + rpc_free(log_console_conf); + return ret; +} + diff --git a/Platform/user/configm/config-server/log_config/log_config_remote.c b/Platform/user/configm/config-server/log_config/log_config_remote.c index 66c9d7b6b..e17d859fa 100755 --- a/Platform/user/configm/config-server/log_config/log_config_remote.c +++ b/Platform/user/configm/config-server/log_config/log_config_remote.c @@ -1,5 +1,10 @@ +#include + #include "log_config.h" #include "log_config_cm.h" +#include "rpc.h" + +#define MAX_REMOTE_HOST_CNT 8 #define REMOTE_HOST_JSON(s, o) { \ s2j_struct_get_basic_element(s, o, int, rfc); \ @@ -11,6 +16,15 @@ s2j_struct_get_basic_element(s, o, int, level); \ } +#define REMOTE_HOST_X_JSON(s, o) { \ + s2j_struct_get_basic_element(s, o, int, rfc); \ + s2j_struct_get_basic_element(s, o, int, port); \ + S2J_STRUCT_GET_STRING_ELEMENT_N(s, o, host, LOG_HOST_SZ); \ + s2j_struct_get_basic_element(s, o, int, level); \ +} + + +#define LOG_CONF_KEY_REMOTE_LEVEL "remote.level" ret_code log_remote_host_config_chk(uint source, uint *config_type, @@ -48,4 +62,554 @@ ret_code log_remote_level_config_proc(uint source, uint config_type, return log_rpc_exec(SERVICE_LOG_REMOTE_NAME, CONF_LOG_REMOTE_LEVEL_FUNC, input, input_len, sizeof(log_remote_level_t)); } +static ret_code cm_get_log_remote_level_elems(log_remote_level_t *log_remote_level, int *err_no) +{ + char value[MAX_LINE_SZ] = ""; + int tmp_value = 0; + + if (NULL == log_remote_level || NULL == err_no) + { + return RET_ERR; + } + + memset(log_remote_level, 0, sizeof(*log_remote_level)); + + memset(value, 0, MAX_LINE_SZ); + + if (cm_log_get_keyvalue_from_file(CM_LOG_CONF_REMOTE_LEVEL_FILE, LOG_CONF_KEY_REMOTE_LEVEL, value, sizeof(value)) == 0) + { + tmp_value = atoi(value); + log_remote_level->level = (u8)tmp_value; + } + + ULOG_DEBUG(g_log_h, "get log remote level:%u", log_remote_level->level); + return RET_OK; +} + + +static ret_code cm_log_remote_level_format_json(log_remote_level_t *log_remote_level, + pointer output, int *outlen) +{ + char *json_log_file = NULL; + + /* create Student JSON object */ + s2j_create_json_obj(json_obj); + if (json_obj == NULL) + { + return RET_NOMEM; + } + + s2j_json_set_basic_element(json_obj, log_remote_level, int, level); + + json_log_file = cJSON_PrintUnformatted(json_obj); + *outlen = strlen(json_log_file) + 1; + memcpy(output, json_log_file, *outlen); + + free(json_log_file); + cJSON_Delete(json_obj); + + return RET_OK; +} + +ret_code log_remote_level_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_remote_level_t *log_remote_level = NULL; + int err_no = 0; + + log_remote_level = (log_remote_level_t *)input; + + ret = cm_get_log_remote_level_elems(log_remote_level, &err_no); + + RET_ERR_FORMART(ret, err_no, output, *output_len); + ASSERT_RET(ret); + + cm_log_remote_level_format_json(log_remote_level, output, output_len); + + return ret; +} + + +ret_code log_remote_level_config_getall(uint source, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_remote_level_t *log_remote_level = NULL; + int err_no = 0; + + log_remote_level = rpc_new(log_remote_level_t, 1); + ret = log_remote_level_config_get(source, (pointer)log_remote_level, sizeof(log_remote_level_t)*1, output, output_len); + rpc_free(log_remote_level); + return ret; +} + +/* *.=emerg;*.=alert;*.=crit;*.=err;*.=warn;*.=notice;*.=info @1.1.1.1:514:RFC3164fmt + * *.=emerg;*.=alert;*.=crit;*.=err;*.=warn;*.=notice;*.=info @@1.1.1.2:514:RFC5424fmt */ +static ret_code cm_log_prase_host_from_str(const char *input_str, log_remote_host_x_t *ret_host) +{ + char *pos = NULL; + char *pos2 = NULL; + size_t tmp_len = 0; + char tmp_str[128] = ""; + int tmp_value; + int is_find = 0; + ret_code ret = RET_ERR; + + if(NULL == input_str || '\0' == input_str[0] || NULL == ret_host) + { + return RET_ERR; + } + + pos = input_str; + + memset(tmp_str, 0, sizeof(tmp_str)); + + /* 提取日志等级 */ + while (1) + { + pos2 = strstr(pos, ".="); + + if (NULL == pos2) + { + break; + } + + if (strlen(pos2) <= strlen(".=")) + { + break; + } + + pos = pos2+strlen(".="); + } + + pos2 = strstr(pos, " "); + + if (NULL == pos || NULL == pos2) + { + goto END; + } + + tmp_len = pos2-pos; + strncpy(tmp_str, pos, tmp_len); + tmp_str[tmp_len] = '\0'; + + tmp_value = log_str_to_level(tmp_str); + if ( -1 == tmp_value) + { + goto END; + } + ret_host->level = (u8)tmp_value; + + /* 提取IP地址 */ + pos = strstr(pos2, "@"); + if (NULL == pos) + { + goto END; + } + pos ++; + + if('@' == pos[0]) + { + pos++; + } + + pos2 = strstr(pos, ":"); + if (NULL == pos2) + { + goto END; + } + + tmp_len = pos2-pos; + if (tmp_len == 0 || tmp_len >= sizeof(ret_host->host)) + { + goto END; + } + memset(ret_host->host, 0, sizeof(ret_host->host)); + strncpy(ret_host->host, pos, tmp_len); + + + /* 提取端口 */ + pos2 ++; + pos = pos2; + pos2 = strstr(pos, ":"); + if (pos2 == NULL) + { + goto END; + } + + tmp_len = pos2-pos; + strncpy(tmp_str, pos, tmp_len); + tmp_str[tmp_len] = '\0'; + + tmp_value = atoi(tmp_str); + if (tmp_value < 0) + { + goto END; + } + ret_host->port = (u16)tmp_value; + + /* 提取日志存放格式 */ + pos2++; + pos = pos2; + + pos2 = strstr(pos, " "); + if (pos2 != NULL) + { + tmp_len = pos2-pos; + } + else + { + tmp_len = strlen(pos); + } + strncpy(tmp_str, pos, tmp_len); + tmp_str[tmp_len] = '\0'; + if ('\n' == tmp_str[tmp_len-1]) + { + tmp_str[tmp_len-1] = '\0'; + } + + tmp_value = -1; + for (int i = 0; i < (sizeof(rfc_tbl) / sizeof(rfc_key_fmt)); i++) + { + if (strcasecmp(tmp_str, rfc_tbl[i].fmt) == 0) + { + tmp_value = rfc_tbl[i].rfc; + break; + } + } + + if (-1 == tmp_value) + { + goto END; + } + ret_host->rfc = tmp_value; + +// ULOG_DEBUG(g_log_h, "get remote host, addr:%s, port:%u, log_format:%d, level:%u", +// ret_host->host, ret_host->port, ret_host->rfc, ret_host->level); + + is_find = 1; + +END: + + if (is_find != 1) + { + memset(ret_host, 0, sizeof(*ret_host)); + } + + ret = RET_OK; + return ret; +} + +static ret_code cm_log_get_host_from_file_by_addr(const char *file_str, const char *addr_str, log_remote_host_x_t *ret_host) +{ + FILE *fp = NULL; + ssize_t n; + char *line = NULL; + char tmp_str[128] = ""; + int is_find = 0; + ret_code ret = RET_ERR; + + if (NULL == file_str || '\0' == file_str[0] + || NULL == addr_str || strlen(addr_str) >= LOG_HOST_SZ + || NULL == ret_host) { + ULOG_ERR(g_log_h, "get log host from file: bad input"); + } + + memset(ret_host, 0, sizeof(*ret_host)); + memcpy(ret_host->host, addr_str, strlen(addr_str)); + + fp = fopen(file_str, "r"); + if (NULL == fp) { + return ret; + } + + if (fseek(fp, 0, SEEK_SET) == -1) + { + ULOG_ERR(g_log_h, "Seeknig config to begin is faiure:%s", strerror(errno)); + + fclose(fp); + return ret; + } + + while ((getline(&line, &n, fp)) != -1) + { + memset(tmp_str, 0, sizeof(tmp_str)); + snprintf(tmp_str, "@%s:", addr_str); + if (NULL == strstr(line, tmp_str)) + { + continue; + } + + if ( cm_log_prase_host_from_str(line, ret_host) == RET_OK ) + { + is_find = 1; + } + + ULOG_DEBUG(g_log_h, "get remote host: addr=%s, port=%u, log_format=%d, level=%u", + ret_host->host, ret_host->port, ret_host->rfc, ret_host->level); + break; + + } + + if (is_find != 1) + { + memset(ret_host, 0, sizeof(*ret_host)); + } + + ret = RET_OK; + if (NULL != fp) + { + fclose(fp); + } + + return ret; +} + + +static ret_code cm_log_getall_host_from_file(const char *file_str, log_remote_host_x_t *ret_hosts, int *ret_cnt) +{ + log_remote_host_x_t hosts[MAX_REMOTE_HOST_CNT]; + FILE *fp = NULL; + ssize_t n; + char *line = NULL; + size_t tmp_len = 0; + char tmp_str[128] = ""; + int tmp_value; + int cnt = 0; + ret_code ret = RET_ERR; + + if (NULL == file_str || '\0' == file_str[0] + || NULL == ret_hosts || NULL == ret_cnt) + { + ULOG_ERR(g_log_h, "get all log host from file: bad input"); + } + + fp = fopen(file_str, "r"); + if (NULL == fp) + { + return ret; + } + + if (fseek(fp, 0, SEEK_SET) == -1) + { + ULOG_ERR(g_log_h, "Seeknig config to begin is faiure:%s", strerror(errno)); + + fclose(fp); + return ret; + } + + cnt = 0; + while ((getline(&line, &n, fp)) != -1) + { + if (NULL == strstr(line, "@")) + { + continue; + } + + if ( cm_log_prase_host_from_str(line, hosts+cnt) != RET_OK ) + { + continue; + } + + if (hosts[cnt].host[0] == '\0') + { + /* 无效数据 */ + memset(hosts+cnt, 0, sizeof(log_remote_host_x_t)); + continue; + } + + ULOG_DEBUG(g_log_h, "getall remote host, host[%d]: addr=%s, port=%u, log_format=%d, level=%u", + cnt, hosts[cnt].host, hosts[cnt].port, hosts[cnt].rfc, hosts[cnt].level); + + cnt ++; + if (cnt >= MAX_REMOTE_HOST_CNT) + { + break; + } + } + + if (cnt > 0) + { + memcpy(ret_hosts, &hosts, sizeof(log_remote_host_x_t)*cnt); + } + + *ret_cnt = cnt; + + ret = RET_OK; + if (NULL != fp) + { + fclose(fp); + } + return ret; +} + + +static ret_code cm_get_log_remote_host_elems(log_remote_host_x_t *host_x, int *err_no) +{ + log_remote_host_x_t input_host; + log_remote_host_x_t output_host; + ret_code ret = RET_ERR; + + if (NULL == host_x || NULL == err_no) + { + return RET_ERR; + } + + memcpy(&input_host, host_x, sizeof(log_remote_host_x_t)); + + memset(&output_host, 0, sizeof(output_host)); + if (cm_log_get_host_from_file_by_addr(CM_LOG_CONF_REMOTE_FILE, input_host.host, &output_host) == RET_OK) + { + memcpy(host_x, &output_host, sizeof(output_host)); + } + + return RET_OK; +} + + + +static ret_code cm_getall_log_remote_host_elems(log_remote_host_x_t *host_xs, int *cnt, int *err_no) +{ + ret_code ret = RET_ERR; + + if (NULL == host_xs || NULL == err_no) + { + return RET_ERR; + } + + if (cm_log_getall_host_from_file(CM_LOG_CONF_REMOTE_FILE, host_xs, cnt) != RET_OK) + { + return RET_ERR; + } + + return RET_OK; +} + +static ret_code cm_log_remote_host_x_format_json(log_remote_host_x_t *host_x, + pointer output, int *outlen) +{ + char *json_log_file = NULL; + + /* create Student JSON object */ + s2j_create_json_obj(json_obj); + if (json_obj == NULL) + { + return RET_NOMEM; + } + + s2j_json_set_basic_element(json_obj, host_x, int, port); + s2j_json_set_basic_element(json_obj, host_x, int, rfc); + s2j_json_set_basic_element(json_obj, host_x, string, host); + s2j_json_set_basic_element(json_obj, host_x, int, level); + + json_log_file = cJSON_PrintUnformatted(json_obj); + *outlen = strlen(json_log_file) + 1; + memcpy(output, json_log_file, *outlen); + + free(json_log_file); + cJSON_Delete(json_obj); + + return RET_OK; +} + + +ret_code cm_log_remote_host_x_format_json_array(log_remote_host_x_t *host_xs, + int count, pointer output, int *outlen) +{ + log_remote_host_x_t tem_buff = {0}; + log_remote_host_x_t *host_x = &tem_buff; + cJSON *json_array = NULL; + char *json_str; + int i; + + json_array = cJSON_CreateArray(); + if(json_array == NULL) + { + return RET_NOMEM; + } + + for(i = 0; i < count; i++) + { + memcpy(host_x, &host_xs[i], sizeof(log_remote_host_x_t)); + + /* create Student JSON object */ + s2j_create_json_obj(json_obj); + if(json_obj == NULL) + { + return RET_NOMEM; + } + + cJSON_AddItemToArray(json_array, json_obj); + + s2j_json_set_basic_element(json_obj, host_x, int, port); + s2j_json_set_basic_element(json_obj, host_x, int, rfc); + s2j_json_set_basic_element(json_obj, host_x, string, host); + s2j_json_set_basic_element(json_obj, host_x, int, level); + } + + json_str = cJSON_PrintUnformatted(json_array); + *outlen = strlen(json_str) + 1; + memcpy(output, json_str, *outlen); + + free(json_str); + cJSON_Delete(json_array); + + return RET_OK; +} + +ret_code log_remote_host_x_config_chk(uint source, uint *config_type, + pointer input, int *input_len, + pointer output, int *output_len) +{ + COMMON_CHK(log_remote_host_x_t, input, input_len, "remote host_x", REMOTE_HOST_X_JSON); +} + + +ret_code log_remote_host_x_config_get(uint source, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_remote_host_x_t *host_x = NULL; + int err_no = 0; + + host_x = (log_remote_host_x_t *)input; + + ret = cm_get_log_remote_host_elems(host_x, &err_no); + + RET_ERR_FORMART(ret, err_no, output, *output_len); + ASSERT_RET(ret); + + cm_log_remote_host_x_format_json(host_x, output, output_len); + + return ret; +} + + +ret_code log_remote_host_x_config_getall(uint source, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + log_remote_host_x_t *host_x = NULL; + int cnt = 0; + int err_no = 0; + + host_x = rpc_new(log_remote_host_x_t, MAX_REMOTE_HOST_CNT); + + ret = cm_getall_log_remote_host_elems(host_x, &cnt, &err_no); + + RET_ERR_FORMART(ret, err_no, output, *output_len); + ASSERT_RET(ret); + + cm_log_remote_host_x_format_json_array(host_x, cnt, output, output_len); + ULOG_DEBUG(g_log_h, "log_remote_host_x_config_getall, output=%s, output_len=%d", + output, *output_len); + + rpc_free(host_x); + + return ret; +} + diff --git a/Platform/user/logging/cmd_file.c b/Platform/user/logging/cmd_file.c index cfbdc1c34..000e2d54d 100755 --- a/Platform/user/logging/cmd_file.c +++ b/Platform/user/logging/cmd_file.c @@ -5,46 +5,66 @@ #include "ulog/ulog_in.h" #include "s2j/s2j.h" + + +static int logging_file_json_parse(pointer input, log_file_t *config_buff); + + int conf_file(cJSON *json_obj, int argc, char **argv) { - log_file_t log_file = {0}; - log_file.is_compress = LOG_UNCOMPRESS; - + log_file_t log_file = {0}; + log_file_t log_file_out = {0}; int level = LOG_INFO; - if (argc >= 3) { - if ((level = log_str_to_level(argv[2])) < 0) { - ULOG_WARNING(g_log, "Unknown log level:%s", argv[2]); - return -1; - } - } - log_file.level = level; + uint config_type = CM_CONFIG_SET; + cJSON *json_output = NULL; + + log_file.is_compress = LOG_UNCOMPRESS; - if (argc >= 4) { - strncpy(log_file.path, argv[3], sizeof(log_file.path)); - } + if (argc == 3 && strstr(argv[2], "get") != NULL) + { + config_type = CM_CONFIG_GET; + // liangxia todo: 这里必须要填值,否则会发生log-sched.conf配置行为 (maybe there has a bug) + log_file.level = 5; + strcpy(log_file.del_over_size, "321654"); + } + else + { + config_type = CM_CONFIG_SET; + if (argc >= 3) { + if ((level = log_str_to_level(argv[2])) < 0) { + ULOG_WARNING(g_log, "Unknown log level:%s", argv[2]); + return -1; + } + } + log_file.level = level; - if (argc >= 5) { - if (atoi(argv[4]) > 0) { - log_file.is_compress = LOG_COMPRESS; - } - } + if (argc >= 4) { + strncpy(log_file.path, argv[3], sizeof(log_file.path)); + } - if (argc >= 6) { - int day = atoi(argv[5]); - if (day > 0) { - log_file.del_over_days = day; - } else if (day < 0) { - ULOG_WARNING(g_log, "Deleting day(%d) mustn't be less than 0", day); - return -1; - } - } - - if (argc >= 7) { - if (snprintf(log_file.del_over_size, sizeof(log_file.del_over_size), "%s", argv[6]) < 0) { - ULOG_ERR(g_log, "Building del max size:%s is filure", argv[6]); - return -1; - } - } + if (argc >= 5) { + if (atoi(argv[4]) > 0) { + log_file.is_compress = LOG_COMPRESS; + } + } + + if (argc >= 6) { + int day = atoi(argv[5]); + if (day > 0) { + log_file.del_over_days = day; + } else if (day < 0) { + ULOG_WARNING(g_log, "Deleting day(%d) mustn't be less than 0", day); + return -1; + } + } + + if (argc >= 7) { + if (snprintf(log_file.del_over_size, sizeof(log_file.del_over_size), "%s", argv[6]) < 0) { + ULOG_ERR(g_log, "Building del max size:%s is filure", argv[6]); + return -1; + } + } + } s2j_json_set_basic_element(json_obj, &log_file, int, level); s2j_json_set_basic_element(json_obj, &log_file, string, path); @@ -52,12 +72,63 @@ int conf_file(cJSON *json_obj, int argc, char **argv) s2j_json_set_basic_element(json_obj, &log_file, int, del_over_days); s2j_json_set_basic_element(json_obj, &log_file, string, del_over_size); - int ret = set_log_conf(json_obj, LOG_CONFIG_FILE); - if (ret != 0) { - ULOG_ERR(g_log, "File log which is configured is failure"); - } else { - ULOG_DEBUG(g_log, "File log whice is configured is success"); + int ret = set_log_conf(config_type, json_obj, LOG_CONFIG_FILE, &json_output); + if (ret != 0) { + ULOG_ERR(g_log, "File log which is configured is failure"); + } else { + ULOG_DEBUG(g_log, "File log whice is configured is success"); } + + if (CM_CONFIG_GET == config_type) + { + logging_file_json_parse(json_output, &log_file_out); + + ULOG_DEBUG(g_log, "Log file get: level=%u, path=%s, is_compress=%d, del_over_days=%u, del_over_size=%s", + log_file_out.level, + log_file_out.path, + log_file_out.is_compress, + log_file_out.del_over_days, log_file_out.del_over_size); + } + return ret; } + +static int logging_file_json_parse(pointer input, log_file_t *config_buff) +{ + cJSON *json_obj; + + if (NULL == config_buff) + { + return -1; + } + + json_obj = cJSON_Parse(input); + if (!json_obj) + { + return -1; + } + + s2j_create_struct_obj(log_file, log_file_t); + + if (log_file == NULL) + { + cJSON_Delete(json_obj); + return -1; + } + + s2j_struct_get_basic_element(log_file, json_obj, int, level); + S2J_STRUCT_GET_STRING_ELEMENT_N(log_file, json_obj, path, MAX_PATH_SZ); + s2j_struct_get_basic_element(log_file, json_obj, int, is_compress); + s2j_struct_get_basic_element(log_file, json_obj, int, del_over_days); + S2J_STRUCT_GET_STRING_ELEMENT_N(log_file, json_obj, del_over_size, MAX_U64_SZ); + + memcpy(config_buff, log_file, sizeof(log_file_t)); + + s2j_delete_struct_obj(json_obj); + cJSON_Delete(json_obj); + + return RET_OK; +} + + diff --git a/Platform/user/logging/cmd_remote.c b/Platform/user/logging/cmd_remote.c index 656a9dc20..276ac8c89 100755 --- a/Platform/user/logging/cmd_remote.c +++ b/Platform/user/logging/cmd_remote.c @@ -5,7 +5,14 @@ #include "ulog_in.h" #include "s2j/s2j.h" -#define DEFAULT_REMOTE_HOST 514 +#define DEFAULT_REMOTE_HOST_PORT 514 +#define MAX_REMOTE_HOST_CNT 8 + + +static int logging_remote_json_parse(pointer input, log_remote_host_x_t *config_buff); +static int logging_remote_json_parse_array(pointer input, + log_remote_host_x_t *config_buff, int *cnt); +static int logging_remote_level_json_parse(pointer input, log_remote_level_t *config_buff); static log_rfc_t get_rfc_by_name(const char *name) { @@ -20,22 +27,69 @@ static log_rfc_t get_rfc_by_name(const char *name) static int conf_remote_by_config_id(cJSON *json_obj, const char *host, const u16 port, const log_rfc_t rfc, uint64 config_id) { - log_remote_host_t remote; - - strncpy(remote.host, host, sizeof(remote.host)); - remote.port = port; - remote.rfc = rfc; + log_remote_host_x_t remote = {0}; + cJSON *json_output = NULL; + int config_type = CM_CONFIG_SET; + if (LOG_CONFIG_REMOTE_GET_HOST == config_id) + { + if (NULL == host || '\0' == host[0]) + { + config_type = CM_CONFIG_GET_ALL; + } + else + { + config_type = CM_CONFIG_GET; + strncpy(remote.host, host, sizeof(remote.host)); + } + } + else + { + config_type = CM_CONFIG_SET; + strncpy(remote.host, host, sizeof(remote.host)); + remote.port = port; + remote.rfc = rfc; + } + s2j_json_set_basic_element(json_obj, &remote, int, port); s2j_json_set_basic_element(json_obj, &remote, int, rfc); - s2j_json_set_basic_element(json_obj, &remote, string, host); + s2j_json_set_basic_element(json_obj, &remote, string, host); + s2j_json_set_basic_element(json_obj, &remote, int, level); - int ret = set_log_conf(json_obj, config_id); + int ret = set_log_conf(config_type, json_obj, config_id, &json_output); if (ret != 0) { ULOG_ERR(g_log, "Host of log which is configured is failure"); } else { ULOG_DEBUG(g_log, "Host of log whice is configured is success"); } + + if (LOG_CONFIG_REMOTE_GET_HOST == config_id) + { + if (CM_CONFIG_GET_ALL == config_type ) + { + log_remote_host_x_t remotes_out[MAX_REMOTE_HOST_CNT] = {0}; + int cnt = 0; + if (logging_remote_json_parse_array(json_output, remotes_out, &cnt) == 0) + { + for (int i=0; i= 4) { + host = argv[3]; + } + u16 port = DEFAULT_REMOTE_HOST_PORT; if (argc >= 5) { port= atoi(argv[4]); } @@ -77,29 +137,178 @@ int conf_remote(cJSON *json_obj, int argc, char **argv) int conf_remote_level(cJSON *json_obj, int argc, char **argv) { + int level; + log_remote_level_t log_level = {0}; + log_remote_level_t log_level_out = {0}; + uint config_type = CM_CONFIG_SET; + cJSON *json_output = NULL; + if (argc < 3) { ULOG_WARNING(g_log, "Not input log level"); return -1; } - - int level; - - if ((level = log_str_to_level(argv[2])) < 0) { - ULOG_WARNING(g_log, "Unknown log level:%s", argv[2]); - return -1; - } - - log_remote_level_t log_level; - - log_level.level = (u8)level; + + if (argc == 3 && strstr(argv[2], "get") != NULL) { + config_type = CM_CONFIG_GET; + } + else { + config_type = CM_CONFIG_SET; + + if ((level = log_str_to_level(argv[2])) < 0) { + ULOG_WARNING(g_log, "Unknown log level:%s", argv[2]); + return -1; + } + + log_level.level = (u8)level; + } + s2j_json_set_basic_element(json_obj, &log_level, int, level); - int ret = set_log_conf(json_obj, LOG_CONFIG_REMOTE_LEVEL); + int ret = set_log_conf(config_type, json_obj, LOG_CONFIG_REMOTE_LEVEL, &json_output); if (ret != 0) { ULOG_ERR(g_log, "Remote level of log which is configured is failure"); } else { ULOG_DEBUG(g_log, "Remote level of log whice is configured is success"); } + + if (CM_CONFIG_GET == config_type) { + logging_remote_level_json_parse(json_output, &log_level_out); + + ULOG_DEBUG(g_log, "Log level get: level=%u", log_level_out.level); + } return ret; } + +static int logging_remote_json_parse(pointer input, log_remote_host_x_t *config_buff) +{ + cJSON *json_obj; + + if (NULL == config_buff) + { + return -1; + } + + json_obj = cJSON_Parse(input); + if(!json_obj) + { + return -1; + } + + ULOG_DEBUG(g_log, "remote json parse, json input:%s \n", cJSON_Print(json_obj)); + + s2j_create_struct_obj(log_host_x, log_remote_host_x_t); + + if(log_host_x == NULL) + { + cJSON_Delete(json_obj); + return -1; + } + + s2j_struct_get_basic_element(log_host_x, json_obj, int, port); + s2j_struct_get_basic_element(log_host_x, json_obj, int, rfc); + S2J_STRUCT_GET_STRING_ELEMENT_N(log_host_x, json_obj, host, LOG_HOST_SZ); + s2j_struct_get_basic_element(log_host_x, json_obj, int, level); + + memcpy(config_buff, log_host_x, sizeof(log_remote_host_x_t)); + + s2j_delete_struct_obj(json_obj); + cJSON_Delete(json_obj); + + return 0; +} + + + +static int logging_remote_json_parse_array(pointer input, + log_remote_host_x_t *config_buff, int *cnt) +{ + cJSON *json_obj; + cJSON* p_array; + int json_cnt = 0, i = 0; + int used_cnt = 0; + + json_obj = cJSON_Parse(input); + if(!json_obj) + { + return -1; + } + + ULOG_DEBUG(g_log, "remote json parse array, json input:%s \n", cJSON_Print(json_obj)); + + json_cnt = cJSON_GetArraySize(json_obj); + if (json_cnt > MAX_REMOTE_HOST_CNT) + { + used_cnt = MAX_REMOTE_HOST_CNT; + } + else + { + used_cnt = json_cnt; + } + + s2j_create_struct_obj(log_host_x, log_remote_host_x_t); + if(log_host_x == NULL) + { + cJSON_Delete(json_obj); + return -1; + } + + *cnt = 0; + for (i = 0; i < used_cnt; i++) + { + p_array = cJSON_GetArrayItem(json_obj, i); + if (p_array) + { + memset(log_host_x, 0, sizeof(log_remote_host_x_t)); + + s2j_struct_get_basic_element(log_host_x, p_array, int, port); + s2j_struct_get_basic_element(log_host_x, p_array, int, rfc); + s2j_struct_get_basic_element(log_host_x, p_array, string, host); + s2j_struct_get_basic_element(log_host_x, p_array, int, level); + + memcpy(config_buff+*cnt, log_host_x, sizeof(log_remote_host_x_t)); + (*cnt)++; + } + } + + s2j_delete_struct_obj(log_host_x); + cJSON_Delete(json_obj); + + return 0; +} + + +static int logging_remote_level_json_parse(pointer input, log_remote_level_t *config_buff) +{ + cJSON *json_obj; + + if (NULL == config_buff) + { + return -1; + } + + json_obj = cJSON_Parse(input); + if (!json_obj) + { + return -1; + } + + s2j_create_struct_obj(log_remote_level, log_remote_level_t); + + if (log_remote_level == NULL) + { + cJSON_Delete(json_obj); + return -1; + } + + s2j_struct_get_basic_element(log_remote_level, json_obj, int, level); + + memcpy(config_buff, log_remote_level, sizeof(log_remote_level_t)); + + s2j_delete_struct_obj(json_obj); + cJSON_Delete(json_obj); + + return 0; +} + + diff --git a/Platform/user/logging/logging_common.c b/Platform/user/logging/logging_common.c index 198378d21..6d5e76183 100755 --- a/Platform/user/logging/logging_common.c +++ b/Platform/user/logging/logging_common.c @@ -5,7 +5,9 @@ #include "configmapi.h" #include "ulog/ulog_in.h" -int set_log_conf(cJSON *json_obj, uint64 config_id) + + +int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, cJSON **json_output) { int ret = -1; char *output; @@ -18,7 +20,8 @@ int set_log_conf(cJSON *json_obj, uint64 config_id) } ULOG_DEBUG(g_log, "Setting log json is %s", json); - ret_code ret_c = web_config_exec_sync(CM_CONFIG_SET, config_id, + + ret_code ret_c = web_config_exec_sync(config_type, config_id, json, strlen(json), &output, &output_len); if (ret_c != RET_OK) { @@ -26,6 +29,16 @@ int set_log_conf(cJSON *json_obj, uint64 config_id) } else { ret = 0; } + + if ((CM_CONFIG_GET == config_type || CM_CONFIG_GET_ALL == config_type) && json_output != NULL) + { + ULOG_DEBUG(g_log, "get outputlen:%d, output:%s", output_len, output); + *json_output = output; + } + else + { + *json_output = NULL; + } if (json != NULL) { free(json); @@ -34,3 +47,37 @@ int set_log_conf(cJSON *json_obj, uint64 config_id) return ret; } + +int logging_terminal_json_parse(pointer input, pointer config_buff, int conf_id) +{ + cJSON *json_obj = NULL; + + if (NULL == config_buff) { + return -1; + } + + json_obj = cJSON_Parse(input); + if (!json_obj) + { + return -1; + } + + s2j_create_struct_obj(log_terminal, log_console_t); + if (NULL == log_terminal) + { + cJSON_Delete(json_obj); + return -1; + } + + s2j_struct_get_basic_element(log_terminal, json_obj, int, level); + s2j_struct_get_basic_element(log_terminal, json_obj, int, on); + s2j_struct_get_basic_element(log_terminal, json_obj, string, module); + + memcpy(config_buff, log_terminal, sizeof(log_console_t)); + + s2j_delete_struct_obj(json_obj); + cJSON_Delete(json_obj); + + return 0; + } + diff --git a/Platform/user/logging/logging_common.h b/Platform/user/logging/logging_common.h index 984542244..ea145c606 100755 --- a/Platform/user/logging/logging_common.h +++ b/Platform/user/logging/logging_common.h @@ -13,11 +13,15 @@ extern ulog_t *g_log; -int set_log_conf(cJSON *json_obj, uint64 config_id); +int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, cJSON **json_output); +int logging_terminal_json_parse(pointer input, pointer config_buff, int conf_id); -#define CONF_TERMINAL(type, json_obj, str_level, on, module_name, conf_id) { \ + +#define CONF_TERMINAL(type, config_type, json_obj, str_level, on, module_name, conf_id) { \ type terminal = {0}; \ + type terminal_out = {0}; \ int level; \ + cJSON *json_output = NULL; \ \ if ((level = log_str_to_level(str_level)) < 0) { \ ULOG_WARNING(g_log, "Unknown log level:%s", str_level); \ @@ -34,21 +38,40 @@ int set_log_conf(cJSON *json_obj, uint64 config_id); s2j_json_set_basic_element(json_obj, &terminal, int, on); \ s2j_json_set_basic_element(json_obj, &terminal, string, module); \ \ - int ret = set_log_conf(json_obj, conf_id); \ + int ret = set_log_conf(config_type, json_obj, conf_id, &json_output); \ if (ret != 0) { \ ULOG_ERR(g_log, "Setting terminal configure of log is failure"); \ } else { \ ULOG_DEBUG(g_log, "Setting terminal configure of log is success"); \ } \ + \ + if (CM_CONFIG_GET == config_type) { \ + if (logging_terminal_json_parse(json_output, &terminal_out, conf_id) == 0) { \ + if (LOG_ON == terminal_out.on) { \ + ULOG_DEBUG(g_log, "Log %s get: level=%u, module=%s", \ + (conf_id == LOG_CONFIG_CONSOLE)?"console":"monitor", \ + terminal_out.level, \ + terminal_out.module); \ + } else { \ + ULOG_DEBUG(g_log, "Log %s get: off", \ + (conf_id == LOG_CONFIG_CONSOLE)?"console":"monitor"); \ + } \ + } \ + } \ + \ return ret; \ } #define CMD_PARSE_AND_CONFIG_TERMINAL(type, json_obj, argc, argv, conf_id) { \ log_sw_t on = LOG_ON; \ - char *str_level = DEFAULT_LOG_LEVEL; \ + char *str_level = DEFAULT_LOG_LEVEL; \ + uint config_type = CM_CONFIG_SET; \ + \ if (argc >= 3) { \ if (strcasecmp(argv[2], "off") == 0) { \ on = LOG_OFF; \ + } else if (strcasecmp(argv[2], "get") == 0) { \ + config_type = CM_CONFIG_GET; \ } else { \ str_level = argv[2]; \ } \ @@ -59,9 +82,7 @@ int set_log_conf(cJSON *json_obj, uint64 config_id); module = argv[3]; \ } \ \ - CONF_TERMINAL(type, json_obj, str_level, on, module, conf_id); \ + CONF_TERMINAL(type, config_type, json_obj, str_level, on, module, conf_id); \ } - - #endif diff --git a/Platform/user/logging/logging_main.c b/Platform/user/logging/logging_main.c index 6a075d771..8d56acc45 100755 --- a/Platform/user/logging/logging_main.c +++ b/Platform/user/logging/logging_main.c @@ -40,13 +40,13 @@ int main(int argc, char **argv) { int ret = -1; if (argc < 2) { - fprintf(stdout, "Parameter too few"); + fprintf(stdout, "Parameter too few\n"); return ret; } g_log = ulog_init(LOGGING_MODULE_NAME, 1); if (g_log == NULL) { - fprintf(stderr, "Initiating ulog is failure"); + fprintf(stderr, "Initiating ulog is failure\n"); return ret; } From 6c5f244be1d0824c1cece16e929408d694b3c5d2 Mon Sep 17 00:00:00 2001 From: liangxia Date: Tue, 27 Aug 2019 09:05:08 +0800 Subject: [PATCH 02/15] =?UTF-8?q?Add=20=20aaa-12=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=96=87=E4=BB=B6=E9=85=8D=E7=BD=AE=E3=80=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96console=E9=85=8D=E7=BD=AE=E3=80=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96tty=E9=85=8D=E7=BD=AE=E3=80=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=BF=9C=E7=AB=AF=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=88=E7=BB=AD=EF=BC=89=20RCA=EF=BC=9A=20?= =?UTF-8?q?SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Aliangxia=20?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/logging/cmd_file.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/Platform/user/logging/cmd_file.c b/Platform/user/logging/cmd_file.c index 000e2d54d..db879fb1a 100755 --- a/Platform/user/logging/cmd_file.c +++ b/Platform/user/logging/cmd_file.c @@ -23,9 +23,6 @@ int conf_file(cJSON *json_obj, int argc, char **argv) if (argc == 3 && strstr(argv[2], "get") != NULL) { config_type = CM_CONFIG_GET; - // liangxia todo: 这里必须要填值,否则会发生log-sched.conf配置行为 (maybe there has a bug) - log_file.level = 5; - strcpy(log_file.del_over_size, "321654"); } else { From 9ccfe5c9250621a45a7df36c21c50d7d3edd9c42 Mon Sep 17 00:00:00 2001 From: ChenLing Date: Tue, 27 Aug 2019 10:38:00 +0800 Subject: [PATCH 03/15] =?UTF-8?q?Mod=20=20aaa-12=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6-=E6=9C=AA=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E6=9D=83=E9=99=90=E3=80=81=E8=AE=A4=E8=AF=81=E5=8F=82?= =?UTF-8?q?=E6=95=B0=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=BA=EF=BC=9Achenling=20=E6=A3=80=E8=A7=86=E4=BA=BA?= =?UTF-8?q?=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web_config/auth_parameters.c | 9 +- .../config-server/web_config/authfree.c | 149 ++++++++++++---- .../web_config/config-adm/user_authfree.c | 159 ++++++++++-------- .../web_config/config-adm/user_authpara.c | 13 +- 4 files changed, 212 insertions(+), 118 deletions(-) diff --git a/Platform/user/configm/config-server/web_config/auth_parameters.c b/Platform/user/configm/config-server/web_config/auth_parameters.c index 96877d605..c1c897727 100644 --- a/Platform/user/configm/config-server/web_config/auth_parameters.c +++ b/Platform/user/configm/config-server/web_config/auth_parameters.c @@ -248,7 +248,7 @@ ret_code authpara_config_proc(uint source, uint config_type, authpara_config_json_parse(input, &conf_type, &auth_parameters); - if(input_len != sizeof(auth_parameters_t)) { + if(input_len < sizeof(auth_parameters_t)) { return RET_INPUTERR; } @@ -302,12 +302,14 @@ ret_code authpara_config_proc(uint source, uint config_type, } #endif - + + #if 0 /*Portal server鐨刾ort閫氳繃redis娑堟伅闃熷垪鎺ュ彛鍙戝竷缁檞eb server*/ memset(auth_port, 0, 20); 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); local_portal_port(auth_port); + #endif /*鍒涘缓json瀵硅薄 */ res = cJSON_CreateObject(); @@ -319,6 +321,8 @@ ret_code authpara_config_proc(uint source, uint config_type, } /*灏唈son瀵硅薄杞崲鎴恓son瀛楃涓 杩斿洖澶勭悊缁撴灉*/ + printf("resultcode = %d\n", configure_result->resultcode); + printf("message = %s\n", configure_result->message); cJSON_AddNumberToObject(res, "resultcode", configure_result->resultcode); cJSON_AddStringToObject(res, "message", configure_result->message); ret_char = cJSON_PrintUnformatted(res); @@ -343,4 +347,3 @@ ret_code authpara_config_proc(uint source, uint config_type, free(configure_result); return RET_OK; } - diff --git a/Platform/user/configm/config-server/web_config/authfree.c b/Platform/user/configm/config-server/web_config/authfree.c index a9b2efdd3..7d8723ed8 100644 --- a/Platform/user/configm/config-server/web_config/authfree.c +++ b/Platform/user/configm/config-server/web_config/authfree.c @@ -223,10 +223,10 @@ ret_code freeauth_config_json_parse(pointer input, uint *conf_type, freeauth_con freeauth_buff->dport = struct_freeauth->dport; freeauth_buff->flag = struct_freeauth->flag; } - + cJSON_Delete(cjson); s2j_delete_struct_obj(struct_freeauth); - + return RET_OK; } @@ -278,6 +278,8 @@ ret_code authpara_config_json_parse_array(pointer input, uint *conf_type, freeau memset(freeauth_buff, 0, sizeof(freeauth_configure_t) * iCount); + *fb = freeauth_buff; + for(i = 0; i < iCount; i++) { cJSON *pArrayItem = cJSON_GetArrayItem(data, i); @@ -325,16 +327,19 @@ ret_code authpara_config_json_parse_array(pointer input, uint *conf_type, freeau freeauth_buff->flag = flag->valueint; } - #if 0 - printf("freeauth_buff->name = %p\n", &freeauth_buff->name); + printf("freeauth_buff->name = %p\n", &freeauth_buff->name); + printf("freeauth_buff->name = %s\n", freeauth_buff->name); + + #if 0 for (int j = 0; j < iCount; j++) { - printf("[%d %s %d %d %d %d]\n",pbuf[j].rule_priority, pbuf[j].name, pbuf[j].sip, - pbuf[j].dip, pbuf[j].dport, pbuf[j].flag); + printf("[%d %s %d %d %d %d]\n", freeauth_buff->rule_priority, freeauth_buff->name, freeauth_buff->sip, + freeauth_buff->dip, freeauth_buff->dport, freeauth_buff->flag); + freeauth_buff++; } #endif - + freeauth_buff++; } } @@ -344,8 +349,7 @@ ret_code authpara_config_json_parse_array(pointer input, uint *conf_type, freeau } cJSON_Delete(cjson); - - *fb = freeauth_buff; + return RET_OK; } @@ -386,20 +390,36 @@ ret_code freeauth_config_add_proc(uint source, uint config_type, freeauth_config_json_parse(input, &conf_type, freeauth_configure); /*鏍¢獙鐢ㄦ埛鍚嶉暱搴*/ - if(input_len != sizeof(freeauth_configure_t) || NULL == freeauth_configure->name || + if(input_len < sizeof(freeauth_configure_t) || NULL == freeauth_configure->name || (UNAMESIZE) < strlen(freeauth_configure->name) || 0 == strlen(freeauth_configure->name)) { free(freeauth_configure); + printf("the lenth is error\n"); return RET_INPUTERR; } + /* 鏍¢獙鐢ㄦ埛鍚嶄腑涓嶅惈鐗规畩瀛楃 */ if(SPECHAR(freeauth_configure->name)) { free(freeauth_configure); + printf("username 鍚湁鐗规畩瀛楃\n"); return RET_INPUTERR; } + #if 0 + /*鏍¢獙浼樺厛绾ф槸鍚﹂噸鍚,濡傛灉浼樺厛绾у凡缁忓瓨鍦 鍒欓鍑虹▼搴*/ + for(i = 0; i < RULE_MAX_NUM; i++){ + if(freeauth_array[i].rule_priority == freeauth_configure->rule_priority) { + printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]); + free(freeauth_configure); + return RET_EXIST; + } + } + #endif + + /*鏍¢獙绔彛鍙*/ if((freeauth_configure->dport < DPORT_MIN_NUM) || (freeauth_configure->dport > DPORT_MAX_NUM)) { free(freeauth_configure); + printf("the port is error\n"); return RET_IPINVALID; } @@ -408,8 +428,39 @@ ret_code freeauth_config_add_proc(uint source, uint config_type, /*涓や釜瀛楃涓茬浉绛 strcmp鍊间负0*/ if(0 == strcmp(freeauth_array[i].name, freeauth_configure->name)) { printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]); - free(freeauth_configure); - return RET_EXIST; + printf("local user is existed\n"); + + /*鍒涘缓json瀵硅薄 */ + res = cJSON_CreateObject(); + + if(!res) { + free(freeauth_configure); + return RET_ERR; + } + + /*灏唈son瀵硅薄杞崲鎴恓son瀛楃涓 杩斿洖澶勭悊缁撴灉*/ + cJSON_AddNumberToObject(res, "resultcode", 2); + cJSON_AddStringToObject(res, "message", "rule existed"); + ret_char = cJSON_PrintUnformatted(res); + ret_int = strlen(ret_char); + + if(output_len) { + *output_len = ret_int; + } + + /*瓒呭嚭2k鐨勫唴瀛橈紝鎶ラ敊 */ + if(ret_int >= 1024 * 2) { + free(ret_char); + cJSON_Delete(res); + return RET_NOMEM; + } + + memcpy(output, ret_char, ret_int + 1); + + free(ret_char); + cJSON_Delete(res); + + return RET_OK; } } @@ -492,10 +543,26 @@ ret_code freeauth_config_mod_proc(uint source, uint config_type, unsigned int ret_int = 0; authpara_config_json_parse_array(input, &conf_type, &freeauth_configure, &cnt); - - if(input_len != sizeof(freeauth_configure_t)) { + + if(input_len < sizeof(freeauth_configure_t)) { return RET_INPUTERR; } + + + printf("鎵撳嵃鍏ㄥ眬鏁扮粍鍐呭叏閮ㄥ厓绱燶n"); + /*鎵撳嵃鏁扮粍鍐呭叏閮ㄥ厓绱*/ + for(i = 0; i < RULE_MAX_NUM; i++) + { + printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip, + freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i); + } + + printf("鎵撳嵃浼犺繃鏉ョ殑json涓瞈n"); + for(int j = 0; j < cnt; j++) + { + printf("[%d %s %d %d %d %d %d]\n", freeauth_configure[j].rule_priority, freeauth_configure[j].name, freeauth_configure[j].sip, + freeauth_configure[j].dip, freeauth_configure[j].dport, freeauth_configure[j].dport, j); + } /*鏌ユ壘瑕佷慨鏀圭殑鍏嶈璇佽鍒欏悕瀛楋紝涓嶅瓨鍦ㄥ垯閫鍑虹▼搴 */ for(i = 0; i < RULE_MAX_NUM; i++) { @@ -590,33 +657,42 @@ ret_code freeauth_config_del_proc(uint source, uint config_type, char *ret_char = NULL; unsigned int ret_int = 0; -#if 0 - freeauth_configure = (freeauth_configure_t *)malloc(sizeof(freeauth_configure_t)); - - if(freeauth_configure == NULL) { - return RET_NAMEINVAL; - } - -#endif authpara_config_json_parse_del_array(input, &conf_type, &freeauth_configure, &cnt); - if(input_len != sizeof(freeauth_configure_t)) { + if(input_len < sizeof(freeauth_configure_t)) { return RET_INPUTERR; } + + + printf("鎵撳嵃鍏ㄥ眬鏁扮粍鍐呭叏閮ㄥ厓绱燶n"); + /*鎵撳嵃鏁扮粍鍐呭叏閮ㄥ厓绱*/ + for(i = 0; i < RULE_MAX_NUM; i++) + { + printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip, + freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i); + } + + printf("鎵撳嵃浼犺繃鏉ョ殑json涓瞈n"); + for(int j = 0; j < cnt; j++) + { + printf("[%s %d]\n", freeauth_configure[j].name, j); + } + /*鏌ユ壘瑕佷慨鏀圭殑鍏嶈璇佽鍒欏悕瀛楋紝涓嶅瓨鍦ㄥ垯閫鍑虹▼搴 */ for(i = 0; i < RULE_MAX_NUM; i++) { /*涓や釜瀛楃涓茬浉绛 strcmp鍊间负0*/ for(int j = 0; j < cnt; j++) { + if(0 == strcmp(freeauth_array[i].name, freeauth_configure[j].name)) + { - if(0 == strcmp(freeauth_array[i].name, freeauth_configure[j].name)) { - printf("%s %d\n", freeauth_array[i].name, i); - printf("%s %d\n", freeauth_configure[j].name, j); + printf("%s %d\n",freeauth_array[i].name, i); + printf("%s %d\n",freeauth_configure[j].name, j); printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[j]); - /*鏁版嵁搴撲慨鏀 瀛樺叆鍏ㄥ眬鍙橀噺*/ + + /*鏁版嵁搴撳垹闄 瀛樺叆鍏ㄥ眬鍙橀噺*/ del_authfree(freeauth_configure[j].name, &authfree_result); - #if 0 /*鐢ㄦ埛鎬佷笅鍙戝埌鍐呮牳鎬乤uth_hook */ int r = -1; @@ -646,7 +722,8 @@ ret_code freeauth_config_del_proc(uint source, uint config_type, /*鍒涘缓json瀵硅薄 */ res = cJSON_CreateObject(); - if(!res) { + if(!res) + { return RET_ERR; } @@ -656,12 +733,14 @@ ret_code freeauth_config_del_proc(uint source, uint config_type, ret_char = cJSON_PrintUnformatted(res); ret_int = strlen(ret_char); - if(output_len) { + if(output_len) + { *output_len = ret_int; } /*瓒呭嚭2k鐨勫唴瀛橈紝鎶ラ敊 */ - if(ret_int >= 1024 * 2) { + if(ret_int >= 1024 * 2) + { free(ret_char); cJSON_Delete(res); return RET_NOMEM; @@ -670,15 +749,15 @@ ret_code freeauth_config_del_proc(uint source, uint config_type, memcpy(output, ret_char, ret_int + 1); free(ret_char); - cJSON_Delete(res); + cJSON_Delete(res); } - } + } } - + if(freeauth_configure) { free(freeauth_configure); } - + return RET_OK; } diff --git a/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c b/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c index 58811e2cc..4ce0b9fed 100644 --- a/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c +++ b/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c @@ -56,7 +56,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int } printf("寮濮嬭繛鎺ユ暟鎹簱\n"); - + /* 杩炴帴鏁版嵁搴 */ authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); @@ -70,7 +70,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(rule_priority bigint, name character(32), sip bigint, dip bigint, dport bigint, flag bigint)"); printf("%d \n", ret); - + #if 0 /*鏌ヨ鏁版嵁搴撴槸鍚﹀瓨鍦ㄨ鏉冮檺瑙勫垯*/ char *select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree` WHERE name = ?"; ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1, @@ -78,52 +78,55 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int if(NULL != ret_sql) { /*鐢ㄦ埛鍚嶅凡瀛樺湪*/ + printf("鐢ㄦ埛鍚嶅凡瀛樺湪"); disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); authfree_result->resultcode = RULE_EXISTED; authfree_result->message = get_sql_ret_message(authfree_result->resultcode); return; } else { - /* 鏍规嵁鎸囧畾淇℃伅鏌ヨ鏁版嵁搴撶殑鑾峰彇鐨勭粨鏋滅殑鏉$洰鏁 鏉$洰鏁板ぇ浜10 鍒欎笉鑳藉啀娣诲姞 */ - char *select_num = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`"; - ret = get_select_datebase_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_num, &num_sql, 6, - DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, - DB_DATA_STRING_TYPE, strlen(name) + 1, name, - DB_DATA_INT_TYPE, sizeof(sip), sip, - DB_DATA_INT_TYPE, sizeof(dip), dip, - DB_DATA_INT_TYPE, sizeof(dport), dport, - DB_DATA_INT_TYPE, sizeof(flag), flag); - printf("num_sql = %d \n", num_sql); - printf("ret = %d \n", ret); + } + #endif + + /* 鏍规嵁鎸囧畾淇℃伅鏌ヨ鏁版嵁搴撶殑鑾峰彇鐨勭粨鏋滅殑鏉$洰鏁 鏉$洰鏁板ぇ浜10 鍒欎笉鑳藉啀娣诲姞 */ + char *select_num = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`"; + ret = get_select_datebase_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_num, &num_sql, 6, + DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, + DB_DATA_STRING_TYPE, strlen(name) + 1, name, + DB_DATA_INT_TYPE, sizeof(sip), sip, + DB_DATA_INT_TYPE, sizeof(dip), dip, + DB_DATA_INT_TYPE, sizeof(dport), dport, + DB_DATA_INT_TYPE, sizeof(flag), flag); + printf("num_sql = %d \n", num_sql); + printf("ret = %d \n", ret); - if(num_sql > RULE_MAX_NUM) { - /*娣诲姞澶辫触*/ - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 - authfree_result->resultcode = RULE_ID_MAX; - authfree_result->message = get_sql_ret_message(authfree_result->resultcode); - return; - } + if(num_sql > RULE_MAX_NUM) { + /*娣诲姞澶辫触*/ + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 + authfree_result->resultcode = RULE_ID_MAX; + authfree_result->message = get_sql_ret_message(authfree_result->resultcode); + return; + } - /* 鍚慳uthfree琛ㄤ腑娣诲姞锛氭湭璁よ瘉鏉冮檺鍚嶇О銆佸唴閮ㄦ簮IP鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 */ - char *addfree_sql = "INSERT INTO `authfree` SET rule_priority = ?, name = ?, sip = ?, dip = ?, dport = ?, flag = ?"; - ret_add = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_INSERT, AUTHFREE_TABLE, addfree_sql, 6, + /* 鍚慳uthfree琛ㄤ腑娣诲姞锛氭湭璁よ瘉鏉冮檺鍚嶇О銆佸唴閮ㄦ簮IP鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 */ + char *addfree_sql = "INSERT INTO `authfree` SET rule_priority = ?, name = ?, sip = ?, dip = ?, dport = ?, flag = ?"; + ret_add = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_INSERT, AUTHFREE_TABLE, addfree_sql, 6, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_STRING_TYPE, strlen(name) + 1, name, DB_DATA_INT_TYPE, sizeof(sip), sip, DB_DATA_INT_TYPE, sizeof(dip), dip, DB_DATA_INT_TYPE, sizeof(dport), dport, DB_DATA_INT_TYPE, sizeof(flag), flag); - printf("the value of ret:%d\n", ret_add); + printf("the value of ret:%d\n", ret_add); - if(0 != ret_add) { - /*娣诲姞澶辫触*/ - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 - authfree_result->resultcode = ADD_RULE_ERR; - authfree_result->message = get_sql_ret_message(authfree_result->resultcode); - return; + if(0 != ret_add) { + /*娣诲姞澶辫触*/ + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 + authfree_result->resultcode = ADD_RULE_ERR; + authfree_result->message = get_sql_ret_message(authfree_result->resultcode); + return; } - } - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); /*瀛樻湭璁よ瘉鏉冮檺鏁版暟缁*/ for(i = 0; i < RULE_MAX_NUM; i++) { @@ -147,11 +150,20 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int } } + + /*鎵撳嵃鏁扮粍鍐呭叏閮ㄥ厓绱*/ + for(i = 0; i < RULE_MAX_NUM; i++) + { + printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip, + freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i); + } + /*娣诲姞鎴愬姛*/ authfree_result->resultcode = ADD_RULE_OK; authfree_result->message = get_sql_ret_message(authfree_result->resultcode); } + /*淇敼鏈璇佹潈闄*/ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result) { @@ -181,6 +193,7 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); printf("%d \n", ret); + #if 0 /*鏌ヨ鏁版嵁搴撴槸鍚﹀瓨鍦ㄨ鏉冮檺瑙勫垯*/ char *select_sql = "SELECT name, sip, dip, dport FROM `authfree`WHERE name = ?"; ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1, @@ -193,27 +206,29 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int authfree_result->message = get_sql_ret_message(authfree_result->resultcode); return; } else { - /*淇敼authfree琛ㄤ腑鍐呴儴婧怚P鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 鏈璇佹潈闄愬悕绉颁笉鑳戒慨鏀 */ - char *modfree_sql = "UPDATE `authfree` SET rule_priority = ?, sip = ?, dip = ?, dport = ? ,flag = ? WHERE name = ?"; - ret_mod = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_UPDATE, AUTHFREE_TABLE, modfree_sql, 6, + } + #endif + + /*淇敼authfree琛ㄤ腑鍐呴儴婧怚P鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 鏈璇佹潈闄愬悕绉颁笉鑳戒慨鏀 */ + char *modfree_sql = "UPDATE `authfree` SET rule_priority = ?, sip = ?, dip = ?, dport = ? ,flag = ? WHERE name = ?"; + ret_mod = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_UPDATE, AUTHFREE_TABLE, modfree_sql, 6, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_INT_TYPE, sizeof(sip), sip, DB_DATA_INT_TYPE, sizeof(dip), dip, DB_DATA_INT_TYPE, sizeof(dport), dport, DB_DATA_INT_TYPE, sizeof(flag), flag, DB_DATA_STRING_TYPE, strlen(name) + 1, name); - printf("the value of ret:%d\n", ret_mod); + printf("the value of ret:%d\n", ret_mod); - if(0 != ret_mod) { - /*淇敼澶辫触*/ - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 - authfree_result->resultcode = MOD_RULE_ERR; - authfree_result->message = get_sql_ret_message(authfree_result->resultcode); - return; - } + if(0 != ret_mod) { + /*淇敼澶辫触*/ + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 + authfree_result->resultcode = MOD_RULE_ERR; + authfree_result->message = get_sql_ret_message(authfree_result->resultcode); + return; } - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); /*淇敼瀵瑰簲鏈璇佹潈闄愭暟鏁扮粍*/ for(i = 0; i < RULE_MAX_NUM; i++) { @@ -231,15 +246,13 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int } } -#if 0 - /*鎵撳嵃鏁扮粍鍐呭叏閮ㄥ厓绱*/ - for(i = 0; i < RULE_MAX_NUM; i++) { - printf("%s %d %d %d %d\n", freeauth_array[i].name, freeauth_array[i].sip, freeauth_array[i].dip, freeauth_array[i].dport, i); + for(i = 0; i < RULE_MAX_NUM; i++) + { + printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip, + freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i); } -#endif - /*淇敼鎴愬姛*/ authfree_result->resultcode = MOD_RULE_OK; authfree_result->message = get_sql_ret_message(authfree_result->resultcode); @@ -275,32 +288,38 @@ void del_authfree(char *name, authfree_result_t *authfree_result) ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); printf("%d \n", ret); + + #if 0 /*鏌ヨ鏁版嵁搴撴槸鍚﹀瓨鍦ㄨ鏉冮檺瑙勫垯*/ char *select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`WHERE name = ?"; ret_sql = select_datebase_by_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_sql, 1, 0, &num, 1, DB_DATA_STRING_TYPE, strlen(name) + 1, name); - + + if(NULL == ret_sql) { /*鏈璇佹潈闄愮敤鎴峰悕涓嶅瓨鍦*/ authfree_result->resultcode = RULE_NOT_FOUNT; authfree_result->message = get_sql_ret_message(authfree_result->resultcode); return; } else { - /*鍒犻櫎authfree琛ㄤ腑鏈璇佹潈闄愬悕绉般佸唴閮ㄦ簮IP鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 */ - char *delfree_sql = "DELETE FROM authfree WHERE name = ?"; - int ret_del = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1, - DB_DATA_STRING_TYPE, strlen(name) + 1, name); - printf("the value of ret:%d\n", ret_del); - if(0 != ret_del) { - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 - authfree_result->resultcode = DEL_RULE_ERR; /*鍒犻櫎澶辫触*/ - authfree_result->message = get_sql_ret_message(authfree_result->resultcode); - return; - } + } + #endif + + /*鍒犻櫎authfree琛ㄤ腑鏈璇佹潈闄愬悕绉般佸唴閮ㄦ簮IP鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 */ + char *delfree_sql = "DELETE FROM authfree WHERE name = ?"; + ret_del = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1, + DB_DATA_STRING_TYPE, strlen(name) + 1, name); + printf("the value of ret:%d\n", ret_del); + + if(0 != ret_del) { + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); // ret_release璁板綍鏃ュ織 + authfree_result->resultcode = DEL_RULE_ERR; /*鍒犻櫎澶辫触*/ + authfree_result->message = get_sql_ret_message(authfree_result->resultcode); + return; } - disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); + //disconnect_database(AUTHFREE_DATABASE_ID, authfree_hdbc); /*淇敼瀵瑰簲鏈璇佹潈闄愭暟鏁扮粍*/ for(i = 0; i < RULE_MAX_NUM; i++) { @@ -314,17 +333,9 @@ void del_authfree(char *name, authfree_result_t *authfree_result) } } -#if 0 - - /*鎵撳嵃鏁扮粍鍐呭叏閮ㄥ厓绱*/ - for(i = 0; i < RULE_MAX_NUM; i++) { - printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip, - freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i); - } - -#endif /*鍒犻櫎鎴愬姛*/ authfree_result->resultcode = DEL_RUL_OK; - authfree_result->message = get_sql_ret_message(authfree_result->resultcode); -} \ No newline at end of file + authfree_result->message = get_sql_ret_message(authfree_result->resultcode); +} + diff --git a/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c b/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c index 2c0574f8d..be2138df9 100644 --- a/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c +++ b/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c @@ -14,11 +14,12 @@ extern auth_parameters_t *auth_para; -char * mes[]={"ADDSUCCESS", "ADDFAILURE"}; +char * mes[]={"mod success", "mod failure"}; /*鍓嶇type绫诲瀷鍙湁淇敼锛屼慨鏀规暟鎹簱涓殑鍐呭锛岃繑鍥炲间负code message鈥斺斾慨鏀规垚鍔 淇敼澶辫触*/ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int aging_time, configure_result_t *configure_result) { + authparInit(); void * authpara_hdbc; char * ret_sql = NULL; int ret; @@ -55,7 +56,7 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag configure_result->message = mes[configure_result->resultcode]; return; } - + char *user_authpara = "UPDATE `authparas` SET port = ?, timehorizon = ?, failcount = ?, locktime = ?, aging_time = ?"; ret = update_database(AUTHPARA_DATABASE_ID, authpara_hdbc, DB_OP_UPDATE, AUTHPARA_TABLE, user_authpara, 5, @@ -67,21 +68,21 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag printf("the value of ret:%d\n", ret); if(0 != ret) { - disconnect_database(AUTHPARA_DATABASE_ID , authpara_hdbc); // ret_release璁板綍鏃ュ織 + //disconnect_database(AUTHPARA_DATABASE_ID , authpara_hdbc); // ret_release璁板綍鏃ュ織 configure_result->resultcode = 1; configure_result->message = mes[configure_result->resultcode]; return; } - disconnect_database(AUTHPARA_DATABASE_ID , authpara_hdbc); - + //disconnect_database(AUTHPARA_DATABASE_ID , authpara_hdbc); + /*瀛樺叏灞鍙橀噺*/ auth_para->port = port; auth_para->timehorizon = timehorizon; auth_para->failcount = failcount; auth_para->locktime = locktime; auth_para->aging_time = aging_time; - + configure_result->resultcode = 0; configure_result->message = mes[configure_result->resultcode]; return; From 878377d04e0eba866a6503606640d0e8523e5edf Mon Sep 17 00:00:00 2001 From: zhanglianghy Date: Tue, 27 Aug 2019 11:36:32 +0800 Subject: [PATCH 04/15] =?UTF-8?q?MOD=20aaa-12=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BCjson=E6=A0=BC=E5=BC=8F=20SOL=20=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E=E5=80=BCjson=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Azhangliang=20?= =?UTF-8?q?=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9Azhangliang?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/configm/config-server/configserver.c | 69 ++++++++++++++----- .../configm/config-server/include/configm.h | 13 +++- .../netconfig/ipconfig/ipconfig.c | 46 +++++-------- 3 files changed, 80 insertions(+), 48 deletions(-) diff --git a/Platform/user/configm/config-server/configserver.c b/Platform/user/configm/config-server/configserver.c index 7f61fa601..ac1b14ed0 100644 --- a/Platform/user/configm/config-server/configserver.c +++ b/Platform/user/configm/config-server/configserver.c @@ -9,40 +9,73 @@ #include "rpc.h" #include "configm.h" - config_service_t g_config_service[] = CONFIG_SERVICE_ARRAY; config_init_t g_config_init[] = CONFIG_INIT_ARRAY; -void test_big_data(rpc_conn *conn, pointer input, int input_len, void* data) { - char buf[input_len]; - memcpy(buf, input, input_len); - buf[input_len] = '\0'; - printf("get data is %s\n", buf); - //sleep(15); - rpc_return_null(conn); +int cm_format_data(ret_code ret_code, cJSON *item_obj, char *output) +{ + int str_len = 0; + char *ret_char = NULL; + config_result_t tem_buff = {0}; + config_result_t *config_ret = &tem_buff; + + + snprintf(config_ret->resultCode, RET_CODE_LEN - 1, "%d", ret_code); + config_ret->message = (char *)rpc_code_format(ret_code); + + s2j_create_json_obj(json_obj); + if(json_obj == NULL) + { + return 0; + } + + s2j_json_set_basic_element(json_obj, config_ret, string, resultCode); + s2j_json_set_basic_element(json_obj, config_ret, string, message); + + cJSON_AddItemToObject(json_obj, "data", item_obj); + + ret_char = cJSON_PrintUnformatted(json_obj); + str_len = strlen(ret_char); + + strncpy(output, ret_char, CM_BUFF_SIZE - 1); + + rpc_free(ret_char); + cJSON_Delete(json_obj); + + return (str_len + 1); } + void cm_return(rpc_conn *conn, ret_code err_code, char* err_message) { - cJSON *res; char *ret_char = NULL; + char *null_str = ""; + config_result_t tem_buff = {0}; + config_result_t *config_ret = &tem_buff; rpc_log_dbg("error %d:%s\n", err_code, err_message); - - res = cJSON_CreateObject(); - if(res == NULL) + + snprintf(config_ret->resultCode, RET_CODE_LEN - 1, "%d", err_code); + config_ret->message = (char *)rpc_code_format(err_code); + config_ret->data = null_str; + + s2j_create_json_obj(json_obj); + if(json_obj == NULL) { return; } - - cJSON_AddNumberToObject(res, "error", err_code); - ret_char = cJSON_PrintUnformatted(res); - - cJSON_Delete(res); + + s2j_json_set_basic_element(json_obj, config_ret, string, resultCode); + s2j_json_set_basic_element(json_obj, config_ret, string, message); + s2j_json_set_basic_element(json_obj, config_ret, string, data); + + ret_char = cJSON_PrintUnformatted(json_obj); rpc_return(conn, ret_char, strlen(ret_char)+1); + rpc_free(ret_char); - + cJSON_Delete(json_obj); + return; } diff --git a/Platform/user/configm/config-server/include/configm.h b/Platform/user/configm/config-server/include/configm.h index 3662e0878..f46fa35e8 100755 --- a/Platform/user/configm/config-server/include/configm.h +++ b/Platform/user/configm/config-server/include/configm.h @@ -13,7 +13,8 @@ #include "../web_config/auth_parameters.h" #include "natconfig.h" - +#define RET_CODE_LEN 16 +#define RET_MSG_LEN 128 #define CONFIG_INIT_ARRAY \ {\ @@ -224,5 +225,15 @@ struct _config_service { typedef struct _config_service config_service_t; +struct _config_result { + char resultCode[RET_CODE_LEN]; + char *message; + char *data; +}; + +typedef struct _config_result config_result_t; + +int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output); + #endif /* RPC_COMMON_H_ */ diff --git a/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c b/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c index 8132b8a85..83d2bcd70 100644 --- a/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c +++ b/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c @@ -83,9 +83,9 @@ ret_code ip_config_json_parse(pointer input, uint *conf_type, ip_config_t *confi } s2j_struct_get_basic_element(ip_config, json_obj, int, config_type); - S2J_STRUCT_GET_STRING_ELEMENT_N(ip_config, json_obj, ifname, INTERFACE_NAMSIZ); + s2j_struct_get_string_element(ip_config, json_obj, ifname, INTERFACE_NAMSIZ); s2j_struct_get_basic_element(ip_config, json_obj, int, family); - S2J_STRUCT_GET_STRING_ELEMENT_N(ip_config, json_obj, ipaddr, DOT_IP_STR); + s2j_struct_get_string_element(ip_config, json_obj, ipaddr, DOT_IP_STR); s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen); strncpy(config_buff->ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1); @@ -121,7 +121,7 @@ ret_code ip_config_json_parse_array(pointer input, uint *conf_type, rpc_log_info("json input:%s \n", cJSON_Print(json_obj)); - iCount = cJSON_GetArraySize(json_obj); /*获取数组长度*/ + iCount = cJSON_GetArraySize(json_obj); config_buff = rpc_new0(ip_config_t, iCount); conf_type = rpc_new0(uint, iCount); @@ -146,11 +146,11 @@ ret_code ip_config_json_parse_array(pointer input, uint *conf_type, { memset(ip_config, 0, sizeof(ip_config_string_t)); - s2j_struct_get_basic_element(ip_config, json_obj, int, config_type); - s2j_struct_get_basic_element(ip_config, json_obj, string, ifname); - s2j_struct_get_basic_element(ip_config, json_obj, int, family); - s2j_struct_get_basic_element(ip_config, json_obj, string, ipaddr); - s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen); + s2j_struct_get_basic_element(ip_config, pArrayItem, int, config_type); + s2j_struct_get_string_element(ip_config, pArrayItem, ifname, INTERFACE_NAMSIZ); + s2j_struct_get_basic_element(ip_config, pArrayItem, int, family); + s2j_struct_get_string_element(ip_config, pArrayItem, ipaddr, DOT_IP_STR); + s2j_struct_get_basic_element(ip_config, pArrayItem, int, prefixlen); strncpy(config_buff[*cnt].ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1); config_buff[*cnt].family = (uchar)ip_config->family; @@ -174,16 +174,14 @@ ret_code ip_config_format_json(ip_config_t *config_buff, { ip_config_string_t tem_buff = {0}; ip_config_string_t *ip_config = &tem_buff; - //cJSON *json_obj = NULL; char *json_ip; - ip_config->family = AF_INET; - ip_config->prefixlen = config_buff->prefixlen; + ip_config->family = AF_INET; + ip_config->prefixlen = config_buff->prefixlen; strncpy(ip_config->ifname, config_buff->ifname, INTERFACE_NAMSIZ - 1); strncpy(ip_config->ipaddr, inet_ntoa(config_buff->prefix), DOT_IP_STR - 1); - /* create Student JSON object */ s2j_create_json_obj(json_obj); if(json_obj == NULL) { @@ -194,25 +192,19 @@ ret_code ip_config_format_json(ip_config_t *config_buff, s2j_json_set_basic_element(json_obj, ip_config, int, family); s2j_json_set_basic_element(json_obj, ip_config, string, ipaddr); s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen); - - json_ip = cJSON_PrintUnformatted(json_obj); - *outlen = strlen(json_ip) + 1; - memcpy(output, json_ip, *outlen); - - free(json_ip); - cJSON_Delete(json_obj); + + *outlen = cm_format_data(RET_OK, json_obj, output); return RET_OK; } ret_code ip_config_format_json_array(ip_config_t *config_buff, - int count, pointer output, int *outlen) + int count, pointer output, + int *outlen) { ip_config_string_t tem_buff = {0}; ip_config_string_t *ip_config = &tem_buff; cJSON *json_array = NULL; - //cJSON *json_obj = NULL; - char *json_ip; int i; json_array = cJSON_CreateArray(); @@ -230,7 +222,6 @@ ret_code ip_config_format_json_array(ip_config_t *config_buff, strncpy(ip_config->ifname, config_buff[i].ifname, INTERFACE_NAMSIZ - 1); strncpy(ip_config->ipaddr, inet_ntoa(config_buff[i].prefix), DOT_IP_STR - 1); - /* create Student JSON object */ s2j_create_json_obj(json_obj); if(json_obj == NULL) { @@ -245,12 +236,9 @@ ret_code ip_config_format_json_array(ip_config_t *config_buff, s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen); } - json_ip = cJSON_PrintUnformatted(json_array); - *outlen = strlen(json_ip) + 1; - memcpy(output, json_ip, *outlen); - - free(json_ip); - cJSON_Delete(json_array); + + *outlen = cm_format_data(RET_OK, json_array, output); + return RET_OK; } From 465b421c663f94c17bb2f853bb49f8fc88a1c1a8 Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Tue, 27 Aug 2019 11:52:04 +0800 Subject: [PATCH 05/15] =?UTF-8?q?Mod=20aaa-12=20modify=20remote=20format?= =?UTF-8?q?=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9=E4=BA=BA?= =?UTF-8?q?=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/ulog/log-sched/log_remote.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Platform/user/ulog/log-sched/log_remote.c b/Platform/user/ulog/log-sched/log_remote.c index 7656f6c36..31da25c7e 100755 --- a/Platform/user/ulog/log-sched/log_remote.c +++ b/Platform/user/ulog/log-sched/log_remote.c @@ -247,7 +247,7 @@ static int del_remote_host(const log_remote_host_t *conf) strcat(prefix, "@"); }; char redirect[MAX_LINE_SZ]; - if (snprintf(redirect, sizeof(redirect), "%s@%s:%u:%s", + if (snprintf(redirect, sizeof(redirect), "%s@%s:%u;%s", prefix, conf->host, conf->port, rfc_tbl[conf->rfc].fmt) < 0) { ULOG_ERR(g_log, "Setting remote redirect[%s:%u:%s] is faulure", conf->host, conf->port, rfc_tbl[conf->rfc].fmt); return ret; From e939f5705bc7115472582cfcd4115a33861fe6f0 Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Tue, 27 Aug 2019 16:20:19 +0800 Subject: [PATCH 06/15] =?UTF-8?q?Mod=20aaa-12=20modify=20remote=20format?= =?UTF-8?q?=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9=E4=BA=BA?= =?UTF-8?q?=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/files/log/deal_logfiles.sh | 111 ++++++++++++++++++++++++++++++++ libs/files/log/rsyslog.conf | 64 ++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100755 libs/files/log/deal_logfiles.sh create mode 100755 libs/files/log/rsyslog.conf diff --git a/libs/files/log/deal_logfiles.sh b/libs/files/log/deal_logfiles.sh new file mode 100755 index 000000000..a2b04215c --- /dev/null +++ b/libs/files/log/deal_logfiles.sh @@ -0,0 +1,111 @@ +#!/bin/bash + +# 鏈剼鏈姛鑳斤細 +# 1. 浠巐ogrotate閰嶇疆鏂囦欢涓彇鍑烘棩蹇楁枃浠剁殑璺緞锛堟墍鏈夋棩蹇楁枃浠跺潎浠ogrotate閰嶇疆鏂囦欢涓涓琛屾寚绀虹殑璺緞涓哄墠缂锛夛紝 +# 2. 浠巐og_sched閰嶇疆鏂囦欢涓彇鍑烘棩蹇楁枃浠跺ぇ灏忎笂闄 +# 3. 璁$畻姝ラ1鎸囩ず鐨勬棩蹇楁枃浠剁殑鎬诲ぇ灏忥紝妫娴嬫棩蹇楁诲ぇ灏忔槸鍚﹁秴鍑轰笂闄愶紝鑻ヨ秴鍑哄垯鍒犻櫎鎵鏈夋棩蹇楁枃浠 + +function deal_logs () +{ + + # logrotate閰嶇疆鏂囦欢璺緞 + logrotate_log_file="/etc/logrotate.d/log-syslog" + + #log_sched閰嶇疆鏂囦欢璺緞 + log_sched_file="/etc/log-sched.conf" + + # 鏃ュ織鏂囦欢鍓嶇紑 + prefix= + + # 鏃ュ織澶у皬涓婇檺 + size_max=0 + + echo "**********************************************************" + echo " logrotate_cfg: $logrotate_log_file" + echo " log_sched_cfg: $log_sched_file" + echo "**********************************************************" + echo "" + + # logrotate閰嶇疆鏂囦欢鍒ょ┖ + if [ ! -e $logrotate_log_file ] ; then + return + fi + + # 浠巐ogrotate閰嶇疆鏂囦欢涓涓琛屾湁鏁堣涓鍙栧嚭鏃ュ織鏂囦欢鍓嶇紑 + while read line + do + if [ -z $line ] ; then + continue + fi + + prefix=$line; + echo "**********************************************************" + echo " get log-file-prefix: $prefix" + echo "**********************************************************" + echo "" + + break + done < $logrotate_log_file + + if [ -z $prefix ] ; then + echo "get log file failed" + return + fi + + + # log_sched閰嶇疆鏂囦欢鍒ょ┖ + if [ ! -e $log_sched_file ] ; then + return + fi + + #浠巐og_sched閰嶇疆鏂囦欢涓鍙栧嚭鏃ュ織澶у皬涓婇檺鍊 + while read line + do + tmpkey="file.max_size=" + + if [[ $line = *$tmpkey* ]] ; then + if [[ $line = $tmpkey ]] ; then + echo "size_max is empty, do nothing and return" + return + fi + + size_max=${line#$tmpkey} + echo "**********************************************************" + echo " get size_max: $size_max" + echo "**********************************************************" + echo "" + + break + fi + done < $log_sched_file + + + if [ $size_max -eq 0 ] ; then + echo "size_max is 0, do nothing and return" + return + fi + + #瀹氭湡妫鏌ユ棩蹇楁诲ぇ灏忔槸鍚﹁秴闄 + path=$prefix* + echo " get path: $path" + + folder_size=$(wc -c $path|grep total |awk '{print $1}') + if [ -z $folder_size ] ; then + folder_size=0 + fi + + echo "cursize: $folder_size" + echo "maxsize: $size_max" + + if [ $folder_size -gt $size_max ] ; then + echo "flush folder $path" + rm -rf $path + sync + fi +} + +deal_logs $@ + + + + diff --git a/libs/files/log/rsyslog.conf b/libs/files/log/rsyslog.conf new file mode 100755 index 000000000..30072be32 --- /dev/null +++ b/libs/files/log/rsyslog.conf @@ -0,0 +1,64 @@ +# /etc/rsyslog.conf Configuration file for rsyslog. +# +# For more information see +# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html +# +# Default logging rules can be found in /etc/rsyslog.d/50-default.conf + + +################# +#### MODULES #### +################# + +module(load="imuxsock") # provides support for local system logging +#module(load="immark") # provides --MARK-- message capability + +# provides UDP syslog reception +#module(load="imudp") +#input(type="imudp" port="514") + +# provides TCP syslog reception +#module(load="imtcp") +#input(type="imtcp" port="514") + +# provides kernel logging support and enable non-kernel klog messages +module(load="imklog" permitnonkernelfacility="on") + +########################### +#### GLOBAL DIRECTIVES #### +########################### + +# +# Use traditional timestamp format. +# To enable high precision timestamps, comment out the following line. +# + +template(name="RFC3164fmt" type="string" string="<%PRI%>%timestamp:::date-rfc3164% %hostname% %syslogtag%%msg%\n") +template(name="RFC5424fmt" type="string" string="<%PRI%>%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %structured-data% %msgid%%msg%\n") + + +$ActionFileDefaultTemplate RFC5424fmt + +# Filter duplicated messages +$RepeatedMsgReduction on + +# +# Set the default permissions for all log files. +# +$FileOwner syslog +$FileGroup adm +$FileCreateMode 0640 +$DirCreateMode 0755 +$Umask 0022 +$PrivDropToUser syslog +$PrivDropToGroup syslog + +# +# Where to place spool and state files +# +$WorkDirectory /var/spool/rsyslog + +# +# Include all config files in /etc/rsyslog.d/ +# +$IncludeConfig /etc/rsyslog.d/*.conf From 1d76282902773d0401ca5372437d6e88ad1b2c3e Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Tue, 27 Aug 2019 16:37:49 +0800 Subject: [PATCH 07/15] =?UTF-8?q?Mod=20aaa-12=20=20remove=20warning=20from?= =?UTF-8?q?=20log=5Fcommon.c=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/ulog/log-sched/log_common.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Platform/user/ulog/log-sched/log_common.c b/Platform/user/ulog/log-sched/log_common.c index 73064ae5f..b201e1718 100755 --- a/Platform/user/ulog/log-sched/log_common.c +++ b/Platform/user/ulog/log-sched/log_common.c @@ -7,6 +7,7 @@ #include "ulog.h" #include "log_common.h" #include "ulog_in.h" +#include "sev_sched.h" #define FILTER_CONTENT ":msg,contains,\""MODULE_FMT"\"\n" #define DEFAULT_CONFIG_FILE_TMP "/etc/log-sched.conf.tmp" From 7a22c7fc29ccea0c9287fc2204d231fe0d2713fc Mon Sep 17 00:00:00 2001 From: liangxia Date: Tue, 27 Aug 2019 16:45:48 +0800 Subject: [PATCH 08/15] =?UTF-8?q?Mod=20aaa-12=20=20=E9=9B=86=E4=B8=AD?= =?UTF-8?q?=E6=B6=88=E9=99=A4log=E7=9B=B8=E5=85=B3=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E7=9A=84warning=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Aliangxia=20=E6=A3=80?= =?UTF-8?q?=E8=A7=86=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config-server/log_config/log_config_cm.c | 2 ++ .../config-server/log_config/log_config_remote.c | 4 ++-- Platform/user/logging/cmd_file.c | 2 +- Platform/user/logging/cmd_remote.c | 4 ++-- Platform/user/logging/logging_common.c | 4 ++-- Platform/user/logging/logging_common.h | 14 +++++++------- Platform/user/ulog/log-sched/log_common.h | 2 +- Platform/user/ulog/log-sched/log_remote.c | 2 +- Platform/user/ulog/log-sched/sev_sched.c | 2 ++ 9 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Platform/user/configm/config-server/log_config/log_config_cm.c b/Platform/user/configm/config-server/log_config/log_config_cm.c index ca1487e8d..cad81f0d1 100755 --- a/Platform/user/configm/config-server/log_config/log_config_cm.c +++ b/Platform/user/configm/config-server/log_config/log_config_cm.c @@ -4,6 +4,8 @@ #include "rpc_server.h" #include "rpc_client.h" +int access(const char *pathname, int mode); + ret_code log_rpc_exec(char* service_name, char* method_name, pointer input, int input_len, int last_lenth) { if ((input == NULL) diff --git a/Platform/user/configm/config-server/log_config/log_config_remote.c b/Platform/user/configm/config-server/log_config/log_config_remote.c index e17d859fa..6ca945a44 100755 --- a/Platform/user/configm/config-server/log_config/log_config_remote.c +++ b/Platform/user/configm/config-server/log_config/log_config_remote.c @@ -147,7 +147,7 @@ ret_code log_remote_level_config_getall(uint source, /* *.=emerg;*.=alert;*.=crit;*.=err;*.=warn;*.=notice;*.=info @1.1.1.1:514:RFC3164fmt * *.=emerg;*.=alert;*.=crit;*.=err;*.=warn;*.=notice;*.=info @@1.1.1.2:514:RFC5424fmt */ -static ret_code cm_log_prase_host_from_str(const char *input_str, log_remote_host_x_t *ret_host) +static ret_code cm_log_prase_host_from_str(char *const input_str, log_remote_host_x_t *ret_host) { char *pos = NULL; char *pos2 = NULL; @@ -336,7 +336,7 @@ static ret_code cm_log_get_host_from_file_by_addr(const char *file_str, const ch while ((getline(&line, &n, fp)) != -1) { memset(tmp_str, 0, sizeof(tmp_str)); - snprintf(tmp_str, "@%s:", addr_str); + sprintf(tmp_str, "@%s:", addr_str); if (NULL == strstr(line, tmp_str)) { continue; diff --git a/Platform/user/logging/cmd_file.c b/Platform/user/logging/cmd_file.c index db879fb1a..ac5fb38fc 100755 --- a/Platform/user/logging/cmd_file.c +++ b/Platform/user/logging/cmd_file.c @@ -16,7 +16,7 @@ int conf_file(cJSON *json_obj, int argc, char **argv) log_file_t log_file_out = {0}; int level = LOG_INFO; uint config_type = CM_CONFIG_SET; - cJSON *json_output = NULL; + char *json_output = NULL; log_file.is_compress = LOG_UNCOMPRESS; diff --git a/Platform/user/logging/cmd_remote.c b/Platform/user/logging/cmd_remote.c index 276ac8c89..d4ecf602a 100755 --- a/Platform/user/logging/cmd_remote.c +++ b/Platform/user/logging/cmd_remote.c @@ -28,7 +28,7 @@ static log_rfc_t get_rfc_by_name(const char *name) static int conf_remote_by_config_id(cJSON *json_obj, const char *host, const u16 port, const log_rfc_t rfc, uint64 config_id) { log_remote_host_x_t remote = {0}; - cJSON *json_output = NULL; + char *json_output = NULL; int config_type = CM_CONFIG_SET; if (LOG_CONFIG_REMOTE_GET_HOST == config_id) @@ -141,7 +141,7 @@ int conf_remote_level(cJSON *json_obj, int argc, char **argv) log_remote_level_t log_level = {0}; log_remote_level_t log_level_out = {0}; uint config_type = CM_CONFIG_SET; - cJSON *json_output = NULL; + char*json_output = NULL; if (argc < 3) { ULOG_WARNING(g_log, "Not input log level"); diff --git a/Platform/user/logging/logging_common.c b/Platform/user/logging/logging_common.c index 6d5e76183..1dfd8a9bf 100755 --- a/Platform/user/logging/logging_common.c +++ b/Platform/user/logging/logging_common.c @@ -7,7 +7,7 @@ -int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, cJSON **json_output) +int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, char **json_output) { int ret = -1; char *output; @@ -48,7 +48,7 @@ int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, cJSON **js } -int logging_terminal_json_parse(pointer input, pointer config_buff, int conf_id) +int logging_terminal_json_parse(pointer input, pointer config_buff, uint64 conf_id) { cJSON *json_obj = NULL; diff --git a/Platform/user/logging/logging_common.h b/Platform/user/logging/logging_common.h index ea145c606..1054ef0f8 100755 --- a/Platform/user/logging/logging_common.h +++ b/Platform/user/logging/logging_common.h @@ -13,15 +13,15 @@ extern ulog_t *g_log; -int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, cJSON **json_output); -int logging_terminal_json_parse(pointer input, pointer config_buff, int conf_id); +int set_log_conf(uint config_type, cJSON *json_obj, uint64 config_id, char **json_output); +int logging_terminal_json_parse(pointer input, pointer config_buff, uint64 conf_id); #define CONF_TERMINAL(type, config_type, json_obj, str_level, on, module_name, conf_id) { \ type terminal = {0}; \ type terminal_out = {0}; \ int level; \ - cJSON *json_output = NULL; \ + char *json_output = NULL; \ \ if ((level = log_str_to_level(str_level)) < 0) { \ ULOG_WARNING(g_log, "Unknown log level:%s", str_level); \ @@ -49,12 +49,12 @@ int logging_terminal_json_parse(pointer input, pointer config_buff, int conf_id) if (logging_terminal_json_parse(json_output, &terminal_out, conf_id) == 0) { \ if (LOG_ON == terminal_out.on) { \ ULOG_DEBUG(g_log, "Log %s get: level=%u, module=%s", \ - (conf_id == LOG_CONFIG_CONSOLE)?"console":"monitor", \ + (conf_id == LOG_CONFIG_CONSOLE)?"console":"monitor", \ terminal_out.level, \ - terminal_out.module); \ + terminal_out.module); \ } else { \ ULOG_DEBUG(g_log, "Log %s get: off", \ - (conf_id == LOG_CONFIG_CONSOLE)?"console":"monitor"); \ + (conf_id == LOG_CONFIG_CONSOLE)?"console":"monitor"); \ } \ } \ } \ @@ -64,7 +64,7 @@ int logging_terminal_json_parse(pointer input, pointer config_buff, int conf_id) #define CMD_PARSE_AND_CONFIG_TERMINAL(type, json_obj, argc, argv, conf_id) { \ log_sw_t on = LOG_ON; \ - char *str_level = DEFAULT_LOG_LEVEL; \ + char *str_level = DEFAULT_LOG_LEVEL; \ uint config_type = CM_CONFIG_SET; \ \ if (argc >= 3) { \ diff --git a/Platform/user/ulog/log-sched/log_common.h b/Platform/user/ulog/log-sched/log_common.h index a87e4a0e6..8f92a9cd0 100755 --- a/Platform/user/ulog/log-sched/log_common.h +++ b/Platform/user/ulog/log-sched/log_common.h @@ -15,7 +15,7 @@ #define REDIRECT_SEPERATE " " -typedef int (*rpc_cb)(pointer *input, const void *arg, char *str_err, int str_len); +typedef int (*rpc_cb)(pointer input, const void *arg, char *str_err, int str_len); extern ulog_t *g_log; extern FILE *g_conf_fp; diff --git a/Platform/user/ulog/log-sched/log_remote.c b/Platform/user/ulog/log-sched/log_remote.c index 31da25c7e..b9ceb935a 100755 --- a/Platform/user/ulog/log-sched/log_remote.c +++ b/Platform/user/ulog/log-sched/log_remote.c @@ -347,7 +347,7 @@ static int __rpc_conf_log_remote(pointer input, const void *arg, char *str_err, log_op_t op; memcpy(&op, arg, sizeof(op)); - int ret = config_log_remote_host(op, (const log_remote_level_t *)input); + int ret = config_log_remote_host(op, (const log_remote_host_t *)input); if (ret < 0) { strncpy(str_err, "Configuring remote of log is faiure", str_len); } diff --git a/Platform/user/ulog/log-sched/sev_sched.c b/Platform/user/ulog/log-sched/sev_sched.c index 6847553c6..63db2589d 100755 --- a/Platform/user/ulog/log-sched/sev_sched.c +++ b/Platform/user/ulog/log-sched/sev_sched.c @@ -5,6 +5,8 @@ #include "log_common.h" #include "ulog_api.h" +#include + #define SEV_TIMEOUT 1 #define SEV_CMD "systemctl restart rsyslog" From 043330c7f27f923cc6a5335b558e5ff104fdd695 Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Tue, 27 Aug 2019 17:20:50 +0800 Subject: [PATCH 09/15] =?UTF-8?q?Mod=20aaa-12=20=20remove=20warning=20from?= =?UTF-8?q?=20trace=5Fapi=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/trace/trace-api/trace_api.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Platform/user/trace/trace-api/trace_api.c b/Platform/user/trace/trace-api/trace_api.c index 32a24e97d..1c9c216db 100755 --- a/Platform/user/trace/trace-api/trace_api.c +++ b/Platform/user/trace/trace-api/trace_api.c @@ -134,7 +134,7 @@ static int trace_recv_handle(struct pdelivnl_ctrl_data *ctrl, case TRACE_CFG_POLICY_REPLY: reply = (trace_reply_t *)NLMSG_DATA(n); if (sizeof(*reply) < (n->nlmsg_len - NLMSG_HDRLEN)) { - SYSLOG_WARN("The length of the reply message is required to be %u, but fact length is %u", + SYSLOG_WARN("The length of the reply message is required to be %d, but fact length is %u", sizeof(*reply), (n->nlmsg_len - NLMSG_HDRLEN)); break; } @@ -187,9 +187,9 @@ static trace_ret_t cfg_channel_send(const uint32_t seq, const trace_policy_t *p SYSLOG_DEBUG("Send hdr: is_reply:%d, seq:%u, ver:%u", req.hdr.is_reply, req.hdr.seq, req.hdr.ver); SYSLOG_DEBUG("Send policy:"); SYSLOG_DEBUG(" src family:%u, src ip:%02x, sport:%u", - req.policy.src.family, req.policy.src.addr.ip4, req.policy.sport); + req.policy.src.family, req.policy.src.addr.ip4.s_addr, req.policy.sport); SYSLOG_DEBUG(" dst family:%u, dst ip:%02x, dport:%u", - req.policy.dst.family, req.policy.dst.addr.ip4, req.policy.dport); + req.policy.dst.family, req.policy.dst.addr.ip4.s_addr, req.policy.dport); SYSLOG_DEBUG(" protocol:%u, app_type:%u", req.policy.protocol, req.policy.app_type); /*鍙戦佺粍瑁呭ソ鐨刵etlink娑堟伅*/ From d01d8d1e1960ae160235c3e6930c3455a23e2363 Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Tue, 27 Aug 2019 17:28:38 +0800 Subject: [PATCH 10/15] =?UTF-8?q?Mod=20aaa-12=20=20remove=20warning=20from?= =?UTF-8?q?=20trace=5Fapi=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/trace/trace-api/trace_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Platform/user/trace/trace-api/trace_api.c b/Platform/user/trace/trace-api/trace_api.c index 1c9c216db..6a64c31ba 100755 --- a/Platform/user/trace/trace-api/trace_api.c +++ b/Platform/user/trace/trace-api/trace_api.c @@ -134,7 +134,7 @@ static int trace_recv_handle(struct pdelivnl_ctrl_data *ctrl, case TRACE_CFG_POLICY_REPLY: reply = (trace_reply_t *)NLMSG_DATA(n); if (sizeof(*reply) < (n->nlmsg_len - NLMSG_HDRLEN)) { - SYSLOG_WARN("The length of the reply message is required to be %d, but fact length is %u", + SYSLOG_WARN("The length of the reply message is required to be %u, but fact length is %lu", sizeof(*reply), (n->nlmsg_len - NLMSG_HDRLEN)); break; } From d3bc2158c5d8bc835719350ce885b130f486e627 Mon Sep 17 00:00:00 2001 From: zhangtaohz Date: Tue, 27 Aug 2019 17:31:28 +0800 Subject: [PATCH 11/15] =?UTF-8?q?Mod=20aaa-12=20=20remove=20warning=20from?= =?UTF-8?q?=20trace=5Fapi=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Azhangtao=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Platform/user/trace/trace-api/trace_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Platform/user/trace/trace-api/trace_api.c b/Platform/user/trace/trace-api/trace_api.c index 6a64c31ba..52fe85ddf 100755 --- a/Platform/user/trace/trace-api/trace_api.c +++ b/Platform/user/trace/trace-api/trace_api.c @@ -134,7 +134,7 @@ static int trace_recv_handle(struct pdelivnl_ctrl_data *ctrl, case TRACE_CFG_POLICY_REPLY: reply = (trace_reply_t *)NLMSG_DATA(n); if (sizeof(*reply) < (n->nlmsg_len - NLMSG_HDRLEN)) { - SYSLOG_WARN("The length of the reply message is required to be %u, but fact length is %lu", + SYSLOG_WARN("The length of the reply message is required to be %ld, but fact length is %u", sizeof(*reply), (n->nlmsg_len - NLMSG_HDRLEN)); break; } From efc55b65600a9bf37b823903de2a0c7cb72156e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=98=95?= Date: Tue, 27 Aug 2019 17:44:34 +0800 Subject: [PATCH 12/15] =?UTF-8?q?Mod=20=20aaa-12=20=E6=9B=B4=E6=96=B0CMake?= =?UTF-8?q?=E4=BA=A4=E5=8F=89=E7=BC=96=E8=AF=91=E9=85=8D=E7=BD=AE=20RCA?= =?UTF-8?q?=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9A?= =?UTF-8?q?huangxin=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9Ahuangxin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patchs/cJSON/CMakeLists.txt | 51 ++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/patchs/cJSON/CMakeLists.txt b/patchs/cJSON/CMakeLists.txt index 43f73fb93..aeceab5e4 100644 --- a/patchs/cJSON/CMakeLists.txt +++ b/patchs/cJSON/CMakeLists.txt @@ -12,30 +12,33 @@ set(CJSON_VERSION_SO 1) set(CJSON_UTILS_VERSION_SO 1) set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") -if(PLAT_ARM64) - # this one is important - SET(CMAKE_SYSTEM_NAME Linux) - #this one not so much - SET(CMAKE_SYSTEM_VERSION 1) - - # specify the cross compiler - SET(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) - SET(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) - SET(CMAKE_STRIP aarch64-fsl-linux-strip) - - # specify the cross compile and link flags - # set(CMAKE_C_FLAGS "--sysroot=$ENV{SDKTARGETSYSROOT}") - # set(CMAKE_SHARED_LINKER_FLAGS "--sysroot=$ENV{SDKTARGETSYSROOT}") - - # where is the target environment - SET(CMAKE_FIND_ROOT_PATH ${SDKTARGETSYSROOT}) - - # search for programs in the build host directories - SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - # for libraries and headers in the target directories - SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() +if(PLAT_ARM64) + # this one is important + SET(CMAKE_SYSTEM_NAME Linux) + #this one not so much + SET(CMAKE_SYSTEM_VERSION 1) + # this is install root directory + SET(CMAKE_INSTALL_PREFIX /usr) + + # specify the cross compiler + SET(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) + SET(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) + SET(CMAKE_STRIP aarch64-linux-gnu-strip) + + # specify the cross compile and link flags + set(CMAKE_C_FLAGS "--sysroot=$ENV{SDKTARGETSYSROOT}") + set(CMAKE_SHARED_LINKER_FLAGS "--sysroot=$ENV{SDKTARGETSYSROOT}") + SET(CMAKE_LIBRARY_PATH $ENV{SDKTARGETSYSROOT}/usr/lib) + + # where is the target environment + SET(CMAKE_FIND_ROOT_PATH ${SDKTARGETSYSROOT}) + + # search for programs in the build host directories + SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + # for libraries and headers in the target directories + SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() set(custom_compiler_flags) From 48d6b17da27627c50bd524630d092f5687ba685f Mon Sep 17 00:00:00 2001 From: ChenLing Date: Tue, 27 Aug 2019 18:36:49 +0800 Subject: [PATCH 13/15] =?UTF-8?q?Mod=20=20aaa-12=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AE=A4=E8=AF=81=E9=85=8D=E7=BD=AE=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E3=80=81=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=20RCA=EF=BC=9A=20RCA=EF=BC=9A=20SOL=EF=BC=9A?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Achenling=20=E6=A3=80?= =?UTF-8?q?=E8=A7=86=E4=BA=BA=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/config_manager.h | 5 +- Platform/build/user.configm.Makefile | 2 +- .../configm/config-server/include/configm.h | 534 +++++++++--------- .../web_config/auth_recover_config.c | 321 +++++++++++ .../web_config/auth_recover_config.h | 41 ++ .../web_config/config-adm/user_authfree.c | 47 +- .../web_config/config-adm/user_authpara.c | 20 +- .../web_config/include/auth_common.h | 9 + .../web_config/include/user_authfree.h | 1 - .../web_config/include/user_authpara.h | 1 - 10 files changed, 686 insertions(+), 295 deletions(-) create mode 100644 Platform/user/configm/config-server/web_config/auth_recover_config.c create mode 100644 Platform/user/configm/config-server/web_config/auth_recover_config.h create mode 100644 Platform/user/configm/config-server/web_config/include/auth_common.h diff --git a/Common/config_manager.h b/Common/config_manager.h index dcbf0869e..c07b5c42f 100755 --- a/Common/config_manager.h +++ b/Common/config_manager.h @@ -45,8 +45,9 @@ #define USER_MANAGER_CONFIG_USER (uint64)((uint64)USER_MANAGER_CONFIG_MODULE<<32|2) #define USER_MANAGER_CONFIG_RECOVER (uint64)((uint64)USER_MANAGER_CONFIG_MODULE<<32|3) -#define AUTHFREE_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|1) -#define FREEPARAMETERS_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|2) +#define AUTHFREE_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|1) +#define FREEPARAMETERS_CONFIG (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|2) +#define AUTH_CONFIG_RECOVER (uint64)((uint64)LOCALAUTH_CONFIG_MODULE<<32|3) #define LOG_CONFIG_CONSOLE (uint64)((uint64)LOG_CONFIG_MODULE<<32|1) diff --git a/Platform/build/user.configm.Makefile b/Platform/build/user.configm.Makefile index b38b6a0f8..cea8c2a28 100755 --- a/Platform/build/user.configm.Makefile +++ b/Platform/build/user.configm.Makefile @@ -33,7 +33,7 @@ COMMON_SRCS = configserver.c \ netconfig/bridge/libbridge/libbridge_if.c netconfig/bridge/libbridge/libbridge_init.c netconfig/bridge/libbridge/libbridge_devif.c\ web_config/config-adm/user_authpara.c \ web_config/config-adm/user_authfree.c \ - web_config/authfree.c web_config/auth_parameters.c\ + web_config/authfree.c web_config/auth_parameters.c web_config/auth_recover_config.c \ user_manager_config/user_recover_config.c user_manager_config/user_group_config.c user_manager_config/user_account_config.c user_manager_config/usermanager-server/array_index.c \ user_manager_config/usermanager-server/user_group.c user_manager_config/usermanager-server/user_mod.c user_manager_config/usermanager-server/user.c \ log_config/log_config_console.c log_config/log_config_init.c log_config/log_config_cm.c log_config/log_config_monitor.c log_config/log_config_remote.c log_config/log_config_file.c \ diff --git a/Platform/user/configm/config-server/include/configm.h b/Platform/user/configm/config-server/include/configm.h index 49c3913ac..e6c97eac7 100755 --- a/Platform/user/configm/config-server/include/configm.h +++ b/Platform/user/configm/config-server/include/configm.h @@ -1,262 +1,272 @@ -#ifndef CONFIGM_H_ -#define CONFIGM_H_ -#include "config_manager.h" -#include "s2j/s2j.h" -#include "../../../../common/rpc/rpc_common.h" -#include "../../../../../Common/commuapinl.h" -#include "../user_manager_config/user_group_config.h" -#include "../user_manager_config/user_account_config.h" -#include "../user_manager_config/user_recover_config.h" -#include "netconfig.h" -#include "log_config.h" -#include "../web_config/authfree.h" -#include "../web_config/auth_parameters.h" -#include "natconfig.h" -#include "vlan_config.h" - -#define RET_CODE_LEN 16 -#define RET_MSG_LEN 128 - -#define CONFIG_INIT_ARRAY \ -{\ - { \ - NETCONFIG_MODULE, \ - net_main \ - }, \ - { \ - LOG_CONFIG_MODULE, \ - log_config_init \ - }, \ - { \ - VLAN_CONFIG_MODULE, \ - vlan_config_init \ - } \ -} - -/* - 1銆侀厤缃甀D锛屽叏灞鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟 - 2銆侀厤缃簮妫鏌ワ紝鍏ㄥ眬鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟, - 浠庝綆浣嶅埌楂樹綅锛岀涓浣嶈〃绀篧EB锛屽悗缁厤缃墿灞 - 3銆佹槸鍚﹂厤缃仮澶 - 4銆佹槸鍚︽槸澶氬疄渚 - 5銆侀厤缃牎楠屽洖璋冨嚱鏁 - 6銆侀厤缃鐞嗘帴鍙 - 7銆侀厤缃幏鍙栨帴鍙 - 8銆侀厤缃叏閮ㄨ幏鍙栨帴鍙 -*/ -#define CONFIG_SERVICE_ARRAY \ -{ \ - {\ - IPCONFIG_V4, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - ip_config_chk, \ - ip_config_proc, \ - ip_config_get, \ - ip_config_get_all \ - },\ - {\ - BR_CONFIG, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - br_config_chk, \ - br_config_proc, \ - NULL, \ - NULL \ - },\ - {\ - BRIF_CONFIG, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - br_if_config_chk, \ - br_if_config_proc, \ - br_if_config_get, \ - br_if_config_get_all \ - },\ - {\ - BRFDB_CONFIG, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - br_fdb_config_chk, \ - NULL, \ - br_fdb_config_get, \ - NULL \ - },\ - {\ - USER_MANAGER_CONFIG_GROUP, \ - CONFIG_FROM_WEB, \ - FALSE, \ - usergroup_config_chk, \ - usergroup_config_proc, \ - usergroup_config_get, \ - usergroup_config_get_all \ - },\ - {\ - USER_MANAGER_CONFIG_RECOVER, \ - CONFIG_FROM_RECOVER1, \ - TRUE, \ - userecover_config_chk, \ - userecover_config_proc, \ - userecover_config_get, \ - userecover_config_get_all \ - },\ - { \ - AUTHFREE_CONFIG, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - freeauth_config_chk, \ - freeauth_config_proc, \ - NULL, \ - NULL \ - },\ - {\ - FREEPARAMETERS_CONFIG, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - authpara_config_chk, \ - authpara_config_proc, \ - NULL, \ - NULL \ - },\ - {\ - USER_MANAGER_CONFIG_USER, \ - CONFIG_FROM_WEB, \ - FALSE, \ - user_config_chk, \ - user_config_proc, \ - user_config_get, \ - user_config_get_all \ - },\ - {\ - LOG_CONFIG_CONSOLE, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_console_config_chk, \ - log_console_config_proc, \ - log_console_config_get, \ - log_console_config_getall \ - },\ - {\ - LOG_CONFIG_MONITOR, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_monitor_config_chk, \ - log_monitor_config_proc, \ - log_monitor_config_get, \ - log_monitor_config_getall \ - },\ - {\ - LOG_CONFIG_REMOTE_ADD_HOST, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_remote_host_config_chk, \ - log_remote_add_host_config_proc, \ - NULL, \ - NULL \ - },\ - {\ - LOG_CONFIG_REMOTE_DEL_HOST, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_remote_host_config_chk, \ - log_remote_del_host_config_proc, \ - NULL, \ - NULL \ - },\ - {\ - LOG_CONFIG_REMOTE_LEVEL, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_remote_level_config_chk, \ - log_remote_level_config_proc, \ - log_remote_level_config_get, \ - log_remote_level_config_getall \ - },\ - {\ - LOG_CONFIG_FILE, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_file_config_chk, \ - log_file_config_proc, \ - log_file_config_get, \ - log_file_config_getall \ - },\ - {\ - LOG_CONFIG_REMOTE_GET_HOST, \ - CONFIG_FROM_WEB, \ - FALSE, \ - log_remote_host_x_config_chk, \ - NULL, \ - log_remote_host_x_config_get, \ - log_remote_host_x_config_getall \ - },\ - {\ - NAT4_CONFIG, \ - CONFIG_FROM_WEB, \ - FALSE, \ - nat_config_chk, \ - nat_config_proc, \ - NULL, \ - nat_config_get_all \ - },\ - {\ - VLAN_CONFIG, \ - CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ - FALSE, \ - vlan_config_chk, \ - vlan_config_proc, \ - vlan_config_get, \ - vlan_config_get_all \ - }\ -} - -typedef ret_code (*cm_config_init)(); - -typedef ret_code (*cm_config_chk)(uint source, uint *config_type, - pointer input, int *input_len, - pointer output, int *output_len); - -typedef ret_code (*cm_config_proc)(uint source, uint config_type, - pointer input, int input_len, - pointer output, int *output_len); - -typedef ret_code (*cm_config_get)(uint source, - pointer input, int input_len, - pointer output, int *output_len); - -typedef ret_code (*cm_config_get_all)(uint source, - pointer output, int *output_len); - -/* 閰嶇疆娉ㄥ唽 */ -struct _config_init { - uint config_mudlue; - cm_config_init init_callback; -}; -typedef struct _config_init config_init_t; - - -/* 閰嶇疆娉ㄥ唽 */ -struct _config_service { - uint64 config_id; /* 閰嶇疆ID锛屽叏灞鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟*/ - uint config_src; /* 閰嶇疆婧愭鏌ワ紝鍏ㄥ眬鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟,浠庝綆浣嶅埌楂樹綅锛岀涓浣嶈〃绀簑eb锛屽悗缁厤缃墿灞 */ - boolean recovery; /* 閰嶇疆鎭㈠澶勭悊鍑芥暟锛屽鏋滀负FALSE鍒欎笉杩涜閰嶇疆鎭㈠ */ - cm_config_chk chk_callback; /* 閰嶇疆鏍¢獙鍥炶皟鍑芥暟 */ - cm_config_proc proc_callback; /* 閰嶇疆鎺ュ彛 */ - cm_config_get get_callback; /* 鑾峰彇閰嶇疆鎺ュ彛 */ - cm_config_get_all getall_callback; /* 鑾峰彇鎵鏈夐厤缃帴鍙 */ -}; - -typedef struct _config_service config_service_t; - -struct _config_result { - char resultCode[RET_CODE_LEN]; - char *message; - char *data; -}; - -typedef struct _config_result config_result_t; - -int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output); - -#endif /* RPC_COMMON_H_ */ - +#ifndef CONFIGM_H_ +#define CONFIGM_H_ +#include "config_manager.h" +#include "s2j/s2j.h" +#include "../../../../common/rpc/rpc_common.h" +#include "../../../../../Common/commuapinl.h" +#include "../user_manager_config/user_group_config.h" +#include "../user_manager_config/user_account_config.h" +#include "../user_manager_config/user_recover_config.h" +#include "netconfig.h" +#include "log_config.h" +#include "../web_config/authfree.h" +#include "../web_config/auth_parameters.h" +#include "../web_config/auth_recover_config.h" +#include "natconfig.h" +#include "vlan_config.h" + +#define RET_CODE_LEN 16 +#define RET_MSG_LEN 128 + +#define CONFIG_INIT_ARRAY \ +{\ + { \ + NETCONFIG_MODULE, \ + net_main \ + }, \ + { \ + LOG_CONFIG_MODULE, \ + log_config_init \ + }, \ + { \ + VLAN_CONFIG_MODULE, \ + vlan_config_init \ + } \ +} + +/* + 1銆侀厤缃甀D锛屽叏灞鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟 + 2銆侀厤缃簮妫鏌ワ紝鍏ㄥ眬鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟, + 浠庝綆浣嶅埌楂樹綅锛岀涓浣嶈〃绀篧EB锛屽悗缁厤缃墿灞 + 3銆佹槸鍚﹂厤缃仮澶 + 4銆佹槸鍚︽槸澶氬疄渚 + 5銆侀厤缃牎楠屽洖璋冨嚱鏁 + 6銆侀厤缃鐞嗘帴鍙 + 7銆侀厤缃幏鍙栨帴鍙 + 8銆侀厤缃叏閮ㄨ幏鍙栨帴鍙 +*/ +#define CONFIG_SERVICE_ARRAY \ +{ \ + {\ + IPCONFIG_V4, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + ip_config_chk, \ + ip_config_proc, \ + ip_config_get, \ + ip_config_get_all \ + },\ + {\ + BR_CONFIG, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + br_config_chk, \ + br_config_proc, \ + NULL, \ + NULL \ + },\ + {\ + BRIF_CONFIG, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + br_if_config_chk, \ + br_if_config_proc, \ + br_if_config_get, \ + br_if_config_get_all \ + },\ + {\ + BRFDB_CONFIG, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + br_fdb_config_chk, \ + NULL, \ + br_fdb_config_get, \ + NULL \ + },\ + {\ + USER_MANAGER_CONFIG_GROUP, \ + CONFIG_FROM_WEB, \ + FALSE, \ + usergroup_config_chk, \ + usergroup_config_proc, \ + usergroup_config_get, \ + usergroup_config_get_all \ + },\ + {\ + USER_MANAGER_CONFIG_RECOVER, \ + CONFIG_FROM_RECOVER1, \ + TRUE, \ + userecover_config_chk, \ + userecover_config_proc, \ + userecover_config_get, \ + userecover_config_get_all \ + },\ + { \ + AUTHFREE_CONFIG, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + freeauth_config_chk, \ + freeauth_config_proc, \ + NULL, \ + NULL \ + },\ + {\ + FREEPARAMETERS_CONFIG, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + authpara_config_chk, \ + authpara_config_proc, \ + NULL, \ + NULL \ + },\ + {\ + AUTH_CONFIG_RECOVER, \ + CONFIG_FROM_RECOVER1, \ + TRUE, \ + auth_recover_chk, \ + auth_recover_proc, \ + auth_recover_get, \ + auth_recover_get_all \ + },\ + {\ + USER_MANAGER_CONFIG_USER, \ + CONFIG_FROM_WEB, \ + FALSE, \ + user_config_chk, \ + user_config_proc, \ + user_config_get, \ + user_config_get_all \ + },\ + {\ + LOG_CONFIG_CONSOLE, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_console_config_chk, \ + log_console_config_proc, \ + log_console_config_get, \ + log_console_config_getall \ + },\ + {\ + LOG_CONFIG_MONITOR, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_monitor_config_chk, \ + log_monitor_config_proc, \ + log_monitor_config_get, \ + log_monitor_config_getall \ + },\ + {\ + LOG_CONFIG_REMOTE_ADD_HOST, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_remote_host_config_chk, \ + log_remote_add_host_config_proc, \ + NULL, \ + NULL \ + },\ + {\ + LOG_CONFIG_REMOTE_DEL_HOST, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_remote_host_config_chk, \ + log_remote_del_host_config_proc, \ + NULL, \ + NULL \ + },\ + {\ + LOG_CONFIG_REMOTE_LEVEL, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_remote_level_config_chk, \ + log_remote_level_config_proc, \ + log_remote_level_config_get, \ + log_remote_level_config_getall \ + },\ + {\ + LOG_CONFIG_FILE, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_file_config_chk, \ + log_file_config_proc, \ + log_file_config_get, \ + log_file_config_getall \ + },\ + {\ + LOG_CONFIG_REMOTE_GET_HOST, \ + CONFIG_FROM_WEB, \ + FALSE, \ + log_remote_host_x_config_chk, \ + NULL, \ + log_remote_host_x_config_get, \ + log_remote_host_x_config_getall \ + },\ + {\ + NAT4_CONFIG, \ + CONFIG_FROM_WEB, \ + FALSE, \ + nat_config_chk, \ + nat_config_proc, \ + NULL, \ + nat_config_get_all \ + },\ + {\ + VLAN_CONFIG, \ + CONFIG_FROM_WEB|CONFIG_FROM_NETOPEER, \ + FALSE, \ + vlan_config_chk, \ + vlan_config_proc, \ + vlan_config_get, \ + vlan_config_get_all \ + }\ +} + +typedef ret_code (*cm_config_init)(); + +typedef ret_code (*cm_config_chk)(uint source, uint *config_type, + pointer input, int *input_len, + pointer output, int *output_len); + +typedef ret_code (*cm_config_proc)(uint source, uint config_type, + pointer input, int input_len, + pointer output, int *output_len); + +typedef ret_code (*cm_config_get)(uint source, + pointer input, int input_len, + pointer output, int *output_len); + +typedef ret_code (*cm_config_get_all)(uint source, + pointer output, int *output_len); + +/* 閰嶇疆娉ㄥ唽 */ +struct _config_init { + uint config_mudlue; + cm_config_init init_callback; +}; +typedef struct _config_init config_init_t; + + +/* 閰嶇疆娉ㄥ唽 */ +struct _config_service { + uint64 config_id; /* 閰嶇疆ID锛屽叏灞鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟*/ + uint config_src; /* 閰嶇疆婧愭鏌ワ紝鍏ㄥ眬鍞竴锛岀敤浜庡鎵惧搴旂殑閰嶇疆涓氬姟,浠庝綆浣嶅埌楂樹綅锛岀涓浣嶈〃绀簑eb锛屽悗缁厤缃墿灞 */ + boolean recovery; /* 閰嶇疆鎭㈠澶勭悊鍑芥暟锛屽鏋滀负FALSE鍒欎笉杩涜閰嶇疆鎭㈠ */ + cm_config_chk chk_callback; /* 閰嶇疆鏍¢獙鍥炶皟鍑芥暟 */ + cm_config_proc proc_callback; /* 閰嶇疆鎺ュ彛 */ + cm_config_get get_callback; /* 鑾峰彇閰嶇疆鎺ュ彛 */ + cm_config_get_all getall_callback; /* 鑾峰彇鎵鏈夐厤缃帴鍙 */ +}; + +typedef struct _config_service config_service_t; + +struct _config_result { + char resultCode[RET_CODE_LEN]; + char *message; + char *data; +}; + +typedef struct _config_result config_result_t; + +int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output); + +#endif /* RPC_COMMON_H_ */ + diff --git a/Platform/user/configm/config-server/web_config/auth_recover_config.c b/Platform/user/configm/config-server/web_config/auth_recover_config.c new file mode 100644 index 000000000..53f147647 --- /dev/null +++ b/Platform/user/configm/config-server/web_config/auth_recover_config.c @@ -0,0 +1,321 @@ +#include "auth_recover_config.h" +#include +#include "../include/parsefile.h" +#include "../include/configm.h" +#include "rpc.h" +#include "s2j/s2j.h" +#include "commuapinl.h" +#include "../Platform/common/database/database.h" +#include "config_manager.h" +#include "authfree.h" +#include "auth_parameters.h" +#include "include/user_authfree.h" +#include "include/user_authpara.h" +#include "include/auth_common.h" + +void * auth_hdbc = NULL; //璁よ瘉鏁版嵁搴撹繛鎺ュ彞鏌 +extern freeauth_configure_t freeauth_array[]; +extern auth_parameters_t *auth_para; + + +/*鏁版嵁搴撻噸杩*/ +void db_connect() +{ + if(NULL == auth_hdbc) + { + auth_hdbc = connect_database(AUTHRECOVER_DATABASE_ID); + } +} + + +/* 鏌ヨ鏈璇佹潈闄愭仮澶 */ +void auth_getrule_db(char ** rule_db) +{ + int num = 0; + int size = 0; + char *ret_authrule = NULL; + + /*鏁版嵁搴撻噸杩*/ + db_connect(); + if(NULL == auth_hdbc) + { + return; + } + + char *select_sql = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`"; + ret_authrule = select_datebase_by_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", select_sql, 1, 0, &num, 0); + + if(0 == num || NULL == ret_authrule) + { + return; + } + + size = strlen(ret_authrule)+1; + char * point = (char*)malloc(size); + if(NULL == point) + { + return; + } + memset(point, 0, size); + memcpy(point, ret_authrule, size); + *rule_db = point; //鍦ㄥ嚱鏁板闈㈤噴鏀 + + return; +} + +/* 鏌ヨ璁よ瘉鍙傛暟鎭㈠ */ +void auth_getpara_db(char ** parameters_db) +{ + int num = 0; + int size = 0; + char *ret_parameters = NULL; + + /*鏁版嵁搴撻噸杩*/ + db_connect(); + if(NULL == auth_hdbc) + { + return; + } + + char *select_sql = "SELECT port, timehorizon, failcount, dip, locktime, aging_time FROM `authparas`"; + ret_parameters = select_datebase_by_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authparas", select_sql, 1, 0, &num, 0); + + if(0 == num || NULL == ret_parameters) + { + return; + } + + size = strlen(ret_parameters)+1; + char * point = (char*)malloc(size); + if(NULL == point) + { + return; + } + memset(point, 0, size); + memcpy(point, ret_parameters, size); + *parameters_db = point; //鍦ㄥ嚱鏁板闈㈤噴鏀 + + return; +} + + +ret_code auth_recover_chk(uint source, uint *config_type, + pointer input, int *input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + return ret; +} + +ret_code auth_recover_proc(uint source, uint config_type, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + return ret; +} + +ret_code auth_recover_get(uint source, + pointer input, int input_len, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + return ret; +} + +/*閰嶇疆鎭㈠鏈璇佹潈闄愩佽璇佸弬鏁*/ +ret_code auth_recover_get_all(uint source, + pointer output, int *output_len) +{ + ret_code ret = RET_OK; + char *rule_db = NULL; + char *parameters_db = NULL; + + if(CONFIG_FROM_RECOVER1 != source) + { + return ret; + } + + auth_hdbc = connect_database(AUTHRECOVER_DATABASE_ID); + + if(NULL == auth_hdbc) + { + return RET_SYSERR; + } + + /*鍒濆鍖栬璇佸弬鏁扮粨鏋勪綋鎸囬拡*/ + authparInit(); + + auth_getrule_db(&rule_db); + if(NULL != rule_db) + { + /*杈撳嚭鍙傛暟涓簀son瀛楃涓*/ + cJSON * cjson = cJSON_Parse(rule_db); + if(NULL == cjson) + { + free(rule_db); + ret = RET_ERR; + return ret; + } + + cJSON * data = cJSON_GetObjectItem(cjson, "data"); + if(NULL == data) + { + free(rule_db); + cJSON_Delete(cjson); + return RET_ERR; + } + + int mun_rule = cJSON_GetArraySize(data); + if(0 == mun_rule) + { + free(rule_db); + cJSON_Delete(cjson); + return RET_ERR; + } + + /*鍒涘缓freeauth_configure_t缁撴瀯浣撳璞 */ + s2j_create_struct_obj(freeauth_buff, freeauth_configure_t); + + if(freeauth_buff == NULL) { + cJSON_Delete(cjson); + return RET_NOMEM; + } + + for (int i = 0; i < mun_rule; i++) + { + cJSON *pArrayItem = cJSON_GetArrayItem(data, i); + + if(pArrayItem) { + /*鑾峰彇鏈璇佹潈闄愪紭鍏堢骇閿煎*/ + cJSON *rule_priority = cJSON_GetObjectItem(pArrayItem, "rule_priority"); + + if(rule_priority) { + freeauth_buff->rule_priority = rule_priority->valueint; + } + + /*鏈璇佹潈闄愬悕绉*/ + cJSON *name = cJSON_GetObjectItem(pArrayItem, "name"); + + if(name) { + strncpy(freeauth_buff->name, name->valuestring, 31); + } + + /*婧怚P鍦板潃*/ + cJSON *sip = cJSON_GetObjectItem(pArrayItem, "sip"); + + if(sip) { + freeauth_buff->sip = sip->valueint; + } + + /*鐩殑IP鍦板潃*/ + cJSON *dip = cJSON_GetObjectItem(pArrayItem, "dip"); + + if(dip) { + freeauth_buff->dip = dip->valueint; + } + + /*鐩殑绔彛鍙*/ + cJSON *dport = cJSON_GetObjectItem(pArrayItem, "dport"); + + if(dport) { + freeauth_buff->dport = dport->valueint; + } + + /*鐘舵佹爣蹇椾綅*/ + cJSON *flag = cJSON_GetObjectItem(pArrayItem, "flag"); + + if(flag) { + freeauth_buff->flag = flag->valueint; + } + + printf("freeauth_buff->name = %p %s\n", &freeauth_buff->name, freeauth_buff->name); + + /*鎶婃暟鎹簱鐨勫唴瀹硅鍑烘潵 鐒跺悗鍔犲埌鍏ㄥ眬鍙橀噺閲岃竟鍘*/ + for(i = 0; i < RULE_MAX_NUM; i++) { + printf("the name is :%s\n", freeauth_array[i].name); + /*涓や釜瀛楃涓茬浉绛 strcmp鍊间负0*/ + int a = strlen(freeauth_array[i].name); + printf("%d\n", a); + + if(0 == strlen(freeauth_array[i].name)) { + printf("%s(%d) freeauth_array[%d] = %p\n", __FUNCTION__, __LINE__, i, &freeauth_array[i]); + memset(&freeauth_array[i], 0, sizeof(freeauth_configure_t)); + freeauth_array[i].rule_priority = freeauth_buff->rule_priority; + strncpy(freeauth_array[i].name, freeauth_buff->name, 32); + freeauth_array[i].sip = freeauth_buff->sip; + freeauth_array[i].dip = freeauth_buff->dip; + freeauth_array[i].dport = freeauth_buff->dport; + freeauth_array[i].flag = freeauth_buff->flag; + printf("[%d %s %d %d %d %d %d]\n", freeauth_array[i].rule_priority, freeauth_array[i].name, freeauth_array[i].sip, + freeauth_array[i].dip, freeauth_array[i].dport, freeauth_array[i].dport, i); + break; + } + + } + + freeauth_buff++; + } + } + + s2j_delete_struct_obj(freeauth_buff); + free(rule_db); + + return RET_OK; + } + + + auth_getpara_db(¶meters_db); + if(NULL != parameters_db) + { + /*杈撳嚭鍙傛暟涓簀son瀛楃涓*/ + cJSON * cjson_para = cJSON_Parse(parameters_db); + if(NULL == cjson_para) + { + free(parameters_db); + ret = RET_ERR; + return ret; + } + + cJSON * data_para = cJSON_GetObjectItem(cjson_para, "data"); + if(NULL == data_para) + { + free(parameters_db); + cJSON_Delete(cjson_para); + return RET_ERR; + } + + /*鍒涘缓freeauth_configure_t缁撴瀯浣撳璞 */ + s2j_create_struct_obj(auth_parameters, auth_parameters_t); + + if(auth_parameters == NULL) { + cJSON_Delete(cjson_para); + return RET_NOMEM; + } + + /*鍙嶅簭鍒楀寲鏁版嵁鍒癴reeauth_configure_t缁撴瀯浣撳璞 */ + s2j_struct_get_basic_element(auth_parameters, data_para, int, port); + s2j_struct_get_basic_element(auth_parameters, data_para, int, timehorizon); + s2j_struct_get_basic_element(auth_parameters, data_para, int, failcount); + s2j_struct_get_basic_element(auth_parameters, data_para, int, locktime); + s2j_struct_get_basic_element(auth_parameters, data_para, int, aging_time); + + /*灏嗘暟鎹瓨鍏ュ叏灞缁撴瀯浣撴寚閽*/ + if(auth_para) { + auth_para->port = auth_parameters->port; + auth_para->timehorizon = auth_parameters->timehorizon; + auth_para->failcount = auth_parameters->failcount; + auth_para->locktime = auth_parameters->locktime; + auth_para->aging_time = auth_parameters->aging_time; + } + + s2j_delete_struct_obj(auth_parameters); + cJSON_Delete(cjson_para); + } + + return RET_OK; +} + + + + diff --git a/Platform/user/configm/config-server/web_config/auth_recover_config.h b/Platform/user/configm/config-server/web_config/auth_recover_config.h new file mode 100644 index 000000000..abef11537 --- /dev/null +++ b/Platform/user/configm/config-server/web_config/auth_recover_config.h @@ -0,0 +1,41 @@ +#ifndef AUTH_RECOVER_H_ +#define AUTH_RECOVER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "rpc_common.h" + +/*鏁版嵁搴撻噸杩*/ +void db_connect(); + +/* 鏌ヨ鏈璇佹潈闄愭仮澶 */ +void auth_getrule_db(char ** rule_db); + +/* 鏌ヨ璁よ瘉鍙傛暟鎭㈠ */ +void auth_getpara_db(char ** parameters_db); + +ret_code auth_recover_chk(uint source, uint *config_type, + pointer input, int *input_len, + pointer output, int *output_len); + +ret_code auth_recover_proc(uint source, uint config_type, + pointer input, int input_len, + pointer output, int *output_len); + +ret_code auth_recover_get(uint source, + pointer input, int input_len, + pointer output, int *output_len); + +/*閰嶇疆鎭㈠鏈璇佹潈闄愩佽璇佸弬鏁*/ +ret_code auth_recover_get_all(uint source, + pointer output, int *output_len); + + + +#endif \ No newline at end of file diff --git a/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c b/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c index 4ce0b9fed..dbc0e6842 100644 --- a/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c +++ b/Platform/user/configm/config-server/web_config/config-adm/user_authfree.c @@ -3,11 +3,10 @@ #include "../Platform/common/database/database.h" #include "../include/user_authfree.h" #include "string.h" - -#define AUTHFREE_DATABASE_ID (16) -#define AUTHFREE_TABLE "authfree" +#include "../include/auth_common.h" extern freeauth_configure_t freeauth_array[]; +extern void * auth_hdbc; static char *authfreemes[] = {"addrule success", "addrule fail", "rule existed", "modrule success", "modrule failure", "rule not found", "delrule success", "delrule fail", "rulenum exceed maxnum", @@ -37,7 +36,7 @@ static int is_rule_full(void) /*澧炲姞鏈璇佹潈闄愯鍒*/ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result) { - void *authfree_hdbc; + //void *authfree_hdbc; char *ret_sql = NULL; int ret_add; int ret; @@ -54,10 +53,9 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int authfree_result->message = get_sql_ret_message(authfree_result->resultcode); return; } - - printf("寮濮嬭繛鎺ユ暟鎹簱\n"); /* 杩炴帴鏁版嵁搴 */ + #if 0 authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); if(NULL == authfree_hdbc) { @@ -67,7 +65,10 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /*闀挎暣鍨媌igint 娴偣鍨媎ouble 瀛楃涓瞔haracter(10)*/ printf("authfree_hdbc = %p\n", authfree_hdbc); - ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(rule_priority bigint, name character(32), sip bigint, dip bigint, dport bigint, flag bigint)"); + #endif + + /*寤鸿〃*/ + ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", "create table authfree(rule_priority bigint, name character(32), sip bigint, dip bigint, dport bigint, flag bigint)"); printf("%d \n", ret); #if 0 @@ -89,7 +90,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /* 鏍规嵁鎸囧畾淇℃伅鏌ヨ鏁版嵁搴撶殑鑾峰彇鐨勭粨鏋滅殑鏉$洰鏁 鏉$洰鏁板ぇ浜10 鍒欎笉鑳藉啀娣诲姞 */ char *select_num = "SELECT rule_priority, name, sip, dip, dport, flag FROM `authfree`"; - ret = get_select_datebase_number(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", select_num, &num_sql, 6, + ret = get_select_datebase_number(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", select_num, &num_sql, 6, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_STRING_TYPE, strlen(name) + 1, name, DB_DATA_INT_TYPE, sizeof(sip), sip, @@ -109,7 +110,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /* 鍚慳uthfree琛ㄤ腑娣诲姞锛氭湭璁よ瘉鏉冮檺鍚嶇О銆佸唴閮ㄦ簮IP鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 */ char *addfree_sql = "INSERT INTO `authfree` SET rule_priority = ?, name = ?, sip = ?, dip = ?, dport = ?, flag = ?"; - ret_add = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_INSERT, AUTHFREE_TABLE, addfree_sql, 6, + ret_add = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_INSERT, AUTHFREE_TABLE, addfree_sql, 6, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_STRING_TYPE, strlen(name) + 1, name, DB_DATA_INT_TYPE, sizeof(sip), sip, @@ -167,7 +168,7 @@ void add_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /*淇敼鏈璇佹潈闄*/ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int dport, int flag, authfree_result_t *authfree_result) { - void *authfree_hdbc; + //void *authfree_hdbc; char *ret_sql = NULL; int ret_mod; int ret; @@ -179,9 +180,10 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int } printf("寮濮嬭繛鎺ユ暟鎹簱\n"); - + + #if 0 /* 杩炴帴鏁版嵁搴 */ - authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); + authfree_hdbc = connect_database(AUTHRECOVER_DATABASE_ID); if(NULL == authfree_hdbc) { printf("connetc failure\n"); @@ -190,7 +192,10 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /*闀挎暣鍨媌igint 娴偣鍨媎ouble 瀛楃涓瞔haracter(10)*/ printf("authfree_hdbc = %p\n", authfree_hdbc); - ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); + #endif + + /*寤鸿〃*/ + ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); printf("%d \n", ret); #if 0 @@ -211,7 +216,7 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /*淇敼authfree琛ㄤ腑鍐呴儴婧怚P鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 鏈璇佹潈闄愬悕绉颁笉鑳戒慨鏀 */ char *modfree_sql = "UPDATE `authfree` SET rule_priority = ?, sip = ?, dip = ?, dport = ? ,flag = ? WHERE name = ?"; - ret_mod = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_UPDATE, AUTHFREE_TABLE, modfree_sql, 6, + ret_mod = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_UPDATE, AUTHFREE_TABLE, modfree_sql, 6, DB_DATA_INT_TYPE, sizeof(rule_priority), rule_priority, DB_DATA_INT_TYPE, sizeof(sip), sip, DB_DATA_INT_TYPE, sizeof(dip), dip, @@ -262,7 +267,7 @@ void mod_authfree(int rule_priority, char *name, uint32_t sip, uint32_t dip, int /*鍒犻櫎鏈璇佹潈闄*/ void del_authfree(char *name, authfree_result_t *authfree_result) { - void *authfree_hdbc; + //void *authfree_hdbc; char *ret_sql = NULL; int ret_del; int ret; @@ -272,9 +277,8 @@ void del_authfree(char *name, authfree_result_t *authfree_result) if(NULL == authfree_result) { return; } - - printf("寮濮嬭繛鎺ユ暟鎹簱\n"); - + + #if 0 /* 杩炴帴鏁版嵁搴 */ authfree_hdbc = connect_database(AUTHFREE_DATABASE_ID); @@ -285,7 +289,10 @@ void del_authfree(char *name, authfree_result_t *authfree_result) /*闀挎暣鍨媌igint 娴偣鍨媎ouble 瀛楃涓瞔haracter(10)*/ printf("authfree_hdbc = %p\n", authfree_hdbc); - ret = create_database_table(AUTHFREE_DATABASE_ID, authfree_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); + #endif + + /*寤鸿〃*/ + ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authfree", "create table authfree(name character(32), sip bigint, dip bigint, dport bigint)"); printf("%d \n", ret); @@ -308,7 +315,7 @@ void del_authfree(char *name, authfree_result_t *authfree_result) /*鍒犻櫎authfree琛ㄤ腑鏈璇佹潈闄愬悕绉般佸唴閮ㄦ簮IP鍦板潃銆佺洰鐨処P鍦板潃銆佺洰鐨勭鍙e彿 */ char *delfree_sql = "DELETE FROM authfree WHERE name = ?"; - ret_del = update_database(AUTHFREE_DATABASE_ID, authfree_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1, + ret_del = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_DEL, AUTHFREE_TABLE, delfree_sql, 1, DB_DATA_STRING_TYPE, strlen(name) + 1, name); printf("the value of ret:%d\n", ret_del); diff --git a/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c b/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c index be2138df9..86e0ebb2b 100644 --- a/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c +++ b/Platform/user/configm/config-server/web_config/config-adm/user_authpara.c @@ -8,11 +8,11 @@ #include "../../../../../Common/commuapinl.h" #include "../auth_parameters.h" #include "../Platform/common/database/database.h" - -#define AUTHPARA_DATABASE_ID 15 -#define AUTHPARA_TABLE "authparas" +#include "../include/user_authpara.h" +#include "../include/auth_common.h" extern auth_parameters_t *auth_para; +extern void * auth_hdbc; char * mes[]={"mod success", "mod failure"}; @@ -20,7 +20,7 @@ char * mes[]={"mod success", "mod failure"}; void mod_authpara(int port, int timehorizon, int failcount, int locktime, int aging_time, configure_result_t *configure_result) { authparInit(); - void * authpara_hdbc; + //void * authpara_hdbc; char * ret_sql = NULL; int ret; int num; @@ -31,6 +31,7 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag return; } + #if 0 printf("寮濮嬭繛鎺ユ暟鎹簱\n"); /* 杩炴帴鏁版嵁搴 */ @@ -43,15 +44,18 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag /*闀挎暣鍨媌igint 娴偣鍨媎ouble 瀛楃涓瞔haracter(10)*/ printf("authpara_hdbc = %p\n", authpara_hdbc); - ret = create_database_table(AUTHPARA_DATABASE_ID, authpara_hdbc, "authparas", "create table authparas(port bigint, timehorizon bigint, failcount bigint, locktime bigint, aging_time bigint)"); + #endif + + /*寤鸿〃*/ + ret = create_database_table(AUTHRECOVER_DATABASE_ID, auth_hdbc, "authparas", "create table authparas(port bigint, timehorizon bigint, failcount bigint, locktime bigint, aging_time bigint)"); printf("%d \n",ret); /* 瀛榓uthpara琛 榛樿鍊 */ char *user1_authpara = "INSERT INTO `authparas` SET port = 8080, timehorizon = 1, failcount = 5, locktime = 10, aging_time = 10"; - int ret_addauthpara = update_database(AUTHPARA_DATABASE_ID, authpara_hdbc, DB_OP_INSERT, AUTHPARA_TABLE, user1_authpara, 0); + int ret_addauthpara = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_INSERT, AUTHPARA_TABLE, user1_authpara, 0); if(0 != ret_addauthpara) { - disconnect_database(AUTHPARA_DATABASE_ID , authpara_hdbc); // ret_release璁板綍鏃ュ織 + disconnect_database(AUTHRECOVER_DATABASE_ID , auth_hdbc); // ret_release璁板綍鏃ュ織 configure_result->resultcode = 1; configure_result->message = mes[configure_result->resultcode]; return; @@ -59,7 +63,7 @@ void mod_authpara(int port, int timehorizon, int failcount, int locktime, int ag char *user_authpara = "UPDATE `authparas` SET port = ?, timehorizon = ?, failcount = ?, locktime = ?, aging_time = ?"; - ret = update_database(AUTHPARA_DATABASE_ID, authpara_hdbc, DB_OP_UPDATE, AUTHPARA_TABLE, user_authpara, 5, + ret = update_database(AUTHRECOVER_DATABASE_ID, auth_hdbc, DB_OP_UPDATE, AUTHPARA_TABLE, user_authpara, 5, DB_DATA_INT_TYPE, sizeof(port), port, DB_DATA_INT_TYPE, sizeof(timehorizon), timehorizon, DB_DATA_INT_TYPE, sizeof(failcount), failcount, diff --git a/Platform/user/configm/config-server/web_config/include/auth_common.h b/Platform/user/configm/config-server/web_config/include/auth_common.h new file mode 100644 index 000000000..2587b3656 --- /dev/null +++ b/Platform/user/configm/config-server/web_config/include/auth_common.h @@ -0,0 +1,9 @@ +#ifndef AUTH_COMMON_H_ +#define AUTH_COMMON_H_ + +#define AUTHPARA_TABLE "authparas" +#define AUTHFREE_TABLE "authfree" + +#define AUTHRECOVER_DATABASE_ID (15) + +#endif \ No newline at end of file diff --git a/Platform/user/configm/config-server/web_config/include/user_authfree.h b/Platform/user/configm/config-server/web_config/include/user_authfree.h index 4c3496268..a62356a9e 100644 --- a/Platform/user/configm/config-server/web_config/include/user_authfree.h +++ b/Platform/user/configm/config-server/web_config/include/user_authfree.h @@ -11,7 +11,6 @@ #define DELAUTHFREE_FAIL_DATABASE (7) //鍒犻櫎鏈璇佹潈闄愬け璐 #define RULENUM_EXCEED (8) //鏈璇佹潈闄愭暟閲忚秴杩囨渶澶у - typedef enum { ADD_RULE_OK = 0, ADD_RULE_ERR = 1, diff --git a/Platform/user/configm/config-server/web_config/include/user_authpara.h b/Platform/user/configm/config-server/web_config/include/user_authpara.h index c5df56948..4fc142033 100644 --- a/Platform/user/configm/config-server/web_config/include/user_authpara.h +++ b/Platform/user/configm/config-server/web_config/include/user_authpara.h @@ -4,7 +4,6 @@ #include #include "../Platform/user/configm/config-server/web_config/auth_parameters.h" - #define ADDUSER_FAIL_NAMEDUP 4 //鐢ㄦ埛鍚嶉噸鍚 #define MODAUTHPARA_SUCCESS 0 //淇敼璁よ瘉淇℃伅鎴愬姛 From f6536d140974a10048dc6b3d600bddc3161b0449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=98=95?= Date: Tue, 27 Aug 2019 18:49:05 +0800 Subject: [PATCH 14/15] =?UTF-8?q?Mod=20=20aaa-12=20=E6=9B=B4=E6=96=B0Makef?= =?UTF-8?q?ile=E6=94=AF=E6=8C=81SDKTARGETSYSROOT=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=8F=98=E9=87=8F=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=BA=EF=BC=9Ahuangxin=20=E6=A3=80=E8=A7=86?= =?UTF-8?q?=E4=BA=BA=EF=BC=9Ahuangxin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/common.Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/common.Makefile b/Common/common.Makefile index 5102fb7d8..f53fb2e86 100755 --- a/Common/common.Makefile +++ b/Common/common.Makefile @@ -119,8 +119,8 @@ LINUX_KERNEL := $(HUACHENG_LINUX_KERNEL) endif # 璁剧疆 ARM64 骞冲彴 SDK 澶存枃浠跺拰搴撴枃浠惰矾寰 -ARM64_SDK_INCLUDE := $(SDKTARGETSYSROOT)/include -ARM64_SDK_LIBDIR := $(SDKTARGETSYSROOT) +ARM64_SDK_INCLUDE := $(SDKTARGETSYSROOT)/usr/include +ARM64_SDK_LIBDIR := $(SDKTARGETSYSROOT)/usr/lib # 璁剧疆骞冲彴瀹夎瀛愮洰褰 CPU_ARM64_DIR := ARM64 From bb44ab5b158ce12484a439e893cadb26abf0850f Mon Sep 17 00:00:00 2001 From: yinbin Date: Tue, 27 Aug 2019 04:08:10 -0700 Subject: [PATCH 15/15] =?UTF-8?q?Add=20aaa-12=20=E4=BF=AE=E6=94=B9vlan=5Fg?= =?UTF-8?q?et=5Fchk=E4=BB=A5=E5=8F=8A=E5=9C=A8webserver=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E4=B8=AD=E6=96=B0=E5=A2=9Evlan=E5=9B=9E=E8=B0=83=20SOL=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9vlan=5Fget=5Fchk=E4=BB=A5=E5=8F=8A=E5=9C=A8we?= =?UTF-8?q?bserver=E6=A1=86=E6=9E=B6=E4=B8=AD=E6=96=B0=E5=A2=9Evlan?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=20=E4=BF=AE=E6=94=B9=E4=BA=BA=EF=BC=9Ayinbin?= =?UTF-8?q?=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9Ayinbin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yinbin --- .../config-server/vlan_config/vlan_config.c | 21 ++++++++++++------- libs/src/lighttpd-1.4.51/src/mod_webm.c | 16 ++++++++++++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/Platform/user/configm/config-server/vlan_config/vlan_config.c b/Platform/user/configm/config-server/vlan_config/vlan_config.c index ca2e8ab2d..ac7d9ad33 100644 --- a/Platform/user/configm/config-server/vlan_config/vlan_config.c +++ b/Platform/user/configm/config-server/vlan_config/vlan_config.c @@ -1824,6 +1824,7 @@ ret_code vid_value_chk(int vid) ret_code vid_num_chk(char *if_name, operation_type op_type, int num) { int ifnode = -1; + int total = 0; if(!if_name){ printf("[vlan]vid_num_chk: if_name is null.\n"); return RET_NULLP; @@ -1831,13 +1832,15 @@ ret_code vid_num_chk(char *if_name, operation_type op_type, int num) printf("[vlan]vid_num_chk: if_name=%s, op_type=%d, num=%d\n", if_name, op_type, num); ifnode = get_ifnode_from_global(if_name); if(ifnode == -1){ - printf("[vlan]vid_num_chk: get ifnode empty, return\n"); - return RET_OK; + total = num; + printf("[vlan]vid_num_chk: get ifnode empty, total = %d\n", total); } - if(op_type == OP_ADD && - g_if_vlan_info[ifnode].vidcnt + num > EACH_PORT_MAX_VLAN_NUM){ - printf("[vlan]vid_num_chk: ADD operation's vid num(%d+%d=%d) > EACH_PORT_MAX_VLAN_NUM\n", - g_if_vlan_info[ifnode].vidcnt, num, g_if_vlan_info[ifnode].vidcnt + num); + else{ + total = g_if_vlan_info[ifnode].vidcnt + num; + printf("[vlan]vid_num_chk: total = %d + %d = %d\n", g_if_vlan_info[ifnode].vidcnt, num, total); + } + if(op_type == OP_ADD && total > EACH_PORT_MAX_VLAN_NUM){ + printf("[vlan]vid_num_chk: ADD operation's total vid num > EACH_PORT_MAX_VLAN_NUM\n"); return RET_INPUTERR; } @@ -2105,12 +2108,16 @@ ret_code vlan_config_get_chk(uint source, pointer input) printf("[vlan]vlan_config_get_chk: get json parse failed(%d).\n", ret); return ret; } +#if 0 for(i = 0; i < MAX_INTERFACES; i++){ if(interface[i] == 1){ + printf("[vlan]find a node[%d]\n", i); return RET_OK; } } return RET_INPUTERR; +#endif + return RET_OK; } /************************************************************ @@ -2148,7 +2155,7 @@ ret_code vlan_config_chk(uint source,uint *config_type, if(ret != RET_OK){ goto out; } - *config_type = oper_type; + //*config_type = oper_type; printf("[vlan]vlan_config_chk: operate_type=%d\n", oper_type); if(oper_type == CM_CONFIG_SET){ printf("[vlan]vlan_config_chk: SET chk\n"); diff --git a/libs/src/lighttpd-1.4.51/src/mod_webm.c b/libs/src/lighttpd-1.4.51/src/mod_webm.c index f5473f59f..e62a09694 100644 --- a/libs/src/lighttpd-1.4.51/src/mod_webm.c +++ b/libs/src/lighttpd-1.4.51/src/mod_webm.c @@ -38,6 +38,8 @@ typedef enum { WEBM_HANDLE_INVALID_INDEX = -1, WEBM_HANDLE_CONFIG_UUID_USER, WEBM_HANDLE_CONFIG_DETAIL_USER, WEBM_HANDLE_CONFIG_IPV4, + WEBM_HANDLE_CONFIG_VLAN_SET, + WEBM_HANDLE_CONFIG_VLAN_GET, WEBM_HANDLE_MAX } webm_handle_index; @@ -169,6 +171,20 @@ extern int webm_config_send_proc(server *srv, uint32_t config_type, uint64 confg CM_CONFIG_SET, \ IPCONFIG_V4, \ webm_config_send_proc \ + }, \ + {\ + WEBM_HANDLE_CONFIG_VLAN_SET, \ + "/FSG-CF/setvlan", \ + CM_CONFIG_SET, \ + VLAN_CONFIG, \ + webm_config_send_proc \ + }, \ + {\ + WEBM_HANDLE_CONFIG_VLAN_GET, \ + "/FSG-GF/getvlan", \ + CM_CONFIG_GET, \ + VLAN_CONFIG, \ + webm_config_send_proc \ } \ \ }