#!/bin/bash
#
# vault_copy_paste_secret
#
# Author        : Nohaj
# Contact       : johan@slashroot.fr
# Date          : 08/03/22
# Version       : 1.0
# Description   : Script basique qui permet de dupliquer un secret vault
#               : Aucun check n'est fait, on part du principe que l'utilisateur sait ce qu'il fait
# Require       : vault utility et les acces vault necessaires...
#

#
# Usage
#
usage(){
    echo ""
    echo "Usage : vault_copy_paste_secret SOURCE DEST"
    echo ""
    echo "EXEMPLE :"
    echo "   vault_copy_paste_secret admins/kv/certificats/api-hub-data.slashroot.net siege/data/factory/kv/cluster/datahub/prod/api-data-hub-cert"
    echo ""
}

#
# Variables et checks
#

if [[ $# -ne 2 ]] ; then
    usage
    exit 1
fi

# On vérifie l'accès à vault
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

SOURCE=$1
DEST=$2

#
# Let's go
#

echo ""
echo -n "On copie le contenu de $SOURCE vers $DEST ? [o/N] : " ; read reponse
echo ""

if [[ $reponse == "o" ]] || [[ $reponse == "O" ]] ; then
    if ( ! vault kv get $SOURCE &> /dev/null ) ; then
        echo "Impossible de recuperer le contenu de $SOURCE"
        exit 1
    fi
    JSON_DATA=$(vault kv get -format json -field data $SOURCE)
    echo $JSON_DATA | vault kv put $DEST -
else
    echo "Abandon..."
fi


