diff --git a/config_panel.json b/config_panel.json deleted file mode 100644 index e605e61..0000000 --- a/config_panel.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "Leed configuration panel", - "version": "0.1", - "panel": [{ - "name": "Leed configuration", - "id": "main", - "sections": [{ - "name": "Public access", - "id": "is_public", - "options": [{ - "name": "Is it a public app ?", - "id": "is_public", - "type": "bool", - "default": true - }] - }, - { - "name": "Overwriting config files", - "id": "overwrite_files", - "options": [{ - "name": "Overwrite the nginx config file ?", - "help": "If the file is overwritten, a backup will be created.", - "id": "overwrite_nginx", - "type": "bool", - "default": true - }, - { - "name": "Overwrite the php-fpm config file ?", - "help": "If the file is overwritten, a backup will be created.", - "id": "overwrite_phpfpm", - "type": "bool", - "default": true - }] - }, - { - "name": "Global configuration", - "id": "global_config", - "options": [{ - "name": "Send HTML email to admin ?", - "help": "Allow app scripts to send HTML mails instead of plain text.", - "id": "email_type", - "type": "bool", - "default": true - }] - }, - { - "name": "PHP-FPM configuration", - "id": "php_fpm_config", - "options": [{ - "name": "Memory footprint of the service ?", - "help": "low <= 20Mb per pool. medium between 20Mb and 40Mb per pool. high > 40Mb per pool. Use specific to set a value with the following option.\n
We can't use a choices field for now. In the meantime please choose between one of this values:\n
low, medium, high, specific.", - "id": "footprint", - "type": "text", - "//": "\"choices\" : [\"low\", \"medium\", \"high\", \"specific\"]", - "default" : "low" - }, - { - "name": "Memory footprint of the service ?", - "help": "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values.", - "id": "free_footprint", - "type": "number", - "default": 0 - }, - { - "name": "Expected usage of the service ?", - "help": "low: Personal usage, behind the sso. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.\n
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.\n
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding.\n
We can't use a choices field for now. In the meantime please choose between one of this values:\n
low, medium, high.", - "id": "usage", - "type": "text", - "//": "\"choices\" : [\"low\", \"medium\", \"high\"]", - "default" : "low" - }] - }] - } -] -} diff --git a/config_panel.toml b/config_panel.toml new file mode 100644 index 0000000..575c7a4 --- /dev/null +++ b/config_panel.toml @@ -0,0 +1,62 @@ +version = "0.1" +name = "Leed configuration panel" + +[main] +name = "Leed configuration" + + [main.is_public] + name = "Public access" + + [main.is_public.is_public] + ask = "Is it a public website ?" + type = "boolean" + default = true + help = "A public Leed will be accessible for third party apps.
By turning on 'anonymous readers' in Leed configuration, you can made your feeds public." + + + [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." + + + [main.php_fpm_config] + name = "PHP-FPM configuration" + + [main.php_fpm_config.footprint] + ask = "Memory footprint of the service ?" + choices = ["low", "medium", "high", "specific"] + default = "low" + help = "low <= 20Mb per pool. medium between 20Mb and 40Mb per pool. high > 40Mb per pool.
Use specific to set a value with the following option." + + [main.php_fpm_config.free_footprint] + ask = "Memory footprint of the service ?" + type = "number" + default = "0" + help = "Free field to specify exactly the footprint in Mb if you don't want to use one of the three previous values." + + [main.php_fpm_config.usage] + ask = "Expected usage of the service ?" + choices = ["low", "medium", "high"] + default = "low" + help = "low: Personal usage, behind the sso. No RAM footprint when not used, but the impact on the processor can be high if many users are using the service.
medium: Low usage, few people or/and publicly accessible. Low RAM footprint, medium processor footprint when used.
high: High usage, frequently visited website. High RAM footprint, but lower on processor usage and quickly responding." diff --git a/scripts/config b/scripts/config index f0785cc..85949f2 100644 --- a/scripts/config +++ b/scripts/config @@ -29,30 +29,37 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) # is_public old_is_public="$(ynh_app_setting_get --app=$app --key=is_public)" -old_is_public=$(bool_to_true_false $old_is_public) +ynh_debug -m "old_is_public=$old_is_public" +# old_is_public=$(bool_to_true_false $old_is_public) +# ynh_debug -m "old_is_public=$old_is_public" is_public="${YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC:-$old_is_public}" - +ynh_debug -m "YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC=$YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC" +ynh_debug -m "is_public=$is_public" # Overwrite nginx configuration old_overwrite_nginx="$(ynh_app_setting_get --app=$app --key=overwrite_nginx)" -old_overwrite_nginx=$(bool_to_true_false $old_overwrite_nginx) +# old_overwrite_nginx=$(bool_to_true_false $old_overwrite_nginx) overwrite_nginx="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX:-$old_overwrite_nginx}" +ynh_debug -m "overwrite_nginx=$overwrite_nginx" # Overwrite php-fpm configuration old_overwrite_phpfpm="$(ynh_app_setting_get --app=$app --key=overwrite_phpfpm)" -old_overwrite_phpfpm=$(bool_to_true_false $old_overwrite_phpfpm) +# old_overwrite_phpfpm=$(bool_to_true_false $old_overwrite_phpfpm) overwrite_phpfpm="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM:-$old_overwrite_phpfpm}" +ynh_debug -m "overwrite_phpfpm=$overwrite_phpfpm" # Type of admin mail configuration old_admin_mail_html="$(ynh_app_setting_get --app=$app --key=admin_mail_html)" -old_admin_mail_html=$(bool_to_true_false $old_admin_mail_html) +# old_admin_mail_html=$(bool_to_true_false $old_admin_mail_html) admin_mail_html="${YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE:-$old_admin_mail_html}" +ynh_debug -m "admin_mail_html=$admin_mail_html" # Footprint for php-fpm old_fpm_footprint="$(ynh_app_setting_get --app=$app --key=fpm_footprint)" fpm_footprint="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FOOTPRINT:-$old_fpm_footprint}" +ynh_debug -m "fpm_footprint=$fpm_footprint" # Free footprint value for php-fpm # Check if fpm_footprint is an integer @@ -64,10 +71,12 @@ else old_free_footprint=0 fi free_footprint="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FREE_FOOTPRINT:-$old_free_footprint}" +ynh_debug -m "free_footprint=$free_footprint" # Usage for php-fpm old_fpm_usage="$(ynh_app_setting_get --app=$app --key=fpm_usage)" fpm_usage="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_USAGE:-$old_fpm_usage}" +ynh_debug -m "fpm_usage=$fpm_usage" #================================================= # SHOW_CONFIG FUNCTION FOR 'SHOW' COMMAND @@ -75,18 +84,18 @@ fpm_usage="${YNH_CONFIG_MAIN_PHP_FPM_CONFIG_USAGE:-$old_fpm_usage}" show_config() { # here you are supposed to read some config file/database/other then print the values - # echo "YNH_CONFIG_${PANEL_ID}_${SECTION_ID}_${OPTION_ID}=value" + # ynh_return "YNH_CONFIG_${PANEL_ID}_${SECTION_ID}_${OPTION_ID}=value" - echo "YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC=$is_public" + ynh_return "YNH_CONFIG_MAIN_IS_PUBLIC_IS_PUBLIC=$is_public" - echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx" - echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM=$overwrite_phpfpm" + ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx" + ynh_return "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM=$overwrite_phpfpm" - echo "YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE=$admin_mail_html" + ynh_return "YNH_CONFIG_MAIN_GLOBAL_CONFIG_EMAIL_TYPE=$admin_mail_html" - echo "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FOOTPRINT=$fpm_footprint" - echo "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FREE_FOOTPRINT=$free_footprint" - echo "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_USAGE=$fpm_usage" + ynh_return "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FOOTPRINT=$fpm_footprint" + ynh_return "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_FREE_FOOTPRINT=$free_footprint" + ynh_return "YNH_CONFIG_MAIN_PHP_FPM_CONFIG_USAGE=$fpm_usage" } #================================================= @@ -100,7 +109,7 @@ apply_config() { #================================================= # Change public accessibility - if [ "$is_public" = "true" ] + if [ $is_public -eq 1 ] then yunohost app action run $app public_private --args is_public=1 else @@ -112,10 +121,10 @@ apply_config() { #================================================= # Set overwrite_nginx - overwrite_nginx=$(bool_to_01 $overwrite_nginx) +# overwrite_nginx=$(bool_to_01 $overwrite_nginx) ynh_app_setting_set --app=$app --key=overwrite_nginx --value="$overwrite_nginx" # Set overwrite_phpfpm - overwrite_phpfpm=$(bool_to_01 $overwrite_phpfpm) +# overwrite_phpfpm=$(bool_to_01 $overwrite_phpfpm) ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value="$overwrite_phpfpm" #================================================= @@ -123,15 +132,20 @@ apply_config() { #================================================= # Set admin_mail_html - admin_mail_html=$(bool_to_01 $admin_mail_html) +# admin_mail_html=$(bool_to_01 $admin_mail_html) ynh_app_setting_set --app=$app --key=admin_mail_html --value="$admin_mail_html" #================================================= # RECONFIGURE PHP-FPM #================================================= - if [ "$fpm_usage" != "$old_fpm_usage" ] || [ "$fpm_footprint" != "$old_fpm_footprint" ] + if [ "$fpm_usage" != "$old_fpm_usage" ] || [ "$fpm_footprint" != "$old_fpm_footprint" ] || [ "$free_footprint" != "$old_free_footprint" ] then + # If fpm_footprint is set to 'specific', use $free_footprint value. + if [ "$fpm_footprint" = "specific" ] + then + fpm_footprint=$free_footprint + fi ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint fi } diff --git a/scripts/upgrade b/scripts/upgrade index 8e6a0e8..cb9e247 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -45,53 +45,53 @@ ynh_script_progression --message="Ensuring downward compatibility..." # If final_path doesn't exist, create it if [ -z "$final_path" ]; then - final_path=/var/www/$app - ynh_app_setting_set --app=$app --key=final_path --value=$final_path + final_path=/var/www/$app + ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi # If db_name doesn't exist, create it if [ -z "$db_name" ]; then - db_name=$(ynh_sanitize_dbid --db_name=$app) - ynh_app_setting_set --app=$app --key=db_name --value=$db_name + db_name=$(ynh_sanitize_dbid --db_name=$app) + ynh_app_setting_set --app=$app --key=db_name --value=$db_name fi # If is_public doesn't exist, create it if [ -z "$is_public" ]; then - public_check=$(ynh_app_setting_get --app=$app --key=skipped_uris) - # If skipped_uris is empty, that was a public installation. - if [ -z "$public_check" ]; then - is_public=1 - else - is_public=0 - fi - ynh_app_setting_set --app=$app --key=is_public --value=$is_public + public_check=$(ynh_app_setting_get --app=$app --key=skipped_uris) + # If skipped_uris is empty, that was a public installation. + if [ -z "$public_check" ]; then + is_public=1 + else + is_public=0 + fi + ynh_app_setting_set --app=$app --key=is_public --value=$is_public else - # Fix is_public as a boolean - if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 - elif [ "$is_public" = "No" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 - fi + # Fix is_public as a boolean + if [ "$is_public" = "Yes" ]; then + ynh_app_setting_set --app=$app --key=is_public --value=1 + is_public=1 + elif [ "$is_public" = "No" ]; then + ynh_app_setting_set --app=$app --key=is_public --value=0 + is_public=0 + fi fi # If overwrite_nginx doesn't exist, create it if [ -z "$overwrite_nginx" ]; then - overwrite_nginx=1 - ynh_app_setting_set --app=$app --key=overwrite_nginx --value=$overwrite_nginx + overwrite_nginx=1 + ynh_app_setting_set --app=$app --key=overwrite_nginx --value=$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 + overwrite_phpfpm=1 + ynh_app_setting_set --app=$app --key=overwrite_phpfpm --value=$overwrite_phpfpm 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 + admin_mail_html=1 + ynh_app_setting_set --app=$app --key=admin_mail_html --value=$admin_mail_html fi #================================================= @@ -102,8 +102,8 @@ ynh_script_progression --message="Backing up the app before upgrading (may take # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { - # restore it if the upgrade fails - ynh_restore_upgradebackup + # restore it if the upgrade fails + ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors @@ -130,9 +130,9 @@ ynh_maintenance_mode_ON if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Upgrading source files..." --weight=3 - # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$final_path" + ynh_script_progression --message="Upgrading source files..." --weight=3 + # Download, check integrity, uncompress and patch the source from app.src + ynh_setup_source --dest_dir="$final_path" fi #================================================= @@ -142,9 +142,9 @@ fi # 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 - # Create a dedicated nginx config - ynh_add_nginx_config + ynh_script_progression --message="Upgrading nginx web server configuration..." --weight=2 + # Create a dedicated nginx config + ynh_add_nginx_config fi #================================================= @@ -162,9 +162,9 @@ ynh_system_user_create --username=$app # 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=2 - # Create a dedicated php-fpm config - ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint + ynh_script_progression --message="Upgrading php-fpm configuration..." --weight=2 + # Create a dedicated php-fpm config + ynh_add_fpm_config --usage=$fpm_usage --footprint=$fpm_footprint fi #================================================= @@ -203,13 +203,13 @@ chown -R $app $final_path/cache $final_path/plugins $final_path/updates if [ "$upgrade_type" == "UPGRADE_APP" ] then - ynh_script_progression --message="Upgrading Leed with curl..." --weight=4 - # Set the app as temporarily public for curl call - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" - # Regen SSOwat configuration - yunohost app ssowatconf - # Start the upgrade procedure of leed. - ynh_local_curl "/" + ynh_script_progression --message="Upgrading Leed with curl..." --weight=4 + # Set the app as temporarily public for curl call + ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" + # Regen SSOwat configuration + yunohost app ssowatconf + # Start the upgrade procedure of leed. + ynh_local_curl "/" fi #================================================= @@ -230,10 +230,10 @@ ynh_script_progression --message="Upgrading SSOwat configuration..." # Make app private if necessary if [ $is_public -eq 0 ] then - # Remove the public access - ynh_app_setting_delete --app=$app --key=unprotected_uris - # Set the action.php script public for the cron task - ynh_app_setting_set --app=$app --key=skipped_uris --value="/action.php" + # Remove the public access + ynh_app_setting_delete --app=$app --key=unprotected_uris + # Set the action.php script public for the cron task + ynh_app_setting_set --app=$app --key=skipped_uris --value="/action.php" fi #=================================================