summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--example/CMakeLists.txt3
-rw-r--r--example/luatest/conf/default.conf11
-rw-r--r--example/luatest/pcap/influxdb.pcapbin0 -> 354 bytes
-rw-r--r--example/luatest/script/checktools.conf5
-rw-r--r--example/luatest/script/feature_X-Influxdb-Build.lua48
-rw-r--r--example/test.cpp104
6 files changed, 169 insertions, 2 deletions
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index e672a03..072dc60 100644
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -1,6 +1,7 @@
cmake_minimum_required(VERSION 3.5)
project (single_thread)
project (multithread)
+project (testlua)
link_directories("${CMAKE_BINARY_DIR}/src")
link_libraries(tsglua pthread)
@@ -9,7 +10,9 @@ add_definitions(-g -W -Wall)
add_executable(single_thread single_thread.cpp)
add_executable(multithread multithread.cpp)
+add_executable(testlua test.cpp)
add_dependencies(single_thread ${lib_name}_shared)
add_dependencies(multithread ${lib_name}_shared)
+add_dependencies(testlua ${lib_name}_shared)
add_subdirectory(luatest) \ No newline at end of file
diff --git a/example/luatest/conf/default.conf b/example/luatest/conf/default.conf
index ce3ce46..3307afd 100644
--- a/example/luatest/conf/default.conf
+++ b/example/luatest/conf/default.conf
@@ -1,8 +1,15 @@
#file_type 1:text_file 2:pcap_file
+# thread_num 1
+# feature weixinnum
+# lib ./lib/libc_handle_weixinnum.so
+# script ./script/handle_weixinnum.lua
+# input ./pcap/test.pcap
+# file_type 2
+
thread_num 1
-feature weixinnum
+feature X-Influxdb-Build
lib ./lib/libc_handle_weixinnum.so
script ./script/handle_weixinnum.lua
-input ./pcap/test.pcap
+input ../influxdb.pcap
file_type 2
diff --git a/example/luatest/pcap/influxdb.pcap b/example/luatest/pcap/influxdb.pcap
new file mode 100644
index 0000000..1bf563f
--- /dev/null
+++ b/example/luatest/pcap/influxdb.pcap
Binary files differ
diff --git a/example/luatest/script/checktools.conf b/example/luatest/script/checktools.conf
new file mode 100644
index 0000000..2f651f5
--- /dev/null
+++ b/example/luatest/script/checktools.conf
@@ -0,0 +1,5 @@
+[script]
+feature_X-Influxdb-Build.lua
+
+[data]
+influxdb_cs_01.pcap
diff --git a/example/luatest/script/feature_X-Influxdb-Build.lua b/example/luatest/script/feature_X-Influxdb-Build.lua
new file mode 100644
index 0000000..4a87c7f
--- /dev/null
+++ b/example/luatest/script/feature_X-Influxdb-Build.lua
@@ -0,0 +1,48 @@
+local data = TSG.data --TSG.data 获取待处理数据
+local data_len = string.len(data)
+local feature = "X-Influxdb-Build: " --待识别的特征
+local offset = 4 -- 字符串长度所占位数
+local locate = 0 -- 字符串中当前正在处理的位置
+
+
+-- 查找字符串X-Influxdb-Build位置
+if data == nil then
+ --print("TSG.data is nil")
+ return 1, false
+else
+ --print("TSG.data len:"..data_len)
+end
+
+-- local _start, _end = TSG.memmem(data, data_len, feature, string.len(feature))
+-- if not _end then
+-- --print("false, mememem not find feature.")
+-- return 1, false
+-- end
+local _start, _end = string.find(data, feature)
+if not _end then
+ return 1, false
+end
+--print("_start:".._start.."_end:".._end)
+
+locate = _end
+-- 查找结尾标识符0d0a,这个是windows下的\r\n换行符
+local cur_data = string.sub(data, _end+1, -1)
+local newline = "\r\n"
+_start, _end = TSG.memmem(cur_data, data_len-locate, newline, 2)
+if not _end then
+ print("false, not find newline.")
+ return 1, false
+end
+
+-- 获取x_influxdb_build对应值字符串
+local x_influxdb_build = string.sub(cur_data, 0, _start)
+local x_influxdb_build_len = _start
+
+-- x_influxdb_build对应值字符串是否可以转换为数字
+if tostring(x_influxdb_build) then
+ --print("x_influxdb_build_len:"..x_influxdb_build_len.."\nx_influxdb_build:"..x_influxdb_build)
+ return x_influxdb_build_len, x_influxdb_build
+else
+ --print("false, not to string.")
+ return 1, false
+end
diff --git a/example/test.cpp b/example/test.cpp
new file mode 100644
index 0000000..dcba390
--- /dev/null
+++ b/example/test.cpp
@@ -0,0 +1,104 @@
+/*************************************************************************
+ > File Name: main.c
+ > Author: pxz
+ > Created Time: Thu 09 Jul 2020 07:08:40 AM CST
+ ************************************************************************/
+extern "C"
+{
+ #include<stdio.h>
+ #include<string.h>
+ #include<stdlib.h>
+}
+#include"../include/tsg_lua_interface.h"
+
+static char *get_file_to_buffer(const char *file, size_t *len)
+{
+ FILE *fp = fopen(file, "r");
+ if (fp)
+ {
+ fseek(fp, 0, 2);
+ *len = ftell(fp);
+ fseek(fp, 0, 0);
+ if (*len == 0)
+ {
+ fclose(fp);
+ return NULL;
+ }
+ char *buff = (char *)malloc((*len) + 1);
+ int num = fread(buff, 1, *len, fp);
+ if (num != 0)
+ {
+ buff[num] = 0;
+ *len = num - 1;
+ fclose(fp);
+ return buff;
+ }
+ free(buff);
+ fclose(fp);
+ }
+ return NULL;
+}
+
+int main(int argc, const char *argv[])
+{
+ if (argc < 3)
+ {
+ printf("please input datafile and script.");
+ return -1;
+ }
+ const char *filename = argv[1];
+ const char *script = argv[2];
+ tsg_lua_handle L = NULL;
+
+ size_t data_len = 0;
+ char *data = get_file_to_buffer(filename, &data_len);
+
+ /* 初始化1个虚拟机 */
+ printf("\n*********************tsg_lua_vm_create************************\n");
+ printf("[C]:call tsg_lua_vm_create...\n");
+ L = tsg_lua_vm_create();
+ if (L == NULL)
+ {
+ printf("[C]:call tsg_lua_vm_create failed.\n");
+ free(data);
+ return -1;
+ }
+ printf("[C]:call tsg_lua_vm_create success.\t lua:%p\n", L);
+
+ char out[255];
+ memset(out, 0, sizeof(out));
+ size_t out_len;
+ size_t out_type;
+ printf("\n=============================file==================================\n");
+ printf("\n*********************tsg_lua_exec_file************************\n");
+ printf("[C]:call tsg_lua_exec_file, exec %s ...\n", script);
+ int ret = tsg_lua_exec_file(L, script, data, data_len, out, &out_len, &out_type);
+ if (ret < 0)
+ {
+ printf("[C]:call tsg_lua_exec_file failed.\n");
+ free(data);
+ return -1;
+ }
+ printf("[C]:call tsg_lua_exec_file success.\n");
+ printf("[C]:out_len:%zu\n", out_len);
+ printf("[C]:out_type:%zu\n", out_type);
+ switch(out_type)
+ {
+ case STRING:
+ printf("[C]:out_data:%s\n", out);
+ break;
+ case INTEGER:
+ printf("[C]:out_data:%ld\n", *(long int *)out);
+ break;
+ case BOOLEAN:
+ printf("[C]:out_data:%d\n", out[0]);
+ break;
+ }
+
+ /* 关闭lua */
+ tsg_destory_lua(L);
+ printf("[C]:Every day is good day!\n");
+
+ free(data);
+ return 0;
+}