summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlishu <[email protected]>2018-12-11 22:27:35 +0800
committerlishu <[email protected]>2018-12-11 22:27:35 +0800
commit14ce0d2381eedff940305a6cc40cf2cd36e9d016 (patch)
tree101e31769b5742da31c7ab820b06db234e34d346
parentcf2684a100afcfa3076d6afe7235c62394ff77eb (diff)
摘要存储文件,增加文件后缀
-rw-r--r--src/digest_detection.c36
-rw-r--r--src/digest_detection.h20
-rw-r--r--src/main.c5
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;
diff --git a/src/main.c b/src/main.c
index 40f01de..3f0500b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;