Fixed some SonarCloud complaints.

Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
This commit is contained in:
Toni Uhlig
2023-11-03 23:23:44 +01:00
parent 93498fff02
commit 84b12cd02c
4 changed files with 81 additions and 82 deletions

View File

@@ -1,8 +1,10 @@
FROM ubuntu:22.04 as builder FROM ubuntu:22.04 AS builder
WORKDIR /root WORKDIR /root
RUN env DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get install -y --no-install-recommends autoconf automake build-essential ca-certificates wget unzip git make cmake pkg-config libpcap-dev autoconf libtool RUN env DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get install -y --no-install-recommends autoconf automake build-essential ca-certificates wget unzip git make cmake pkg-config libpcap-dev autoconf libtool
RUN env DEBIAN_FRONTEND=noninteractive apt-get clean
RUN env DEBIAN_FRONTEND=noninteractive apt-get autoclean
RUN git clone https://github.com/utoni/nDPId.git RUN git clone https://github.com/utoni/nDPId.git
RUN cd nDPId && mkdir -p build && cd build && cmake .. -DBUILD_NDPI=ON && make RUN cd nDPId && mkdir -p build && cd build && cmake .. -DBUILD_NDPI=ON && make
@@ -14,6 +16,8 @@ COPY --from=builder /root/nDPId/build/nDPId /usr/sbin/nDPId
COPY --from=builder /root/nDPId/build/nDPIsrvd /usr/bin/nDPIsrvd COPY --from=builder /root/nDPId/build/nDPIsrvd /usr/bin/nDPIsrvd
RUN env DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get install -y --no-install-recommends libpcap-dev RUN env DEBIAN_FRONTEND=noninteractive apt-get -y update && apt-get install -y --no-install-recommends libpcap-dev
RUN env DEBIAN_FRONTEND=noninteractive apt-get clean
RUN env DEBIAN_FRONTEND=noninteractive apt-get autoclean
USER nobody USER nobody
RUN /usr/bin/nDPIsrvd -h || { RC=$?; test ${RC} -eq 1; } RUN /usr/bin/nDPIsrvd -h || { RC=$?; test ${RC} -eq 1; }

View File

@@ -89,7 +89,7 @@ def get_autoencoder(load_from_file=None):
decoder_submodel = autoencoder.layers[2] decoder_submodel = autoencoder.layers[2]
return encoder_submodel, decoder_submodel, autoencoder return encoder_submodel, decoder_submodel, autoencoder
def onJsonLineRecvd(json_dict, instance, current_flow, global_user_data): def on_json_line(json_dict, instance, current_flow, global_user_data):
if 'packet_event_name' not in json_dict: if 'packet_event_name' not in json_dict:
return True return True
@@ -138,13 +138,13 @@ def onJsonLineRecvd(json_dict, instance, current_flow, global_user_data):
return True return True
def nDPIsrvd_worker(address, shared_shutdown_event, shared_training_event, shared_packet_list): def ndpisrvd_worker(address, shared_shutdown_event, shared_training_event, shared_packet_list):
nsock = nDPIsrvdSocket() nsock = nDPIsrvdSocket()
try: try:
nsock.connect(address) nsock.connect(address)
print_dots = 1 print_dots = 1
nsock.loop(onJsonLineRecvd, None, (shared_shutdown_event, shared_training_event, shared_packet_list, print_dots)) nsock.loop(on_json_line, None, (shared_shutdown_event, shared_training_event, shared_packet_list, print_dots))
except nDPIsrvd.SocketConnectionBroken as err: except nDPIsrvd.SocketConnectionBroken as err:
sys.stderr.write('\nnDPIsrvd-Worker Socket Error: {}\n'.format(err)) sys.stderr.write('\nnDPIsrvd-Worker Socket Error: {}\n'.format(err))
except KeyboardInterrupt: except KeyboardInterrupt:
@@ -158,11 +158,11 @@ def nDPIsrvd_worker(address, shared_shutdown_event, shared_training_event, share
def keras_worker(load_model, save_model, shared_shutdown_event, shared_training_event, shared_packet_queue, shared_plot_queue): def keras_worker(load_model, save_model, shared_shutdown_event, shared_training_event, shared_packet_queue, shared_plot_queue):
shared_training_event.set() shared_training_event.set()
try: try:
encoder, decoder, autoencoder = get_autoencoder(load_model) encoder, _, autoencoder = get_autoencoder(load_model)
except Exception as err: except Exception as err:
sys.stderr.write('Could not load Keras model from file: {}\n'.format(str(err))) sys.stderr.write('Could not load Keras model from file: {}\n'.format(str(err)))
sys.stderr.flush() sys.stderr.flush()
encoder, decoder, autoencoder = get_autoencoder() encoder, _, autoencoder = get_autoencoder()
autoencoder.summary() autoencoder.summary()
tensorboard = TensorBoard(log_dir=TB_LOGPATH, histogram_freq=1) tensorboard = TensorBoard(log_dir=TB_LOGPATH, histogram_freq=1)
early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=ES_PATIENCE, restore_best_weights=True, start_from_epoch=0, verbose=0, mode='auto') early_stopping = EarlyStopping(monitor='val_loss', min_delta=0.0001, patience=ES_PATIENCE, restore_best_weights=True, start_from_epoch=0, verbose=0, mode='auto')
@@ -213,7 +213,7 @@ def keras_worker(load_model, save_model, shared_shutdown_event, shared_training_
try: try:
shared_shutdown_event.set() shared_shutdown_event.set()
except: except Exception:
pass pass
def plot_animate(i, shared_plot_queue, ax, xs, ys): def plot_animate(i, shared_plot_queue, ax, xs, ys):
@@ -345,7 +345,7 @@ if __name__ == '__main__':
shared_packet_queue = mgr.JoinableQueue() shared_packet_queue = mgr.JoinableQueue()
shared_plot_queue = mgr.JoinableQueue() shared_plot_queue = mgr.JoinableQueue()
nDPIsrvd_job = mp.Process(target=nDPIsrvd_worker, args=( nDPIsrvd_job = mp.Process(target=ndpisrvd_worker, args=(
address, address,
shared_shutdown_event, shared_shutdown_event,
shared_training_event, shared_training_event,

View File

@@ -168,13 +168,13 @@ static unsigned long long int nDPIsrvd_free_bytes = 0;
do \ do \
{ \ { \
((struct thread_return_value *)thread_arg)->val = (errno != 0 ? errno : 1); \ ((struct thread_return_value *)thread_arg)->val = (errno != 0 ? errno : 1); \
} while (0); } while (0)
#define THREAD_ERROR_GOTO(thread_arg) \ #define THREAD_ERROR_GOTO(thread_arg) \
do \ do \
{ \ { \
THREAD_ERROR(thread_arg); \ THREAD_ERROR(thread_arg); \
goto error; \ goto error; \
} while (0); } while (0)
static void nDPIsrvd_memprof_log(char const * const format, ...) static void nDPIsrvd_memprof_log(char const * const format, ...)
{ {
@@ -384,82 +384,78 @@ static void * nDPIsrvd_mainloop_thread(void * const arg)
{ {
struct remote_desc * remote = (struct remote_desc *)nio_get_ptr(&io, i); struct remote_desc * remote = (struct remote_desc *)nio_get_ptr(&io, i);
if (remote == mock_json_desc || remote == mock_test_desc || if (remote != mock_json_desc && remote != mock_test_desc && remote != mock_buff_desc &&
remote == mock_buff_desc || remote == mock_null_desc || remote != mock_null_desc && remote != mock_arpa_desc)
remote == mock_arpa_desc)
{ {
if (nio_has_error(&io, i) == NIO_SUCCESS) logger(1, "nDPIsrvd epoll returned unexpected event data: %p", remote);
THREAD_ERROR_GOTO(arg);
}
if (nio_has_error(&io, i) == NIO_SUCCESS)
{
char const * remote_desc_name;
if (remote == mock_json_desc)
{ {
char const * remote_desc_name; remote_desc_name = "Mock JSON";
if (remote == mock_json_desc) do
{ {
remote_desc_name = "Mock JSON"; if (mock_test_desc->fd >= 0)
do drain_write_buffers_blocking(mock_test_desc);
{ if (mock_buff_desc->fd >= 0)
if (mock_test_desc->fd >= 0) drain_write_buffers_blocking(mock_buff_desc);
drain_write_buffers_blocking(mock_test_desc); if (mock_null_desc->fd >= 0)
if (mock_buff_desc->fd >= 0) drain_write_buffers_blocking(mock_null_desc);
drain_write_buffers_blocking(mock_buff_desc); if (mock_arpa_desc->fd >= 0)
if (mock_null_desc->fd >= 0) drain_write_buffers_blocking(mock_arpa_desc);
drain_write_buffers_blocking(mock_null_desc); } while (handle_data_event(&io, i) == 0);
if (mock_arpa_desc->fd >= 0) }
drain_write_buffers_blocking(mock_arpa_desc); else if (remote == mock_test_desc)
} while (handle_data_event(&io, i) == 0); {
} remote_desc_name = "Mock Test";
else if (remote == mock_test_desc) }
{ else if (remote == mock_buff_desc)
remote_desc_name = "Mock Test"; {
} remote_desc_name = "Mock Buffer";
else if (remote == mock_buff_desc) }
{ else if (remote == mock_null_desc)
remote_desc_name = "Mock Buffer"; {
} remote_desc_name = "Mock NULL";
else if (remote == mock_null_desc) }
{ else if (remote == mock_arpa_desc)
remote_desc_name = "Mock NULL"; {
} remote_desc_name = "Mock ARPA";
else if (remote == mock_arpa_desc)
{
remote_desc_name = "Mock ARPA";
}
else
{
remote_desc_name = "UNKNOWN";
}
nDPIsrvd_distributor_disconnects++;
logger(1,
"nDPIsrvd distributor '%s' connection closed (%d/%d)",
remote_desc_name,
nDPIsrvd_distributor_disconnects,
nDPIsrvd_distributor_expected_disconnects);
free_remote(&io, remote);
} }
else else
{ {
if (handle_data_event(&io, i) != 0) remote_desc_name = "UNKNOWN";
{
if (mock_arpa_desc == remote)
{
// arpa mock does not care about shutdown events
free_remote(&io, mock_arpa_desc);
nDPIsrvd_distributor_disconnects++;
logger(1,
"nDPIsrvd distributor '%s' connection closed (%d/%d)",
"Mock ARPA",
nDPIsrvd_distributor_disconnects,
nDPIsrvd_distributor_expected_disconnects);
continue;
}
logger(1, "%s", "nDPIsrvd data event handler failed");
THREAD_ERROR_GOTO(arg);
}
} }
nDPIsrvd_distributor_disconnects++;
logger(1,
"nDPIsrvd distributor '%s' connection closed (%d/%d)",
remote_desc_name,
nDPIsrvd_distributor_disconnects,
nDPIsrvd_distributor_expected_disconnects);
free_remote(&io, remote);
} }
else else
{ {
logger(1, if (handle_data_event(&io, i) != 0)
"nDPIsrvd epoll returned unexpected event data: %p", remote); {
THREAD_ERROR_GOTO(arg); if (mock_arpa_desc == remote)
{
// arpa mock does not care about shutdown events
free_remote(&io, mock_arpa_desc);
nDPIsrvd_distributor_disconnects++;
logger(1,
"nDPIsrvd distributor '%s' connection closed (%d/%d)",
"Mock ARPA",
nDPIsrvd_distributor_disconnects,
nDPIsrvd_distributor_expected_disconnects);
continue;
}
logger(1, "%s", "nDPIsrvd data event handler failed");
THREAD_ERROR_GOTO(arg);
}
} }
} }
} }
@@ -1186,8 +1182,7 @@ static void * distributor_client_mainloop_thread(void * const arg)
#endif #endif
else else
{ {
logger(1, logger(1, "Distributor epoll returned unexpected event data: %p", nio_get_ptr(&io, i));
"Distributor epoll returned unexpected event data: %p", nio_get_ptr(&io, i));
THREAD_ERROR_GOTO(trv); THREAD_ERROR_GOTO(trv);
} }
} }
@@ -1621,8 +1616,7 @@ static int nio_selftest()
goto error; goto error;
} }
if (nio_del_fd(&io, pipefds[0]) != NIO_SUCCESS if (nio_del_fd(&io, pipefds[0]) != NIO_SUCCESS || nio_del_fd(&io, pipefds[1]) != NIO_SUCCESS)
|| nio_del_fd(&io, pipefds[1]) != NIO_SUCCESS)
{ {
logger(1, "%s", "Event delete failed"); logger(1, "%s", "Event delete failed");
goto error; goto error;

View File

@@ -155,7 +155,7 @@ enum nDPId_flow_state
enum nDPId_flow_direction enum nDPId_flow_direction
{ {
FD_SRC2DST = 0, FD_SRC2DST = 0,
FD_DST2SRC = 1, FD_DST2SRC,
FD_COUNT FD_COUNT
}; };
@@ -1066,7 +1066,8 @@ static void get_ip4_address_and_netmask(struct ifaddrs const * const ifaddr)
static int get_ip_netmask_from_pcap_dev(char const * const pcap_dev) static int get_ip_netmask_from_pcap_dev(char const * const pcap_dev)
{ {
int retval = 0, found_dev = 0; int retval = 0, found_dev = 0;
int ip4_interface_avail = 0, ip6_interface_avail = 0; int ip4_interface_avail = 0;
int ip6_interface_avail = 0;
struct ifaddrs * ifaddrs = NULL; struct ifaddrs * ifaddrs = NULL;
struct ifaddrs * ifa; struct ifaddrs * ifa;