summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2021-02-23 14:46:47 +0100
committerToni Uhlig <matzeton@googlemail.com>2021-02-23 14:46:47 +0100
commit0b5b177c14582dcaff854dda98db93c8d001682d (patch)
treeab1a2dffe19f0f03e0ff70e9da9360edb7a0f016 /examples
parent0a6d44dc60fb44c8aa59397d29b1f6cbb134d47d (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.c60
-rwxr-xr-xexamples/py-flow-info/flow-info.py13
-rwxr-xr-xexamples/py-schema-validation/py-schema-validation.py6
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()