From 4204732ee7a0dee22b2c5aa6decc600a13ca02b4 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 9 Feb 2024 17:34:43 -0500 Subject: rewrite create-wp-config with --fqdn functionality to derive entire config from hostname --- wordpress/wordpress-create-wp-config | 112 ++++++++++++++++++++++++++++------- 1 file changed, 91 insertions(+), 21 deletions(-) diff --git a/wordpress/wordpress-create-wp-config b/wordpress/wordpress-create-wp-config index d0f4447..5c756d9 100755 --- a/wordpress/wordpress-create-wp-config +++ b/wordpress/wordpress-create-wp-config @@ -1,16 +1,86 @@ -#!/bin/sh - -DB_NAME=$1 -DB_USER=$2 -DB_PASSWORD=$(tr -cd a-z < /dev/urandom | head -c14) -Random1=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random2=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random3=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random4=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random5=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random6=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random7=$(tr -cd 0-9a-f < /dev/urandom | head -c32) -Random8=$(tr -cd 0-9a-f < /dev/urandom | head -c32) +#!/bin/bash +set -e +set -o pipefail + +rand64() +{ + set -- "${1:-64}" + [ "$1" -ge 4 ] && + set -- "$1" "$(head -c "$(($1 * 3 / 4))" < /dev/urandom | base64)" && + [ "${#2}" = "$1" ] && + printf '%s\n' "$2" +} + +rand26() +{ + set -- "${1:-32}" && + [ "$1" -ge 4 ] && + set -- "$1" "$(tr -cd a-z &2 +Usage: + $0 <--fqdn> + $0 + $0 <-h | --help> + + With --fqdn, parameters are derived from \$(hostname --fqdn) or + locally: $(hostname --fqdn) +END +} + +case "$# $1" in + "1 --fqdn" ) + DB_HOST=$(hostname --fqdn) + DB_NAME=wordpress@$DB_HOST + DB_USER=$DB_NAME + ;; + "3 "* ) + DB_NAME=$1 + DB_USER=$2 + DB_HOST=$3 + ;; + "1 -h" | "1 --help" ) + usage + exit 0 + ;; + * ) + usage + exit 1 + ;; +esac +for v in DB_NAME DB_USER DB_HOST +do + [ "${!v}" ] && continue + printf 'Error: a required environment variable is not defined: $%s\n' \ + "$v" >&2 + exit 1 +done +if ! [ -v DB_PASSWORD ] +then + DB_PASSWORD=$(rand26 32) +fi + +declare -a WP_SALT_VARS=( + AUTH_KEY + SECURE_AUTH_KEY + LOGGED_IN_KEY + NONCE_KEY + AUTH_SALT + SECURE_AUTH_SALT + LOGGED_IN_SALT + NONCE_SALT +) +for v in "${WP_SALT_VARS[@]}" +do + [ -v "$v" ] && [ -n "${!v}" ] && continue + eval "$v=\$(rand64)" && + eval "[ \${#$v} -gt 16 ]" || exit 4 +done cat <