modify log info.

This commit is contained in:
pandx 2024-10-23 17:15:40 +08:00
parent bc186360fc
commit 24ddd30df1
4 changed files with 199 additions and 292 deletions

View File

@ -318,51 +318,51 @@ struct ethtool_value {
unsigned int data; unsigned int data;
}; };
extern std::string GBKToUTF8(const std::string& strGBK); std::string GBKToUTF8(const std::string& strGBK);
extern std::string UTFtoGBK(const char* utf8); std::string UTFtoGBK(const char* utf8);
extern void hexToAscii(const char* hexStr, char* asciiStr); void hexToAscii(const char* hexStr, char* asciiStr);
extern void stringToHex(const char* str, char* hexStr); void stringToHex(const char* str, char* hexStr);
extern std::string GetLocalTimeWithMs(void); std::string GetLocalTimeWithMs(void);
extern void InitGpio(unsigned int gpioN, unsigned int inout); void InitGpio(unsigned int gpioN, unsigned int inout);
extern int gpio_set(unsigned int gpioN, char x); int gpio_set(unsigned int gpioN, char x);
extern int gpio_read(unsigned int gpioN); int gpio_read(unsigned int gpioN);
extern int config_uart(const char* Port, int speed); int config_uart(const char* Port, int speed);
extern int write_data(int fd, char* buff, int len); int write_data(int fd, char* buff, int len);
extern int read_data(int fd, char* buff, int len, int timeout); int read_data(int fd, char* buff, int len, int timeout);
extern int ModifyMac(char* buff); int ModifyMac(char* buff);
extern void mssleep(unsigned long microseconds); void mssleep(unsigned long microseconds);
/** /**
* @brief * @brief
* @return string 2018-11-18 17:16:10 * @return string 2018-11-18 17:16:10
*/ */
extern std::string GetCurrentTime(); std::string GetCurrentTime();
extern tm* get_current_date(); tm* get_current_date();
/** /**
* @brief * @brief
* @param cmd ls * @param cmd ls
* @param buf buf里 * @param buf buf里
* @return -1 0 * @return -1 0
*/ */
extern int system_custom(const char* cmd, char* buf); int system_custom(const char* cmd, char* buf);
/** /**
* @brief * @brief
*/ */
extern void WriteMemoryInfo(); void WriteMemoryInfo();
/** /**
* @brief * @brief
* @return string * @return string
*/ */
extern std::string GetDayDate(); std::string GetDayDate();
/** /**
* @brief 1200 * @brief 1200
* @return void * @return void
*/ */
extern void GetTime_(char* time_buff, TIME_SIZE len); void GetTime_(char* time_buff, TIME_SIZE len);
/** /**
* @brief * @brief
@ -370,9 +370,9 @@ extern void GetTime_(char* time_buff, TIME_SIZE len);
* @param type 0 1 * @param type 0 1
* @return void * @return void
*/ */
extern void GetTimeNet(char* timebuf, int type); void GetTimeNet(char* timebuf, int type);
extern std::string GetRTC(char* timebuf, int& millisecond); std::string GetRTC(char* timebuf, int& millisecond);
/** /**
* @brief * @brief
@ -381,7 +381,7 @@ extern std::string GetRTC(char* timebuf, int& millisecond);
* @param option * @param option
* @return std::string * @return std::string
*/ */
extern std::string ReadStrByOpt(std::string filename, std::string config, std::string option); std::string ReadStrByOpt(std::string filename, std::string config, std::string option);
/** /**
* @brief * @brief
@ -391,19 +391,19 @@ extern std::string ReadStrByOpt(std::string filename, std::string config, std::s
* @param value * @param value
* @return int 0 * @return int 0
*/ */
extern int WriteStr2Config(std::string filename, std::string config, std::string option, std::string value, bool listable = false); int WriteStr2Config(std::string filename, std::string config, std::string option, std::string value, bool listable = false);
/** /**
* @brief MAC地址做为设备的唯一标识 * @brief MAC地址做为设备的唯一标识
* @return std::string Mac地址 * @return std::string Mac地址
*/ */
extern std::string GetLocalMac(const char* net); std::string GetLocalMac(const char* net);
/** /**
* @brief IP * @brief IP
* @return std::string IP地址 * @return std::string IP地址
*/ */
extern std::string IpAddrInit(); std::string IpAddrInit();
/** /**
* @brief * @brief
@ -415,31 +415,31 @@ extern std::string IpAddrInit();
* @brief * @brief
* @return std::string CPU MEM DISK info * @return std::string CPU MEM DISK info
*/ */
extern std::string GetSysInfo(); std::string GetSysInfo();
/** /**
* @brief * @brief
* @return std::string * @return std::string
*/ */
extern std::string& ClearAllSpace(std::string& str); std::string& ClearAllSpace(std::string& str);
/** /**
* @brief data数据 * @brief data数据
* @return void * @return void
*/ */
extern void StartWriteToDat(); void StartWriteToDat();
/** /**
* @brief * @brief
* @return void * @return void
*/ */
extern void BackupDatFile(); void BackupDatFile();
/** /**
* @brief * @brief
* @return int * @return int
*/ */
extern int SetTime(unsigned long seconds, int milliseconds = 0); int SetTime(unsigned long seconds, int milliseconds = 0);
/** /**
* @brief * @brief
@ -447,45 +447,45 @@ extern int SetTime(unsigned long seconds, int milliseconds = 0);
* @param line * @param line
* @return std::string * @return std::string
*/ */
extern std::string GetFileContent(std::string filename, int line); std::string GetFileContent(std::string filename, int line);
/** /**
* @brief * @brief
* @param zoneid ID * @param zoneid ID
* @return void * @return void
*/ */
extern void ZoneConfig(std::string zoneid); void ZoneConfig(std::string zoneid);
/** /**
* @brief * @brief
* @return std::string CPU MEM DISK info * @return std::string CPU MEM DISK info
*/ */
extern std::string GetSysStatus(); std::string GetSysStatus();
double GetHardDiskFree(); double GetHardDiskFree();
extern bool CheckIP(const char* ip); bool CheckIP(const char* ip);
bool IsValidMask(std::string mask); bool IsValidMask(std::string mask);
// read update config file // read update config file
extern std::vector<DataNodeUpdate> ReadStrUpdate(std::string filename); std::vector<DataNodeUpdate> ReadStrUpdate(std::string filename);
extern void ReadStrConfig(std::string filename); void ReadStrConfig(std::string filename);
extern void ImportConfig(std::string filename); void ImportConfig(std::string filename);
extern int UpdataDataNodeConfig(std::string filename); int UpdataDataNodeConfig(std::string filename);
extern char* solve(char* dest, const char* src); char* solve(char* dest, const char* src);
extern void swap(char* data); void swap(char* data);
extern int hexStringToBytes(const char* hexStr, unsigned char* bytes, size_t bytesSize); int hexStringToBytes(const char* hexStr, unsigned char* bytes, size_t bytesSize);
int OpenWatchDog(); int OpenWatchDog();
int WriteWatchDog(int fd); int WriteWatchDog(int fd);
//获取4G信号强度 //获取4G信号强度
extern int getcsq(); int getcsq();
extern std::string GetGwIp_(const char* eth_name); std::string GetGwIp_(const char* eth_name);
extern std::string GetOneContent(const char* szData, int nRow, const char* szSeparate); std::string GetOneContent(const char* szData, int nRow, const char* szSeparate);
extern int readStringValue(const char* section, char* key, char* val, const char* file); int readStringValue(const char* section, char* key, char* val, const char* file);
extern int writeStringVlaue(const char* section, char* key, char* val, const char* file); int writeStringVlaue(const char* section, char* key, char* val, const char* file);
extern int readIntValue(const char* section, char* key, const char* file); int readIntValue(const char* section, char* key, const char* file);
extern int writeIntValue(const char* section, char* key, int val, const char* file); int writeIntValue(const char* section, char* key, int val, const char* file);
int getDiskInfo(char* diskTotal, char* diskFree); int getDiskInfo(char* diskTotal, char* diskFree);
@ -493,9 +493,9 @@ unsigned short cal_chksum(unsigned short* addr, int len);
int socketHeart(const char* pSendData); int socketHeart(const char* pSendData);
extern int Ping(const char* ips, int timeout); int Ping(const char* ips, int timeout);
extern int get_netlink_status(const char* if_name); int get_netlink_status(const char* if_name);
extern int compareVersions(const std::string& version1, const std::string& version2); int compareVersions(const std::string& version1, const std::string& version2);
extern void Binary_Bit(unsigned char* p_data, unsigned char position, int flag); void Binary_Bit(unsigned char* p_data, unsigned char position, int flag);
#endif // COMMON_FUNC_HPP_ #endif // COMMON_FUNC_HPP_

