#!/bin/bash

echo ""

if [[ $# -ne 1 ]] ; then
    echo "Need 1 argument and 1 only"
    echo ""
    exit 1
else
    fqdn=$1
fi

if ( ! vault token lookup &> /dev/null ) ; then
    echo "ERREUR - Vous n'avez pas l'air d'être connecté à vault, on abandonne (essayez peut-être la commande vault_init_and_renew)"
    exit 1
fi

if ( ! vault kv get -field=key /admins/kv/certificats/$fqdn &> /dev/null ) ; then
    echo "ERREUR - Pas de secret au chemin /admins/kv/certificats/$fqdn ou pas de field key"
    exit 1
fi

if ( ! vault kv get -field=cert_chained /admins/kv/certificats/$fqdn &> /dev/null ) ; then
    echo "ERREUR - Pas de field cert_chained au chemin /admins/kv/certificats/$fqdn"
    exit 1
fi

if ( ! kubectl get ingress -A | grep -q -w $fqdn ) ; then
    echo "ERREUR - L'ingress associe au endpoint $fqdn n'existe pas ou vous n'y avez pas acces"
    exit 1
fi

namespace=$(kubectl get ingress -A | grep -w $fqdn | awk '{print $1}')
ingress=$(kubectl get ingress -A | grep -w $fqdn | awk '{print $2}')
secret=$(kubectl get ingress $ingress -n $namespace -o json | jq -r .spec.tls[].secretName)
    
TLS_KEY=$(mktemp)
TLS_CERT=$(mktemp)

vault kv get -field=key /admins/kv/certificats/$fqdn > $TLS_KEY 
vault kv get -field=cert_chained /admins/kv/certificats/$fqdn > $TLS_CERT 

echo "FQDN : $fqdn"
echo "Namespace : $namespace"
echo "Secret : $secret"
echo ""
echo -n "C'est parti ? [O/n] : " ; read reponse
echo ""

if [[ $reponse == "o" ]] || [[ $reponse == "O" ]] || [[ $reponse == "" ]] ; then

    kubectl delete secret -n $namespace $secret --ignore-not-found
    kubectl create secret -n $namespace tls $secret --cert=$TLS_CERT --key=$TLS_KEY
    rm -f $TLS_KEY $TLS_CERT
else
    echo "Abandon..."
    exit 1
fi
