summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@vps-18a7a2b7.vps.ovh.ca>2024-02-15 14:22:29 -0500
committerroot <root@vps-18a7a2b7.vps.ovh.ca>2024-02-15 14:22:29 -0500
commitd21659f025afef4c55f74b87869fc33564342c78 (patch)
treefe82cccc3c0a703dedae5fb0b55ed7c6ae0b69d2
parentee1e699060a1cdaefffe7c69995a35183b37b086 (diff)
wordpress-config-info integrations and improvements related to its new interface
-rw-r--r--database-test.bash33
-rwxr-xr-xwordpress/wordpress-config-info155
-rwxr-xr-xwordpress/wordpress-list-users36
-rwxr-xr-xwordpress/wordpress-mysql21
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()
10 .[] | 10 .[] |
11 @sh "declare \(.key)=\(.value);" ' 11 @sh "declare \(.key)=\(.value);" '
12} 12}
13[ "$1" ] 13case $# in
14eval "$(wordpress-config-info "$1" | json_to_shell)" 14 0 )
15 wordpress-config-info |
16 while read cfg
17 do
18 "$SHELL" "$0" "$cfg" || break
19 done
20 exit
21 ;;
22 1 )
23 [ "$1" ]
24 eval "$(wordpress-config-info "$1" | json_to_shell)"
25 ;;
26 * )
27 exit 3
28 ;;
29esac
15 30
16[ "$db_user" ] 31[ "$db_user" ]
17[ "$db_password" ] 32[ "$db_password" ]
@@ -25,11 +40,19 @@ else
25 mariadb_tls_args=() 40 mariadb_tls_args=()
26fi 41fi
27 42
28mariadb "${mariadb_tls_args[@]}" \ 43mariadb \
44 "${mariadb_tls_args[@]}" \
29 --user="$db_user" \ 45 --user="$db_user" \
30 --password="$db_password" \ 46 --password="$db_password" \
31 --host="$db_host" \ 47 --host="$db_host" \
32 -- "$db_name" <<. 48 -- "$db_name" <<.
33select @@have_ssl, user()\G 49select
34show grants; 50 @@hostname
51, user()
52 as
53 login
54\G
55show
56 grants
57;
35. 58.
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
@@ -29,17 +29,6 @@ wp_config_export_defines()
29{ 29{
30 set -- "$wp_config" 30 set -- "$wp_config"
31 wp_config_get_defines | 31 wp_config_get_defines |
32 while read kv
33 do
34 set -- "${kv%%=*}" "${kv#*=}"
35 jq -cn '{ ($k): $v }' --arg k "$1" --arg v "$2"
36 done | jq -s '{filename: $fn, defines: .}' --arg fn "$1"
37}
38
39wp_config_export_defines()
40{
41 set -- "$wp_config"
42 wp_config_get_defines |
43 env_to_json | 32 env_to_json |
44 jq -s '{filename: $fn, defines: .}' --arg fn "$1" 33 jq -s '{filename: $fn, defines: .}' --arg fn "$1"
45} 34}
@@ -53,26 +42,26 @@ wp_config_export_all()
53 ) | jq -s add 42 ) | jq -s add
54} 43}
55 44
56wp_config_get_defines() 45wp_config_get_string_defines()
57{ 46{
58 sed -n -e 's/\r//g' \ 47 sed -n -e 's/\r//g' \
59 -e "s/^define *( *'\([^']*\)' *, *'\([^']*\)' *) *;.*$/\1=\2/p" \ 48 -e "s/^define *( *'\([^']*\)' *, *'\([^']*\)' *) *;.*$/\1=\2/p" \
60 -e "s/^define *( *'\([^']*\)' *, *\([A-Z][A-Z_ |]*\) *) *;.*$/~raw~\1=\2/p" \ 49 < "$wp_config"
61 < "$wp_config"
62} 50}
63 51
64wp_config_get_define() 52wp_config_get_raw_defines()
65{ 53{
66 sed -e 's/\r//g' -ne \ 54 sed -n -e 's/\r//g' \
67 "s/^define *( *'$1' *, *'\([^']*\)' *) *; *$/\1/p" \ 55 -e "s/^define *( *'\([^']*\)' *, *\([A-Z][A-Z_ |]*\) *) *;.*$/\1=\2/p" \
68 < "$wp_config" 56 < "$wp_config"
69} 57}
70 58
71wp_config_get_assign() 59wp_config_get_defines()
72{ 60{
73 sed -e 's/\r//g' -ne \ 61 sed -n -e 's/\r//g' \
74 "s/^\$${1} *= *'\\([^']*\\)' *; *$/\\1/p" \ 62 -e "s/^define *( *'\([^']*\)' *, *'\([^']*\)' *) *;.*$/\1=\2/p" \
75 < "$wp_config" 63 -e "s/^define *( *'\([^']*\)' *, *\([A-Z][A-Z_ |]*\) *) *;.*$/~raw~\1=\2/p" \
64 < "$wp_config"
76} 65}
77 66
78wp_config_get_assigns() 67wp_config_get_assigns()
@@ -93,8 +82,6 @@ find_wp_config()
93 82
94 for wp_config in \ 83 for wp_config in \
95 "$1" \ 84 "$1" \
96 "$1"/wp-config.php \
97 "$1"/wordpress/wp-config.php \
98 "$1"/public_html/wp-config.php \ 85 "$1"/public_html/wp-config.php \
99 "$1"/public_html/wordpress/wp-config.php 86 "$1"/public_html/wordpress/wp-config.php
100 do 87 do
@@ -106,36 +93,9 @@ find_wp_config()
106 false 93 false
107} 94}
108 95
109if [ $# = 0 ]
110then
111 prefix=/srv/
112 suffix=/public_html
113 json='[ { site: $SITE, wordpress_config: . } ]'
114 declare -a sites=( $prefix*$suffix )
115 for SITE in "${sites[@]}"
116 do
117 SITE=${SITE%$suffix}
118 SITE=${SITE#$prefix}
119 "$0" "$SITE" | jq --arg SITE "$SITE" "$json" || exit 7
120 #"$0" "$SITE" || exit 7
121 done |
122 jq -s add
123 exit
124elif [ $# != 1 ]
125then
126 exit -1
127fi
128
129find_wp_config "$1" || exit 0
130
131new_interface_to_old_interface()
132{
133 jq '.[] | .wordpress_config | {defines, assigns} | .'
134}
135
136new_interface_to_old_interface() 96new_interface_to_old_interface()
137{ 97{
138 jq '.[] | .wordpress_config | 98 jq '
139 { defines: .defines | add 99 { defines: .defines | add
140 , assigns: .assigns | add 100 , assigns: .assigns | add
141 } | 101 } |
@@ -145,50 +105,59 @@ new_interface_to_old_interface()
145 , db_name: .defines.DB_NAME 105 , db_name: .defines.DB_NAME
146 , table_prefix: .assigns.table_prefix 106 , table_prefix: .assigns.table_prefix
147 }' 107 }'
148 } 108}
149 109
150OLD_INTERFACE=y 110find_wp_conf()
151if [ "$NEW_INTERFACE" ] 111{
152then 112 local htdir="$1" conf
153 OLD_INTERFACE= 113 for conf in \
154fi 114 "$htdir"/wp-config.php \
155if [ "$OLD_INTERFACE" ] 115 "$htdir"/wordpress/wp-config.php
116 do
117 if [ -f "$conf" ]
118 then
119 printf '%s\n' "$conf"
120 return
121 fi
122 done
123 false
124}
125
126find_all_wordpress_sites()
127{
128 local htdir
129 for htdir in /srv/*/public_html
130 do
131 find_wp_conf "$htdir" || continue
132 done
133}
134
135if [ $# = 0 ]
156then 136then
157 OLD_INTERFACE= NEW_INTERFACE=y "$0" "$@" | new_interface_to_old_interface 137 find_all_wordpress_sites
158 exit 138 exit
139elif [ "$*" = '--all' ]
140then
141 "$0" |
142 while read wp_file
143 do
144 "$0" "$wp_file" || exit 7
145 done
146elif [ $# != 1 ]
147then
148 exit -1
159fi 149fi
160 150
161wp_config_export_all | 151if ! find_wp_config "$1"
162jq --arg SITE "$1" '[ { site: $SITE, wordpress_config: . } ]' 152then
163exit 153 echo "Error: no wp config found. Argument: ${1@Q}" >&2
164 154 exit 4
165 155fi
166
167
168
169
170
171 156
157if [ "$NEW_INTERFACE" ]
158then
159 wp_config_export_all
160else
161 wp_config_export_all | new_interface_to_old_interface
162fi
172 163
173exit
174db_name=$(wp_config_get_define DB_NAME)
175[ "$db_name" ]
176db_host=$(wp_config_get_define DB_HOST)
177[ "$db_host" ]
178db_user=$(wp_config_get_define DB_USER)
179[ "$db_user" ]
180db_password=$(wp_config_get_define DB_PASSWORD)
181[ "$db_password" ]
182table_prefix=$(wp_config_get_assign table_prefix)
183jq -n \
184 --arg h "$db_host" \
185 --arg u "$db_user" \
186 --arg p "$db_password" \
187 --arg n "$db_name" \
188 --arg t "$table_prefix" \
189 '{ db_host: $h
190 , db_user: $u
191 , db_password: $p
192 , db_name: $n
193 , table_prefix: $t
194 }'
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
3set -o pipefail 3set -o pipefail
4PATH=$(dirname "$0"):$PATH 4PATH=$(dirname "$0"):$PATH
5 5
6for_each_wordpress_site() 6if [ $# = 0 ]
7{ 7then
8 wordpress-config-info | 8 wordpress-config-info |
9 jq -r '.[] | .site' | 9 while read -r
10 while read d
11 do 10 do
12 ("$@" "$d") || continue 11 "$0" "$REPLY" || continue
13 done 12 done
14}
15if [ $# = 0 ]
16then
17 for_each_wordpress_site "$0"
18 exit 13 exit
19fi 14fi
20 15
21usertable=$(wordpress-config-info "$1" | jq -r .table_prefix)users 16table_prefix=$(\
17 NEW_INTERFACE=y \
18 wordpress-config-info "$1" |
19 jq -r '.assigns | add | .table_prefix'
20)
21usertable=${table_prefix}users
22shortname=${1#/srv/}
23shortname=${shortname%%/*}
22wordpress-mysql -- "$1" -t <<END 24wordpress-mysql -- "$1" -t <<END
23select 25select
24 id, 26 id
25 user_login as '${1//\'/\'\'} login', 27, user_login
26 user_pass as 'pass' 28 as
27from ${usertable}; 29 '${shortname} login'
30, user_pass
31 as
32 'pass'
33from
34 ${usertable}
35;
28END 36END
29 37
diff --git a/wordpress/wordpress-mysql b/wordpress/wordpress-mysql
index 9faf3c3..96f6141 100755
--- a/wordpress/wordpress-mysql
+++ b/wordpress/wordpress-mysql
@@ -1,9 +1,13 @@
1#!/bin/bash 1#!/bin/bash
2set -e 2set -e
3set -o pipefail
3 4
4read_config() 5json_to_shell()
5{ 6{
6 eval "$(jq -r '. | to_entries | .[] | .key + "=" + (.value | @sh) + "\n"')" 7 jq -r '{ db_user, db_password, db_host, db_name } |
8 to_entries |
9 .[] |
10 @sh "declare \(.key)=\(.value);" '
7} 11}
8 12
9our_mysqladmin() 13our_mysqladmin()
@@ -28,7 +32,16 @@ create_new_mysql_database()
28 [ "$db_host" ] 32 [ "$db_host" ]
29 our_mysqladmin create "$db_name" 33 our_mysqladmin create "$db_name"
30 our_mysql "$db_name" <<END 34 our_mysql "$db_name" <<END
31grant all privileges on \`$db_name\`.* to "$db_user" identified by "$db_password"; 35grant
36 all privileges
37on
38 \`$db_name\`.*
39to
40 "$db_user"
41identified
42by
43 "$db_password"
44;
32END 45END
33} 46}
34 47
@@ -50,7 +63,7 @@ do
50 esac 63 esac
51done 64done
52 65
53read_config < <(wordpress-config-info "$1") 66eval "$(wordpress-config-info "$1" | json_to_shell)"
54shift 67shift
55 68
56[ "$db_name" ] 69[ "$db_name" ]