View File

@ -1,8 +1,12 @@
#include "data_trans.hpp" #include "data_trans.hpp"
#include "dirent.h" #include "dirent.h"
#include <stdio.h> #include <stdio.h>
#include <zlog.h>
DataTrans::DataTrans() : m_bDebug(false) {} extern zlog_category_t *zct;
extern zlog_category_t *zbt;
DataTrans::DataTrans() : debug_(false) {}
DataTrans::~DataTrans() {} DataTrans::~DataTrans() {}
@ -10,13 +14,13 @@ static int OnDebug(CURL *, curl_infotype itype, char *pData, size_t size, void *
if (itype == CURLINFO_TEXT) { if (itype == CURLINFO_TEXT) {
// printf("[TEXT]%s\n", pData); // printf("[TEXT]%s\n", pData);
} else if (itype == CURLINFO_HEADER_IN) { } else if (itype == CURLINFO_HEADER_IN) {
print_info("[HEADER_IN]%s\n", pData); zlog_debug(zbt, "[HEADER_IN]%s", pData);
} else if (itype == CURLINFO_HEADER_OUT) { } else if (itype == CURLINFO_HEADER_OUT) {
print_info("[HEADER_OUT]%s\n", pData); zlog_debug(zbt, "[HEADER_OUT]%s", pData);
} else if (itype == CURLINFO_DATA_IN) { } else if (itype == CURLINFO_DATA_IN) {
print_info("[DATA_IN]%s\n", pData); zlog_debug(zbt, "[DATA_IN]%s", pData);
} else if (itype == CURLINFO_DATA_OUT) { } else if (itype == CURLINFO_DATA_OUT) {
print_info("[DATA_OUT]%s\n", pData); zlog_debug(zbt, "[DATA_OUT]%s", pData);
} }
return 0; return 0;
} }
@ -24,6 +28,7 @@ static int OnDebug(CURL *, curl_infotype itype, char *pData, size_t size, void *
static size_t OnWriteData(void *buffer, size_t size, size_t nmemb, void *lpVoid) { static size_t OnWriteData(void *buffer, size_t size, size_t nmemb, void *lpVoid) {
std::string *str = dynamic_cast<std::string *>((std::string *)lpVoid); std::string *str = dynamic_cast<std::string *>((std::string *)lpVoid);
if (NULL == str || NULL == buffer) { if (NULL == str || NULL == buffer) {
zlog_error(zct, "[OnWriteData] str:%p, buffer:%p", str, buffer);
return -1; return -1;
} }
char *pData = (char *)buffer; char *pData = (char *)buffer;
@ -32,10 +37,10 @@ static size_t OnWriteData(void *buffer, size_t size, size_t nmemb, void *lpVoid)
} }
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream) { static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream) {
printf("size = %d\n", size); zlog_debug(zct, "size = %d", size);
struct DownloadFile *out = (struct DownloadFile *)stream; struct DownloadFile *out = (struct DownloadFile *)stream;
if (out && !out->stream) { if (out && !out->stream) {
out->stream = fopen(out->filename, "wb"); //打开文件进行写入 out->stream = fopen(out->filename, "wb");
if (!out->stream) return -1; if (!out->stream) return -1;
} }
return fwrite(buffer, size, nmemb, out->stream); return fwrite(buffer, size, nmemb, out->stream);
@ -71,16 +76,15 @@ int DataTrans::download(char *pFilename, std::string &strUrl, std::string &strRe
//释放curl对象 //释放curl对象
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
if (res != CURLE_OK) { if (res != CURLE_OK) {
std::cout << stderr << res << std::endl; zlog_error(zct, "curl_easy_perform ret:%d", res);
return -1; return -1;
} }
} }
printf("strResponse = %s\n", strResponse.c_str()); zlog_debug(zct, "strResponse = %s", strResponse.c_str());
if (bDownload) { if (bDownload) {
if (dlfile.stream) { if (dlfile.stream) {
fclose(dlfile.stream); fclose(dlfile.stream);
} }
} else {
} }
curl_global_cleanup(); curl_global_cleanup();
@ -98,47 +102,53 @@ int DataTrans::dl_curl_post_req(const std::string &url, const std::string &postP
CURLcode res; CURLcode res;
res = curl_global_init(CURL_GLOBAL_ALL); res = curl_global_init(CURL_GLOBAL_ALL);
if (CURLE_OK != res) { if (CURLE_OK != res) {
printf("init libcurl failed."); zlog_error(zct, "init libcurl failed.");
curl_global_cleanup(); curl_global_cleanup();
return -1; return 1;
} }
curl = curl_easy_init(); curl = curl_easy_init();
if (curl) { if (curl == NULL) {
fp = fopen(filename.c_str(), "wb"); zlog_error(zct, "curl_easy_init failed.");
res = curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_global_cleanup();
if (res != CURLE_OK) { return 2;
fclose(fp);
curl_easy_cleanup(curl);
return -1;
}
res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writedata2file);
if (res != CURLE_OK) {
fclose(fp);
curl_easy_cleanup(curl);
return -1;
}
res = curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
if (res != CURLE_OK) {
fclose(fp);
curl_easy_cleanup(curl);
return -1;
}
res = curl_easy_perform(curl);
fclose(fp);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
curl_easy_cleanup(curl);
return -1;
}
curl_easy_cleanup(curl);
} }
fp = fopen(filename.c_str(), "wb");
res = curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
if (res != CURLE_OK) {
fclose(fp);
curl_easy_cleanup(curl);
curl_global_cleanup();
return 3;
}
res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writedata2file);
if (res != CURLE_OK) {
fclose(fp);
curl_easy_cleanup(curl);
curl_global_cleanup();
return 4;
}
res = curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
if (res != CURLE_OK) {
fclose(fp);
curl_easy_cleanup(curl);
curl_global_cleanup();
return 5;
}
res = curl_easy_perform(curl);
fclose(fp);
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
curl_easy_cleanup(curl);
curl_global_cleanup();
return 6;
}
curl_easy_cleanup(curl);
curl_global_cleanup(); curl_global_cleanup();
return 0; return 0;
} }
@ -147,9 +157,10 @@ int DataTrans::Post(const std::string &strUrl, const std::string &strPost, std::
CURLcode res; CURLcode res;
CURL *curl = curl_easy_init(); CURL *curl = curl_easy_init();
if (NULL == curl) { if (NULL == curl) {
zlog_error(zct, "curl_easy_init failed.");
return CURLE_FAILED_INIT; return CURLE_FAILED_INIT;
} }
if (m_bDebug) { if (debug_) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug); curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
} }
@ -171,9 +182,10 @@ int DataTrans::Get(const std::string &strUrl, std::string &strResponse) {
CURLcode res; CURLcode res;
CURL *curl = curl_easy_init(); CURL *curl = curl_easy_init();
if (NULL == curl) { if (NULL == curl) {
zlog_error(zct, "curl_easy_init failed.");
return CURLE_FAILED_INIT; return CURLE_FAILED_INIT;
} }
if (m_bDebug) { if (debug_) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug); curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
} }
@ -198,10 +210,11 @@ int DataTrans::Posts(const std::string &strUrl, const std::string &strPost, std:
CURLcode res; CURLcode res;
CURL *curl = curl_easy_init(); CURL *curl = curl_easy_init();
if (NULL == curl) { if (NULL == curl) {
zlog_error(zct, "curl_easy_init failed.");
return CURLE_FAILED_INIT; return CURLE_FAILED_INIT;
} }
if (m_bDebug) { if (debug_) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug); curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
} }
@ -232,9 +245,10 @@ int DataTrans::Gets(const std::string &strUrl, std::string &strResponse, const c
CURLcode res; CURLcode res;
CURL *curl = curl_easy_init(); CURL *curl = curl_easy_init();
if (NULL == curl) { if (NULL == curl) {
zlog_error(zct, "curl_easy_init failed.");
return CURLE_FAILED_INIT; return CURLE_FAILED_INIT;
} }
if (m_bDebug) { if (debug_) {
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug); curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
} }
@ -275,155 +289,79 @@ int DataTrans::upload_file(const std::string &strUrl, const std::string &filenam
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "submit", CURLFORM_COPYCONTENTS, "upload", CURLFORM_END); curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "submit", CURLFORM_COPYCONTENTS, "upload", CURLFORM_END);
curl = curl_easy_init(); curl = curl_easy_init();
if (NULL == curl) {
zlog_error(zct, "curl_easy_init failed.");
return CURLE_FAILED_INIT;
}
multi_handle = curl_multi_init(); multi_handle = curl_multi_init();
if (NULL == multi_handle) {
zlog_error(zct, "curl_multi_init failed.");
curl_easy_cleanup(curl);
return CURLE_FAILED_INIT;
}
/* initalize custom header list (stating that Expect: 100-continue is not wanted */ /* initalize custom header list (stating that Expect: 100-continue is not wanted */
headerlist = curl_slist_append(headerlist, buf); headerlist = curl_slist_append(headerlist, buf);
if (curl && multi_handle) {
/* what URL that receives this POST */ /* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str()); curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, res); curl_easy_setopt(curl, CURLOPT_WRITEDATA, res);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
curl_multi_add_handle(multi_handle, curl); curl_multi_add_handle(multi_handle, curl);
curl_multi_perform(multi_handle, &still_running); curl_multi_perform(multi_handle, &still_running);
do { do {
struct timeval timeout; struct timeval timeout;
int rc; int rc;
fd_set fdread; fd_set fdread;
fd_set fdwrite; fd_set fdwrite;
fd_set fdexcep; fd_set fdexcep;
int maxfd = -1; int maxfd = -1;
long curl_timeo = -1; long curl_timeo = -1;
FD_ZERO(&fdread); FD_ZERO(&fdread);
FD_ZERO(&fdwrite); FD_ZERO(&fdwrite);
FD_ZERO(&fdexcep); FD_ZERO(&fdexcep);
/* set a suitable timeout to play around with */ /* set a suitable timeout to play around with */
timeout.tv_sec = 1; timeout.tv_sec = 1;
timeout.tv_usec = 0; timeout.tv_usec = 0;
curl_multi_timeout(multi_handle, &curl_timeo); curl_multi_timeout(multi_handle, &curl_timeo);
if (curl_timeo >= 0) { if (curl_timeo >= 0) {
timeout.tv_sec = curl_timeo / 1000; timeout.tv_sec = curl_timeo / 1000;
if (timeout.tv_sec > 1) if (timeout.tv_sec > 1)
timeout.tv_sec = 1; timeout.tv_sec = 1;
else else
timeout.tv_usec = (curl_timeo % 1000) * 1000; timeout.tv_usec = (curl_timeo % 1000) * 1000;
} }
/* get file descriptors from the transfers */ /* get file descriptors from the transfers */
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
/* In a real-world program you OF COURSE check the return code of the /* In a real-world program you OF COURSE check the return code of the
function calls. On success, the value of maxfd is guaranteed to be function calls. On success, the value of maxfd is guaranteed to be
greater or equal than -1. We call select(maxfd + 1, ...), specially in greater or equal than -1. We call select(maxfd + 1, ...), specially in
case of (maxfd == -1), we call select(0, ...), which is basically equal case of (maxfd == -1), we call select(0, ...), which is basically equal
to sleep. */ to sleep. */
rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout); rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
switch (rc) { switch (rc) {
case -1: break; case -1: break;
case 0: case 0:
default: default:
/* timeout or readable/writable sockets */ /* timeout or readable/writable sockets */
print_info("perform!\n"); zlog_info(zct, "perform!");
curl_multi_perform(multi_handle, &still_running); curl_multi_perform(multi_handle, &still_running);
print_info("running: %d!\n", still_running); zlog_info(zct, "running: %d!", still_running);
break; break;
} }
} while (still_running); } while (still_running);
curl_multi_cleanup(multi_handle);
/* always cleanup */ curl_multi_cleanup(multi_handle);
curl_easy_cleanup(curl); /* always cleanup */
/* then cleanup the formpost chain */ curl_easy_cleanup(curl);
curl_formfree(formpost); /* then cleanup the formpost chain */
/* free slist */ curl_formfree(formpost);
curl_slist_free_all(headerlist); /* free slist */
} curl_slist_free_all(headerlist);
return 0; return 0;
} }
int DataTrans::Send_file_socket(const std::string &filename) { return 0; } void DataTrans::SetDebug(bool bDebug) { debug_ = bDebug; }
int DataTrans::Send_Dir_socket(const char *dirname) {
DIR *dirp;
std::vector<std::string> v;
std::string temp;
struct dirent *dp;
dirp = opendir(dirname);
while ((dp = readdir(dirp)) != NULL) {
if (strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0) continue;
v.push_back(std::string(dp->d_name));
}
int socketfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in s_add, c_add;
unsigned short portnum = 12345;
int len;
char buffer[BUFFER_SIZE];
FILE *fp;
int file_block_length = 0;
if (socketfd < 0) {
print_error("Socket create error! \n");
return -1;
} else {
print_info("Socket create success!\n");
}
/*
*
*/
bzero(&s_add, sizeof(struct sockaddr_in));
s_add.sin_family = AF_INET;
s_add.sin_addr.s_addr = inet_addr(GlobalConfig::ServerIP.c_str());
s_add.sin_port = htons(PORT);
if (connect(socketfd, (struct sockaddr *)(&s_add), sizeof(struct sockaddr)) < 0) {
print_error("Connect failure!\n");
return -1;
} else {
print_info("Connect Success!\n");
}
std::vector<std::string>::iterator iter;
for (iter = v.begin(); iter != v.end(); ++iter) {
temp = *iter;
std::cout << temp.c_str() << std::endl;
int file_name_length = (int)strlen(temp.c_str());
if (send(socketfd, (char *)&file_name_length, sizeof(int), 0) < 0) { //发送文件名长度
print_error("Send File_Name_Length Failed!\n");
} else {
print_info("Send File_Name_Length Success!\n");
}
//发送文件名
if (send(socketfd, temp.c_str(), file_name_length, 0) < 0) {
print_error("Send File_Name Failed!\n");
} else {
print_info("Send File_Name Success!\n");
}
/*
*
*/
std::string filename = std::string(dirname + temp);
fp = fopen(filename.c_str(), "r");
if (fp == NULL) {
print_error("File: %s Not Found!\n", filename.c_str());
} else {
bzero(buffer, BUFFER_SIZE);
while ((file_block_length = fread(buffer, sizeof(char), BUFFER_SIZE, fp)) > 0) {
print_info("file_block_length = %d\n", file_block_length);
/*
*buffer
*/
if (send(socketfd, buffer, file_block_length, 0) < 0) {
print_error("Send File:%s Failed!\n", filename.c_str());
break;
}
bzero(buffer, sizeof(buffer));
}
fclose(fp);
print_info("File: %s Transfer Finished!\n", filename.c_str());
}
close(socketfd);
return 0;
}
}
void DataTrans::SetDebug(bool bDebug) { m_bDebug = bDebug; }

