139 lines
4.1 KiB
Bash
Executable File
139 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd)
|
|
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
|
setKazVars
|
|
|
|
cd "${KAZ_ROOT}"
|
|
|
|
NEW_DIR="secret"
|
|
TMPL_DIR="secret.tmpl"
|
|
SORTIESTANDARD=1
|
|
DIR=$KAZ_KEY_DIR
|
|
ORGA=
|
|
|
|
if [ ! -d "${NEW_DIR}/" ]; then
|
|
rsync -a "${TMPL_DIR}/" "${NEW_DIR}/"
|
|
fi
|
|
|
|
usage() {
|
|
echo "${PRG} [OPTIONS] [filename ...]
|
|
# PARCOURE LES ENV FILE ET REMPLIT LES --clean_val-- qui n'ont pas été complétés.
|
|
on cherche des
|
|
@@pass@@***@@p@@ -> on génère un mot de passe 16car (les *** permettent d'identifier le mot de passe, s'il doit être utilisé ailleurs)
|
|
@@db@@***@@d@@ -> on génère une base de données (pareil identifié par ***)
|
|
@@user@@***@@u@@ -> on génère un user
|
|
@@token@@***@@t@@ -> on génère un token
|
|
@@globalvar@@***@@gv@@ -> on cherche la variable globale ***
|
|
@@crossvar@@envname_varname@@cv@@ -> on retrouve la variable dans les envfiles
|
|
|
|
Si on précise des fichiers, alors il ne remplace que dans ceux là (et on "lie" les clean-val ensemble !!!)
|
|
OPTIONS
|
|
-h|--help Cette aide :-)
|
|
-n|--simu SIMULATION
|
|
-q|--quiet Sans bruits de fond
|
|
-d foldername prend les envfiles dans un sous dossier /kaz/secret/orgas/foldername/ (pour les orgas !)
|
|
-
|
|
|
|
"
|
|
}
|
|
|
|
for ARG in "$@"; do
|
|
if [ -n "${DIRECTORYARG}" ]; then # après un -d
|
|
DIR=$KAZ_KEY_DIR/orgas/${ARG}
|
|
ORGA=${ARG}
|
|
DIRECTORYARG=
|
|
else
|
|
|
|
case "${ARG}" in
|
|
'-d' | '--directory' | '-f' | '--folder' | '--foldername')
|
|
DIRECTORYARG="ON ATTEND UN REPERTOIRE APRES CA" ;;
|
|
'-h' | '--help' )
|
|
usage && exit ;;
|
|
'-n' | '--simu')
|
|
SIMU="echo" ;;
|
|
'-q' | '--quiet')
|
|
SORTIESTANDARD="/dev/null" ;;
|
|
*)
|
|
ENVFILES="${ENVFILES} ${ARG%}";;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
NB_FILES=$(echo "${ENVFILES}" | wc -w )
|
|
|
|
if [[ $NB_FILES = 0 ]]; then
|
|
ENVFILES=$(grep -lE '@@pass@@|@@db@@|@@user@@|@@token@@|@@globalvar@@|@@crossvar@@' $DIR/* | sed 's/.*\///') #
|
|
fi
|
|
|
|
|
|
|
|
secretGen(){
|
|
# $1 Le env-file à compléter
|
|
|
|
FILENAME=$DIR/$1
|
|
|
|
NBMATCH=$(grep -lE '@@pass@@|@@db@@|@@user@@|@@token@@|@@globalvar@@' $FILENAME | wc -l) # est ce qu'il y a des choses à génrérer
|
|
if [[ $NBMATCH = 0 ]]; then
|
|
true
|
|
# rien à faire dans ce fichier, on passe
|
|
else
|
|
echo "Remplissage $FILENAME" >& $SORTIESTANDARD
|
|
db="$(apg -n 1 -m 2 -M NCL | cut -c 1-2)"
|
|
pass="$(apg -n 1 -m 16 -M NCL)"
|
|
token="$(apg -n 1 -m 32 -M NCL)"
|
|
user="$(apg -n 1 -m 2 -M NCL | cut -c 1-2)"
|
|
|
|
dbs=$(grep -Eo '@@db@@[^@]*@@d@@' $FILENAME | sed -e 's/@@db@@//' -e 's/@@d@@//')
|
|
passwords=$(grep -Eo '@@pass@@[^@]*@@p@@' $FILENAME | sed -e 's/@@pass@@//' -e 's/@@p@@//')
|
|
tokens=$(grep -Eo '@@token@@[^@]*@@t@@' $FILENAME | sed -e 's/@@token@@//' -e 's/@@t@@//')
|
|
users=$(grep -Eo '@@user@@[^@]*@@u@@' $FILENAME | sed -e 's/@@user@@//' -e 's/@@u@@//')
|
|
globalvars=$(grep -Eo '@@globalvar@@[^@]*@@gv@@' $FILENAME | sed -e 's/@@globalvar@@//' -e 's/@@gv@@//')
|
|
|
|
for dbName in $dbs; do $SIMU sed -i "s/@@db@@$dbName@@d@@/${dbName}_$db/" $DIR/*; done
|
|
for pw in $passwords; do $SIMU sed -i "s/@@pass@@$pw@@p@@/${pass}/" $DIR/*; done
|
|
for tk in $tokens; do $SIMU sed -i "s/@@token@@$tk@@t@@/${token}/" $DIR/*; done
|
|
for u in $users; do $SIMU sed -i "s/@@user@@$u@@u@@/${u}_$user/" $DIR/*; done
|
|
for var in $globalvars; do $SIMU sed -i "s/@@globalvar@@$var@@gv@@/${!var}/" $DIR/*; done
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
crossVarComplete(){
|
|
# $1 Le env-file à compléter
|
|
|
|
FILENAME=$DIR/$1
|
|
|
|
NBMATCH=$(grep -lE '@@crossvar@@' $FILENAME | wc -l) # est ce qu'il y a des cross-var à récupérer
|
|
if [[ $NBMATCH = 0 ]]; then
|
|
true
|
|
# rien à faire dans ce fichier, on passe
|
|
else
|
|
echo "Remplissage $FILENAME" >& $SORTIESTANDARD
|
|
|
|
varnames=$(grep -Eo '@@crossvar@@[^@]*@@cv@@' $FILENAME | sed -e 's/@@crossvar@@//' -e 's/@@cv@@//')
|
|
for varname in $varnames; do
|
|
envname=${varname%%_*}
|
|
value=$(/$KAZ_BIN_DIR/getPasswords.sh -e $varname $envname -d $ORGA)
|
|
$SIMU sed -i "s/@@crossvar@@$varname@@cv@@/${value}/" $DIR/*;
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
for ENVFILE in $ENVFILES; do
|
|
secretGen "$ENVFILE"
|
|
done
|
|
|
|
|
|
for ENVFILE in $ENVFILES; do
|
|
crossVarComplete "$ENVFILE"
|
|
done
|
|
|
|
exit 0
|