diff options
-rw-r--r-- | .github/workflows/build.yml | 9 | ||||
-rw-r--r-- | .gitlab-ci.yml | 1 | ||||
-rw-r--r-- | examples/c-simple/c-simple.c | 10 | ||||
-rwxr-xr-x | examples/py-machine-learning/sklearn-random-forest.py | 17 |
4 files changed, 32 insertions, 5 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c273052f0..b2602dc19 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,10 +25,13 @@ jobs: os: ["ubuntu-latest", "ubuntu-18.04"] ndpid_gcrypt: ["-DNDPI_WITH_GCRYPT=OFF", "-DNDPI_WITH_GCRYPT=ON"] ndpid_zlib: ["-DENABLE_ZLIB=OFF", "-DENABLE_ZLIB=ON"] - ndpi_min_version: ["4.5"] + ndpi_min_version: ["4.6"] include: - compiler: "default-cc" os: "ubuntu-latest" + sanitizer: "" + - compiler: "default-cc" + os: "ubuntu-latest" sanitizer: "-DENABLE_SANITIZER=ON" - compiler: "clang-12" os: "ubuntu-latest" @@ -71,6 +74,10 @@ jobs: - name: Build nDPId run: | make -C build all VERBOSE=1 + - name: Build single nDPId executable (invoke CC directly) + if: !startsWith(matrix.sanitizer, '-DENABLE_SANITIZER') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') + run: | + cc nDPId.c utils.c -I./build/libnDPI/include/ndpi -I. -I./dependencies -I./dependencies/jsmn -I./dependencies/uthash/include -o /tmp/a.out -lpcap ./build/libnDPI/lib/libndpi.a -pthread -lm -lz - name: Test EXEC run: | ./build/nDPId-test || test $? -eq 1 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 70327a995..4f4429ef9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,6 +65,7 @@ build_and_test_static_libndpi: - > if ldd ./build-cmake-submodule/nDPId | grep -qoEi libndpi; then \ echo 'nDPId linked against a static libnDPI should not contain a shared linked libnDPI.' >&2; false; fi + - cc nDPId.c utils.c -I./build-cmake-submodule/libnDPI/include/ndpi -I. -I./dependencies -I./dependencies/jsmn -I./dependencies/uthash/include -o /tmp/a.out -lpcap ./build-cmake-submodule/libnDPI/lib/libndpi.a -pthread -lm -lz artifacts: expire_in: 1 week paths: diff --git a/examples/c-simple/c-simple.c b/examples/c-simple/c-simple.c index a923d1424..642611f07 100644 --- a/examples/c-simple/c-simple.c +++ b/examples/c-simple/c-simple.c @@ -253,14 +253,20 @@ int main(int argc, char ** argv) enum nDPIsrvd_parse_return parse_ret = nDPIsrvd_parse_all(sock); if (parse_ret != PARSE_NEED_MORE_DATA) { - printf("Could not parse json string: %s\n", nDPIsrvd_enum_to_string(parse_ret)); + printf("Could not parse json string %s: %.*s\n", + nDPIsrvd_enum_to_string(parse_ret), + nDPIsrvd_json_buffer_length(sock), + nDPIsrvd_json_buffer_string(sock)); break; } } if (main_thread_shutdown == 0 && read_ret != READ_OK) { - printf("Parse read %s\n", nDPIsrvd_enum_to_string(read_ret)); + printf("Parse read %s at JSON: %.*s\n", + nDPIsrvd_enum_to_string(read_ret), + nDPIsrvd_json_buffer_length(sock), + nDPIsrvd_json_buffer_string(sock)); } return 1; diff --git a/examples/py-machine-learning/sklearn-random-forest.py b/examples/py-machine-learning/sklearn-random-forest.py index 9103bb427..275376ba2 100755 --- a/examples/py-machine-learning/sklearn-random-forest.py +++ b/examples/py-machine-learning/sklearn-random-forest.py @@ -168,6 +168,9 @@ def onJsonLineRecvd(json_dict, instance, current_flow, global_user_data): return True def isProtoClass(proto_class, line): + if type(proto_class) != list or type(line) != str: + raise TypeError('Invalid type: {}/{}.'.format(type(proto_class), type(line))) + s = line.lower() for x in range(len(proto_class)): @@ -278,9 +281,19 @@ if __name__ == '__main__': for line in reader: try: X += getRelevantFeaturesCSV(line) - y += [isProtoClass(args.proto_class, line['proto'])] except RuntimeError as err: - print('Error: `{}\'\non line {}: {}'.format(err, reader.line_num - 1, line)) + print('Runtime Error: `{}\'\non line {}: {}'.format(err, reader.line_num - 1, line)) + continue + except TypeError as err: + print('Type Error: `{}\'\non line {}: {}'.format(err, reader.line_num - 1, line)) + continue + + try: + y += [isProtoClass(args.proto_class, line['proto'])] + except TypeError as err: + X.pop() + print('Type Error: `{}\'\non line {}: {}'.format(err, reader.line_num - 1, line)) + continue sys.stderr.write('CSV data set contains {} entries.\n'.format(len(X))) |