View File

@ -84,28 +84,13 @@ public:
// int download_file(const std::string &strUrl, const std::string &filename, std::string &strResponse); // int download_file(const std::string &strUrl, const std::string &filename, std::string &strResponse);
/**
* @brief socket发送文件
* @param filename
* @return 0
*/
int Send_file_socket(const std::string &filename);
/**
* @brief socket发送文件夹下所有文件
* @param dirname
* @return 0
*/
int Send_Dir_socket(const char *dirname);
int download(char *pFilename, std::string &strUrl, std::string &strResponse, bool bDownload); int download(char *pFilename, std::string &strUrl, std::string &strResponse, bool bDownload);
int dl_curl_post_req(const std::string &url, const std::string &postParams, std::string &filename); int dl_curl_post_req(const std::string &url, const std::string &postParams, std::string &filename);
public:
void SetDebug(bool bDebug); void SetDebug(bool bDebug);
private: private:
bool m_bDebug; bool debug_;
}; };
typedef boost::container::dtl::singleton_default<DataTrans> data_trans; typedef boost::container::dtl::singleton_default<DataTrans> data_trans;

View File

@ -1,14 +1,11 @@
#include "sql_db.hpp" #include "sql_db.hpp"
#include <unistd.h> #include <unistd.h>
#include <zlog.h>
#include "common/global.hpp" #include "common/global.hpp"
#include "utility/calculation.hpp" #include "utility/calculation.hpp"
bool SqlSwitch() { extern zlog_category_t *zct;
if (access("./sql", 0) >= 0) { extern zlog_category_t *zbt;
return true;
}
return false;
}
SqliteDB::SqliteDB() {} SqliteDB::SqliteDB() {}
@ -131,6 +128,7 @@ void SqliteDB::SqliteInitDel(const char *pDbName) {
Deletetable(sztableName); Deletetable(sztableName);
} }
} }
void SqliteDB::Deletetable(const char *ptableName) { void SqliteDB::Deletetable(const char *ptableName) {
char sql_exec[2048]; char sql_exec[2048];
//创建传感器数据存储表 //创建传感器数据存储表
@ -141,6 +139,7 @@ void SqliteDB::Deletetable(const char *ptableName) {
perror_info("sqlite3_exec"); perror_info("sqlite3_exec");
} }
} }
void SqliteDB::CreatedataStatictable(const char *ptableName) { void SqliteDB::CreatedataStatictable(const char *ptableName) {
char sql_exec[2048]; char sql_exec[2048];
//创建传感器数据存储表 //创建传感器数据存储表
@ -149,11 +148,11 @@ void SqliteDB::CreatedataStatictable(const char *ptableName) {
T_DATASTATIC_INFO(VOLTAGE), "zigbeeSignal", "StaticIndex", T_DATASTATIC_INFO(TIMESTAMP), "sendMsg", "nodeResend", "zigbeeSignalNode", "statisticType", "timing"); T_DATASTATIC_INFO(VOLTAGE), "zigbeeSignal", "StaticIndex", T_DATASTATIC_INFO(TIMESTAMP), "sendMsg", "nodeResend", "zigbeeSignalNode", "statisticType", "timing");
CreateTable(sql_exec, 0); CreateTable(sql_exec, 0);
memset(sql_exec, 0, 2048); memset(sql_exec, 0, 2048);
sprintf(sql_exec, "CREATE INDEX %s_1 \ sprintf(sql_exec, "CREATE INDEX %s_1 ON %s (%s)",
ON %s (%s)",
ptableName, ptableName, T_DATA_INFO(DATANODENO)); ptableName, ptableName, T_DATA_INFO(DATANODENO));
CreateTable(sql_exec, 0); CreateTable(sql_exec, 0);
} }
bool SqliteDB::OpenDB(const char *pDbName, bool isDB2) { bool SqliteDB::OpenDB(const char *pDbName, bool isDB2) {
if (isDB2 == false) { if (isDB2 == false) {
int ret = 0; int ret = 0;
@ -165,7 +164,7 @@ bool SqliteDB::OpenDB(const char *pDbName, bool isDB2) {
sqlite3_exec(mDBAcess, "PRAGMA auto_vacuum = 1;", 0, 0, 0); sqlite3_exec(mDBAcess, "PRAGMA auto_vacuum = 1;", 0, 0, 0);
print_info("Success To Open DataBase!\n"); print_info("Success To Open DataBase!\n");
} else { } else {
print_error("Fail To Open DataBase!\n"); zlog_error(zbt, "DB2 false, Fail To Open DataBase:%s, ret:%d", pDbName, ret);
return false; return false;
} }
} else { } else {
@ -178,7 +177,7 @@ bool SqliteDB::OpenDB(const char *pDbName, bool isDB2) {
sqlite3_exec(mDb2, "PRAGMA auto_vacuum = 1;", 0, 0, 0); sqlite3_exec(mDb2, "PRAGMA auto_vacuum = 1;", 0, 0, 0);
print_info("Success To Open DataBase!\n"); print_info("Success To Open DataBase!\n");
} else { } else {
print_error("Fail To Open DataBase!\n"); zlog_error(zbt, "DB2 true, Fail To Open DataBase:%s, ret:%d", pDbName, ret);
return false; return false;
} }
} }
@ -197,15 +196,15 @@ sqlite3 *SqliteDB::GetDbHandle(bool isDB2) {
int SqliteDB::CreateTable(const char *sql, bool isDB2) { int SqliteDB::CreateTable(const char *sql, bool isDB2) {
print_light_green("%s\n", sql); print_light_green("%s\n", sql);
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", sql);
char *msg; char *msg;
int iRet = sqlite3_exec(GetDbHandle(isDB2), sql, 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), sql, 0, 0, &msg);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); zlog_error(zbt, "[CreateTable] sqlite3 error: code=%d msg=%s sql=[%s]\n", iRet, msg, sql);
sqlite3_free(msg); sqlite3_free(msg);
} }
return iRet; return iRet;
} }
int SqliteDB::ExeSql(const char *sql, bool isDB2) { int SqliteDB::ExeSql(const char *sql, bool isDB2) {
print_light_green("%s\n", sql); print_light_green("%s\n", sql);
char *msg; char *msg;
@ -216,13 +215,13 @@ int SqliteDB::ExeSql(const char *sql, bool isDB2) {
} }
return iRet; return iRet;
} }
int SqliteDB::GetTableColumnCount(const char *tablename, bool isDB2) { int SqliteDB::GetTableColumnCount(const char *tablename, bool isDB2) {
std::string strSql = "select * from "; std::string strSql = "select * from ";
int count = 0; int count = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
strSql = strSql + tablename + ";"; strSql = strSql + tablename + ";";
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_prepare_v2(GetDbHandle(isDB2), strSql.c_str(), -1, &stmt, 0); sqlite3_prepare_v2(GetDbHandle(isDB2), strSql.c_str(), -1, &stmt, 0);
count = sqlite3_column_count(stmt); count = sqlite3_column_count(stmt);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
@ -238,7 +237,6 @@ int SqliteDB::GetTableRows(const char *tablename, const char *whereCon) {
strSql = strSql + tablename + ";"; strSql = strSql + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
@ -259,7 +257,6 @@ int SqliteDB::AlterTable(const char *tablename, const char *column, bool isAdd,
std::string strSql = "alter table "; std::string strSql = "alter table ";
strSql = strSql + tablename + " add " + column + ";"; strSql = strSql + tablename + " add " + column + ";";
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, NULL); iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, NULL);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
perror_info("sqlite3_exec"); perror_info("sqlite3_exec");
@ -278,7 +275,6 @@ vec_t SqliteDB::GetDataSingleLine(const char *tablename, const char *column, con
strSql = strSql + column + " from " + tablename + ";"; strSql = strSql + column + " from " + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
@ -307,7 +303,6 @@ char *SqliteDB::GetDataChar(const char *tablename, const char *column, const cha
strSql = strSql + column + " from " + tablename + ";"; strSql = strSql + column + " from " + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock(); g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
@ -335,7 +330,6 @@ std::string SqliteDB::GetData(const char *tablename, const char *column, const c
strSql = strSql + column + " from " + tablename + ";"; strSql = strSql + column + " from " + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock(); g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
@ -364,7 +358,6 @@ array_t SqliteDB::GetDataMultiLine(const char *tablename, const char *column, co
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock(); g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
@ -399,7 +392,6 @@ array_t SqliteDB::GetDataMultiLineTransaction(const char *tablename, const char
strSql = strSql + column + " from " + tablename + ";"; strSql = strSql + column + " from " + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_exec(mDBAcess, "BEGIN", 0, 0, NULL); sqlite3_exec(mDBAcess, "BEGIN", 0, 0, NULL);
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
@ -435,7 +427,6 @@ vec_t SqliteDB::GetDataMultiLineOfOneColumn(const char *tablename, const char *c
strSql = strSql + column + " from " + tablename + ";"; strSql = strSql + column + " from " + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
@ -462,7 +453,6 @@ vec_Value SqliteDB::GetDataMultiLineOfOneColumnDouble(const char *tablename, con
strSql = strSql + column + " from " + tablename + ";"; strSql = strSql + column + " from " + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
@ -488,7 +478,6 @@ int SqliteDB::DeleteTableData(const char *tablename, const char *whereCond, bool
} }
// LOG_INFO("strSql = %s",strSql.c_str()); // LOG_INFO("strSql = %s",strSql.c_str());
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg);
@ -507,7 +496,6 @@ int SqliteDB::DeleteTableDataOneConditon(const char *tablename, const char *cond
strSql = strSql + tablename + ";"; strSql = strSql + tablename + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg);
@ -534,7 +522,6 @@ int SqliteDB::UpdateNodeNameData(const char *tablename, const char *updateColumn
strSql = strSql + tablename + " set " + updateColumn + ";"; strSql = strSql + tablename + " set " + updateColumn + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
int iRet = sqlite3_exec(GetDbHandle(isDB2), szSql, 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), szSql, 0, 0, &msg);
@ -553,7 +540,6 @@ int SqliteDB::UpdateTableData(const char *tablename, const char *updateColumn, c
strSql = strSql + tablename + " set " + updateColumn + ";"; strSql = strSql + tablename + " set " + updateColumn + ";";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
g_tDbMutex.Lock(); g_tDbMutex.Lock();
int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg);
@ -568,7 +554,6 @@ int SqliteDB::UpdateTableData(const char *tablename, const char *updateColumn, c
int SqliteDB::UpdateTableData(const char *directSql, bool isDB2) { int SqliteDB::UpdateTableData(const char *directSql, bool isDB2) {
print_light_green("%s\n", directSql); print_light_green("%s\n", directSql);
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", directSql);
char *msg; char *msg;
int iRet = sqlite3_exec(GetDbHandle(isDB2), directSql, 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), directSql, 0, 0, &msg);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
@ -586,7 +571,6 @@ int SqliteDB::UpdateTableDataOneColumn(const char *tablename, const char *column
strSql = strSql + tablename + " set " + columnName + "='" + columnValue + "';"; strSql = strSql + tablename + " set " + columnName + "='" + columnValue + "';";
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
@ -807,7 +791,7 @@ int SqliteDB::CalculateDip() {
sprintf(whereCon, " timeStamp > '%ld' ", atol(vParam[2].c_str())); sprintf(whereCon, " timeStamp > '%ld' ", atol(vParam[2].c_str()));
} else if (vParam[1] == "0") { //正常状态 } else if (vParam[1] == "0") { //正常状态
sprintf(whereCon, " timeStamp > '%ld' ", atol(localtimestamp) - 86400); //一天数据 sprintf(whereCon, " timeStamp > '%ld' ", atol(localtimestamp) - 86400); //一天数据
} else if (vParam[1] == "1") { //松动状态 } else if (vParam[1] == "1") { //松动状态
continue; continue;
} }
print_info("vParam[0]= %s,vParam[1]=%s\n", vParam[0].c_str(), vParam[1].c_str()); print_info("vParam[0]= %s,vParam[1]=%s\n", vParam[0].c_str(), vParam[1].c_str());