#include "../../../../common/rpc/rpc.h" #include "../include/parsefile.h" #include "../include/configm.h" #include "../../../netlink_uapi/libnetlinku.h" #include "../include/jumppage.h" #include #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; }