parent
c3be7eafe2
commit
2529f04b66
|
@ -12,6 +12,10 @@ application:
|
|||
system_info_refresh = 10; # 硬件信息监控刷新频率(秒)
|
||||
};
|
||||
|
||||
agent: {
|
||||
iptv_report_url = "http://127.0.0.1:50012/vcpe/dhcp/info"; # IPTV 设备上报接口
|
||||
};
|
||||
|
||||
# 硬件监控相关配置内容
|
||||
watch_params:
|
||||
{
|
||||
|
|
|
@ -65,6 +65,8 @@ static CFG_ITEM g_cfgItem[] = {
|
|||
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"),
|
||||
// Agent 配置
|
||||
DEF_CFG_ITEM(CFG_AGENT_IPTV_POST_URL, "agent.iptv_report_url", VAL_STR, "", "IPTV report URL"),
|
||||
/* 系统监控设备相配置 */
|
||||
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"),
|
||||
|
|
|
@ -33,6 +33,10 @@ c_vector config_get_dhcp_mac_filter() {
|
|||
}
|
||||
#endif
|
||||
|
||||
const char *config_get_agent_iptv_report_url() {
|
||||
return cfg_get_string_value(CFG_AGENT_IPTV_POST_URL);
|
||||
}
|
||||
|
||||
const char *config_get_http_server_addr() {
|
||||
return cfg_get_string_value(CFG_HTTP_SVR_ADDR);
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ typedef enum {
|
|||
CFG_BANNER_SHOW,
|
||||
CFG_HARDWARE_WATCH,
|
||||
CFG_HARDWARE_REFRESH,
|
||||
CFG_AGENT_IPTV_POST_URL,
|
||||
CFG_WATCH_CPU,
|
||||
CFG_WATCH_MEMORY,
|
||||
CFG_WATCH_DISK,
|
||||
|
@ -132,6 +133,7 @@ const char *config_get_vxlan_nic_name();
|
|||
const char *config_get_vxlan_peer_mac();
|
||||
const char *config_get_vxlan_peer_ip();
|
||||
const char *config_get_vxlan_pkg_filter();
|
||||
const char *config_get_agent_iptv_report_url();
|
||||
const char *config_get_http_server_addr();
|
||||
unsigned int config_get_http_server_port();
|
||||
int config_get_http_server_tcp_nodelay();
|
||||
|
|
|
@ -729,6 +729,7 @@ const char *inet_http_post_async(const char *pURL, const char *pPost, on_http_re
|
|||
pParams->pCurl = pCurl;
|
||||
pParams->lastTm = 0;
|
||||
pParams->isCancel = FALSE;
|
||||
pParams->createTm = LIBUV_CURRENT_TIME_S();
|
||||
|
||||
memset(pParams->pReqUrl, 0, strlen(pURL) + 1);
|
||||
strcpy(pParams->pReqUrl, pURL);
|
||||
|
|
|
@ -26,6 +26,7 @@ using namespace std;
|
|||
#include "user_errno.h"
|
||||
#include "uthash/uthash.h"
|
||||
#include "sds/sds.h"
|
||||
#include "inet_misc.h"
|
||||
|
||||
extern data2 cfig;
|
||||
extern bool kRunning;
|
||||
|
@ -1173,8 +1174,27 @@ int opendhcp_add_listener() {
|
|||
return i;
|
||||
}
|
||||
|
||||
void on_http_response_cb(void *pData,
|
||||
unsigned int size,
|
||||
const char *pReqUrl,
|
||||
const char *pDlPath,
|
||||
const char *pTaskUuid,
|
||||
int iFinished,
|
||||
void *pUserData) {
|
||||
if (iFinished == 0) {
|
||||
dzlog_debug("Request(%s): [%s] Response: [%u] OK:\n", pTaskUuid, pReqUrl, size);
|
||||
} else if (iFinished == 1) {
|
||||
dzlog_error("Request(%s): [%s] Response: [%u] Error\n", pTaskUuid, pReqUrl, size);
|
||||
} else {
|
||||
dzlog_error("Download Error Code: %d\n", iFinished);
|
||||
}
|
||||
}
|
||||
|
||||
void iptvCacheCb(void *UNUSED(pArg)) {
|
||||
do {
|
||||
bool isReport = false;
|
||||
const char *pUrl = config_get_agent_iptv_report_url();
|
||||
PIPTV_DEV_SET report = nullptr;
|
||||
PIPTV_DEV_SET pDev, pTmp = nullptr;
|
||||
uv_rwlock_wrlock(&g_uvCacheLock);
|
||||
HASH_ITER(hh, g_iptvNewDevs, pDev, pTmp) {
|
||||
|
@ -1185,8 +1205,9 @@ void iptvCacheCb(void *UNUSED(pArg)) {
|
|||
if (!pTemp) {
|
||||
auto pCacheDev = (PIPTV_DEV_SET)malloc(sizeof(IPTV_DEV_SET));
|
||||
memcpy(pCacheDev, pDev, sizeof(IPTV_DEV_SET));
|
||||
// Report new IPTV device MAC
|
||||
pCacheDev->isReport = 1;
|
||||
HASH_ADD_STR(report, iptvMAC, pCacheDev);
|
||||
|
||||
isReport = true;
|
||||
// 添加到缓存列表供后续查询
|
||||
HASH_ADD_STR(g_iptvCacheDevs, iptvMAC, pCacheDev);
|
||||
dzlog_debug("Add IPTV device %s vni %d to cache\n", pCacheDev->iptvMAC, pCacheDev->vni);
|
||||
|
@ -1197,6 +1218,28 @@ void iptvCacheCb(void *UNUSED(pArg)) {
|
|||
free((void *)pDevMac);
|
||||
}
|
||||
uv_rwlock_wrunlock(&g_uvCacheLock);
|
||||
|
||||
if (isReport && pUrl && strlen(pUrl) > 0) {
|
||||
cJSON *pRspMsg = cJSON_CreateObject();
|
||||
cJSON *pMsgArray = cJSON_CreateArray();
|
||||
cJSON_AddItemToObject(pRspMsg, "iptvDevs", pMsgArray);
|
||||
|
||||
HASH_ITER(hh, report, pDev, pTmp) {
|
||||
cJSON *pRspItem = cJSON_CreateObject();
|
||||
cJSON_AddStringToObject(pRspItem, "mac", pDev->iptvMAC);
|
||||
cJSON_AddNumberToObject(pRspItem, "vni", pDev->vni);
|
||||
pDev->isReport = 1;
|
||||
cJSON_AddItemToArray(pMsgArray, pRspItem);
|
||||
}
|
||||
|
||||
const char *pStrPro = proto_create_new(pRspMsg, 200);
|
||||
|
||||
// Report new IPTV device MAC
|
||||
inet_http_post_async(config_get_agent_iptv_report_url(), pStrPro, on_http_response_cb, nullptr);
|
||||
|
||||
free((void *)pStrPro);
|
||||
}
|
||||
|
||||
uv_sleep(10);
|
||||
} while (true);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue