OCT 1. 重构SQLite3支持
This commit is contained in:
parent
5967e43519
commit
0af552c650
|
@ -57,7 +57,7 @@ BreakConstructorInitializersBeforeComma: false
|
||||||
BreakConstructorInitializers: BeforeColon
|
BreakConstructorInitializers: BeforeColon
|
||||||
BreakAfterJavaFieldAnnotations: false
|
BreakAfterJavaFieldAnnotations: false
|
||||||
BreakStringLiterals: true
|
BreakStringLiterals: true
|
||||||
ColumnLimit: 120
|
ColumnLimit: 140
|
||||||
CommentPragmas: '^ IWYU pragma:'
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
CompactNamespaces: true
|
CompactNamespaces: true
|
||||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||||
|
|
|
@ -4,7 +4,14 @@ PROJECT(vCPE_project)
|
||||||
|
|
||||||
OPTION(VCPE_AGENT "Enable vCPE agent test application" OFF)
|
OPTION(VCPE_AGENT "Enable vCPE agent test application" OFF)
|
||||||
OPTION(USED_LWIP "PPPoE for vCPE" OFF)
|
OPTION(USED_LWIP "PPPoE for vCPE" OFF)
|
||||||
OPTION(USED_OPENDHCPD "DHCP server for vCPE" OFF)
|
OPTION(USED_OPENDHCPD "DHCP server for vCPE" ON)
|
||||||
|
OPTION(USED_OPENDHCPDDNS "DHCP And DNS server for vCPE" OFF)
|
||||||
|
|
||||||
|
|
||||||
|
OPTION(USED_REDIS "Add redis database support for vCPE" OFF)
|
||||||
|
OPTION(USED_MYSQL "Add mysql database support for vCPE" OFF)
|
||||||
|
OPTION(USED_SQLITE "Add sqlite3 database support for vCPE" ON)
|
||||||
|
|
||||||
|
|
||||||
SET(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig")
|
SET(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig")
|
||||||
SET(URI_HOME "${CMAKE_SOURCE_DIR}/libs")
|
SET(URI_HOME "${CMAKE_SOURCE_DIR}/libs")
|
||||||
|
@ -20,7 +27,6 @@ else ()
|
||||||
SET(GIT_VERSION ${GIT_TAG})
|
SET(GIT_VERSION ${GIT_TAG})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
||||||
MESSAGE("Version: " ${GIT_VERSION})
|
MESSAGE("Version: " ${GIT_VERSION})
|
||||||
|
|
||||||
if (USED_LWIP)
|
if (USED_LWIP)
|
||||||
|
@ -35,9 +41,6 @@ if (USED_OPENDHCPDDNS)
|
||||||
LIST(APPEND COMMON_DEFINE "-DOPENDHCPDDNS_ON")
|
LIST(APPEND COMMON_DEFINE "-DOPENDHCPDDNS_ON")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
ADD_SUBDIRECTORY(srcs)
|
|
||||||
ADD_SUBDIRECTORY(srcs/libs)
|
|
||||||
|
|
||||||
if (VCPE_AGENT)
|
if (VCPE_AGENT)
|
||||||
MESSAGE("Select Option VCPE_AGENT")
|
MESSAGE("Select Option VCPE_AGENT")
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -46,6 +49,10 @@ if (USED_LWIP)
|
||||||
MESSAGE("Select Option USED_LWIP")
|
MESSAGE("Select Option USED_LWIP")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (USED_SQLITE)
|
||||||
|
MESSAGE("Select Option USED_SQLITE")
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (USED_OPENDHCPD)
|
if (USED_OPENDHCPD)
|
||||||
MESSAGE("Select Option USED_OPENDHCPD")
|
MESSAGE("Select Option USED_OPENDHCPD")
|
||||||
ADD_SUBDIRECTORY(srcs/open_dhcp)
|
ADD_SUBDIRECTORY(srcs/open_dhcp)
|
||||||
|
@ -60,8 +67,6 @@ if (USED_LWIP OR VCPE_AGENT)
|
||||||
ADD_SUBDIRECTORY(srcs/lwip)
|
ADD_SUBDIRECTORY(srcs/lwip)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
ADD_SUBDIRECTORY(srcs)
|
||||||
|
ADD_SUBDIRECTORY(srcs/libs)
|
||||||
ADD_SUBDIRECTORY(srcs/httpserver)
|
ADD_SUBDIRECTORY(srcs/httpserver)
|
||||||
ADD_SUBDIRECTORY(srcs/database)
|
|
||||||
|
|
||||||
|
|
||||||
MESSAGE("COMMON_DEFINE: " ${COMMON_DEFINE})
|
|
|
@ -39,6 +39,9 @@ application:
|
||||||
mysql_user = "root"; # mysql 用户名
|
mysql_user = "root"; # mysql 用户名
|
||||||
mysql_passwd = "AES@5/BQyUIfVxgV9BZAz/D3Rg=="; # mysql 数据库密码
|
mysql_passwd = "AES@5/BQyUIfVxgV9BZAz/D3Rg=="; # mysql 数据库密码
|
||||||
mysql_database = "test"; # mysql 数据库名称
|
mysql_database = "test"; # mysql 数据库名称
|
||||||
|
|
||||||
|
sqlite_dbname = "vcpe.db"; # sqlite3 数据库文件名
|
||||||
|
sqlite_passwd = "test123"; # sqlite3 数据库密码
|
||||||
};
|
};
|
||||||
|
|
||||||
# MQ 相关配置
|
# MQ 相关配置
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
|
|
||||||
|
|
||||||
PROJECT(SQLITE_project C)
|
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(./include)
|
|
||||||
|
|
||||||
FILE(GLOB_RECURSE SQLITE_HEADS ./include/*.h)
|
|
||||||
|
|
||||||
AUX_SOURCE_DIRECTORY(. SQLITE_SRC)
|
|
||||||
|
|
||||||
|
|
||||||
ADD_DEFINITIONS(-DSQLITE_HAS_CODEC -DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_OS_UNIX=1)
|
|
||||||
ADD_DEFINITIONS(-D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -DSQLITE_THREADSAFE=1)
|
|
||||||
ADD_DEFINITIONS(-DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT)
|
|
||||||
ADD_DEFINITIONS(-DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT)
|
|
||||||
ADD_DEFINITIONS( -DSQLITE_HAVE_ZLIB=1 -DSQLITE_TEMP_STORE=2)
|
|
||||||
|
|
||||||
ADD_LIBRARY(SQLITE_project STATIC ${SQLITE_SRC} ${SQLITE_HEADS})
|
|
||||||
TARGET_LINK_LIBRARIES(SQLITE_project -lm -ldl -lz -lcrypto -lpthread)
|
|
|
@ -14,7 +14,6 @@ AUX_SOURCE_DIRECTORY(json C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(args C_SRC)
|
AUX_SOURCE_DIRECTORY(args C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(init C_SRC)
|
AUX_SOURCE_DIRECTORY(init C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(misc C_SRC)
|
AUX_SOURCE_DIRECTORY(misc C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(../database C_SRC)
|
|
||||||
AUX_SOURCE_DIRECTORY(banner C_SRC)
|
AUX_SOURCE_DIRECTORY(banner C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(configure C_SRC)
|
AUX_SOURCE_DIRECTORY(configure C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(network C_SRC)
|
AUX_SOURCE_DIRECTORY(network C_SRC)
|
||||||
|
@ -23,10 +22,30 @@ AUX_SOURCE_DIRECTORY(mq C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(cmdline C_SRC)
|
AUX_SOURCE_DIRECTORY(cmdline C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(crypto C_SRC)
|
AUX_SOURCE_DIRECTORY(crypto C_SRC)
|
||||||
AUX_SOURCE_DIRECTORY(hardware C_SRC)
|
AUX_SOURCE_DIRECTORY(hardware C_SRC)
|
||||||
|
AUX_SOURCE_DIRECTORY(database/sqlite3 C_SRC)
|
||||||
|
|
||||||
|
if (USED_REDIS)
|
||||||
|
ADD_DEFINITIONS(-DUSED_REDIS)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (USED_SQLITE)
|
||||||
|
ADD_DEFINITIONS(-DUSED_SQLITE)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (USED_MYSQL)
|
||||||
|
ADD_DEFINITIONS(-DUSED_MYSQL)
|
||||||
|
endif ()
|
||||||
|
|
||||||
SET(CMAKE_C_STANDARD 99)
|
SET(CMAKE_C_STANDARD 99)
|
||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(misc/zvector.c PROPERTIES COMPILE_FLAGS "-Wall -Wextra -flto")
|
SET_SOURCE_FILES_PROPERTIES(misc/zvector.c PROPERTIES COMPILE_FLAGS "-Wall -Wextra -flto")
|
||||||
|
SET_SOURCE_FILES_PROPERTIES(database/sqlite3/sqlite3.c PROPERTIES
|
||||||
|
COMPILE_FLAGS "-DSQLITE_HAS_CODEC \
|
||||||
|
-DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_OS_UNIX=1 \
|
||||||
|
-D_HAVE_SQLITE_CONFIG_H -DBUILD_sqlite -DNDEBUG -DSQLITE_THREADSAFE=1 \
|
||||||
|
-DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT \
|
||||||
|
-DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT \
|
||||||
|
-DSQLITE_HAVE_ZLIB=1 -DSQLITE_TEMP_STORE=2")
|
||||||
|
|
||||||
ADD_DEFINITIONS(-DBUILD_VERSION="${GIT_VERSION}" ${COMMON_DEFINE})
|
ADD_DEFINITIONS(-DBUILD_VERSION="${GIT_VERSION}" ${COMMON_DEFINE})
|
||||||
|
|
||||||
|
|
|
@ -15,61 +15,20 @@
|
||||||
#include "crypto.h"
|
#include "crypto.h"
|
||||||
#include "hardware.h"
|
#include "hardware.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
CONFIG_ITEM_ID cfgId;
|
||||||
|
const char *cfgPath;
|
||||||
|
CONFIG_VALUE_TYPE valType;
|
||||||
|
const char *defValue;
|
||||||
|
const char *readme;
|
||||||
|
const char *pStrId;
|
||||||
|
} CFG_ITEM, *PCFG_ITEM;
|
||||||
|
|
||||||
#define CFG_INT_VALUE(p) (p->value.longValue)
|
#define CFG_INT_VALUE(p) (p->value.longValue)
|
||||||
#define CFG_BOOL_VALUE(p) (p->value.longValue == FALSE ? FALSE : TRUE)
|
#define CFG_BOOL_VALUE(p) (p->value.longValue == FALSE ? FALSE : TRUE)
|
||||||
#define CFG_FLOAT_VALUE(p) (p->value.floatValue)
|
#define CFG_FLOAT_VALUE(p) (p->value.floatValue)
|
||||||
#define CFG_STRING_VALUE(p) (p->value.strValue)
|
#define CFG_STRING_VALUE(p) (p->value.strValue)
|
||||||
|
|
||||||
#define ADD_CFG_ITEM(id, key, type, defVal, desc) add_new_cfg_item(id, key, type, defVal, #id, desc)
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
#define ADD_DEFAULT_CONFIGURATION_ITEMS() \
|
|
||||||
do { \
|
|
||||||
ADD_CFG_ITEM(CFG_DIRECTORY, "application.system.config_file_path", VALUE_TYPE_STRING, ".", "Configuration files location path"); \
|
|
||||||
ADD_CFG_ITEM(CFG_CURL_CA_PATH, "application.system.ssl_ca_file_path", VALUE_TYPE_STRING, "~/.ssh/ca.crt", "Libcurl access HTTPS CA File"); \
|
|
||||||
ADD_CFG_ITEM(CFG_BANNER_SHOW, "application.system.show_banner", VALUE_TYPE_BOOL, "1", "Enable/Disable show banner"); \
|
|
||||||
ADD_CFG_ITEM(CFG_HARDWARE_WATCH, "application.system.system_info_watch", VALUE_TYPE_BOOL, "1", "Monitor cpu, memory, disk, fan, temperature ..."); \
|
|
||||||
ADD_CFG_ITEM(CFG_HARDWARE_REFRESH, "application.system.system_info_refresh", VALUE_TYPE_INTEGRAL, "10", "Monitor hardware information upgrade frequency"); \
|
|
||||||
/* 系统监控设备相配置 */ \
|
|
||||||
ADD_CFG_ITEM(CFG_WATCH_CPU, "application.watch_params.cpu", VALUE_TYPE_BOOL, "1", "Monitor cpu information"); \
|
|
||||||
ADD_CFG_ITEM(CFG_WATCH_MEMORY, "application.watch_params.memory", VALUE_TYPE_BOOL, "1", "Monitor memory information"); \
|
|
||||||
ADD_CFG_ITEM(CFG_WATCH_DISK, "application.watch_params.disk", VALUE_TYPE_BOOL, "1", "Monitor disk partition information"); \
|
|
||||||
ADD_CFG_ITEM(CFG_WATCH_SENSOR, "application.watch_params.sensor", VALUE_TYPE_BOOL, "1", "Sensor information refresh frequency"); \
|
|
||||||
/* 系统监控设备刷频率 */ \
|
|
||||||
ADD_CFG_ITEM(CFG_CPU_REFRESH, "application.watch_params.cpu_refresh", VALUE_TYPE_INTEGRAL, "10", "CPU information refresh frequency"); \
|
|
||||||
ADD_CFG_ITEM(CFG_MEM_REFRESH, "application.watch_params.mem_refresh", VALUE_TYPE_INTEGRAL, "10", "Memory information refresh frequency"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DISK_REFRESH, "application.watch_params.disk_refresh", VALUE_TYPE_INTEGRAL, "10", "Disk information refresh frequency"); \
|
|
||||||
ADD_CFG_ITEM(CFG_SENSOR_REFRESH, "application.watch_params.sensor_refresh", VALUE_TYPE_INTEGRAL, "10", "Sensor information refresh frequency"); \
|
|
||||||
/* 数据库相配置 */ \
|
|
||||||
/* Redis配置 */ \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_REDIS_SERVER, "application.database.redis_server", VALUE_TYPE_STRING, "127.0.0.1", "Redis database server ip address"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_REDIS_PORT, "application.database.redis_port", VALUE_TYPE_INTEGRAL, "6379", "Redis database server port"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_REDIS_PASSWD, "application.database.redis_passwd", VALUE_TYPE_STRING, "", "Redis database server password"); \
|
|
||||||
/* MySQL配置 */ \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_MYSQL_SERVER, "application.database.mysql_server", VALUE_TYPE_STRING, "127.0.0.1", "MySQL database server ip address"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_MYSQL_PORT, "application.database.mysql_port", VALUE_TYPE_INTEGRAL, "3306", "MySQL database server port"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_MYSQL_USER, "application.database.mysql_user", VALUE_TYPE_STRING, "", "MySQL database user name"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_MYSQL_PASSWD, "application.database.mysql_passwd", VALUE_TYPE_STRING, "", "MySQL database server password"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DB_MYSQL_DB_NAME, "application.database.mysql_database", VALUE_TYPE_STRING, ".main", "MySQL database used"); \
|
|
||||||
/* 消息队列相配置 */ \
|
|
||||||
/* ZeroMq配置 */ \
|
|
||||||
ADD_CFG_ITEM(CFG_MQ_SVR_PORT, "application.zero_mq.svr_port", VALUE_TYPE_INTEGRAL, "6278", "ZeroMQ server port"); \
|
|
||||||
ADD_CFG_ITEM(CFG_MQ_DATA_PATH, "application.zero_mq.agent_addr", VALUE_TYPE_STRING, "ipc:///tmp/msg_fifo0", "ZeroMQ Agent data path"); \
|
|
||||||
/* vxLan 隧道配置 */ \
|
|
||||||
ADD_CFG_ITEM(CFG_VXLAN_NIC_NAME, "application.vxlan_wan.nic", VALUE_TYPE_STRING, "", "Network card name to send data"); \
|
|
||||||
ADD_CFG_ITEM(CFG_VXLAN_SUPPORT, "application.vxlan_wan.enable", VALUE_TYPE_BOOL, "1", "Is support vxLan tune"); \
|
|
||||||
ADD_CFG_ITEM(CFG_VXLAN_PEER_IP, "application.vxlan_wan.peer_ip", VALUE_TYPE_STRING, "", "vxLan peer ip address"); \
|
|
||||||
ADD_CFG_ITEM(CFG_VXLAN_PEER_MAC, "application.vxlan_wan.peer_mac", VALUE_TYPE_STRING, "", "vxLan peer mac address"); \
|
|
||||||
ADD_CFG_ITEM(CFG_VXLAN_PKG_FILTER, "application.vxlan_wan.pkg_filter", VALUE_TYPE_STRING, "", "vxLan package filter"); \
|
|
||||||
/*HTTP Server 配置*/ \
|
|
||||||
ADD_CFG_ITEM(CFG_HTTP_SVR_ADDR, "application.http_svr.listen_addr", VALUE_TYPE_STRING, "0.0.0.0", "Network address to listen on"); \
|
|
||||||
ADD_CFG_ITEM(CFG_HTTP_SVR_PORT, "application.http_svr.listen_port", VALUE_TYPE_INTEGRAL, "6789", "Network port to listen on"); \
|
|
||||||
ADD_CFG_ITEM(CFG_HTTP_SVR_TCP_NODELAY, "application.http_svr.tcp_nodelay", VALUE_TYPE_BOOL, "1", "TCP delay switch"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DHCP_LISTEN_ON, "application.dhcp_server.listen_on", VALUE_TYPE_ARRAY_STR, "", "DHCP listen interface"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DHCP_REPLICATION_SVR, "application.dhcp_server.replication", VALUE_TYPE_ARRAY_STR, "", "DHCP replication server master and secondary"); \
|
|
||||||
ADD_CFG_ITEM(CFG_DHCP_RANGE_SET, "application.dhcp_server.range_set", VALUE_TYPE_ARRAY_OBJ, "", "DHCP IP pool"); \
|
|
||||||
} while (0)// clang-format on
|
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
long long longValue;
|
long long longValue;
|
||||||
char *strValue;
|
char *strValue;
|
||||||
|
@ -95,6 +54,64 @@ static const char *g_cfgFilePath;
|
||||||
static const char *g_pCfgKey = NULL;
|
static const char *g_pCfgKey = NULL;
|
||||||
PCONFIG_ITEM g_pConfigItem = NULL;
|
PCONFIG_ITEM g_pConfigItem = NULL;
|
||||||
|
|
||||||
|
#define DEF_CFG_ITEM(id, key, type, defVal, desc) \
|
||||||
|
{ .cfgId = (id), .cfgPath = (key), .valType = (type), .defValue = (defVal), .readme = (desc), .pStrId = (#id) }
|
||||||
|
|
||||||
|
static CFG_ITEM g_cfgItem[] = {
|
||||||
|
DEF_CFG_ITEM(CFG_DIRECTORY, "system.config_file_path", VAL_STR, ".", "Configuration files location path"),
|
||||||
|
DEF_CFG_ITEM(CFG_CURL_CA_PATH, "system.ssl_ca_file_path", VAL_STR, "~/.ssh/ca.crt", "Libcurl access HTTPS CA File"),
|
||||||
|
DEF_CFG_ITEM(CFG_BANNER_SHOW, "system.show_banner", VAL_BOOL, "1", "Enable/Disable show banner"),
|
||||||
|
DEF_CFG_ITEM(CFG_HARDWARE_WATCH, "system.system_info_watch", VAL_BOOL, "1", "Monitor cpu, memory, disk, fan, temperature ..."),
|
||||||
|
DEF_CFG_ITEM(CFG_HARDWARE_REFRESH, "system.system_info_refresh", VAL_INT, "10", "Monitor hardware information upgrade frequency"),
|
||||||
|
/* 系统监控设备相配置 */
|
||||||
|
DEF_CFG_ITEM(CFG_WATCH_CPU, "watch_params.cpu", VAL_BOOL, "1", "Monitor cpu information"),
|
||||||
|
DEF_CFG_ITEM(CFG_WATCH_MEMORY, "watch_params.memory", VAL_BOOL, "1", "Monitor memory information"),
|
||||||
|
DEF_CFG_ITEM(CFG_WATCH_DISK, "watch_params.disk", VAL_BOOL, "1", "Monitor disk partition information"),
|
||||||
|
DEF_CFG_ITEM(CFG_WATCH_SENSOR, "watch_params.sensor", VAL_BOOL, "1", "Sensor information refresh frequency"),
|
||||||
|
/* 系统监控设备刷频率 */
|
||||||
|
DEF_CFG_ITEM(CFG_CPU_REFRESH, "watch_params.cpu_refresh", VAL_INT, "10", "CPU information refresh frequency"),
|
||||||
|
DEF_CFG_ITEM(CFG_MEM_REFRESH, "watch_params.mem_refresh", VAL_INT, "10", "Memory information refresh frequency"),
|
||||||
|
DEF_CFG_ITEM(CFG_DISK_REFRESH, "watch_params.disk_refresh", VAL_INT, "10", "Disk information refresh frequency"),
|
||||||
|
DEF_CFG_ITEM(CFG_SENSOR_REFRESH, "watch_params.sensor_refresh", VAL_INT, "10", "Sensor information refresh frequency"),
|
||||||
|
/* 数据库相配置 */
|
||||||
|
/* Redis配置 */
|
||||||
|
#ifdef USED_REDIS
|
||||||
|
DEF_CFG_ITEM(CFG_DB_REDIS_SERVER, "database.redis_server", VAL_STR, "127.0.0.1", "Redis database server ip address"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_REDIS_PORT, "database.redis_port", VAL_INT, "6379", "Redis database server port"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_REDIS_PASSWD, "database.redis_passwd", VAL_STR, "", "Redis database server password"),
|
||||||
|
#endif
|
||||||
|
/* MySQL配置 */
|
||||||
|
#ifdef USED_MYSQL
|
||||||
|
DEF_CFG_ITEM(CFG_DB_MYSQL_SERVER, "database.mysql_server", VAL_STR, "127.0.0.1", "MySQL database server ip address"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_MYSQL_PORT, "database.mysql_port", VAL_INT, "3306", "MySQL database server port"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_MYSQL_USER, "database.mysql_user", VAL_STR, "", "MySQL database user name"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_MYSQL_PASSWD, "database.mysql_passwd", VAL_STR, "", "MySQL database server password"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_MYSQL_DB_NAME, "database.mysql_database", VAL_STR, ".main", "MySQL database used"),
|
||||||
|
#endif
|
||||||
|
/* SQLite3配置 */
|
||||||
|
#ifdef USED_SQLITE
|
||||||
|
DEF_CFG_ITEM(CFG_DB_SQLITE_DB_NAME, "database.sqlite_dbname", VAL_STR, "", "SQLite3 database file name"),
|
||||||
|
DEF_CFG_ITEM(CFG_DB_SQLITE_PASSWD, "database.sqlite_passwd", VAL_STR, ".main", "SQLite3 database password"),
|
||||||
|
#endif
|
||||||
|
/* 消息队列相配置 */
|
||||||
|
/* ZeroMq配置 */
|
||||||
|
DEF_CFG_ITEM(CFG_MQ_SVR_PORT, "zero_mq.svr_port", VAL_INT, "6278", "ZeroMQ server port"),
|
||||||
|
DEF_CFG_ITEM(CFG_MQ_DATA_PATH, "zero_mq.agent_addr", VAL_STR, "ipc:///tmp/msg_fifo0", "ZeroMQ Agent data path"),
|
||||||
|
/* vxLan 隧道配置 */
|
||||||
|
DEF_CFG_ITEM(CFG_VXLAN_NIC_NAME, "vxlan_wan.nic", VAL_STR, "", "Network card name to send data"),
|
||||||
|
DEF_CFG_ITEM(CFG_VXLAN_SUPPORT, "vxlan_wan.enable", VAL_BOOL, "1", "Is support vxLan tune"),
|
||||||
|
DEF_CFG_ITEM(CFG_VXLAN_PEER_IP, "vxlan_wan.peer_ip", VAL_STR, "", "vxLan peer ip address"),
|
||||||
|
DEF_CFG_ITEM(CFG_VXLAN_PEER_MAC, "vxlan_wan.peer_mac", VAL_STR, "", "vxLan peer mac address"),
|
||||||
|
DEF_CFG_ITEM(CFG_VXLAN_PKG_FILTER, "vxlan_wan.pkg_filter", VAL_STR, "", "vxLan package filter"),
|
||||||
|
/*HTTP Server 配置*/
|
||||||
|
DEF_CFG_ITEM(CFG_HTTP_SVR_ADDR, "http_svr.listen_addr", VAL_STR, "0.0.0.0", "Network address to listen on"),
|
||||||
|
DEF_CFG_ITEM(CFG_HTTP_SVR_PORT, "http_svr.listen_port", VAL_INT, "6789", "Network port to listen on"),
|
||||||
|
DEF_CFG_ITEM(CFG_HTTP_SVR_TCP_NODELAY, "http_svr.tcp_nodelay", VAL_BOOL, "1", "TCP delay switch"),
|
||||||
|
DEF_CFG_ITEM(CFG_DHCP_LISTEN_ON, "dhcp_server.listen_on", VAL_ARRAY_STR, "", "DHCP listen interface"),
|
||||||
|
DEF_CFG_ITEM(CFG_DHCP_REPLICATION_SVR, "dhcp_server.replication", VAL_ARRAY_STR, "", "DHCP replication server configure"),
|
||||||
|
DEF_CFG_ITEM(CFG_DHCP_RANGE_SET, "dhcp_server.range_set", VAL_ARRAY_OBJ, "", "DHCP IP pool"),
|
||||||
|
};
|
||||||
|
|
||||||
static int cfg_is_upgrade(PCONFIG_ITEM pItem) {
|
static int cfg_is_upgrade(PCONFIG_ITEM pItem) {
|
||||||
|
|
||||||
if (pItem->isChanged) {
|
if (pItem->isChanged) {
|
||||||
|
@ -128,8 +145,7 @@ static const char *load_string_value(const char *pKeyName) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (symmetric_decrypto(AES128_ECB_PKCS7PADDING_SHA1PRNG, pBuf, bufSize, &buf, &outSize, pKey)
|
if (symmetric_decrypto(AES128_ECB_PKCS7PADDING_SHA1PRNG, pBuf, bufSize, &buf, &outSize, pKey) != ERR_SUCCESS) {
|
||||||
!= ERR_SUCCESS) {
|
|
||||||
free((void *)pKey);
|
free((void *)pKey);
|
||||||
free(pBuf);
|
free(pBuf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -207,9 +223,8 @@ static int cmp_dhcp_obj(const void *a, const void *b) {
|
||||||
POBJ_DHCP_RNG pV1 = (POBJ_DHCP_RNG)a;
|
POBJ_DHCP_RNG pV1 = (POBJ_DHCP_RNG)a;
|
||||||
POBJ_DHCP_RNG pV2 = (POBJ_DHCP_RNG)b;
|
POBJ_DHCP_RNG pV2 = (POBJ_DHCP_RNG)b;
|
||||||
|
|
||||||
if (strcmp(pV1->rangAddr, pV2->rangAddr) == 0 && strcmp(pV1->subnet, pV2->subnet) == 0
|
if (strcmp(pV1->rangAddr, pV2->rangAddr) == 0 && strcmp(pV1->subnet, pV2->subnet) == 0 && strcmp(pV1->dnsSvr, pV2->dnsSvr) == 0
|
||||||
&& strcmp(pV1->dnsSvr, pV2->dnsSvr) == 0 && strcmp(pV1->gateway, pV2->gateway) == 0
|
&& strcmp(pV1->gateway, pV2->gateway) == 0 && pV1->lease == pV2->lease) {
|
||||||
&& pV1->lease == pV2->lease) {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,13 +286,13 @@ static int load_array_obj(const char *pKeyName, PCONFIG_ITEM pValue) {
|
||||||
static int setConfigItemValue(PCONFIG_ITEM pItem, const char *pValue) {
|
static int setConfigItemValue(PCONFIG_ITEM pItem, const char *pValue) {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|
||||||
if (pItem->valType == VALUE_TYPE_STRING) {
|
if (pItem->valType == VAL_STR) {
|
||||||
if (pItem->value.strValue != NULL) {
|
if (pItem->value.strValue != NULL) {
|
||||||
free(pItem->value.strValue);
|
free(pItem->value.strValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
pItem->value.strValue = strdup(pValue);
|
pItem->value.strValue = strdup(pValue);
|
||||||
} else if (pItem->valType == VALUE_TYPE_INTEGRAL || pItem->valType == VALUE_TYPE_BOOL) {
|
} else if (pItem->valType == VAL_INT || pItem->valType == VAL_BOOL) {
|
||||||
char *pOver;
|
char *pOver;
|
||||||
long long val = strtoll(pValue, &pOver, 10);
|
long long val = strtoll(pValue, &pOver, 10);
|
||||||
|
|
||||||
|
@ -286,7 +301,7 @@ static int setConfigItemValue(PCONFIG_ITEM pItem, const char *pValue) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pItem->value.longValue = val;
|
pItem->value.longValue = val;
|
||||||
} else if (pItem->valType == VALUE_TYPE_FLOAT) {
|
} else if (pItem->valType == VAL_FLOAT) {
|
||||||
char *pOver;
|
char *pOver;
|
||||||
long double val = strtold(pValue, &pOver);
|
long double val = strtold(pValue, &pOver);
|
||||||
|
|
||||||
|
@ -295,9 +310,9 @@ static int setConfigItemValue(PCONFIG_ITEM pItem, const char *pValue) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pItem->value.floatValue = val;
|
pItem->value.floatValue = val;
|
||||||
} else if (pItem->valType == VALUE_TYPE_ARRAY_STR) {
|
} else if (pItem->valType == VAL_ARRAY_STR) {
|
||||||
pItem->value.array = vect_create(128, 512, ZV_SEC_WIPE);
|
pItem->value.array = vect_create(128, 512, ZV_SEC_WIPE);
|
||||||
} else if (pItem->valType == VALUE_TYPE_ARRAY_OBJ) {
|
} else if (pItem->valType == VAL_ARRAY_OBJ) {
|
||||||
pItem->value.array = vect_create(128, sizeof(OBJ_DHCP_RNG), ZV_SEC_WIPE);
|
pItem->value.array = vect_create(128, sizeof(OBJ_DHCP_RNG), ZV_SEC_WIPE);
|
||||||
} else {
|
} else {
|
||||||
return -ERR_UN_SUPPORT;
|
return -ERR_UN_SUPPORT;
|
||||||
|
@ -306,8 +321,8 @@ static int setConfigItemValue(PCONFIG_ITEM pItem, const char *pValue) {
|
||||||
return ERR_SUCCESS;
|
return ERR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int add_new_cfg_item(CONFIG_ITEM_ID id, const char *pKey, CONFIG_VALUE_TYPE valType, const char *pDefVal,
|
static int add_new_cfg_item(CONFIG_ITEM_ID id, const char *pKey, CONFIG_VALUE_TYPE valType, const char *pDefVal, const char *pStrId,
|
||||||
const char *pStrId, const char *pDesc) {
|
const char *pDesc) {
|
||||||
PCONFIG_ITEM pItem;
|
PCONFIG_ITEM pItem;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@ -361,10 +376,7 @@ static void refreshCfgFileCb() {
|
||||||
int cfgUpgrade = FALSE;
|
int cfgUpgrade = FALSE;
|
||||||
|
|
||||||
if (!config_read_file(&g_cfgContent, g_cfgFilePath)) {
|
if (!config_read_file(&g_cfgContent, g_cfgFilePath)) {
|
||||||
dzlog_error("%s:%d - %s\n",
|
dzlog_error("%s:%d - %s\n", config_error_file(&g_cfgContent), config_error_line(&g_cfgContent), config_error_text(&g_cfgContent));
|
||||||
config_error_file(&g_cfgContent),
|
|
||||||
config_error_line(&g_cfgContent),
|
|
||||||
config_error_text(&g_cfgContent));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,10 +384,12 @@ static void refreshCfgFileCb() {
|
||||||
char *pStr;
|
char *pStr;
|
||||||
long long iVal;
|
long long iVal;
|
||||||
double fVal;
|
double fVal;
|
||||||
|
sds realKey = sdsnew("application.");
|
||||||
|
realKey = sdscat(realKey, pItem->pcfgKey);
|
||||||
|
|
||||||
switch (pItem->valType) {
|
switch (pItem->valType) {
|
||||||
case VALUE_TYPE_STRING:
|
case VAL_STR:
|
||||||
pStr = (char *)load_string_value(pItem->pcfgKey);
|
pStr = (char *)load_string_value(realKey);
|
||||||
if (pStr) {
|
if (pStr) {
|
||||||
if (strcmp(pItem->value.strValue, pStr) != 0) {
|
if (strcmp(pItem->value.strValue, pStr) != 0) {
|
||||||
if (pItem->value.strValue != NULL) {
|
if (pItem->value.strValue != NULL) {
|
||||||
|
@ -389,8 +403,8 @@ static void refreshCfgFileCb() {
|
||||||
free(pStr);
|
free(pStr);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_BOOL:
|
case VAL_BOOL:
|
||||||
iVal = load_boolean_value(pItem->pcfgKey);
|
iVal = load_boolean_value(realKey);
|
||||||
|
|
||||||
if (iVal != DEFAULT_INTEGRAL_ERR_VALUE) {
|
if (iVal != DEFAULT_INTEGRAL_ERR_VALUE) {
|
||||||
if (pItem->value.longValue != iVal) {
|
if (pItem->value.longValue != iVal) {
|
||||||
|
@ -400,8 +414,8 @@ static void refreshCfgFileCb() {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_INTEGRAL:
|
case VAL_INT:
|
||||||
iVal = load_integral_value(pItem->pcfgKey);
|
iVal = load_integral_value(realKey);
|
||||||
|
|
||||||
if (iVal != DEFAULT_INTEGRAL_ERR_VALUE) {
|
if (iVal != DEFAULT_INTEGRAL_ERR_VALUE) {
|
||||||
if (pItem->value.longValue != iVal) {
|
if (pItem->value.longValue != iVal) {
|
||||||
|
@ -411,8 +425,8 @@ static void refreshCfgFileCb() {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_FLOAT:
|
case VAL_FLOAT:
|
||||||
fVal = load_float_value(pItem->pcfgKey);
|
fVal = load_float_value(realKey);
|
||||||
|
|
||||||
if (fVal != DEFAULT_INTEGRAL_ERR_VALUE) {
|
if (fVal != DEFAULT_INTEGRAL_ERR_VALUE) {
|
||||||
if (pItem->value.floatValue != fVal) {
|
if (pItem->value.floatValue != fVal) {
|
||||||
|
@ -422,12 +436,12 @@ static void refreshCfgFileCb() {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_ARRAY_STR:
|
case VAL_ARRAY_STR:
|
||||||
load_array_str(pItem->pcfgKey, pItem);
|
load_array_str(realKey, pItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_TYPE_ARRAY_OBJ:
|
case VAL_ARRAY_OBJ:
|
||||||
load_array_obj(pItem->pcfgKey, pItem);
|
load_array_obj(realKey, pItem);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -437,6 +451,8 @@ static void refreshCfgFileCb() {
|
||||||
if (pItem->isChanged) {
|
if (pItem->isChanged) {
|
||||||
cfgUpgrade = TRUE;
|
cfgUpgrade = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sdsfree(realKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cfgUpgrade) {
|
if (cfgUpgrade) {
|
||||||
|
@ -472,27 +488,17 @@ const char *config_item_dump_fmt(const char *titleMessage) {
|
||||||
memset(tmp2, 0, 256);
|
memset(tmp2, 0, 256);
|
||||||
sprintf(tmp2, "%s%s", cfg_is_upgrade(pItem) ? "*" : " ", pItem->pStrId);
|
sprintf(tmp2, "%s%s", cfg_is_upgrade(pItem) ? "*" : " ", pItem->pStrId);
|
||||||
switch (pItem->valType) {
|
switch (pItem->valType) {
|
||||||
case VALUE_TYPE_BOOL:
|
case VAL_BOOL:
|
||||||
s = sdscatprintf(s,
|
|
||||||
"|%4d | %-25s | %-45s | %-64s |\n",
|
|
||||||
pItem->cfgId,
|
|
||||||
tmp2,
|
|
||||||
pItem->pcfgKey,
|
|
||||||
CFG_BOOL_VALUE(pItem) ? "True" : "False");
|
|
||||||
break;
|
|
||||||
case VALUE_TYPE_INTEGRAL:
|
|
||||||
s = sdscatprintf(
|
s = sdscatprintf(
|
||||||
s, "|%4d | %-25s | %-45s | %-64lld |\n", pItem->cfgId, tmp2, pItem->pcfgKey, CFG_INT_VALUE(pItem));
|
s, "|%4d | %-25s | %-45s | %-64s |\n", pItem->cfgId, tmp2, pItem->pcfgKey, CFG_BOOL_VALUE(pItem) ? "True" : "False");
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_FLOAT:
|
case VAL_INT:
|
||||||
s = sdscatprintf(s,
|
s = sdscatprintf(s, "|%4d | %-25s | %-45s | %-64lld |\n", pItem->cfgId, tmp2, pItem->pcfgKey, CFG_INT_VALUE(pItem));
|
||||||
"|%4d | %-25s | %-45s | %-64Lf |\n",
|
|
||||||
pItem->cfgId,
|
|
||||||
tmp2,
|
|
||||||
pItem->pcfgKey,
|
|
||||||
CFG_FLOAT_VALUE(pItem));
|
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_STRING:
|
case VAL_FLOAT:
|
||||||
|
s = sdscatprintf(s, "|%4d | %-25s | %-45s | %-64Lf |\n", pItem->cfgId, tmp2, pItem->pcfgKey, CFG_FLOAT_VALUE(pItem));
|
||||||
|
break;
|
||||||
|
case VAL_STR:
|
||||||
tmp = sdsempty();
|
tmp = sdsempty();
|
||||||
tmp = sdscatprintf(tmp, "\"%s\"", CFG_STRING_VALUE(pItem));
|
tmp = sdscatprintf(tmp, "\"%s\"", CFG_STRING_VALUE(pItem));
|
||||||
if (sdslen(tmp) > 63) {
|
if (sdslen(tmp) > 63) {
|
||||||
|
@ -502,7 +508,7 @@ const char *config_item_dump_fmt(const char *titleMessage) {
|
||||||
s = sdscatprintf(s, "|%4d | %-25s | %-45s | %-64s |\n", pItem->cfgId, tmp2, pItem->pcfgKey, tmp);
|
s = sdscatprintf(s, "|%4d | %-25s | %-45s | %-64s |\n", pItem->cfgId, tmp2, pItem->pcfgKey, tmp);
|
||||||
sdsfree(tmp);
|
sdsfree(tmp);
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_ARRAY_STR:
|
case VAL_ARRAY_STR:
|
||||||
tmp = sdsempty();
|
tmp = sdsempty();
|
||||||
tmp = sdscat(tmp, "[");
|
tmp = sdscat(tmp, "[");
|
||||||
for (i = 0; i < vect_size(pItem->value.array); i++) {
|
for (i = 0; i < vect_size(pItem->value.array); i++) {
|
||||||
|
@ -521,7 +527,7 @@ const char *config_item_dump_fmt(const char *titleMessage) {
|
||||||
s = sdscatprintf(s, "|%4d | %-25s | %-45s | %-64s |\n", pItem->cfgId, tmp2, pItem->pcfgKey, tmp);
|
s = sdscatprintf(s, "|%4d | %-25s | %-45s | %-64s |\n", pItem->cfgId, tmp2, pItem->pcfgKey, tmp);
|
||||||
sdsfree(tmp);
|
sdsfree(tmp);
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_ARRAY_OBJ:
|
case VAL_ARRAY_OBJ:
|
||||||
for (i = 0; i < vect_size(pItem->value.array); i++) {
|
for (i = 0; i < vect_size(pItem->value.array); i++) {
|
||||||
POBJ_DHCP_RNG p = (POBJ_DHCP_RNG)vect_get_at(pItem->value.array, i);
|
POBJ_DHCP_RNG p = (POBJ_DHCP_RNG)vect_get_at(pItem->value.array, i);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
|
@ -579,28 +585,28 @@ void config_item_dump(const char *titleMessage) {
|
||||||
dzlog_info("================== %s ===================\n", titleMessage == NULL ? "" : titleMessage);
|
dzlog_info("================== %s ===================\n", titleMessage == NULL ? "" : titleMessage);
|
||||||
HASH_ITER(hh, g_pConfigItem, pItem, pTmp) {
|
HASH_ITER(hh, g_pConfigItem, pItem, pTmp) {
|
||||||
switch (pItem->valType) {
|
switch (pItem->valType) {
|
||||||
case VALUE_TYPE_BOOL:
|
case VAL_BOOL:
|
||||||
dzlog_info("%s%-25s: [%-45s] = %s\n",
|
dzlog_info("%s%-25s: [%-45s] = %s\n",
|
||||||
cfg_is_upgrade(pItem) ? "*" : " ",
|
cfg_is_upgrade(pItem) ? "*" : " ",
|
||||||
pItem->pStrId,
|
pItem->pStrId,
|
||||||
pItem->pcfgKey,
|
pItem->pcfgKey,
|
||||||
CFG_BOOL_VALUE(pItem) ? "True" : "False");
|
CFG_BOOL_VALUE(pItem) ? "True" : "False");
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_INTEGRAL:
|
case VAL_INT:
|
||||||
dzlog_info("%s%-25s: [%-45s] = %lld\n",
|
dzlog_info("%s%-25s: [%-45s] = %lld\n",
|
||||||
cfg_is_upgrade(pItem) ? "*" : " ",
|
cfg_is_upgrade(pItem) ? "*" : " ",
|
||||||
pItem->pStrId,
|
pItem->pStrId,
|
||||||
pItem->pcfgKey,
|
pItem->pcfgKey,
|
||||||
CFG_INT_VALUE(pItem));
|
CFG_INT_VALUE(pItem));
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_FLOAT:
|
case VAL_FLOAT:
|
||||||
dzlog_info("%s%-25s: [%-45s] = %Lf\n",
|
dzlog_info("%s%-25s: [%-45s] = %Lf\n",
|
||||||
cfg_is_upgrade(pItem) ? "*" : " ",
|
cfg_is_upgrade(pItem) ? "*" : " ",
|
||||||
pItem->pStrId,
|
pItem->pStrId,
|
||||||
pItem->pcfgKey,
|
pItem->pcfgKey,
|
||||||
CFG_FLOAT_VALUE(pItem));
|
CFG_FLOAT_VALUE(pItem));
|
||||||
break;
|
break;
|
||||||
case VALUE_TYPE_STRING:
|
case VAL_STR:
|
||||||
dzlog_info("%s%-25s: [%-45s] = \"%s\"\n",
|
dzlog_info("%s%-25s: [%-45s] = \"%s\"\n",
|
||||||
cfg_is_upgrade(pItem) ? "*" : " ",
|
cfg_is_upgrade(pItem) ? "*" : " ",
|
||||||
pItem->pStrId,
|
pItem->pStrId,
|
||||||
|
@ -665,6 +671,8 @@ const vector cfg_get_vector(CONFIG_ITEM_ID id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int init_config_system(const char *pCfgFile, const char *pKey) {
|
int init_config_system(const char *pCfgFile, const char *pKey) {
|
||||||
|
int i;
|
||||||
|
|
||||||
if (!file_exists(pCfgFile)) {
|
if (!file_exists(pCfgFile)) {
|
||||||
dzlog_error("Configuration file [%s] not exists\n", pCfgFile);
|
dzlog_error("Configuration file [%s] not exists\n", pCfgFile);
|
||||||
return -ERR_FILE_NOT_EXISTS;
|
return -ERR_FILE_NOT_EXISTS;
|
||||||
|
@ -676,7 +684,14 @@ int init_config_system(const char *pCfgFile, const char *pKey) {
|
||||||
|
|
||||||
config_init(&g_cfgContent);
|
config_init(&g_cfgContent);
|
||||||
|
|
||||||
ADD_DEFAULT_CONFIGURATION_ITEMS();
|
for (i = 0; i < ARRAY_SIZE(g_cfgItem); i++) {
|
||||||
|
add_new_cfg_item(g_cfgItem[i].cfgId,
|
||||||
|
g_cfgItem[i].cfgPath,
|
||||||
|
g_cfgItem[i].valType,
|
||||||
|
g_cfgItem[i].defValue,
|
||||||
|
g_cfgItem[i].pStrId,
|
||||||
|
g_cfgItem[i].readme);
|
||||||
|
}
|
||||||
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
refreshCfgFileCb();
|
refreshCfgFileCb();
|
||||||
|
@ -688,8 +703,8 @@ void uninit_config_system() {
|
||||||
PCONFIG_ITEM pItem, pTmp;
|
PCONFIG_ITEM pItem, pTmp;
|
||||||
HASH_ITER(hh, g_pConfigItem, pItem, pTmp) {
|
HASH_ITER(hh, g_pConfigItem, pItem, pTmp) {
|
||||||
switch (pItem->valType) {
|
switch (pItem->valType) {
|
||||||
case VALUE_TYPE_ARRAY_STR:
|
case VAL_ARRAY_STR:
|
||||||
case VALUE_TYPE_ARRAY_OBJ:
|
case VAL_ARRAY_OBJ:
|
||||||
vect_destroy(pItem->value.array);
|
vect_destroy(pItem->value.array);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -99,6 +99,7 @@ unsigned int cfg_get_sensor_refresh_period() {
|
||||||
return cfg_get_integral_value(CFG_SENSOR_REFRESH);
|
return cfg_get_integral_value(CFG_SENSOR_REFRESH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USED_REDIS
|
||||||
const char *cfg_get_redis_server() {
|
const char *cfg_get_redis_server() {
|
||||||
return cfg_get_string_value(CFG_DB_REDIS_SERVER);
|
return cfg_get_string_value(CFG_DB_REDIS_SERVER);
|
||||||
}
|
}
|
||||||
|
@ -110,7 +111,9 @@ int cfg_get_redis_port() {
|
||||||
const char *cfg_get_redis_passwd() {
|
const char *cfg_get_redis_passwd() {
|
||||||
return cfg_get_string_value(CFG_DB_REDIS_PASSWD);
|
return cfg_get_string_value(CFG_DB_REDIS_PASSWD);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USED_MYSQL
|
||||||
const char *cfg_get_mysql_server() {
|
const char *cfg_get_mysql_server() {
|
||||||
return cfg_get_string_value(CFG_DB_MYSQL_SERVER);
|
return cfg_get_string_value(CFG_DB_MYSQL_SERVER);
|
||||||
}
|
}
|
||||||
|
@ -130,6 +133,7 @@ const char *cfg_get_mysql_passwd() {
|
||||||
const char *cfg_get_mysql_database() {
|
const char *cfg_get_mysql_database() {
|
||||||
return cfg_get_string_value(CFG_DB_MYSQL_DB_NAME);
|
return cfg_get_string_value(CFG_DB_MYSQL_DB_NAME);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int cfg_get_zero_mq_port() {
|
int cfg_get_zero_mq_port() {
|
||||||
return (unsigned short)cfg_get_integral_value(CFG_MQ_SVR_PORT);
|
return (unsigned short)cfg_get_integral_value(CFG_MQ_SVR_PORT);
|
||||||
|
|
|
@ -21,49 +21,57 @@ typedef struct {
|
||||||
} OBJ_DHCP_RNG, *POBJ_DHCP_RNG;
|
} OBJ_DHCP_RNG, *POBJ_DHCP_RNG;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VALUE_TYPE_INTEGRAL = 0,
|
VAL_INT = 0,
|
||||||
VALUE_TYPE_FLOAT = 1,
|
VAL_FLOAT = 1,
|
||||||
VALUE_TYPE_STRING = 2,
|
VAL_STR = 2,
|
||||||
VALUE_TYPE_BOOL = 3,
|
VAL_BOOL = 3,
|
||||||
VALUE_TYPE_ARRAY_STR = 4,
|
VAL_ARRAY_STR = 4,
|
||||||
VALUE_TYPE_ARRAY_OBJ = 5,
|
VAL_ARRAY_OBJ = 5,
|
||||||
} CONFIG_VALUE_TYPE;
|
} CONFIG_VALUE_TYPE;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CFG_DIRECTORY = 0,
|
CFG_DIRECTORY,
|
||||||
CFG_CURL_CA_PATH = 1,
|
CFG_CURL_CA_PATH,
|
||||||
CFG_BANNER_SHOW = 2,
|
CFG_BANNER_SHOW,
|
||||||
CFG_HARDWARE_WATCH = 3,
|
CFG_HARDWARE_WATCH,
|
||||||
CFG_HARDWARE_REFRESH = 4,
|
CFG_HARDWARE_REFRESH,
|
||||||
CFG_WATCH_CPU = 5,
|
CFG_WATCH_CPU,
|
||||||
CFG_WATCH_MEMORY = 6,
|
CFG_WATCH_MEMORY,
|
||||||
CFG_WATCH_DISK = 7,
|
CFG_WATCH_DISK,
|
||||||
CFG_WATCH_SENSOR = 8,
|
CFG_WATCH_SENSOR,
|
||||||
CFG_CPU_REFRESH = 9,
|
CFG_CPU_REFRESH,
|
||||||
CFG_MEM_REFRESH = 10,
|
CFG_MEM_REFRESH,
|
||||||
CFG_DISK_REFRESH = 11,
|
CFG_DISK_REFRESH,
|
||||||
CFG_SENSOR_REFRESH = 12,
|
CFG_SENSOR_REFRESH,
|
||||||
CFG_DB_REDIS_SERVER = 13,
|
#ifdef USED_REDIS
|
||||||
CFG_DB_REDIS_PORT = 14,
|
CFG_DB_REDIS_SERVER,
|
||||||
CFG_DB_REDIS_PASSWD = 15,
|
CFG_DB_REDIS_PORT,
|
||||||
CFG_DB_MYSQL_SERVER = 16,
|
CFG_DB_REDIS_PASSWD,
|
||||||
CFG_DB_MYSQL_PORT = 17,
|
#endif
|
||||||
CFG_DB_MYSQL_USER = 18,
|
#ifdef USED_MYSQL
|
||||||
CFG_DB_MYSQL_PASSWD = 19,
|
CFG_DB_MYSQL_SERVER,
|
||||||
CFG_DB_MYSQL_DB_NAME = 20,
|
CFG_DB_MYSQL_PORT,
|
||||||
CFG_MQ_SVR_PORT = 21,
|
CFG_DB_MYSQL_USER,
|
||||||
CFG_MQ_DATA_PATH = 22,
|
CFG_DB_MYSQL_PASSWD,
|
||||||
CFG_VXLAN_NIC_NAME = 23,
|
CFG_DB_MYSQL_DB_NAME,
|
||||||
CFG_VXLAN_SUPPORT = 24,
|
#endif
|
||||||
CFG_VXLAN_PEER_IP = 25,
|
#ifdef USED_SQLITE
|
||||||
CFG_VXLAN_PEER_MAC = 26,
|
CFG_DB_SQLITE_DB_NAME,
|
||||||
CFG_VXLAN_PKG_FILTER = 27,
|
CFG_DB_SQLITE_PASSWD,
|
||||||
CFG_HTTP_SVR_ADDR = 29,
|
#endif
|
||||||
CFG_HTTP_SVR_PORT = 30,
|
CFG_MQ_SVR_PORT,
|
||||||
CFG_HTTP_SVR_TCP_NODELAY = 31,
|
CFG_MQ_DATA_PATH,
|
||||||
CFG_DHCP_LISTEN_ON = 32,
|
CFG_VXLAN_NIC_NAME,
|
||||||
CFG_DHCP_REPLICATION_SVR = 33,
|
CFG_VXLAN_SUPPORT,
|
||||||
CFG_DHCP_RANGE_SET = 34,
|
CFG_VXLAN_PEER_IP,
|
||||||
|
CFG_VXLAN_PEER_MAC,
|
||||||
|
CFG_VXLAN_PKG_FILTER,
|
||||||
|
CFG_HTTP_SVR_ADDR,
|
||||||
|
CFG_HTTP_SVR_PORT,
|
||||||
|
CFG_HTTP_SVR_TCP_NODELAY,
|
||||||
|
CFG_DHCP_LISTEN_ON,
|
||||||
|
CFG_DHCP_REPLICATION_SVR,
|
||||||
|
CFG_DHCP_RANGE_SET,
|
||||||
CONFIG_ITEM_ID_MAX
|
CONFIG_ITEM_ID_MAX
|
||||||
} CONFIG_ITEM_ID;
|
} CONFIG_ITEM_ID;
|
||||||
|
|
||||||
|
@ -83,16 +91,20 @@ unsigned int cfg_get_cpu_refresh_period();
|
||||||
unsigned int cfg_get_mem_refresh_period();
|
unsigned int cfg_get_mem_refresh_period();
|
||||||
unsigned int cfg_get_disk_refresh_period();
|
unsigned int cfg_get_disk_refresh_period();
|
||||||
unsigned int cfg_get_sensor_refresh_period();
|
unsigned int cfg_get_sensor_refresh_period();
|
||||||
const char *cfg_get_redis_server();
|
#ifdef USED_REDIS
|
||||||
int cfg_get_redis_port();
|
const char *cfg_get_redis_server();
|
||||||
const char *cfg_get_redis_passwd();
|
int cfg_get_redis_port();
|
||||||
const char *cfg_get_mysql_server();
|
const char *cfg_get_redis_passwd();
|
||||||
int cfg_get_mysql_port();
|
#endif
|
||||||
const char *cfg_get_mysql_user();
|
#ifdef USED_MYSQL
|
||||||
const char *cfg_get_mysql_passwd();
|
const char *cfg_get_mysql_server();
|
||||||
const char *cfg_get_mysql_database();
|
int cfg_get_mysql_port();
|
||||||
int cfg_get_zero_mq_port();
|
const char *cfg_get_mysql_user();
|
||||||
const char *cfg_get_zero_mq_data_path();
|
const char *cfg_get_mysql_passwd();
|
||||||
|
const char *cfg_get_mysql_database();
|
||||||
|
#endif
|
||||||
|
int cfg_get_zero_mq_port();
|
||||||
|
const char *cfg_get_zero_mq_data_path();
|
||||||
|
|
||||||
const char *cfg_get_string_value(CONFIG_ITEM_ID id);
|
const char *cfg_get_string_value(CONFIG_ITEM_ID id);
|
||||||
const vector cfg_get_vector(CONFIG_ITEM_ID id);
|
const vector cfg_get_vector(CONFIG_ITEM_ID id);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -364,7 +364,7 @@ struct sqlite3_api_routines {
|
||||||
** is also defined in the file "loadext.c".
|
** is also defined in the file "loadext.c".
|
||||||
*/
|
*/
|
||||||
typedef int (*sqlite3_loadext_entry)(
|
typedef int (*sqlite3_loadext_entry)(
|
||||||
sqlite3 *db, /* Handle to the database. */
|
sqlite3 *db, /* Handle to the sqlitecipher. */
|
||||||
char **pzErrMsg, /* Used to set error string on failure. */
|
char **pzErrMsg, /* Used to set error string on failure. */
|
||||||
const sqlite3_api_routines *pThunk /* Extension API function pointers. */
|
const sqlite3_api_routines *pThunk /* Extension API function pointers. */
|
||||||
);
|
);
|
|
@ -73,7 +73,7 @@ typedef struct bridgeif_initdata_s {
|
||||||
/** Maximum number of ports in the bridge (ports are stored in an array, this
|
/** Maximum number of ports in the bridge (ports are stored in an array, this
|
||||||
influences memory allocated for netif->state of the bridge netif). */
|
influences memory allocated for netif->state of the bridge netif). */
|
||||||
u8_t max_ports;
|
u8_t max_ports;
|
||||||
/** Maximum number of dynamic/learning entries in the bridge's forwarding database.
|
/** Maximum number of dynamic/learning entries in the bridge's forwarding sqlitecipher.
|
||||||
In the default implementation, this controls memory consumption only. */
|
In the default implementation, this controls memory consumption only. */
|
||||||
u16_t max_fdb_dynamic_entries;
|
u16_t max_fdb_dynamic_entries;
|
||||||
/** Maximum number of static forwarding entries. Influences memory consumption! */
|
/** Maximum number of static forwarding entries. Influences memory consumption! */
|
||||||
|
|
|
@ -440,7 +440,7 @@ struct ppp_pcb_s {
|
||||||
* RFC 1994 says:
|
* RFC 1994 says:
|
||||||
*
|
*
|
||||||
* In practice, within or associated with each PPP server, there is a
|
* In practice, within or associated with each PPP server, there is a
|
||||||
* database which associates "user" names with authentication
|
* sqlitecipher which associates "user" names with authentication
|
||||||
* information ("secrets"). It is not anticipated that a particular
|
* information ("secrets"). It is not anticipated that a particular
|
||||||
* named user would be authenticated by multiple methods. This would
|
* named user would be authenticated by multiple methods. This would
|
||||||
* make the user vulnerable to attacks which negotiate the least secure
|
* make the user vulnerable to attacks which negotiate the least secure
|
||||||
|
|
|
@ -124,7 +124,7 @@ u8_t bridgeif_netif_client_id = 0xff;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bridgeif
|
* @ingroup bridgeif
|
||||||
* Add a static entry to the forwarding database.
|
* Add a static entry to the forwarding sqlitecipher.
|
||||||
* A static entry marks where frames to a specific eth address (unicast or group address) are
|
* A static entry marks where frames to a specific eth address (unicast or group address) are
|
||||||
* forwarded.
|
* forwarded.
|
||||||
* bits [0..(BRIDGEIF_MAX_PORTS-1)]: hw ports
|
* bits [0..(BRIDGEIF_MAX_PORTS-1)]: hw ports
|
||||||
|
@ -162,7 +162,7 @@ bridgeif_fdb_add(struct netif *bridgeif, const struct eth_addr *addr, bridgeif_p
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bridgeif
|
* @ingroup bridgeif
|
||||||
* Remove a static entry from the forwarding database
|
* Remove a static entry from the forwarding sqlitecipher
|
||||||
*/
|
*/
|
||||||
err_t
|
err_t
|
||||||
bridgeif_fdb_remove(struct netif *bridgeif, const struct eth_addr *addr)
|
bridgeif_fdb_remove(struct netif *bridgeif, const struct eth_addr *addr)
|
||||||
|
|
|
@ -65,7 +65,7 @@ typedef struct bridgeif_dfdb_s {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup bridgeif_fdb
|
* @ingroup bridgeif_fdb
|
||||||
* A real simple and slow implementation of an auto-learning forwarding database that
|
* A real simple and slow implementation of an auto-learning forwarding sqlitecipher that
|
||||||
* remembers known src mac addresses to know which port to send frames destined for that
|
* remembers known src mac addresses to know which port to send frames destined for that
|
||||||
* mac address.
|
* mac address.
|
||||||
*
|
*
|
||||||
|
|
|
@ -381,7 +381,7 @@ option_t auth_options[] = {
|
||||||
&explicit_remote, MAXNAMELEN },
|
&explicit_remote, MAXNAMELEN },
|
||||||
|
|
||||||
{ "login", o_bool, &uselogin,
|
{ "login", o_bool, &uselogin,
|
||||||
"Use system password database for PAP", OPT_A2COPY | 1 ,
|
"Use system password sqlitecipher for PAP", OPT_A2COPY | 1 ,
|
||||||
&session_mgmt },
|
&session_mgmt },
|
||||||
{ "enable-session", o_bool, &session_mgmt,
|
{ "enable-session", o_bool, &session_mgmt,
|
||||||
"Enable session accounting for remote peers", OPT_PRIV | 1 },
|
"Enable session accounting for remote peers", OPT_PRIV | 1 },
|
||||||
|
@ -1546,7 +1546,7 @@ auth_reset(unit)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check_passwd - Check the user name and passwd against the PAP secrets
|
* check_passwd - Check the user name and passwd against the PAP secrets
|
||||||
* file. If requested, also check against the system password database,
|
* file. If requested, also check against the system password sqlitecipher,
|
||||||
* and login the user if OK.
|
* and login the user if OK.
|
||||||
*
|
*
|
||||||
* returns:
|
* returns:
|
||||||
|
@ -1618,7 +1618,7 @@ check_passwd(unit, auser, userlen, apasswd, passwdlen, msg)
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* If the secret is "@login", it means to check
|
* If the secret is "@login", it means to check
|
||||||
* the password against the login database.
|
* the password against the login sqlitecipher.
|
||||||
*/
|
*/
|
||||||
int login_secret = strcmp(secret, "@login") == 0;
|
int login_secret = strcmp(secret, "@login") == 0;
|
||||||
ret = UPAP_AUTHACK;
|
ret = UPAP_AUTHACK;
|
||||||
|
|
|
@ -511,7 +511,7 @@ static void eap_figure_next_state(ppp_pcb *pcb, int status) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Look up user in secrets database. */
|
/* Look up user in secrets sqlitecipher. */
|
||||||
if (get_srp_secret(pcb->eap.es_unit, pcb->eap.es_server.ea_peer,
|
if (get_srp_secret(pcb->eap.es_unit, pcb->eap.es_server.ea_peer,
|
||||||
pcb->eap.es_server.ea_name, (char *)secbuf, 1) != 0) {
|
pcb->eap.es_server.ea_name, (char *)secbuf, 1) != 0) {
|
||||||
/* Set up default in case SRP entry is bad */
|
/* Set up default in case SRP entry is bad */
|
||||||
|
|
|
@ -204,7 +204,7 @@ mp_join_bundle()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if the bundle ID is already in the database.
|
* Check if the bundle ID is already in the sqlitecipher.
|
||||||
*/
|
*/
|
||||||
unit = -1;
|
unit = -1;
|
||||||
lock_db();
|
lock_db();
|
||||||
|
|
Loading…
Reference in New Issue