#!/bin/bash

# Dynamic MOTD generator

USER=`whoami`
HOSTNAME=`uname -n`
NET_IF='eth0'
IP4=`ip a show $NET_IF | grep 'inet ' | awk '{print $2}'i | tr -d '\n'`
IP6=`ip a show $NET_IF | grep 'inet6 ' | head -1 | awk '{print $2}' | tr -d '\n'`
ROOT_USED=`df -Ph | grep ' /$' | awk '{print $3}' | tr -d '\n'`
ROOT_TOTAL=`df -Ph | grep ' /$' | awk '{print $2}' | tr -d '\n'`
#HDD_USED=`zpool iostat | grep hdd | awk '{print $2}' | tr -d '\n'`
#HDD_TOTAL=`df -Ph | grep 'hdd ' | awk '{print $2}' | tr -d '\n'`
SSD_USED=`df -Ph | grep 'nextcloud ' | awk '{print $3}' | tr -d '\n'`
SSD_TOTAL=`df -Ph | grep 'nextcloud ' | awk '{print $2}' | tr -d '\n'`

MEMORY1=`free -t -m | grep "Mem" | awk '{print $3" MB";}'`
MEMORY2=`free -t -m | grep "Mem" | awk '{print $2" MB";}'`
PSA=`ps -Afl | wc -l`

# time of day
HOUR=$(date +"%H")
if [ $HOUR -lt 12  -a $HOUR -ge 0 ]
then    TIME="morning"
elif [ $HOUR -lt 17 -a $HOUR -ge 12 ]
then    TIME="afternoon"
else
    TIME="evening"
fi

#System uptime
uptime=`cat /proc/uptime | cut -f1 -d.`
upDays=$((uptime/60/60/24))
upHours=$((uptime/60/60%24))
upMins=$((uptime/60%60))
upSecs=$((uptime%60))

#System load
LOAD1=`cat /proc/loadavg | awk {'print $1'}`
LOAD5=`cat /proc/loadavg | awk {'print $2'}`
LOAD15=`cat /proc/loadavg | awk {'print $3'}`

# Failed logins
#LASTLOGIN=$(cat /var/local/lastlogin)
#LASTLOGIN_PRETTY=$(date +'%d %B %T' --date "$LASTLOGIN")
#FAILS=$(journalctl -u sshd --since "$LASTLOGIN" | egrep "Failed|Invalid" | wc -l)
# - Failed logins...........: $FAILS since $LASTLOGIN_PRETTY

#Podman containers status
if [ -f "/var/local/podman-status" ]; then
    PODMAN_LAST_UPDATE=$(head -1 /var/local/podman-status)
    TODAY=$(date --date="Today 00:00" +%s)
    if [[ "$TODAY" == "$PODMAN_LAST_UPDATE" ]]; then
        PODMAN_LAST_UPDATE_DAY='today'
    else
        DIFF=$(echo "${TODAY}-${PODMAN_LAST_UPDATE}" | bc)
        if [[ "$DIFF" == 86400 ]];then
            PODMAN_LAST_UPDATE_DAY='yesterday'
        else
            D=$(echo "${DIFF}/86400" | bc)
            if [[ "$D" -lt 7 ]]; then
                PODMAN_LAST_UPDATE_DAY="$(date --date=@$PODMAN_LAST_UPDATE +%A)"
            else
                PODMAN_LAST_UPDATE_DAY="$D days ago"
            fi
        fi
    fi
fi

echo "
Good $TIME $USER"

echo "
===========================================================================
 - Hostname................: $HOSTNAME
   - IPv4..................: $IP4
   - IPv6..................: $IP6
 - Release.................: `cat /etc/redhat-release`
 - Users...................: `users | wc -w` user(s) logged in
===========================================================================
 - Current user............: $USER
 - CPU usage...............: $LOAD1, $LOAD5, $LOAD15 (1, 5, 15 min)
 - Memory used.............: $MEMORY1 / $MEMORY2
 - Swap in use.............: `free -m | tail -n 1 | awk '{print $3}'` MB
 - Processes...............: $PSA running
 - System uptime...........: $upDays days $upHours hours $upMins minutes $upSecs seconds
 - Usage of / .............: $ROOT_USED / $ROOT_TOTAL
 - Usage of /opt...........: $SSD_USED / $SSD_TOTAL"

[ -f "/var/local/podman-status" ] && tail -n +2 /var/local/podman-status | sed "s/WHEN/${PODMAN_LAST_UPDATE_DAY}/"
printf "\
===========================================================================\n"


cat /var/local/nc-backup-status


printf "\n"

if [[ "$(curl -s localhost:8080/status.php | jq '.maintenance')" == "true" ]]; then
    echo -e "
                   ** Nextcloud in maintenance mode **\n\n"
fi


if command -v mail > /dev/null && mail -e; then echo "You have mail."; fi

if command -v tmux > /dev/null && tmux list-sessions > /dev/null; then echo "TMUX session running."; fi