diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2021-02-23 14:46:47 +0100 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2021-02-23 14:46:47 +0100 |
commit | 0b5b177c14582dcaff854dda98db93c8d001682d (patch) | |
tree | ab1a2dffe19f0f03e0ff70e9da9360edb7a0f016 /examples | |
parent | 0a6d44dc60fb44c8aa59397d29b1f6cbb134d47d (diff) |
Extended nDPIsrvd.h with address parsing.
* nDPId supports looading of custom nDPI protocol/category files
* extended JSON schemas according to nDPI / nDPId JSON serializing
* removed memory holes in nDPId
* extended examples/c-captured
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/c-captured/c-captured.c | 60 | ||||
-rwxr-xr-x | examples/py-flow-info/flow-info.py | 13 | ||||
-rwxr-xr-x | examples/py-schema-validation/py-schema-validation.py | 6 |
3 files changed, 41 insertions, 38 deletions
diff --git a/examples/c-captured/c-captured.c b/examples/c-captured/c-captured.c index 36695e131..688b3d6ea 100644 --- a/examples/c-captured/c-captured.c +++ b/examples/c-captured/c-captured.c @@ -13,6 +13,7 @@ #include <time.h> #include <unistd.h> +#include "config.h" #include "nDPIsrvd.h" #include "utarray.h" @@ -41,12 +42,12 @@ struct flow_user_data UT_array * packets; }; -static int daemonize = 0; struct nDPIsrvd_socket * sock = NULL; static int main_thread_shutdown = 0; -static char const serv_listen_path[] = DISTRIBUTOR_UNIX_SOCKET; -static char const serv_listen_addr[INET_ADDRSTRLEN] = DISTRIBUTOR_HOST; -static uint16_t const serv_listen_port = DISTRIBUTOR_PORT; + +static int daemonize = 0; +static char * pidfile = NULL; +static char * serv_optarg = NULL; #ifdef pcap_dump_open_append static time_t pcap_filename_rotation = 600; static time_t pcap_filename_last_rotation = 0; @@ -408,18 +409,20 @@ static int parse_options(int argc, char ** argv) static char const usage[] = "Usage: %s " - "[-d] [-s host] [-S host] [-R rotate-every-n-seconds] [-g] [-u]\n"; + "[-d] [-p pidfile] [-s host] [-R rotate-every-n-seconds] [-g] [-u]\n"; - while ((opt = getopt(argc, argv, "hds:R:gu")) != -1) + while ((opt = getopt(argc, argv, "hdp:s:R:g:u:")) != -1) { switch (opt) { case 'd': daemonize = 1; break; - case 's': + case 'p': break; - case 'S': + case 's': + free(serv_optarg); + serv_optarg = strdup(optarg); break; case 'R': break; @@ -433,6 +436,17 @@ static int parse_options(int argc, char ** argv) } } + if (serv_optarg == NULL) + { + serv_optarg = strdup(DISTRIBUTOR_UNIX_SOCKET); + } + + if (nDPIsrvd_setup_address(&sock->address, serv_optarg) != 0) + { + fprintf(stderr, "%s: Could not parse address `%s'\n", argv[0], serv_optarg); + return 1; + } + if (optind < argc) { fprintf(stderr, "Unexpected argument after options\n\n"); @@ -452,35 +466,23 @@ int main(int argc, char ** argv) return 1; } + if (parse_options(argc, argv) != 0) + { + fprintf(stderr, "%s: Could not parse command line arguments.\n", argv[0]); + return 1; + } + signal(SIGINT, sighandler); signal(SIGTERM, sighandler); signal(SIGPIPE, sighandler); - enum nDPIsrvd_connect_return connect_ret = CONNECT_ERROR; - printf("Recv buffer size: %u\n", NETWORK_BUFFER_MAX_SIZE); - if (argc == 2) - { - printf("Connecting to UNIX socket: %s\n", argv[1]); - connect_ret = nDPIsrvd_connect_unix(sock, argv[1]); - } - else if (argc == 1) - { - if (access(serv_listen_path, R_OK) == 0) - { - printf("Connecting to %s\n", serv_listen_path); - connect_ret = nDPIsrvd_connect_unix(sock, serv_listen_path); - } - else - { - printf("Connecting to %s:%u\n", serv_listen_addr, serv_listen_port); - connect_ret = nDPIsrvd_connect_ip(sock, serv_listen_addr, serv_listen_port); - } - } + printf("Connecting to `%s'..\n", serv_optarg); + enum nDPIsrvd_connect_return connect_ret = nDPIsrvd_connect(sock); if (connect_ret != CONNECT_OK) { - fprintf(stderr, "%s: nDPIsrvd socket connect failed!\n", argv[0]); + fprintf(stderr, "%s: nDPIsrvd socket connect to %s failed!\n", argv[0], serv_optarg); nDPIsrvd_free(&sock); return 1; } diff --git a/examples/py-flow-info/flow-info.py b/examples/py-flow-info/flow-info.py index 62e43f74b..a98b0743e 100755 --- a/examples/py-flow-info/flow-info.py +++ b/examples/py-flow-info/flow-info.py @@ -11,11 +11,16 @@ def prettifyEvent(color_list, whitespaces, text): term_attrs = str() for color in color_list: term_attrs += str(color) - return '{}{:>' + str(whitespaces) + '}{}'.format(term_attrs, text, TermColor.END) + fmt = '{}{:>' + str(whitespaces) + '}{}' + return fmt.format(term_attrs, text, TermColor.END) def onJsonLineRecvd(json_dict, current_flow, global_user_data): + instance_and_source = '' + instance_and_source += '[{}]'.format(TermColor.setColorByString(json_dict['alias'])) + instance_and_source += '[{}]'.format(TermColor.setColorByString(json_dict['source'])) + if 'basic_event_id' in json_dict: - print('{}: {}'.format(prettifyEvent([TermColor.WARNING, TermColor.BLINK], 16, 'BASIC-EVENT'), json_dict['basic_event_name'])) + print('{} {}: {}'.format(instance_and_source, prettifyEvent([TermColor.WARNING, TermColor.BLINK], 16, 'BASIC-EVENT'), json_dict['basic_event_name'])) return True elif 'flow_event_id' not in json_dict: return True @@ -40,10 +45,6 @@ def onJsonLineRecvd(json_dict, current_flow, global_user_data): else TermColor.FAIL + TermColor.BOLD + TermColor.BLINK + 'RISK' + TermColor.END, ndpi_frisk[:-2]) - instance_and_source = '' - instance_and_source += '[{}]'.format(TermColor.setColorByString(json_dict['alias'])) - instance_and_source += '[{}]'.format(TermColor.setColorByString(json_dict['source'])) - line_suffix = '' flow_event_name = '' if json_dict['flow_event_name'] == 'guessed' or json_dict['flow_event_name'] == 'not-detected': diff --git a/examples/py-schema-validation/py-schema-validation.py b/examples/py-schema-validation/py-schema-validation.py index 407c7b814..ca269e0c3 100755 --- a/examples/py-schema-validation/py-schema-validation.py +++ b/examples/py-schema-validation/py-schema-validation.py @@ -10,7 +10,7 @@ from nDPIsrvd import nDPIsrvdSocket, TermColor class Stats: lines_processed = 0 print_dot_every = 10 - next_lines_print = print_dot_every + print_nmb_every = print_dot_every * 5 def onJsonLineRecvd(json_dict, current_flow, global_user_data): validation_done = nDPIsrvd.validateAgainstSchema(json_dict) @@ -19,8 +19,8 @@ def onJsonLineRecvd(json_dict, current_flow, global_user_data): if global_user_data.lines_processed % global_user_data.print_dot_every == 0: sys.stdout.write('.') sys.stdout.flush() - if global_user_data.lines_processed == global_user_data.next_lines_print: - global_user_data.next_lines_print *= 2 + print_nmb_every = global_user_data.print_nmb_every + (len(str(global_user_data.lines_processed)) * global_user_data.print_dot_every) + if global_user_data.lines_processed % print_nmb_every == 0: sys.stdout.write(str(global_user_data.lines_processed)) sys.stdout.flush() |