diff options
| author | lishu <[email protected]> | 2018-12-11 22:27:35 +0800 |
|---|---|---|
| committer | lishu <[email protected]> | 2018-12-11 22:27:35 +0800 |
| commit | 14ce0d2381eedff940305a6cc40cf2cd36e9d016 (patch) | |
| tree | 101e31769b5742da31c7ab820b06db234e34d346 /src | |
| parent | cf2684a100afcfa3076d6afe7235c62394ff77eb (diff) | |
摘要存储文件,增加文件后缀
Diffstat (limited to 'src')
| -rw-r--r-- | src/digest_detection.c | 36 | ||||
| -rw-r--r-- | src/digest_detection.h | 20 | ||||
| -rw-r--r-- | src/main.c | 5 |
3 files changed, 56 insertions, 5 deletions
diff --git a/src/digest_detection.c b/src/digest_detection.c index 741de94..060bc23 100644 --- a/src/digest_detection.c +++ b/src/digest_detection.c @@ -27,6 +27,21 @@ extern dd_parameter_t g_dd_run; extern dd_configure_t g_dd_cfg; extern dd_status_t g_dd_stat; +media_type_t g_file_mediatype_des[MEDIATYPE_MAXNUM] = +{ + {FILE_UNKNOWN, "unkonwn"}, + {FILE_CONTENT, "unkonwn"}, + {FILE_DOC, "doc"}, + {FILE_DOCX, "docx"}, + {FILE_XLS, "xls"}, + {FILE_XLSX, "xlsx"}, + {FILE_PPT, "ppt"}, + {FILE_PPTX, "pptx"}, + {FILE_PDF, "pdf"}, + {FILE_EXE, "exe"}, + {FILE_APK, "apk"}, +}; + void free_media(void* data) { media_t* mdi = (media_t*)data; @@ -44,7 +59,9 @@ void renew_media(media_t* mdi) if(NULL!=mdi) { create_media_write_to_log(mdi, MEDIA_RENEW, NULL); - mdi->hit_digest = 0; + mdi->hit_digest = 0; + Maat_stream_scan_digest_end(&mdi->digest_stream_para); + mdi->digest_stream_para = Maat_stream_scan_digest_start(g_dd_run.feather,g_dd_run.digest_tableid,mdi->media_len,g_dd_cfg.thread_num); } } @@ -129,6 +146,18 @@ void put_future_failed(enum e_future_error err, const char * what, void * user) free(pdata); } +char* gen_filesuffix_by_mediatype(uint8_t mediatype) +{ + for(int i=1;i<MEDIATYPE_MAXNUM;i++) + { + if(mediatype==g_file_mediatype_des[i].media_type) + { + return g_file_mediatype_des[i].media_type_desc; + } + } + return g_file_mediatype_des[0].media_type_desc; +} + void send_survey(frag_in_t* frg, media_t* mdi, struct Maat_rule_t* scan_result) { int send_rec = 0; @@ -157,7 +186,7 @@ void send_survey(frag_in_t* frg, media_t* mdi, struct Maat_rule_t* scan_result) gettimeofday(&tv, &tz); localtime_r(&tv.tv_sec, &now); strftime(day_time, sizeof(day_time), "%Y%m%d", &now); - snprintf(key, sizeof(key), "%s/%lu", day_time, mdi->mid); + snprintf(key, sizeof(key), "%s/%lu.%s", day_time, mdi->mid, gen_filesuffix_by_mediatype(mdi->media_type)); memset(&meta, 0, sizeof(struct tango_cache_meta)); meta.url = key; @@ -210,12 +239,13 @@ long media_preproc_cb(void *data, const uint8_t *key, uint size, void *user_arg) ret = Maat_stream_scan_digest(&mdi->digest_stream_para, frg->data, frg->datalen, frg->offset, scan_result, MAX_SCAN_RESULT, &mdi->scan_mid); if(ret>0) { - mdi->hit_digest = 1; + mdi->hit_digest = 1; } for(int i=0;i<ret;i++) { send_survey(frg, mdi, &scan_result[i]); } + Maat_clean_status(&mdi->scan_mid); } return 0; } diff --git a/src/digest_detection.h b/src/digest_detection.h index 5abe902..ce76c38 100644 --- a/src/digest_detection.h +++ b/src/digest_detection.h @@ -6,12 +6,32 @@ #define MAX_SCAN_RESULT 8 +/*ý�����ͣ���ǰ��һ��*/ +#define FILE_UNKNOWN 0x00 +#define FILE_CONTENT 0x03 +#define FILE_DOC 0xF0 +#define FILE_DOCX 0xF1 +#define FILE_XLS 0xF2 +#define FILE_XLSX 0xF3 +#define FILE_PPT 0xF4 +#define FILE_PPTX 0xF5 +#define FILE_PDF 0xF6 +#define FILE_EXE 0xF7 +#define FILE_APK 0xF8 +#define MEDIATYPE_MAXNUM 11 + struct future_pdata { struct future* future; char filename[256]; }; +typedef struct media_type_s +{ + uint8_t media_type; + char media_type_desc[32]; +} media_type_t; + typedef struct media_s { stream_para_t digest_stream_para; @@ -22,13 +22,14 @@ #include "my_socket.h" #include "cache_evbase_client.h" -int DD_VERSION_1_0_20180930 = 0; +int DD_VERSION_1_0_20181211 = 0; const char* dd_version_des = "MESA@iie digest"; void digest_detection_history() { //2018.09.27 v1.0 create the project - //2018.09.30 v1.0 update cache + //2018.09.30 v1.0 update cache + //2018.12.11 v1.0 add file suffix } dd_parameter_t g_dd_run; |
