secgateway/Platform/user/configm/config-server/jumppage_config/jumppage.c

101 lines
2.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "../../../../common/rpc/rpc.h"
#include "../include/parsefile.h"
#include "../include/configm.h"
#include "../../../netlink_uapi/libnetlinku.h"
#include "../include/jumppage.h"
#include <cjson/cJSON.h>
#include "../../../../../Common/s2j/s2j.h"
#include "../../../../../Common/commuapinl.h"
/*全局变量,存放用户跳转的页面 */
char *jumpurl = NULL;
/*系统管理模块将数据内容(URL地址发送给web server */
/*input格式"{\"type\":0,\"url\":\"http://www.baidu.com\"}"*/
ret_code jumppage_config_proc(uint source, uint config_type,
pointer input, int input_len,
pointer output, int *output_len)
{
ret_code ret = RET_OK;
cJSON *cjson, *url, *res;
char * ret_char = NULL;
unsigned int ret_int = 0;
/*JSON字符串到JSON格式 */
cjson = cJSON_Parse(input);
if(!cjson)
{
ret = RET_INPUTERR;
ASSERT_RET(ret);
return ret;
}
/*获取键值内容 */
url= cJSON_GetObjectItem(cjson , "url");
if(!url)
{
ret = RET_INPUTERR;
ASSERT_RET(ret);
cJSON_Delete(cjson);
return ret;
}
rpc_log_info("jumppage configure: url %s\n", url->valuestring);
/*将配置信息发送到web server 发送结果int表示0表示发送成功-1表示发送失败*/
int r;
/*创建json对象 */
res = cJSON_CreateObject();
if(!res)
{
ret = RET_ERR;
ASSERT_RET(ret);
return ret;
}
cJSON_AddNumberToObject(res, "result", r);
/*将json对象转换成json字符串 */
ret_char = cJSON_PrintUnformatted(res);
ret_int = strlen(ret_char);
if(output_len)
{
*output_len = ret_int;
}
/*超出2k的内存报错 */
if(ret_int >= 1024 * 2)
{
free(url);
cJSON_Delete(cjson);
free(ret_char);
cJSON_Delete(res);
return RET_NOMEM;
}
memcpy(output, 0, ret_int + 1);
strcpy(output, ret_char);
free(url);
cJSON_Delete(cjson);
free(ret_char);
cJSON_Delete(res);
return RET_OK;
/*把本地Portal server的配置信息存入全局变量 */
jumpurl = url->valuestring;
free(jumpurl);
return RET_OK;
}