diff --git a/actions.toml b/actions.toml new file mode 100644 index 0000000..f10fb3d --- /dev/null +++ b/actions.toml @@ -0,0 +1,11 @@ +[public_private] +name = "Move to public or private" +command = "/bin/bash scripts/actions/public_private" +accepted_return_codes = [0] +description = "Change the public access of the app." + + [public_private.arguments] + [public_private.arguments.is_public] + type = "boolean" + ask = "Is it a public app ?" + default = true diff --git a/config_panel.toml b/config_panel.toml new file mode 100644 index 0000000..880c36a --- /dev/null +++ b/config_panel.toml @@ -0,0 +1,40 @@ +version = "0.1" +name = "Wordpress configuration panel" + +[main] +name = "Wordpress configuration" + + + [main.is_public] + name = "Public access" + + [main.is_public.is_public] + ask = "Is it a public WordPress site ?" + type = "boolean" + default = true + + + [main.overwrite_files] + name = "Overwriting config files" + + [main.overwrite_files.overwrite_nginx] + ask = "Overwrite the nginx config file ?" + type = "boolean" + default = true + help = "If the file is overwritten, a backup will be created." + + [main.overwrite_files.overwrite_phpfpm] + ask = "Overwrite the php-fpm config file ?" + type = "boolean" + default = true + help = "If the file is overwritten, a backup will be created." + + + [main.global_config] + name = "Global configuration" + + [main.global_config.email_type] + ask = "Send HTML email to admin ?" + type = "boolean" + default = true + help = "Allow app scripts to send HTML mails instead of plain text." diff --git a/scripts/actions/public_private b/scripts/actions/public_private new file mode 100755 index 0000000..0bb8f36 --- /dev/null +++ b/scripts/actions/public_private @@ -0,0 +1,73 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source /usr/share/yunohost/helpers + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +# Get is_public +is_public=${YNH_ACTION_IS_PUBLIC} + +app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID} + +#================================================= +# CHECK IF ARGUMENTS ARE CORRECT +#================================================= + +#================================================= +# CHECK IF AN ACTION HAS TO BE DONE +#================================================= + +is_public_old=$(ynh_app_setting_get --app=$app --key=is_public) + +if [ $is_public -eq $is_public_old ] +then + ynh_die --message="is_public is already set as $is_public." --ret_code=0 +fi + +#================================================= +# SPECIFIC ACTION +#================================================= +# MOVE TO PUBLIC OR PRIVATE +#================================================= + +if [ $is_public -eq 0 ]; then + public_private="private" +else + public_private="public" +fi +ynh_script_progression --message="Moving the application to $public_private..." --weight=3 + +if [ $is_public -eq 0 ] +then + ynh_app_setting_delete --app=$app --key=unprotected_uris +else + ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" +fi + +ynh_script_progression --message="Upgrading SSOwat configuration..." +# Regen ssowat configuration +yunohost app ssowatconf + +# Update the config of the app +ynh_app_setting_set --app=$app --key=is_public --value=$is_public + +#================================================= +# RELOAD NGINX +#================================================= +ynh_script_progression --message="Reloading nginx web server..." + +ynh_systemd_action --service_name=nginx --action=reload + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Execution completed" --last diff --git a/scripts/config b/scripts/config new file mode 100644 index 0000000..281f2a9 --- /dev/null +++ b/scripts/config @@ -0,0 +1,100 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID} + +#================================================= +# LOAD VALUES +#================================================= + +# Load the real value from the app config or elsewhere. +# Then get the value from the form. +# If the form has a value for a variable, take the value from the form, +# Otherwise, keep the value from the app config. + +# is_public +old_is_public="$(ynh_app_setting_get --app=$app --key=is_public)" +is_public="${YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC:-$old_is_public}" + +# Overwrite nginx configuration +old_overwrite_nginx="$(ynh_app_setting_get --app=$app --key=overwrite_nginx)" +overwrite_nginx="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX:-$old_overwrite_nginx}" + +# Overwrite php-fpm configuration +old_overwrite_phpfpm="$(ynh_app_setting_get --app=$app --key=overwrite_phpfpm)" +overwrite_phpfpm="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM:-$old_overwrite_phpfpm}" + +# Type of admin mail configuration +old_admin_mail_html="$(ynh_app_setting_get $app admin_mail_html)" +admin_mail_html="${YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE:-$old_admin_mail_html}" + +#================================================= +# SHOW_CONFIG FUNCTION FOR 'SHOW' COMMAND +#================================================= + +show_config() { + # here you are supposed to read some config file/database/other then print the values + # ynh_return "YNH_CONFIG_${PANEL_ID}_${SECTION_ID}_${OPTION_ID}=value" + + ynh_return "YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC=$is_public" + + ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx" + ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM=$overwrite_phpfpm" + + ynh_return "YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE=$admin_mail_html" +} + +#================================================= +# MODIFY THE CONFIGURATION +#================================================= + +apply_config() { + + # Change public accessibility + if [ "$is_public" = "true" ] + then + yunohost app action run $app public_private --args is_public=1 + else + yunohost app action run $app public_private --args is_public=0 + fi + + #================================================= + # MODIFY OVERWRITTING SETTINGS + #================================================= + + # Set overwrite_nginx + ynh_app_setting_set --app=$app --key=overwrite_nginx --value="$overwrite_nginx" + + # Set overwrite_phpfpm + ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value="$overwrite_phpfpm" + + #================================================= + # MODIFY EMAIL SETTING + #================================================= + + # Set admin_mail_html + ynh_app_setting_set --app=$app --key=admin_mail_html --value="$admin_mail_html" +} + +#================================================= +# GENERIC FINALIZATION +#================================================= +# SELECT THE ACTION FOLLOWING THE GIVEN ARGUMENT +#================================================= + +case $1 in + show) show_config;; + apply) apply_config;; +esac diff --git a/scripts/install b/scripts/install index d435272..b8412fe 100644 --- a/scripts/install +++ b/scripts/install @@ -56,6 +56,10 @@ ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_set --app=$app --key=language --value=$language ynh_app_setting_set --app=$app --key=multisite --value=$multisite +ynh_app_setting_set --app=$app --key=overwrite_nginx --value=1 +ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=1 +ynh_app_setting_set --app=$app --key=admin_mail_html --value=1 + #================================================= # STANDARD MODIFICATIONS #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 7fca596..e6424b1 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -25,6 +25,10 @@ multisite=$(ynh_app_setting_get --app=$app --key=multisite) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +overwrite_nginx=$(ynh_app_setting_get --app=$app --key=overwrite_nginx) +overwrite_phpfpm=$(ynh_app_setting_get --app=$app --key=overwrite_phpfpm) +admin_mail_html=$(ynh_app_setting_get --app=$app --key=admin_mail_html) + #================================================= # CHECK VERSION #================================================= @@ -83,6 +87,24 @@ if grep add_filter.*auto_update $final_path/wp-config.php; then sed --in-place '/add_filter.*auto_update/d' $final_path/wp-config.php fi +# If admin_mail_html doesn't exist, create it +if [ -z "$admin_mail_html" ]; then + admin_mail_html=1 + ynh_app_setting_set --app=$app --key=admin_mail_html --value=$admin_mail_html +fi + +# If overwrite_nginx doesn't exist, create it +if [ -z "$overwrite_nginx" ]; then + overwrite_nginx=1 + ynh_app_setting_set $app overwrite_nginx $overwrite_nginx +fi + +# If overwrite_phpfpm doesn't exist, create it +if [ -z "$overwrite_phpfpm" ]; then + overwrite_phpfpm=1 + ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=$overwrite_phpfpm +fi + #================================================= # STANDARD UPGRADE STEPS #================================================= @@ -123,10 +145,13 @@ ynh_install_app_dependencies php5-cli #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2 -# Create a dedicated nginx config -ynh_add_nginx_config +# Overwrite the nginx configuration only if it's allowed +if [ $overwrite_nginx -eq 1 ] +then + ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2 + ynh_add_nginx_config +fi #================================================= # CREATE DEDICATED USER @@ -139,10 +164,14 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." --weight=4 -# Create a dedicated php-fpm config -ynh_add_fpm_config +# Overwrite the php-fpm configuration only if it's allowed +if [ $overwrite_phpfpm -eq 1 ] +then + ynh_script_progression --message="Upgrading php-fpm configuration..." --weight=4 + # Create a dedicated php-fpm config + ynh_add_fpm_config +fi #================================================= # SPECIFIC UPGRADE