#!/bin/bash
#############################################################
# Name:        Supportconfig Plugin for SUSE Manager Client
# Description: Gathers important troubleshooting information
#              about a SUSE Manager Client
# License:     GPLv2
# Author:      Michael Calmer <mc@suse.de>
# Modified:    2024 February 03
#############################################################

SVER=5.0.0
RCFILE="/usr/lib/supportconfig/resources/supportconfig.rc"
OF='plugin-susemanager-client.txt'

[ -s $RCFILE ] && . $RCFILE || { echo "ERROR: Initializing resource file: $RCFILE"; exit 1; }

log_write $OF
log_entry $OF note "Supportconfig Plugin for SUSE Manager Client, v${SVER}"
addHeaderFile $OF


#############################################################
RPMLIST="
spacewalk-client-tools
spacewalk-check
spacewalk-client-setup
rhnlib
osad
zypp-plugin-spacewalk
salt-minion
salt
podman
uyuni-proxy-systemd-services
"

for THISRPM in $RPMLIST; do
    rpm_verify $OF $THISRPM
done

log_cmd $OF "/bin/ls -l --time-style=long-iso /usr/local/lib"
log_cmd $OF "/bin/ls -l --time-style=long-iso /usr/local/lib64"
log_cmd $OF "/bin/ls -l --time-style=long-iso /etc/ssl/certs/"

log_entry $OF note "SUSE Manager Client Config Files"

conf_files $OF \
    /etc/sysconfig/rhn/up2date \
    /etc/sysconfig/rhn/osad.conf \
    /etc/sysconfig/rhn/rhncfg-client.conf \
    /etc/sysconfig/rhn/rhncfg-manager.conf \
    /etc/sysconfig/rhn/image.cfg \
    /etc/sysconfig/rhn/rhnpushrc \
    /etc/sysconfig/rhn/systemid \
    /etc/salt/minion \
    /etc/salt/minion.d/susemanager.conf \
    /etc/salt/minion.d/_schedule.conf \
    /etc/uyuni/proxy/config.yaml  \
    /etc/sysconfig/uyuni-proxy-systemd-services


log_entry $OF note "SUSE Manager Client Log Files"

log_files $OF 1000 /var/log/salt/minion

log_cmd $OF "zypper --no-refresh ls"
log_cmd $OF "zypper --no-refresh lr -u"
log_cmd $OF "salt-minion --versions-report"

log_cmd $OF "cp /var/log/zypper.log $LOG"

log_entry $OF note "Crypto Policy"

if [ -f /etc/crypto-policies/config ]; then
        log_cmd $OF "cat /etc/crypto-policies/config"
elif [ $(cat /proc/sys/crypto/fips_enabled) -ne 0 ]; then
        log_write $OF "FIPS"
else
        log_cmd $OF "grep -v '#' /usr/share/crypto-policies/default-config"
fi

log_entry $OF note "Cloud / PAYG"
log_cmd $OF "test -e /usr/bin/instance-flavor-check && /usr/bin/instance-flavor-check"
rpm_verify $OF "python-instance-billing-flavor-check"

####################################################################
#### The instance where a proxy is running, is just a managed client
####################################################################

log_entry $OF note "Proxy Containers Configuration Files"

log_cmd $OF "ls -l /etc/uyuni/proxy/"

log_entry $OF note "Proxy Containers Systems Status"

SERVICES="
    uyuni-proxy-pod
    uyuni-proxy-httpd
    uyuni-proxy-salt-broker
    uyuni-proxy-squid
    uyuni-proxy-ssh
    uyuni-proxy-tftpd
"

for SERVICE in $SERVICES; do
    check_service $OF $SERVICE
done

CONTAINERS="
    uyuni-proxy-httpd
    uyuni-proxy-ssh
    uyuni-proxy-squid
    uyuni-proxy-tftpd
    uyuni-proxy-salt-broker
"

if which podman >/dev/null 2>&1; then
    log_entry $OF note "Proxy Containers Inspects"

    for CONTAINER in $CONTAINERS; do
        log_cmd $OF "podman inspect $CONTAINER"
    done

    log_entry $OF note "Proxy Containers Logs"

    for CONTAINER in $CONTAINERS; do
        log_cmd $OF "podman logs $CONTAINER"
    done
fi
