You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.4 KiB

#!/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."