captaincore/lib/remote-scripts/fetch-site-data
2024-05-21 15:35:52 -04:00

98 lines
No EOL
3.9 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Fetches site data
#
# Returns:
# line 1: plugin data
# line 2: theme data
# line 3: core version
# line 4: home url
# line 5: user data
# line 6: database name
# line 7: database username
# line 8: database password
# line 9: core verify checksum
# line 10: subsite count
# line 11: PHP memory
# line 12: token
#
if [ ! -f "wp-config.php" ]; then
echo "WordPress not found"
exit
fi
# Install CaptainCore helper if missing
helper_check=$( wp plugin list --status=must-use --skip-themes --skip-plugins --skip-packages | grep "captaincore-helper" )
if [[ "$helper_check" == "" ]]; then
curl https://run.captaincore.io/deploy-helper | bash -s
fi
plugins=$( wp plugin list --format=json --skip-themes --skip-plugins --skip-packages --fields=name,title,status,version )
themes=$(wp theme list --format=json --skip-themes --skip-plugins --skip-packages --fields=name,title,status,version )
core=$( wp core version --skip-themes --skip-plugins --skip-packages )
home_url=$( wp option get home --skip-themes --skip-plugins --skip-packages )
users=$( wp user list --format=json --skip-themes --skip-plugins --skip-packages )
core_verify_checksums_response=$( wp core verify-checksums --skip-themes --skip-plugins --skip-packages 2>&1 )
core_verify_checksums=0
# Make sure to only include output of last line of core check
core_verify_checksums_response_last_line=$( echo "$core_verify_checksums_response" | tail -n 1 )
if [[ "$core_verify_checksums_response_last_line" == "Success: WordPress installation verifies against checksums." ]]; then
core_verify_checksums=1
fi
if [[ "$core_verify_checksums_response" == "Warning: File doesn't exist: readme.html"$'\n'"Error: WordPress installation doesn't verify against checksums." ]]; then
core_verify_checksums=1
fi
if [[ "$core_verify_checksums_response" == "Warning: File doesn't exist: wp-config-sample.php"$'\n'"Error: WordPress installation doesn't verify against checksums." ]]; then
core_verify_checksums=1
fi
if [[ "$core_verify_checksums_response" == "Warning: File doesn't exist: wp-config-sample.php"$'\n'"Warning: File should not exist: wp-config-orig.php"$'\n'"Error: WordPress installation doesn't verify against checksums." ]]; then
core_verify_checksums=1
fi
db_name=$( wp eval "echo DB_NAME;" --skip-plugins --skip-themes --skip-packages )
db_username=$( wp eval "echo DB_USER;" --skip-plugins --skip-themes --skip-packages )
db_password=$( wp eval "echo DB_PASSWORD;" --skip-plugins --skip-themes --skip-packages )
if $( wp core is-installed --network --skip-themes --skip-plugins --skip-packages ); then
subsite_count=$( wp site list --format=count --skip-themes --skip-plugins --skip-packages )
fi
php_version=$( php -v | head -n1 | cut -d ' ' -f 2 | cut -d '.' -f 1,2 )
if [ -f "/etc/php/$php_version/fpm/php.ini" ]; then
php_memory=$( cat "/etc/php/$php_version/fpm/php.ini" | grep "memory_limit" )
fi
if [[ "$php_memory" == "" ]]; then
php_ini=$( wp eval 'echo php_ini_loaded_file();' )
php_memory=$( cat "$php_ini" | grep "memory_limit" )
fi
read -r -d '' php_code << heredoc
\$line = '$php_memory';
preg_match( '/memory_limit = (\d\w+)/', '$php_memory', \$matches );
echo \$matches[1];
heredoc
php_memory=$( php -r "$php_code" )
token=$( wp eval "echo md5( AUTH_KEY );" --skip-plugins --skip-themes )
# Assume WP-CLI output may contain whitespaces and remove.
echo ${plugins} | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
echo ${themes} | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
echo ${core} | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
echo ${home_url} | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
echo ${users} | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
echo ${db_name}
echo ${db_username}
echo ${db_password}
echo ${core_verify_checksums}
echo ${subsite_count} | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
echo ${php_memory}
echo ${token}