add log4cplus
This commit is contained in:
@@ -19,7 +19,7 @@ using namespace std;
|
||||
#include <string>
|
||||
|
||||
#include "../mms/db_interface.h"
|
||||
#include "../json/cjson.h"//WW 2023-08-27<EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#include "../json/cjson.h"//WW 2023-08-27新增json解析函数
|
||||
#include "../include/curl/curl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -27,15 +27,15 @@ extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
// Base64 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// Base64 编码表
|
||||
const char base64_chars[] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"abcdefghijklmnopqrstuvwxyz"
|
||||
"0123456789+/";
|
||||
|
||||
//base64 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//base64 解码表
|
||||
static const unsigned char base64_decode_table[] = {
|
||||
//ÿ<EFBFBD><EFBFBD>16<EFBFBD><EFBFBD>
|
||||
//每行16个
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //1 - 16
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //17 - 32
|
||||
0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,63, //33 - 48
|
||||
@@ -47,26 +47,26 @@ extern "C" {
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief base64_decode base64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param indata <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param inlen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
|
||||
* @param outdata <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param outlen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
|
||||
* @return int 0<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> -1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ע<EFBFBD>⣺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief base64_decode base64解码
|
||||
* @param indata 需解码的数据
|
||||
* @param inlen 需解码的数据大小
|
||||
* @param outdata 解码后输出的数据
|
||||
* @param outlen 解码后输出的数据大小
|
||||
* @return int 0:成功 -1:无效参数
|
||||
* 注意:解码的数据的大小必须大于4,且是4的倍数
|
||||
*/
|
||||
int base64_decode(const char* indata, int inlen, char* outdata, long* outlen)
|
||||
{
|
||||
if (indata == NULL || inlen <= 0 || (outdata == NULL && outlen == NULL)) {
|
||||
return -1;
|
||||
}
|
||||
if (inlen < 4 || inlen % 4 != 0) { //<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD> //inlen < 4 ||
|
||||
if (inlen < 4 || inlen % 4 != 0) { //需要解码的数据长度不是4的倍数 //inlen < 4 ||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int i, j;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//计算解码后的字符串长度
|
||||
int len = inlen / 4 * 3;
|
||||
if (indata[inlen - 1] == '=') {
|
||||
len--;
|
||||
@@ -88,10 +88,10 @@ extern "C" {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Base64 <EFBFBD><EFBFBD><EFBFBD>뺯<EFBFBD><EFBFBD>
|
||||
// Base64 编码函数
|
||||
char* base64_encode_char(const unsigned char* data, size_t input_length, size_t* output_length) {
|
||||
*output_length = 4 * ((input_length + 2) / 3); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
char* encoded_data = (char*)malloc(*output_length + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬+1 Ϊ '\0'
|
||||
*output_length = 4 * ((input_length + 2) / 3); // 输出长度计算
|
||||
char* encoded_data = (char*)malloc(*output_length + 1); // 分配内存,+1 为 '\0'
|
||||
if (encoded_data == NULL) return NULL;
|
||||
|
||||
for (int i = 0, j = 0; i < input_length;) {
|
||||
@@ -107,47 +107,47 @@ extern "C" {
|
||||
encoded_data[j++] = (i * 2 + 1 / 3) < *output_length ? base64_chars[triple & 0x3F] : '=';
|
||||
}
|
||||
|
||||
encoded_data[*output_length] = '\0'; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
encoded_data[*output_length] = '\0'; // 添加字符串结束符
|
||||
return encoded_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <EFBFBD>ж<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊpower{}<EFBFBD><EFBFBD>ʽ
|
||||
/// 判断字符串是否为power{}格式
|
||||
/// </summary>
|
||||
/// <param name="str"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="output"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD></param>
|
||||
/// <param name="output_size"><EFBFBD>ֶγ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="extracted_length"><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="str">待提取字符串</param>
|
||||
/// <param name="output">结果字段</param>
|
||||
/// <param name="output_size">字段长度限制</param>
|
||||
/// <param name="extracted_length">提取出的内容长度</param>
|
||||
/// <returns></returns>
|
||||
bool extract_if_power(const char* str, char* output, size_t output_size, size_t* extracted_length) {
|
||||
const char* prefix = "power{";
|
||||
size_t prefix_length = strlen(prefix);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ
|
||||
// 检查前缀
|
||||
if (strncmp(str, prefix, prefix_length) != 0) {
|
||||
return false; // ǰ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>
|
||||
return false; // 前缀不匹配
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ұպϵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 查找闭合的花括号
|
||||
const char* close_brace = strchr(str + prefix_length, '}');
|
||||
if (close_brace == NULL) {
|
||||
return false; // û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>պϵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return false; // 没有找到闭合的花括号
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 计算要提取的内容长度
|
||||
size_t content_length = close_brace - (str + prefix_length);
|
||||
if (content_length >= output_size) {
|
||||
return false; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return false; // 内容太长,无法放入输出缓冲区
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 复制内容到输出缓冲区
|
||||
strncpy(output, str + prefix_length, content_length);
|
||||
output[content_length] = '\0'; // <EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>
|
||||
printf("text: %s,length:%d\n", output, content_length); // ע<EFBFBD>⣺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȷ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>null<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
output[content_length] = '\0'; // 添加空终止符
|
||||
printf("text: %s,length:%d\n", output, content_length); // 注意:这里需要确保文本是以null终止的字符串
|
||||
// 设置提取出的内容长度
|
||||
*extracted_length = content_length;
|
||||
|
||||
return true; // <EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD>
|
||||
return true; // 提取成功
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user