committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 443 additions and 22 deletions
-
10check_process
-
4conf/app.src
-
3conf/nginx.conf
-
4manifest.json
-
180scripts/_common.sh
-
51scripts/_sed
-
7scripts/backup
-
135scripts/change_url
-
30scripts/install
-
6scripts/remove
-
8scripts/restore
-
27scripts/upgrade
@ -1,5 +1,5 @@ |
|||
SOURCE_URL=https://wordpress.org/wordpress-4.8.tar.gz |
|||
SOURCE_SUM=b91248a7220a7fb1ca293c3a0ec8db6c |
|||
SOURCE_URL=https://wordpress.org/wordpress-4.9.1.tar.gz |
|||
SOURCE_SUM=111ecbfc98633103e1fc1105c0c00c76 |
|||
SOURCE_SUM_PRG=md5sum |
|||
ARCH_FORMAT=tar.gz |
|||
SOURCE_IN_SUBDIR=true |
|||
|
|||
@ -0,0 +1,51 @@ |
|||
#!/bin/bash |
|||
|
|||
# https://github.com/YunoHost/yunohost/pull/394 |
|||
|
|||
# Substitute/replace a string (or expression) by another in a file |
|||
# |
|||
# usage: ynh_replace_string match_string replace_string target_file |
|||
# | arg: match_string - String to be searched and replaced in the file |
|||
# | arg: replace_string - String that will replace matches |
|||
# | arg: target_file - File in which the string will be replaced. |
|||
# |
|||
# As this helper is based on sed command, regular expressions and |
|||
# references to sub-expressions can be used |
|||
# (see sed manual page for more information) |
|||
ynh_replace_string () { |
|||
local delimit=@ |
|||
local match_string=$1 |
|||
local replace_string=$2 |
|||
local workfile=$3 |
|||
|
|||
# Escape the delimiter if it's in the string. |
|||
match_string=${match_string//${delimit}/"\\${delimit}"} |
|||
replace_string=${replace_string//${delimit}/"\\${delimit}"} |
|||
|
|||
sudo sed --in-place "s${delimit}${match_string}${delimit}${replace_string}${delimit}g" "$workfile" |
|||
} |
|||
|
|||
# Substitute/replace a password by another in a file |
|||
# |
|||
# usage: ynh_replace_password_string match_string replace_string target_file |
|||
# | arg: match_string - String to be searched and replaced in the file |
|||
# | arg: replace_string - String that will replace matches |
|||
# | arg: target_file - File in which the string will be replaced. |
|||
# |
|||
# This helper will use ynh_replace_string, but as you can use special |
|||
# characters, you can't use some regular expressions and sub-expressions. |
|||
ynh_replace_password_string () { |
|||
local match_string=$1 |
|||
local replace_string=$2 |
|||
local workfile=$3 |
|||
|
|||
# Escape any backslash to preserve them as simple backslash. |
|||
match_string=${match_string//\\/"\\\\"} |
|||
replace_string=${replace_string//\\/"\\\\"} |
|||
|
|||
# Escape the & character, who has a special function in sed. |
|||
match_string=${match_string//&/"\&"} |
|||
replace_string=${replace_string//&/"\&"} |
|||
|
|||
ynh_replace_string "$match_string" "$replace_string" "$workfile" |
|||
} |
|||
@ -0,0 +1,135 @@ |
|||
#!/bin/bash |
|||
|
|||
#================================================= |
|||
# GENERIC STARTING |
|||
#================================================= |
|||
# IMPORT GENERIC HELPERS |
|||
#================================================= |
|||
|
|||
source _common.sh |
|||
source /usr/share/yunohost/helpers |
|||
source _sed |
|||
|
|||
#================================================= |
|||
# RETRIEVE ARGUMENTS |
|||
#================================================= |
|||
|
|||
old_domain=$YNH_APP_OLD_DOMAIN |
|||
old_path=$YNH_APP_OLD_PATH |
|||
|
|||
new_domain=$YNH_APP_NEW_DOMAIN |
|||
new_path=$YNH_APP_NEW_PATH |
|||
|
|||
app=$YNH_APP_INSTANCE_NAME |
|||
|
|||
#================================================= |
|||
# LOAD SETTINGS |
|||
#================================================= |
|||
|
|||
multisite=$(ynh_app_setting_get $app multisite) |
|||
|
|||
if [ $multisite -eq 1 ] |
|||
then |
|||
echo "A multisite installation of Wordpress can't be moved easily. Please have a look at the Wordpress codex to learn more about that." >&2 |
|||
ynh_die "https://codex.wordpress.org/Moving_WordPress#Moving_WordPress_Multisite" |
|||
fi |
|||
|
|||
#================================================= |
|||
# CHECK THE SYNTAX OF THE PATHS |
|||
#================================================= |
|||
|
|||
test -n "$old_path" || old_path="/" |
|||
test -n "$new_path" || new_path="/" |
|||
new_path=$(ynh_normalize_url_path $new_path) |
|||
old_path=$(ynh_normalize_url_path $old_path) |
|||
|
|||
#================================================= |
|||
# CHECK WHICH PARTS SHOULD BE CHANGED |
|||
#================================================= |
|||
|
|||
change_domain=0 |
|||
if [ "$old_domain" != "$new_domain" ] |
|||
then |
|||
change_domain=1 |
|||
fi |
|||
|
|||
change_path=0 |
|||
if [ "$old_path" != "$new_path" ] |
|||
then |
|||
change_path=1 |
|||
fi |
|||
|
|||
#================================================= |
|||
# MANAGE FAILURE OF THE SCRIPT |
|||
#================================================= |
|||
|
|||
# Exit if an error occurs during the execution of the script |
|||
ynh_abort_if_errors |
|||
|
|||
#================================================= |
|||
# STANDARD MODIFICATIONS |
|||
#================================================= |
|||
# MODIFY URL IN NGINX CONF |
|||
#================================================= |
|||
|
|||
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf |
|||
|
|||
# Change the path in the nginx config file |
|||
if [ $change_path -eq 1 ] |
|||
then |
|||
# Make a backup of the original nginx config file if modified |
|||
ynh_backup_if_checksum_is_different "$nginx_conf_path" |
|||
|
|||
# Move from sub path to root |
|||
if [ "$new_path" == "/" ] |
|||
then |
|||
ynh_replace_string "\(^.*rewrite.*\^$old_path.* permanent;\)" "#sub_path_only\1" "$nginx_conf_path" |
|||
ynh_replace_string "\(rewrite *\^\)$old_path\$ $old_path/*" "\1$new_path$ $new_path" "$nginx_conf_path" |
|||
|
|||
# Move to a sub path |
|||
else |
|||
ynh_replace_string "^#sub_path_only" "" "$nginx_conf_path" |
|||
ynh_replace_string "\(rewrite *\^\)$old_path\$ $old_path/*" "\1$new_path$ $new_path/" "$nginx_conf_path" |
|||
fi |
|||
|
|||
ynh_replace_string "location ${old_path%/}/" "location ${new_path%/}/" "$nginx_conf_path" |
|||
|
|||
# Change the rewrite instructions for multisite |
|||
ynh_replace_string "rewrite \^$old_path\(.*last;\)" "rewrite ^$new_path\1" "$nginx_conf_path" |
|||
ynh_replace_string "$old_path\$2 last;" "$new_path\$2 last;" "$nginx_conf_path" |
|||
|
|||
# Change the rewrite instruction with $request_filename |
|||
ynh_replace_string "${old_path%/}/index.php?q=" "${new_path%/}/index.php?q=" "$nginx_conf_path" |
|||
|
|||
# Calculate and store the nginx config file checksum |
|||
ynh_store_file_checksum "$nginx_conf_path" |
|||
fi |
|||
|
|||
# Change the domain for nginx |
|||
if [ $change_domain -eq 1 ] |
|||
then |
|||
# Delete file checksum for the old conf file location |
|||
ynh_delete_file_checksum "$nginx_conf_path" |
|||
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf |
|||
|
|||
nginx_conf_path=/etc/nginx/conf.d/$new_domain.d/$app.conf |
|||
# Calculate and store the nginx config file checksum |
|||
ynh_store_file_checksum "$nginx_conf_path" |
|||
fi |
|||
|
|||
#================================================= |
|||
# SPECIFIC MODIFICATIONS |
|||
#================================================= |
|||
# UPDATE THE DATABASE |
|||
#================================================= |
|||
|
|||
ynh_mysql_execute_as_root "UPDATE wp_options SET option_value='$new_domain$new_path' WHERE option_name='siteurl'" $app |
|||
ynh_mysql_execute_as_root "UPDATE wp_options SET option_value='$new_domain$new_path' WHERE option_name='home'" $app |
|||
|
|||
#================================================= |
|||
# GENERIC FINALISATION |
|||
#================================================= |
|||
# RELOAD NGINX |
|||
#================================================= |
|||
|
|||
systemctl reload nginx |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue