#!/bin/bash
|
|
|
|
# Path where secrets are stored
|
|
SECRETS_PATH=.secrets
|
|
|
|
# Generated secrets
|
|
SECRETS=(
|
|
app_key
|
|
mysql_root_password
|
|
)
|
|
|
|
# API key secrets
|
|
API_KEYS=(
|
|
tmdb_key
|
|
discord_bot_key
|
|
plex_token
|
|
tvdb_key
|
|
tvdb_pin
|
|
vpn_auth
|
|
)
|
|
|
|
# Store new API keys if available
|
|
NEW_API_KEYS=()
|
|
|
|
# Indicate if existing secrets should be regenerated
|
|
OVERWRITE=0
|
|
|
|
# Generate secrets and files -----------------------------------------------------------------------
|
|
|
|
# Create secrets folder
|
|
if [ -d $SECRETS_PATH ]; then
|
|
read -p "Regenerate existing secrets (Y|n)? " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
OVERWRITE=1
|
|
fi
|
|
else
|
|
mkdir -p $SECRETS_PATH
|
|
fi
|
|
|
|
# Generate random secrets
|
|
for key in ${SECRETS[@]}; do
|
|
if [ $OVERWRITE -eq 1 ] || [ ! -f "$SECRETS_PATH/$key" ] || [[ -z $(grep '[^[:space:]]' "$SECRETS_PATH/$key") ]]; then
|
|
openssl rand -base64 20 > "$SECRETS_PATH/$key"
|
|
fi
|
|
done
|
|
|
|
# Create API key files if they don't ekist
|
|
for key in ${API_KEYS[@]}; do
|
|
if [ ! -f "$SECRETS_PATH/$key" ] || [[ -z $(grep '[^[:space:]]' "$SECRETS_PATH/$key") ]]; then
|
|
touch "$SECRETS_PATH/$key"
|
|
NEW_API_KEYS+=($key)
|
|
fi
|
|
done
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
# Display newly-added/empty API key files
|
|
if [ ${#NEW_API_KEYS[*]} -gt 0 ]; then
|
|
echo "New API keys available:"
|
|
for key in ${NEW_API_KEYS[@]}; do
|
|
echo " $SECRETS_PATH/$key"
|
|
done
|
|
fi
|
|
|
|
echo "Done."
|