From d21659f025afef4c55f74b87869fc33564342c78 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 15 Feb 2024 14:22:29 -0500 Subject: wordpress-config-info integrations and improvements related to its new interface --- database-test.bash | 33 +++++++-- wordpress/wordpress-config-info | 155 ++++++++++++++++------------------------ wordpress/wordpress-list-users | 36 ++++++---- wordpress/wordpress-mysql | 21 ++++-- 4 files changed, 129 insertions(+), 116 deletions(-) diff --git a/database-test.bash b/database-test.bash index 4a20e68..1488b88 100644 --- a/database-test.bash +++ b/database-test.bash @@ -10,8 +10,23 @@ json_to_shell() .[] | @sh "declare \(.key)=\(.value);" ' } -[ "$1" ] -eval "$(wordpress-config-info "$1" | json_to_shell)" +case $# in + 0 ) + wordpress-config-info | + while read cfg + do + "$SHELL" "$0" "$cfg" || break + done + exit + ;; + 1 ) + [ "$1" ] + eval "$(wordpress-config-info "$1" | json_to_shell)" + ;; + * ) + exit 3 + ;; +esac [ "$db_user" ] [ "$db_password" ] @@ -25,11 +40,19 @@ else mariadb_tls_args=() fi -mariadb "${mariadb_tls_args[@]}" \ +mariadb \ + "${mariadb_tls_args[@]}" \ --user="$db_user" \ --password="$db_password" \ --host="$db_host" \ -- "$db_name" <<. -select @@have_ssl, user()\G -show grants; +select + @@hostname +, user() + as + login +\G +show + grants +; . diff --git a/wordpress/wordpress-config-info b/wordpress/wordpress-config-info index 74f0c98..d27c1e6 100755 --- a/wordpress/wordpress-config-info +++ b/wordpress/wordpress-config-info @@ -25,17 +25,6 @@ wp_config_export_source() jq -n -s '{filename: $fn, data: $fdata}' --arg fn "$1" --rawfile fdata "$1" } -wp_config_export_defines() -{ - set -- "$wp_config" - wp_config_get_defines | - while read kv - do - set -- "${kv%%=*}" "${kv#*=}" - jq -cn '{ ($k): $v }' --arg k "$1" --arg v "$2" - done | jq -s '{filename: $fn, defines: .}' --arg fn "$1" -} - wp_config_export_defines() { set -- "$wp_config" @@ -53,26 +42,26 @@ wp_config_export_all() ) | jq -s add } -wp_config_get_defines() +wp_config_get_string_defines() { sed -n -e 's/\r//g' \ - -e "s/^define *( *'\([^']*\)' *, *'\([^']*\)' *) *;.*$/\1=\2/p" \ - -e "s/^define *( *'\([^']*\)' *, *\([A-Z][A-Z_ |]*\) *) *;.*$/~raw~\1=\2/p" \ - < "$wp_config" + -e "s/^define *( *'\([^']*\)' *, *'\([^']*\)' *) *;.*$/\1=\2/p" \ + < "$wp_config" } -wp_config_get_define() +wp_config_get_raw_defines() { - sed -e 's/\r//g' -ne \ - "s/^define *( *'$1' *, *'\([^']*\)' *) *; *$/\1/p" \ - < "$wp_config" + sed -n -e 's/\r//g' \ + -e "s/^define *( *'\([^']*\)' *, *\([A-Z][A-Z_ |]*\) *) *;.*$/\1=\2/p" \ + < "$wp_config" } -wp_config_get_assign() +wp_config_get_defines() { - sed -e 's/\r//g' -ne \ - "s/^\$${1} *= *'\\([^']*\\)' *; *$/\\1/p" \ - < "$wp_config" + sed -n -e 's/\r//g' \ + -e "s/^define *( *'\([^']*\)' *, *'\([^']*\)' *) *;.*$/\1=\2/p" \ + -e "s/^define *( *'\([^']*\)' *, *\([A-Z][A-Z_ |]*\) *) *;.*$/~raw~\1=\2/p" \ + < "$wp_config" } wp_config_get_assigns() @@ -93,8 +82,6 @@ find_wp_config() for wp_config in \ "$1" \ - "$1"/wp-config.php \ - "$1"/wordpress/wp-config.php \ "$1"/public_html/wp-config.php \ "$1"/public_html/wordpress/wp-config.php do @@ -106,36 +93,9 @@ find_wp_config() false } -if [ $# = 0 ] -then - prefix=/srv/ - suffix=/public_html - json='[ { site: $SITE, wordpress_config: . } ]' - declare -a sites=( $prefix*$suffix ) - for SITE in "${sites[@]}" - do - SITE=${SITE%$suffix} - SITE=${SITE#$prefix} - "$0" "$SITE" | jq --arg SITE "$SITE" "$json" || exit 7 - #"$0" "$SITE" || exit 7 - done | - jq -s add - exit -elif [ $# != 1 ] -then - exit -1 -fi - -find_wp_config "$1" || exit 0 - -new_interface_to_old_interface() -{ - jq '.[] | .wordpress_config | {defines, assigns} | .' -} - new_interface_to_old_interface() { - jq '.[] | .wordpress_config | + jq ' { defines: .defines | add , assigns: .assigns | add } | @@ -145,50 +105,59 @@ new_interface_to_old_interface() , db_name: .defines.DB_NAME , table_prefix: .assigns.table_prefix }' - } +} -OLD_INTERFACE=y -if [ "$NEW_INTERFACE" ] -then - OLD_INTERFACE= -fi -if [ "$OLD_INTERFACE" ] +find_wp_conf() +{ + local htdir="$1" conf + for conf in \ + "$htdir"/wp-config.php \ + "$htdir"/wordpress/wp-config.php + do + if [ -f "$conf" ] + then + printf '%s\n' "$conf" + return + fi + done + false +} + +find_all_wordpress_sites() +{ + local htdir + for htdir in /srv/*/public_html + do + find_wp_conf "$htdir" || continue + done +} + +if [ $# = 0 ] then - OLD_INTERFACE= NEW_INTERFACE=y "$0" "$@" | new_interface_to_old_interface + find_all_wordpress_sites exit +elif [ "$*" = '--all' ] +then + "$0" | + while read wp_file + do + "$0" "$wp_file" || exit 7 + done +elif [ $# != 1 ] +then + exit -1 fi -wp_config_export_all | -jq --arg SITE "$1" '[ { site: $SITE, wordpress_config: . } ]' -exit - - - - - - - +if ! find_wp_config "$1" +then + echo "Error: no wp config found. Argument: ${1@Q}" >&2 + exit 4 +fi +if [ "$NEW_INTERFACE" ] +then + wp_config_export_all +else + wp_config_export_all | new_interface_to_old_interface +fi -exit -db_name=$(wp_config_get_define DB_NAME) -[ "$db_name" ] -db_host=$(wp_config_get_define DB_HOST) -[ "$db_host" ] -db_user=$(wp_config_get_define DB_USER) -[ "$db_user" ] -db_password=$(wp_config_get_define DB_PASSWORD) -[ "$db_password" ] -table_prefix=$(wp_config_get_assign table_prefix) -jq -n \ - --arg h "$db_host" \ - --arg u "$db_user" \ - --arg p "$db_password" \ - --arg n "$db_name" \ - --arg t "$table_prefix" \ - '{ db_host: $h - , db_user: $u - , db_password: $p - , db_name: $n - , table_prefix: $t - }' diff --git a/wordpress/wordpress-list-users b/wordpress/wordpress-list-users index 76432b6..006d2c9 100755 --- a/wordpress/wordpress-list-users +++ b/wordpress/wordpress-list-users @@ -3,27 +3,35 @@ set -e set -o pipefail PATH=$(dirname "$0"):$PATH -for_each_wordpress_site() -{ +if [ $# = 0 ] +then wordpress-config-info | - jq -r '.[] | .site' | - while read d + while read -r do - ("$@" "$d") || continue + "$0" "$REPLY" || continue done -} -if [ $# = 0 ] -then - for_each_wordpress_site "$0" exit fi -usertable=$(wordpress-config-info "$1" | jq -r .table_prefix)users +table_prefix=$(\ + NEW_INTERFACE=y \ + wordpress-config-info "$1" | + jq -r '.assigns | add | .table_prefix' +) +usertable=${table_prefix}users +shortname=${1#/srv/} +shortname=${shortname%%/*} wordpress-mysql -- "$1" -t <