#!/bin/bash

MODULE="$1"
# Pull in collector support functions
. "${COLLECTOR_HOME}"/collectorlib
#Define and create output folders
OS_DIR="${BASE_OUTPUT_DIR}/${MODULE}"

preModule "$MODULE"
mkdir -p "${OS_DIR}"

if [ -w "${OS_DIR}" ]
then
    #Begin data collection
    logAndRunCmd "uname -a &> \"${OS_DIR}\"/uname.txt"
    if [ -f /etc/debian_version ]
    then
        # in Debian
        DEBIAN_OS_STR=$(grep "^NAME" /etc/os-release | awk -F"=" '{ print $2 }' | tr -d '"')
        DEBIAN_VERSION_STR=$(</etc/debian_version)
        logAndRunCmd "echo $DEBIAN_OS_STR release $DEBIAN_VERSION_STR &> \"${OS_DIR}\"/debian-release.txt"
        logAndRunCmd "dpkg --list &> \"${OS_DIR}\"/dpkgList.txt"
        logAndRunCmd "cp /var/log/audit/audit.log* \"${OS_DIR}\""
    else
        # in RHEL/CentOS
        logAndRunCmd "cat /etc/redhat-release &> \"${OS_DIR}\"/redhat-release.txt"
        logAndRunCmd "rpm -qa &> \"${OS_DIR}\"/rpmList.txt"
        logAndRunCmd "cp /var/log/bash_commands.log \"${OS_DIR}\""
    fi
    #list system services at runlevel
    logAndRunCmd "chkconfig --list &> \"${OS_DIR}\"/chkconfig-list.txt"
    logAndRunCmd "cp /var/log/messages* \"${OS_DIR}"\"
    logAndRunCmd "who -r &> \"${OS_DIR}\"/who-runlevel.txt"
    logAndRunCmd "dmesg &> \"${OS_DIR}\"/dmesg.txt"
    #ntp has been removed and replaced with systemd-timesyncd in GW11.1 (Debian12) and above
    if [[ "$DEBIAN_VERSION_STR" =~ ^11.* ]]; then
        logAndRunCmd "cp /etc/ntp.conf \"${OS_DIR}\""
    else
        logAndRunCmd "cp /etc/systemd/timesyncd.conf \"${OS_DIR}\""
    fi
    logAndRunCmd "ntpq -p &> \"${OS_DIR}\"/ntpq-peers.txt"
    logAndRunCmd "cp /etc/security/limits.conf \"${OS_DIR}\""
    logAndRunCmd "cp /etc/security/limits.d/*ssg* \"${OS_DIR}\""
    logAndRunCmd "whoami &> \"${OS_DIR}\"/who-am-i.txt"
    #view all soft limits
    logAndRunCmd "su -c \"ulimit -S -a\" -s /bin/sh gateway &>> \"${OS_DIR}\"/ulimit-soft.txt"
    #view all hard limits
    logAndRunCmd "su -c \"ulimit -H -a\" -s /bin/sh gateway &>> \"${OS_DIR}\"/ulimit-hard.txt"
    logAndRunCmd "top -b -n 1 &> \"${OS_DIR}\"/top.txt"
else
    echo "Unable to create os output directory"
fi

postModule "$MODULE"