#!/bin/bash

MODULE="$1"

# Pull in collector support functions
. "${COLLECTOR_HOME}"/collectorlib


preModule "$MODULE"

#Define and create output folders
NETWORK_MODULE_OUTPUTDIR="${BASE_OUTPUT_DIR}/${MODULE}"
mkdir -p "${NETWORK_MODULE_OUTPUTDIR}"
if [ ! -w "${NETWORK_MODULE_OUTPUTDIR}" ]
then
    echo "Unable to create output directory ${NETWORK_MODULE_OUTPUTDIR}"
    exit 1;
fi

#Begin data collection

logAndRunCmd "ifconfig -a &> \"${NETWORK_MODULE_OUTPUTDIR}\"/ifconfig-a.txt"
logAndRunCmd "netstat -tnap &> \"${NETWORK_MODULE_OUTPUTDIR}\"/netstat-tnap.txt"
logAndRunCmd "iptables -nL &> \"${NETWORK_MODULE_OUTPUTDIR}\"/iptables-nL.txt"
logAndRunCmd "iptables -v -nL &> \"${NETWORK_MODULE_OUTPUTDIR}\"/iptables-v-nL.txt"

for interface in $(ip link show | grep "^[0-9][0-9]*: " | sed 's/^[0-9][0-9]*: //g' | sed 's/: .*$//g')
do
    logAndRunCmd "ethtool -S \"${interface}\" &> \"${NETWORK_MODULE_OUTPUTDIR}\"/ethtool-\"${interface}\".txt"
done

#This command should be run on every node in the cluster.
logAndRunCmd "ss -o state established \( sport = :8080 or sport = :8443 or sport = :9443 \) \ dst 0.0.0.0/0 | egrep -v Recv-Q | wc -l &> \"${NETWORK_MODULE_OUTPUTDIR}\"/ss_established_inbound_connections.txt"

#This command should be run on every node in the cluster.
logAndRunCmd "ss -o state established \( sport = :8080 or sport = :8443 or sport = :9443 \) \ dst 0.0.0.0/0 | grep -v ^0 | egrep -v Recv-Q | wc -l &> \"${NETWORK_MODULE_OUTPUTDIR}\"/ss_queued_inbound_connections.txt"

#This command should be run on every node in the cluster.
logAndRunCmd "ss -o state established \( dport = :http or dport = :https \) \ dst 0.0.0.0/0 | egrep -v Recv-Q | wc -l &> \"${NETWORK_MODULE_OUTPUTDIR}\"/ss_outbound_connections.txt"

postModule "$MODULE"
