Mod aaa-12 add lighttpd
RCA: SOL: 修改人:zhouwuqing 检视人:zhouwuqing
This commit is contained in:
parent
292ea84bd2
commit
52c16b45e7
|
@ -1,6 +1,7 @@
|
||||||
#include "first.h"
|
#include "first.h"
|
||||||
|
|
||||||
#include "base.h"
|
#include "base.h"
|
||||||
|
#include "buffer.h"
|
||||||
#include "plugin.h"
|
#include "plugin.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "response.h"
|
#include "response.h"
|
||||||
|
@ -15,17 +16,19 @@
|
||||||
#include "json.h"
|
#include "json.h"
|
||||||
#include "../../../../Common/config_manager.h"
|
#include "../../../../Common/config_manager.h"
|
||||||
|
|
||||||
typedef int (*mod_web_cfg_proc)(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point);
|
typedef int (*mod_web_cfg_proc)(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point);
|
||||||
typedef int (*mod_web_cfg_exec_sync)(uint32_t config_type, uint64 config_id, char* config_data, int config_len, char**output, int *output_len);
|
typedef int (*mod_web_cfg_exec_sync)(uint32_t config_type, uint64 config_id, char* config_data, int config_len, char**output, int *output_len);
|
||||||
|
|
||||||
typedef enum { WEBM_HANDLE_INVALID_INDEX = -1,
|
typedef enum { WEBM_HANDLE_INVALID_INDEX = -1,
|
||||||
WEBM_HANDLE_LOGIN,
|
WEBM_HANDLE_LOGIN,
|
||||||
WEBM_HANDLE_HOMEPAGE,
|
WEBM_HANDLE_HOMEPAGE,
|
||||||
|
|
||||||
/* WEBM_HANDLE_CFG_GET_MAX, */
|
/* 以下是页面取数展示的case,后续提升性能可能通过数据库查询,所以先放到一起 */
|
||||||
|
WEBM_HANDLE_CONFIG_LIST_GROUP,
|
||||||
|
|
||||||
/* 所有配置下发的处理使用下面同一个handle,上面是针对取数显示添加 */
|
/* 以下是配置操作相关的case */
|
||||||
WEBM_HANDLE_CONFIG,
|
WEBM_HANDLE_CONFIG_ADD_GROUP,
|
||||||
|
WEBM_HANDLE_CONFIG_IPV4,
|
||||||
WEBM_HANDLE_MAX
|
WEBM_HANDLE_MAX
|
||||||
} webm_handle_index;
|
} webm_handle_index;
|
||||||
|
|
||||||
|
@ -33,6 +36,7 @@ typedef struct _webm_config_st
|
||||||
{
|
{
|
||||||
webm_handle_index index;
|
webm_handle_index index;
|
||||||
char *config_name;
|
char *config_name;
|
||||||
|
uint32_t confg_type;
|
||||||
uint64 confg_id;
|
uint64 confg_id;
|
||||||
mod_web_cfg_proc cfg_cb;
|
mod_web_cfg_proc cfg_cb;
|
||||||
}webm_config_t;
|
}webm_config_t;
|
||||||
|
@ -56,9 +60,9 @@ typedef struct {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern int webm_login_proc(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point);
|
extern int webm_login_proc(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point);
|
||||||
extern int webm_homepage_ifstatus_proc(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point);
|
extern int webm_homepage_ifstatus_proc(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point);
|
||||||
extern int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point);
|
extern int webm_config_set_proc(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point);
|
||||||
|
|
||||||
#define CONFIG_SERVICE_ARRAY \
|
#define CONFIG_SERVICE_ARRAY \
|
||||||
{ \
|
{ \
|
||||||
|
@ -66,6 +70,7 @@ extern int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, ch
|
||||||
WEBM_HANDLE_LOGIN, \
|
WEBM_HANDLE_LOGIN, \
|
||||||
"/login-ISG", \
|
"/login-ISG", \
|
||||||
-1, \
|
-1, \
|
||||||
|
-1, \
|
||||||
webm_login_proc \
|
webm_login_proc \
|
||||||
},\
|
},\
|
||||||
\
|
\
|
||||||
|
@ -73,33 +78,38 @@ extern int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, ch
|
||||||
WEBM_HANDLE_HOMEPAGE, \
|
WEBM_HANDLE_HOMEPAGE, \
|
||||||
"/ISG-home-ifnetstatus", \
|
"/ISG-home-ifnetstatus", \
|
||||||
-1, \
|
-1, \
|
||||||
|
-1, \
|
||||||
webm_homepage_ifstatus_proc \
|
webm_homepage_ifstatus_proc \
|
||||||
},\
|
},\
|
||||||
\
|
\
|
||||||
{\
|
{\
|
||||||
WEBM_HANDLE_CONFIG, \
|
WEBM_HANDLE_CONFIG_LIST_GROUP, \
|
||||||
"/FSG-CF/um-group-add", \
|
"/FSG-CF/um-group-showlist", \
|
||||||
|
4, \
|
||||||
USER_MANAGER_CONFIG_GROUP, \
|
USER_MANAGER_CONFIG_GROUP, \
|
||||||
webm_config_send_proc \
|
webm_config_set_proc \
|
||||||
},\
|
},\
|
||||||
\
|
\
|
||||||
{\
|
{\
|
||||||
WEBM_HANDLE_CONFIG, \
|
WEBM_HANDLE_CONFIG_ADD_GROUP, \
|
||||||
|
"/FSG-CF/um-group-add", \
|
||||||
|
3, \
|
||||||
|
USER_MANAGER_CONFIG_GROUP, \
|
||||||
|
webm_config_set_proc \
|
||||||
|
},\
|
||||||
|
\
|
||||||
|
{\
|
||||||
|
WEBM_HANDLE_CONFIG_IPV4, \
|
||||||
"/ISG-CF/ipv4", \
|
"/ISG-CF/ipv4", \
|
||||||
|
3, \
|
||||||
IPCONFIG_V4, \
|
IPCONFIG_V4, \
|
||||||
webm_config_send_proc \
|
webm_config_set_proc \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
}
|
}
|
||||||
|
|
||||||
webm_config_t g_webn_config_service[] = CONFIG_SERVICE_ARRAY;
|
webm_config_t g_webn_config_service[] = CONFIG_SERVICE_ARRAY;
|
||||||
|
|
||||||
|
|
||||||
char *err_string[WEBM_ERR_MAX] = { "0",
|
|
||||||
"1"
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the basic and digest auth framework
|
* the basic and digest auth framework
|
||||||
*
|
*
|
||||||
|
@ -147,26 +157,11 @@ FREE_FUNC(mod_webm_free) {
|
||||||
return HANDLER_GO_ON;
|
return HANDLER_GO_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int webm_config_set_proc(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point)
|
||||||
char *webm_get_errcode_string(int code)
|
|
||||||
{
|
|
||||||
char *string = NULL;
|
|
||||||
|
|
||||||
if (WEBM_ERR_MAX > code)
|
|
||||||
{
|
|
||||||
string = err_string[code];
|
|
||||||
}
|
|
||||||
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point)
|
|
||||||
{
|
{
|
||||||
char *out;
|
char *out;
|
||||||
cJSON *root;
|
cJSON *root = NULL;
|
||||||
char *ret_str;
|
char *mess_str = NULL;
|
||||||
char *mess_str;
|
|
||||||
int mess_len = 0;
|
int mess_len = 0;
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
mod_webm_plugin_data *p_d = point;
|
mod_webm_plugin_data *p_d = point;
|
||||||
|
@ -181,12 +176,12 @@ int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, char **da
|
||||||
ret = p_d->web_cfg_exec(3, confg_id, data_in, strlen(data_in), &mess_str, &mess_len);
|
ret = p_d->web_cfg_exec(3, confg_id, data_in, strlen(data_in), &mess_str, &mess_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (0 != ret)
|
||||||
|
{
|
||||||
/* create root node and array */
|
/* create root node and array */
|
||||||
root = cJSON_CreateObject();
|
root = cJSON_CreateObject();
|
||||||
|
|
||||||
ret_str = webm_get_errcode_string(ret);
|
if (NULL == cJSON_AddStringToObject(root,"resultCode","1"))
|
||||||
|
|
||||||
if (NULL == cJSON_AddStringToObject(root,"resultCode",ret_str))
|
|
||||||
{
|
{
|
||||||
log_error_write(srv, __FILE__, __LINE__, "s", "json fail");
|
log_error_write(srv, __FILE__, __LINE__, "s", "json fail");
|
||||||
goto end;
|
goto end;
|
||||||
|
@ -197,7 +192,7 @@ int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, char **da
|
||||||
mess_str = "";
|
mess_str = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NULL == cJSON_AddStringToObject(root,"message",mess_str))
|
if (NULL == cJSON_AddStringToObject(root,"message","系统错误"))
|
||||||
{
|
{
|
||||||
log_error_write(srv, __FILE__, __LINE__, "s", "json fail");
|
log_error_write(srv, __FILE__, __LINE__, "s", "json fail");
|
||||||
goto end;
|
goto end;
|
||||||
|
@ -205,11 +200,21 @@ int webm_config_send_proc(server *srv, uint64 confg_id, char *data_in, char **da
|
||||||
|
|
||||||
/* print everything */
|
/* print everything */
|
||||||
out = cJSON_PrintUnformatted(root);
|
out = cJSON_PrintUnformatted(root);
|
||||||
*data_out = out;
|
buffer_copy_string(data_out, out);
|
||||||
|
free(out);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer_copy_string(data_out, mess_str);
|
||||||
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
end:
|
end:
|
||||||
/* free all objects under root and root itself */
|
/* free all objects under root and root itself */
|
||||||
|
if (root)
|
||||||
|
{
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -264,7 +269,7 @@ end:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int webm_login_proc(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point)
|
int webm_login_proc(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point)
|
||||||
{
|
{
|
||||||
char acount[WEBM_ACOUNT_NAME_MAX + 1] = {0};
|
char acount[WEBM_ACOUNT_NAME_MAX + 1] = {0};
|
||||||
char pwd[WEBM_PWD_MAX + 1] = {0};
|
char pwd[WEBM_PWD_MAX + 1] = {0};
|
||||||
|
@ -318,7 +323,9 @@ int webm_login_proc(server *srv, uint64 confg_id, char *data_in, char **data_out
|
||||||
|
|
||||||
/* print everything */
|
/* print everything */
|
||||||
out = cJSON_PrintUnformatted(root);
|
out = cJSON_PrintUnformatted(root);
|
||||||
*data_out = out;
|
|
||||||
|
buffer_copy_string(data_out, out);
|
||||||
|
free(out);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
end:
|
end:
|
||||||
/* free all objects under root and root itself */
|
/* free all objects under root and root itself */
|
||||||
|
@ -327,7 +334,7 @@ end:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int webm_homepage_ifstatus_proc(server *srv, uint64 confg_id, char *data_in, char **data_out, void *point)
|
int webm_homepage_ifstatus_proc(server *srv, uint64 confg_id, char *data_in, buffer *data_out, void *point)
|
||||||
{
|
{
|
||||||
char *out;
|
char *out;
|
||||||
cJSON *root;
|
cJSON *root;
|
||||||
|
@ -422,7 +429,8 @@ int webm_homepage_ifstatus_proc(server *srv, uint64 confg_id, char *data_in, cha
|
||||||
|
|
||||||
/* print everything */
|
/* print everything */
|
||||||
out = cJSON_PrintUnformatted(root);
|
out = cJSON_PrintUnformatted(root);
|
||||||
*data_out = out;
|
buffer_copy_string(data_out, out);
|
||||||
|
free(out);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
end:
|
end:
|
||||||
/* free all objects under root and root itself */
|
/* free all objects under root and root itself */
|
||||||
|
@ -476,8 +484,7 @@ static handler_t mod_webm_uri_handler(server *srv, connection *con, void *p_d)
|
||||||
|
|
||||||
{
|
{
|
||||||
chunkqueue *cq = con->request_content_queue;
|
chunkqueue *cq = con->request_content_queue;
|
||||||
char *string = NULL;
|
buffer *return_info = NULL;
|
||||||
buffer *return_info;
|
|
||||||
int func_index;
|
int func_index;
|
||||||
webm_config_t *config_svr;
|
webm_config_t *config_svr;
|
||||||
chunk *c;
|
chunk *c;
|
||||||
|
@ -500,17 +507,16 @@ static handler_t mod_webm_uri_handler(server *srv, connection *con, void *p_d)
|
||||||
buffer_append_string_len(content_buffer, c->mem->ptr + c->offset, len);
|
buffer_append_string_len(content_buffer, c->mem->ptr + c->offset, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return_info = buffer_init();
|
||||||
|
if (return_info)
|
||||||
|
{
|
||||||
if (config_svr->cfg_cb)
|
if (config_svr->cfg_cb)
|
||||||
{
|
{
|
||||||
config_svr->cfg_cb(srv, config_svr->confg_id, content_buffer->ptr, &string, p);
|
config_svr->cfg_cb(srv, config_svr->confg_id, content_buffer->ptr, return_info, p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string)
|
|
||||||
{
|
|
||||||
return_info = buffer_init_string(string);
|
|
||||||
chunkqueue_append_buffer(con->write_queue, return_info);
|
chunkqueue_append_buffer(con->write_queue, return_info);
|
||||||
buffer_free(return_info);
|
buffer_free(return_info);
|
||||||
free(string);
|
|
||||||
}
|
}
|
||||||
buffer_free(content_buffer);
|
buffer_free(content_buffer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue