支持https;适应版本跳跃;增加md5校验;

This commit is contained in:
linuxrc@163.com
2021-07-19 17:21:38 +08:00
parent 26b1a08500
commit 16a47fc07f
12 changed files with 291 additions and 78 deletions

View File

@@ -4,6 +4,7 @@
#include <string.h>
#include <sys/stat.h>
#include <openssl/evp.h>
#include <openssl/md5.h>
#include <assert.h>
#include <MESA/MESA_handle_logger.h>
@@ -16,6 +17,26 @@
#define MESA_RUNTIME_LOGV4(handle, lv, fmt, args...) \
MESA_handle_runtime_log((handle), (lv), "DorisServer", "%s:%d, " fmt, __FILENAME__, __LINE__, ##args)
static int scandir_md5_final_string(MD5_CTX *c, char *result, unsigned int size)
{
unsigned char md5[17]={0};
int i;
if(MD5_Final(md5, c) != 1)
{
return -1;
}
if(size < 33)
return -1;
for(i=0; i<16; i++)
{
sprintf(result + i*2, "%02x", md5[i]);
}
result[32] = '\0';
return 0;
}
//replacement of glibc scandir, to adapt dictator malloc wrap
#define ENLARGE_STEP 1024
int my_scandir(const char *dir, struct dirent ***namelist,
@@ -209,12 +230,15 @@ bool doris_read_table_file(struct doris_idxfile_scanner *scanner, struct cfg_tab
{
FILE *fp;
size_t readlen, remainlen, oncesize;
MD5_CTX md5ctx;
char md5buffer[64];
if((fp = fopen(table->cfg_path, "r")) == NULL)
{
MESA_RUNTIME_LOGV4(logger,RLOG_LV_FATAL, "fopen table file %s failed: %s", table->cfg_path, strerror(errno));
return false;
}
MD5_Init(&md5ctx);
doris_cbs->cfgfile_start(NULL, table->table_name, table->filesize, table->cfg_num, doris_cbs->userdata);
remainlen = table->filesize;
@@ -225,8 +249,10 @@ bool doris_read_table_file(struct doris_idxfile_scanner *scanner, struct cfg_tab
assert(readlen == oncesize);
remainlen -= readlen;
doris_cbs->cfgfile_update(NULL, scanner->oncebuf, readlen, doris_cbs->userdata);
MD5_Update(&md5ctx, scanner->oncebuf, readlen);
}
doris_cbs->cfgfile_finish(NULL, doris_cbs->userdata);
scandir_md5_final_string(&md5ctx, md5buffer, 64);
doris_cbs->cfgfile_finish(NULL, md5buffer, doris_cbs->userdata);
fclose(fp);
return true;
}