#!/usr/bin/env bash

# Constants
INPUT_FILE_PATH="/opt/data/monitoring-microk8s-certs"
ERROR_TIME=180
WARNING_TIME=$((180+14))


# Variable Initialisation
status=0
output_message="OK | status=0"
error_message=""

######################################################################################

# Process CA certificate
days=$(grep -i "CA certificate" ${INPUT_FILE_PATH} | grep -Eo '[0-9]+')
if [ ${days} -le ${ERROR_TIME} ]; then
    status=2
    error_message="${error_message} - CA Certificate expires in ${days}"
elif [ ${days} -le ${WARNING_TIME} ]; then
    status=1
    error_message="${error_message} - CA Certificate expires in ${days}"
fi

######################################################################################

# Process server certificate
days=$(grep -i "server certificate" ${INPUT_FILE_PATH} | grep -Eo '[0-9]+')
if [ ${days} -le ${ERROR_TIME} ]; then
    status=2
    error_message="${error_message} - server Certificate expires in ${days}"

elif [ ${days} -le ${WARNING_TIME} ]; then
    if [ ${status} -lt 1 ]; then
        status=1
    fi
    error_message="${error_message} - server Certificate expires in ${days}"
fi

######################################################################################

# Process front proxy client certificate
days=$(grep -i "front proxy client certificate" ${INPUT_FILE_PATH} | grep -Eo '[0-9]+')
if [ ${days} -le ${ERROR_TIME} ]; then
    status=2
    error_message="${error_message} - front proxy client Certificate expires in ${days}"

elif [ ${days} -le ${WARNING_TIME} ]; then
    if [ ${status} -lt 1 ]; then
        status=1
    fi
    error_message="${error_message} - front proxy client Certificate expires in ${days}"
fi

######################################################################################

# Manage Output
case ${status} in

        0)
                echo "${output_message}"
                exit 0
                ;;
        1)
                echo "WARNING${error_message} | status=1"
                exit 1
                ;;
        2)
                echo "ERROR${error_message} | status=1"
                exit 2
                ;;
        *)
                echo "Nicht definierte Augabe"
                exit 2
                ;;
esac