diff --git a/actions.json b/actions.json
new file mode 100644
index 0000000..aa640da
--- /dev/null
+++ b/actions.json
@@ -0,0 +1,55 @@
+[{
+ "id": "add_remove_infcloud",
+ "name": "Install/remove InfCloud",
+ "command": "/bin/bash scripts/actions/add_remove_infcloud",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Install or remove InfCloud.",
+ "fr": "Installe ou supprime InfCloud."
+ }
+},
+{
+ "id": "reset_default_infcloud",
+ "name": "Reset the InfCloud config file and restore a default one.",
+ "command": "/bin/bash scripts/actions/reset_default_config \"infcloud\"",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Reset the InfCloud config file config.js.",
+ "fr": "Réinitialise le fichier de configuration InfCloud config.js."
+ }
+},
+{
+ "id": "reset_default_config",
+ "name": "Reset the config file and restore a default one.",
+ "command": "/bin/bash scripts/actions/reset_default_config \"config\"",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Reset the config file config.",
+ "fr": "Réinitialise le fichier de configuration config."
+ }
+},
+{
+ "id": "reset_default_logging",
+ "name": "Reset the logging file and restore a default one.",
+ "command": "/bin/bash scripts/actions/reset_default_config \"logging\"",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Reset the config file logging.",
+ "fr": "Réinitialise le fichier de configuration logging."
+ }
+},
+{
+ "id": "reset_default_rights",
+ "name": "Reset the rights file and restore a default one.",
+ "command": "/bin/bash scripts/actions/reset_default_config \"rights\"",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Reset the config file rights.",
+ "fr": "Réinitialise le fichier de configuration rights."
+ }
+}]
diff --git a/config_panel.json b/config_panel.json
new file mode 100644
index 0000000..97e5d71
--- /dev/null
+++ b/config_panel.json
@@ -0,0 +1,105 @@
+{
+ "name": "Radicale configuration panel",
+ "version": "0.1",
+ "panel": [{
+ "name": "Radicale configuration",
+ "id": "main",
+ "sections": [{
+ "name": "InfCloud configuration",
+ "id": "infcloud_configuration",
+ "options": [{
+ "name": "Choose your interface language",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
Czech, Danish, German, English/US, Spanish, French, Italian, Japan, Hungarian, Dutch, Slovak, Turkish, Russian, Ukrainian, Chinese.",
+ "id": "language",
+ "type": "text",
+ "//": "\"choices\" : [\"Czech\", \"Danish\", \"German\", \"English/US\", \"Spanish\", \"French\", \"Italian\", \"Japan\", \"Hungarian\", \"Dutch\", \"Slovak\", \"Turkish\", \"Russian\", \"Ukrainian\", \"Chinese\"]",
+ "default" : "English/US"
+ },
+ {
+ "name": "First day of the week ?",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
Sunday, Monday.",
+ "id": "firstdayofweek",
+ "type": "text",
+ "//": "\"choices\" : [\"Sunday\", \"Monday\"]",
+ "default" : "Monday"
+ },
+ {
+ "name": "Default calendar view ?",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
month, multiWeek, agendaWeek, agendaDay.",
+ "id": "activeview",
+ "type": "text",
+ "//": "\"choices\" : [\"month\", \"multiWeek\", \"agendaWeek\", \"agendaDay\"]",
+ "default" : "agendaWeek"
+ },
+ {
+ "name": "New event on single or double click ?",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
single, double.",
+ "id": "openformmode",
+ "type": "text",
+ "//": "\"choices\" : [\"single\", \"double\"]",
+ "default" : "double"
+ },
+ {
+ "name": "Start of business hour ?",
+ "help": "Non-business hours are faded out in the calendar interface.",
+ "id": "startofbusiness",
+ "type": "number",
+ "default": 8
+ },
+ {
+ "name": "End of business hour ?",
+ "help": "Non-business hours are faded out in the calendar interface.",
+ "id": "endofbusiness",
+ "type": "number",
+ "default": 18
+ },
+ {
+ "name": "Default event duration ?",
+ "help": "In minutes.",
+ "id": "defaulteventduration",
+ "type": "number",
+ "default": 120
+ }]
+ },
+ {
+ "name": "Overwriting config files",
+ "id": "overwrite_files",
+ "options": [{
+ "name": "Overwrite the config file logging ?",
+ "help": "If the file is overwritten, a backup will be created.",
+ "id": "overwrite_logging",
+ "type": "bool",
+ "default": true
+ },
+ {
+ "name": "Overwrite the config file config ?",
+ "help": "If the file is overwritten, a backup will be created.",
+ "id": "overwrite_config",
+ "type": "bool",
+ "default": true
+ },
+ {
+ "name": "Overwrite the InfCloud config file config.js ?",
+ "help": "If the file is overwritten, a backup will be created.",
+ "id": "overwrite_infcloud",
+ "type": "bool",
+ "default": true
+ },
+ {
+ "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
+ }]
+ }]
+ }
+]
+}
diff --git a/scripts/_common.sh b/scripts/_common.sh
index 2b85245..8d58e36 100755
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -30,6 +30,24 @@ IS_PACKAGE_CHECK () {
return $(env | grep -c container=lxc)
}
+#=================================================
+# BOOLEAN CONVERTER
+#=================================================
+
+bool_to_01 () {
+ local var="$1"
+ [ "$var" = "true" ] && var=1
+ [ "$var" = "false" ] && var=0
+ echo "$var"
+}
+
+bool_to_true_false () {
+ local var="$1"
+ [ "$var" = "1" ] && var=true
+ [ "$var" = "0" ] && var=false
+ echo "$var"
+}
+
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
diff --git a/scripts/actions/add_remove_infcloud b/scripts/actions/add_remove_infcloud
new file mode 100755
index 0000000..a8b8665
--- /dev/null
+++ b/scripts/actions/add_remove_infcloud
@@ -0,0 +1,170 @@
+#!/bin/bash
+
+#=================================================
+# GENERIC STARTING
+#=================================================
+# IMPORT GENERIC HELPERS
+#=================================================
+
+source scripts/_common.sh
+source /usr/share/yunohost/helpers
+
+#=================================================
+# RETRIEVE ARGUMENTS
+#=================================================
+
+app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
+infcloud=$(ynh_app_setting_get $app infcloud)
+final_path=$(ynh_app_setting_get $app final_path)
+
+#=================================================
+# CHECK IF AN ACTION HAS TO BE DONE
+#=================================================
+
+if [ $infcloud -eq 1 ]
+then
+ ynh_print_info "InfCloud will be removed." >&2
+ infcloud=0
+else
+ ynh_print_info "InfCloud will be installed." >&2
+ infcloud=1
+fi
+
+#=================================================
+# SPECIFIC ACTION
+#=================================================
+# INSTALL OR REMOVE INFCLOUD
+#=================================================
+
+if [ $infcloud -eq 1 ]
+then
+ # Install InfCloud
+
+ # Get settings
+ domain=$(ynh_app_setting_get $app domain)
+ path_url=$(ynh_app_setting_get $app path)
+ language=$(ynh_app_setting_get $app language)
+ admin=$(ynh_app_setting_get $app admin)
+
+ # Optional parameters from config-panel feature
+ firstdayofweek=$(ynh_app_setting_get $app firstdayofweek)
+ activeview=$(ynh_app_setting_get $app activeview)
+ openformmode=$(ynh_app_setting_get $app openformmode)
+ startofbusiness=$(ynh_app_setting_get $app startofbusiness)
+ endofbusiness=$(ynh_app_setting_get $app endofbusiness)
+ defaulteventduration=$(ynh_app_setting_get $app defaulteventduration)
+
+ # Ajoute InfCloud dans la config Nginx
+ ynh_replace_string "#INFCLOUD#" "" /etc/nginx/conf.d/$domain.d/$app.conf
+
+ # Install InfCloud
+ (YNH_CWD="$YNH_CWD/scripts"; ynh_setup_source "$final_path/infcloud")
+
+ # Configuration de InfCloud
+ # Détermine la langue
+ case "$language" in
+ "Czech") language="cs_CZ"
+ ;;
+ "Danish") language="da_DK"
+ ;;
+ "German") language="de_DE"
+ ;;
+ "English/US") language="en_US"
+ ;;
+ "Spanish") language="es_ES"
+ ;;
+ "French") language="fr_FR"
+ ;;
+ "Italian") language="it_IT"
+ ;;
+ "Japan") language="ja_JP"
+ ;;
+ "Hungarian") language="hu_HU"
+ ;;
+ "Dutch") language="nl_NL"
+ ;;
+ "Slovak") language="sk_SK"
+ ;;
+ "Turkish") language="tr_TR"
+ ;;
+ "Russian") language="ru_RU"
+ ;;
+ "Ukrainian") language="uk_UA"
+ ;;
+ "Chinese") language="zh_CN"
+ ;;
+ esac
+ cp conf/config.js "$final_path/infcloud/"
+ ynh_replace_string "__DOMAIN__" "$domain" "$final_path/infcloud/config.js"
+ ynh_replace_string "__PATH__" "${path_url%/}" "$final_path/infcloud/config.js"
+ ynh_replace_string "__LANG__" "$language" "$final_path/infcloud/config.js"
+ ynh_replace_string "__ADMIN__" "$admin" "$final_path/infcloud/config.js"
+ ynh_replace_string "__TIMEZONE__" "$(cat /etc/timezone)" "$final_path/infcloud/config.js"
+
+ # Optional parameters from config-panel feature
+ if [ -n "$firstdayofweek" ]; then
+ ynh_replace_string "\(^var globalDatepickerFirstDayOfWeek=\).*" "\1$firstdayofweek;" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$activeview" ]; then
+ ynh_replace_string "\(^var globalActiveView=\).*" "\1\'$activeview\';" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$openformmode" ]; then
+ ynh_replace_string "\(^var globalOpenFormMode=\).*" "\1\'$openformmode\';" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$startofbusiness" ]; then
+ ynh_replace_string "\(^var globalCalendarStartOfBusiness=\).*" "\1$startofbusiness;" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$endofbusiness" ]; then
+ ynh_replace_string "\(^var globalCalendarEndOfBusiness=\).*" "\1$endofbusiness;" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$defaulteventduration" ]; then
+ ynh_replace_string "\(^var globalDefaultEventDuration=\).*" "\1$defaulteventduration;" "$final_path/infcloud/config.js"
+ fi
+ ynh_store_file_checksum "$final_path/infcloud/config.js" # Réenregistre la somme de contrôle du fichier de config
+
+ # Fix permission
+ chown -R radicale: $final_path
+
+ # Create php-fpm configuration
+ (cd scripts; ynh_add_fpm_config)
+
+ # Setup SSOWat
+ # /infcloud vient se rajouter à l'adresse de radicale pour y être associé sur le portail.
+ # Remplace radicale par InfCloud dans le portail Yunohost
+ ynh_app_setting_set $app path ${path_url%/}/infcloud
+ # Protège l'accès à infcloud
+ ynh_app_setting_set $app protected_uris "/"
+ domain_regex=$(echo "$domain" | sed 's@-@.@g')
+ # Radicale est accessible librement (pour l'accès distant aux ressources)
+ ynh_app_setting_set $app skipped_regex "$domain_regex$path_url"
+ # Remove the previous entry for unprotected_uris
+ ynh_app_setting_delete $app unprotected_uris
+
+else
+ # Remove InfCloud
+
+ # Get settings
+ path_url=$(dirname $(ynh_app_setting_get $app path))
+
+ # Remove InfCloud
+ ynh_secure_remove "$final_path/infcloud"
+
+ # Remove php-fpm configuration
+ ynh_remove_fpm_config
+
+ # Setup SSOWat
+ # Remplace InfCloud par radicale dans le portail Yunohost
+ ynh_app_setting_set $app path $path_url
+ # Remove the previous entry for protected_uris and skipped_regex
+ ynh_app_setting_delete $app protected_uris
+ ynh_app_setting_delete $app skipped_regex
+
+ # Radicale est accessible librement (pour l'accès distant aux ressources)
+ ynh_app_setting_set $app unprotected_uris "/"
+fi
+
+# Regen ssowat configuration
+yunohost app ssowatconf
+
+# Update the config of the app
+ynh_app_setting_set $app infcloud $infcloud
diff --git a/scripts/actions/reset_default_config b/scripts/actions/reset_default_config
new file mode 100755
index 0000000..b5f765e
--- /dev/null
+++ b/scripts/actions/reset_default_config
@@ -0,0 +1,148 @@
+#!/bin/bash
+
+#=================================================
+# GENERIC STARTING
+#=================================================
+# IMPORT GENERIC HELPERS
+#=================================================
+
+source scripts/_common.sh
+source /usr/share/yunohost/helpers
+
+#=================================================
+# RETRIEVE ARGUMENTS
+#=================================================
+
+app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
+final_path=$(ynh_app_setting_get $app final_path)
+domain=$(ynh_app_setting_get $app domain)
+path_url=$(ynh_app_setting_get $app path)
+language=$(ynh_app_setting_get $app language)
+admin=$(ynh_app_setting_get $app admin)
+
+# Optional parameters from config-panel feature
+firstdayofweek=$(ynh_app_setting_get $app firstdayofweek)
+activeview=$(ynh_app_setting_get $app activeview)
+openformmode=$(ynh_app_setting_get $app openformmode)
+startofbusiness=$(ynh_app_setting_get $app startofbusiness)
+endofbusiness=$(ynh_app_setting_get $app endofbusiness)
+defaulteventduration=$(ynh_app_setting_get $app defaulteventduration)
+
+#=================================================
+# SORT OUT THE CONFIG FILE TO HANDLE
+#=================================================
+
+file="$1"
+
+if [ "$file" = "infcloud" ]; then
+ config_file="$final_path/infcloud/config.js"
+elif [ "$file" = "config" ]; then
+ config_file="/etc/$app/config"
+elif [ "$file" = "logging" ]; then
+ config_file="/etc/$app/logging"
+elif [ "$file" = "rights" ]; then
+ config_file="/etc/$app/rights"
+fi
+
+#=================================================
+# SPECIFIC ACTION
+#=================================================
+# RESET THE CONFIG FILE
+#=================================================
+
+# Verify the checksum and backup the file if it's different
+ynh_backup_if_checksum_is_different "$config_file"
+
+if [ "$file" = "infcloud" ]
+then
+ # Get the default file and overwrite the current config
+ cp /etc/yunohost/apps/$app/conf/config.js "$config_file"
+
+ # Recreate the default config
+ # Détermine la langue
+ case "$language" in
+ "Czech") language="cs_CZ"
+ ;;
+ "Danish") language="da_DK"
+ ;;
+ "German") language="de_DE"
+ ;;
+ "English/US") language="en_US"
+ ;;
+ "Spanish") language="es_ES"
+ ;;
+ "French") language="fr_FR"
+ ;;
+ "Italian") language="it_IT"
+ ;;
+ "Japan") language="ja_JP"
+ ;;
+ "Hungarian") language="hu_HU"
+ ;;
+ "Dutch") language="nl_NL"
+ ;;
+ "Slovak") language="sk_SK"
+ ;;
+ "Turkish") language="tr_TR"
+ ;;
+ "Russian") language="ru_RU"
+ ;;
+ "Ukrainian") language="uk_UA"
+ ;;
+ "Chinese") language="zh_CN"
+ ;;
+ esac
+ ynh_replace_string "__DOMAIN__" "$domain" "$config_file"
+ ynh_replace_string "__PATH__" "${path_url%/}" "$config_file"
+ ynh_replace_string "__LANG__" "$language" "$config_file"
+ ynh_replace_string "__ADMIN__" "$admin" "$config_file"
+ ynh_replace_string "__TIMEZONE__" "$(cat /etc/timezone)" "$config_file"
+
+ # Optional parameters from config-panel feature
+ if [ -n "$firstdayofweek" ]; then
+ ynh_replace_string "\(^var globalDatepickerFirstDayOfWeek=\).*" "\1$firstdayofweek;" "$config_file"
+ fi
+ if [ -n "$activeview" ]; then
+ ynh_replace_string "\(^var globalActiveView=\).*" "\1\'$activeview\';" "$config_file"
+ fi
+ if [ -n "$openformmode" ]; then
+ ynh_replace_string "\(^var globalOpenFormMode=\).*" "\1\'$openformmode\';" "$config_file"
+ fi
+ if [ -n "$startofbusiness" ]; then
+ ynh_replace_string "\(^var globalCalendarStartOfBusiness=\).*" "\1$startofbusiness;" "$config_file"
+ fi
+ if [ -n "$endofbusiness" ]; then
+ ynh_replace_string "\(^var globalCalendarEndOfBusiness=\).*" "\1$endofbusiness;" "$config_file"
+ fi
+ if [ -n "$defaulteventduration" ]; then
+ ynh_replace_string "\(^var globalDefaultEventDuration=\).*" "\1$defaulteventduration;" "$config_file"
+ fi
+fi
+
+if [ "$file" = "config" ]
+then
+ # Get the default file and overwrite the current config
+ cp /etc/yunohost/apps/$app/conf/config "$config_file"
+
+ # Recreate the default config
+ ynh_replace_string "__PATH__" "${path_url%/}" "$config_file"
+ ynh_replace_string "__FINALPATH__" "$final_path" "$config_file"
+fi
+
+if [ "$file" = "logging" ]
+then
+ # Get the default file and overwrite the current config
+ cp /etc/yunohost/apps/$app/conf/logging "$config_file"
+fi
+
+if [ "$file" = "rights" ]
+then
+ # Get the default file and overwrite the current config
+ cp /etc/yunohost/apps/$app/conf/rights "$config_file"
+fi
+
+# Calculate and store the config file checksum into the app settings
+ynh_store_file_checksum "$config_file"
+
+# Restart uwsgi to restart radicale
+ynh_system_reload --service_name=uwsgi --action=restart
diff --git a/scripts/config b/scripts/config
new file mode 100644
index 0000000..f2f169f
--- /dev/null
+++ b/scripts/config
@@ -0,0 +1,265 @@
+#!/bin/bash
+
+#=================================================
+# GENERIC STARTING
+#=================================================
+# IMPORT GENERIC HELPERS
+#=================================================
+
+source _common.sh
+source /usr/share/yunohost/helpers
+# Load common variables for all scripts.
+source _variables
+
+#=================================================
+# RETRIEVE ARGUMENTS
+#=================================================
+
+app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
+
+final_path=$(ynh_app_setting_get $app final_path)
+
+#=================================================
+# SPECIFIC CODE
+#=================================================
+# DECLARE GENERIC FUNCTION
+#=================================================
+
+config_file="$final_path/infcloud/config.js"
+
+get_config_value() {
+ option_name="$1"
+ # Get the value of this option in the config file
+ grep "^var $option_name=" "$config_file" | cut -d'=' -f2 | cut -d';' -f1 | cut -d\' -f2
+}
+
+#=================================================
+# 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.
+
+# language
+old_language="$(ynh_app_setting_get $app language)"
+language="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_LANGUAGE:-$old_language}"
+
+# firstdayofweek
+old_firstdayofweek="$(get_config_value globalDatepickerFirstDayOfWeek)"
+firstdayofweek="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_FIRSTDAYOFWEEK:-$old_firstdayofweek}"
+# activeview
+old_activeview="$(get_config_value globalActiveView)"
+activeview="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_ACTIVEVIEW:-$old_activeview}"
+# openformmode
+old_openformmode="$(get_config_value globalOpenFormMode)"
+openformmode="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_OPENFORMMODE:-$old_openformmode}"
+# startofbusiness
+old_startofbusiness="$(get_config_value globalCalendarStartOfBusiness)"
+startofbusiness="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_STARTOFBUSINESS:-$old_startofbusiness}"
+# endofbusiness
+old_endofbusiness="$(get_config_value globalCalendarEndOfBusiness)"
+endofbusiness="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_ENDOFBUSINESS:-$old_endofbusiness}"
+# defaulteventduration
+old_defaulteventduration="$(get_config_value globalDefaultEventDuration)"
+defaulteventduration="${YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_DEFAULTEVENTDURATION:-$old_defaulteventduration}"
+
+# Overwrite logging file
+old_overwrite_logging="$(ynh_app_setting_get $app overwrite_logging)"
+old_overwrite_logging=$(bool_to_true_false $old_overwrite_logging)
+overwrite_logging="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_LOGGING:-$old_overwrite_logging}"
+
+# Overwrite config file
+old_overwrite_config="$(ynh_app_setting_get $app overwrite_config)"
+old_overwrite_config=$(bool_to_true_false $old_overwrite_config)
+overwrite_config="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_CONFIG:-$old_overwrite_config}"
+
+# Overwrite config.js file from InfCloud
+old_overwrite_infcloud="$(ynh_app_setting_get $app overwrite_infcloud)"
+old_overwrite_infcloud=$(bool_to_true_false $old_overwrite_infcloud)
+overwrite_infcloud="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_INFCLOUD:-$old_overwrite_infcloud}"
+
+# Overwrite nginx configuration
+old_overwrite_nginx="$(ynh_app_setting_get $app overwrite_nginx)"
+old_overwrite_nginx=$(bool_to_true_false $old_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 overwrite_phpfpm)"
+old_overwrite_phpfpm=$(bool_to_true_false $old_overwrite_phpfpm)
+overwrite_phpfpm="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM:-$old_overwrite_phpfpm}"
+
+#=================================================
+# SHOW_CONFIG FUNCTION FOR 'SHOW' COMMAND
+#=================================================
+
+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"
+
+ case "$language" in
+ "cs_CZ") language="Czech"
+ ;;
+ "da_DK") language="Danish"
+ ;;
+ "de_DE") language="German"
+ ;;
+ "en_US") language="English/US"
+ ;;
+ "es_ES") language="Spanish"
+ ;;
+ "fr_FR") language="French"
+ ;;
+ "it_IT") language="Italian"
+ ;;
+ "ja_JP") language="Japan"
+ ;;
+ "hu_HU") language="Hungarian"
+ ;;
+ "nl_NL") language="Dutch"
+ ;;
+ "sk_SK") language="Slovak"
+ ;;
+ "tr_TR") language="Turkish"
+ ;;
+ "ru_RU") language="Russian"
+ ;;
+ "uk_UA") language="Ukrainian"
+ ;;
+ "zh_CN") language="Chinese"
+ ;;
+ esac
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_LANGUAGE=$language"
+ if [ $firstdayofweek -eq 0 ]; then
+ firstdayofweek=Sunday
+ else
+ firstdayofweek=Monday
+ fi
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_FIRSTDAYOFWEEK=$firstdayofweek"
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_ACTIVEVIEW=$activeview"
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_OPENFORMMODE=$openformmode"
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_STARTOFBUSINESS=$startofbusiness"
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_ENDOFBUSINESS=$endofbusiness"
+ echo "YNH_CONFIG_MAIN_INFCLOUD_CONFIGURATION_DEFAULTEVENTDURATION=$defaulteventduration"
+
+ echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_LOGGING=$overwrite_logging"
+ echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_CONFIG=$overwrite_config"
+ echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_INFCLOUD=$overwrite_infcloud"
+ echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_NGINX=$overwrite_nginx"
+ echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PHPFPM=$overwrite_phpfpm"
+}
+
+#=================================================
+# MODIFY THE CONFIGURATION
+#=================================================
+
+apply_config() {
+ # Change configuration if needed
+ # language
+ case "$language" in
+ "Czech") language="cs_CZ"
+ ;;
+ "Danish") language="da_DK"
+ ;;
+ "German") language="de_DE"
+ ;;
+ "English/US") language="en_US"
+ ;;
+ "Spanish") language="es_ES"
+ ;;
+ "French") language="fr_FR"
+ ;;
+ "Italian") language="it_IT"
+ ;;
+ "Japan") language="ja_JP"
+ ;;
+ "Hungarian") language="hu_HU"
+ ;;
+ "Dutch") language="nl_NL"
+ ;;
+ "Slovak") language="sk_SK"
+ ;;
+ "Turkish") language="tr_TR"
+ ;;
+ "Russian") language="ru_RU"
+ ;;
+ "Ukrainian") language="uk_UA"
+ ;;
+ "Chinese") language="zh_CN"
+ ;;
+ esac
+ if [ "$language" != "$old_language" ]
+ then
+ ynh_replace_string "\(^var globalInterfaceLanguage=\).*" "\1\'$language\';" "$config_file"
+ ynh_app_setting_set $app language "$language"
+ fi
+ # firstdayofweek
+ if [ "$firstdayofweek" = "Sunday" ]; then
+ firstdayofweek=0
+ else
+ firstdayofweek=1
+ fi
+ if [ "$firstdayofweek" != "$old_firstdayofweek" ]
+ then
+ ynh_replace_string "\(^var globalDatepickerFirstDayOfWeek=\).*" "\1$firstdayofweek;" "$config_file"
+ ynh_app_setting_set $app firstdayofweek "$firstdayofweek"
+ fi
+ # activeview
+ if [ "$activeview" != "$old_activeview" ]
+ then
+ ynh_replace_string "\(^var globalActiveView=\).*" "\1\'$activeview\';" "$config_file"
+ ynh_app_setting_set $app activeview "$activeview"
+ fi
+ # openformmode
+ if [ "$openformmode" != "$old_openformmode" ]
+ then
+ ynh_replace_string "\(^var globalOpenFormMode=\).*" "\1\'$openformmode\';" "$config_file"
+ ynh_app_setting_set $app openformmode "$openformmode"
+ fi
+ # startofbusiness
+ if [ "$startofbusiness" != "$old_startofbusiness" ]
+ then
+ ynh_replace_string "\(^var globalCalendarStartOfBusiness=\).*" "\1$startofbusiness;" "$config_file"
+ ynh_app_setting_set $app startofbusiness "$startofbusiness"
+ fi
+ # endofbusiness
+ if [ "$endofbusiness" != "$old_endofbusiness" ]
+ then
+ ynh_replace_string "\(^var globalCalendarEndOfBusiness=\).*" "\1$endofbusiness;" "$config_file"
+ ynh_app_setting_set $app endofbusiness "$endofbusiness"
+ fi
+ # defaulteventduration
+ if [ "$defaulteventduration" != "$old_defaulteventduration" ]
+ then
+ ynh_replace_string "\(^var globalDefaultEventDuration=\).*" "\1$defaulteventduration;" "$config_file"
+ ynh_app_setting_set $app defaulteventduration "$defaulteventduration"
+ fi
+
+ # Set overwrite_logging
+ overwrite_logging=$(bool_to_01 $overwrite_logging)
+ ynh_app_setting_set $app overwrite_logging "$overwrite_logging"
+ # Set overwrite_config
+ overwrite_config=$(bool_to_01 $overwrite_config)
+ ynh_app_setting_set $app overwrite_config "$overwrite_config"
+ # Set overwrite_infcloud
+ overwrite_infcloud=$(bool_to_01 $overwrite_infcloud)
+ ynh_app_setting_set $app overwrite_infcloud "$overwrite_infcloud"
+ # Set overwrite_nginx
+ overwrite_nginx=$(bool_to_01 $overwrite_nginx)
+ ynh_app_setting_set $app overwrite_nginx "$overwrite_nginx"
+ # Set overwrite_phpfpm
+ overwrite_phpfpm=$(bool_to_01 $overwrite_phpfpm)
+ ynh_app_setting_set $app overwrite_phpfpm "$overwrite_phpfpm"
+}
+
+#=================================================
+# 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 a20901a..153e345 100755
--- a/scripts/install
+++ b/scripts/install
@@ -55,6 +55,11 @@ ynh_app_setting_set $app path $path_url
ynh_app_setting_set $app admin $admin
ynh_app_setting_set $app infcloud $infcloud
ynh_app_setting_set $app version $version
+ynh_app_setting_set $app overwrite_logging "1"
+ynh_app_setting_set $app overwrite_config "1"
+ynh_app_setting_set $app overwrite_infcloud "1"
+ynh_app_setting_set $app overwrite_nginx "1"
+ynh_app_setting_set $app overwrite_phpfpm "1"
#=================================================
# STANDARD MODIFICATIONS
diff --git a/scripts/upgrade b/scripts/upgrade
index 80ad509..967b47a 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -22,6 +22,19 @@ infcloud=$(ynh_app_setting_get $app infcloud)
language=$(ynh_app_setting_get $app language)
final_path=$(ynh_app_setting_get $app final_path)
version=$(ynh_app_setting_get $app version)
+overwrite_logging=$(ynh_app_setting_get $app overwrite_logging)
+overwrite_config=$(ynh_app_setting_get $app overwrite_config)
+overwrite_infcloud=$(ynh_app_setting_get $app overwrite_infcloud)
+overwrite_nginx=$(ynh_app_setting_get $app overwrite_nginx)
+overwrite_phpfpm=$(ynh_app_setting_get $app overwrite_phpfpm)
+
+# Optional parameters from config-panel feature
+firstdayofweek=$(ynh_app_setting_get $app firstdayofweek)
+activeview=$(ynh_app_setting_get $app activeview)
+openformmode=$(ynh_app_setting_get $app openformmode)
+startofbusiness=$(ynh_app_setting_get $app startofbusiness)
+endofbusiness=$(ynh_app_setting_get $app endofbusiness)
+defaulteventduration=$(ynh_app_setting_get $app defaulteventduration)
#=================================================
# CHECK VERSION
@@ -55,6 +68,36 @@ elif [ "$infcloud" = "No" ]; then
infcloud=0
fi
+# If overwrite_logging doesn't exist, create it
+if [ -z "$overwrite_logging" ]; then
+ overwrite_logging=1
+ ynh_app_setting_set $app overwrite_logging $overwrite_logging
+fi
+
+# If overwrite_config doesn't exist, create it
+if [ -z "$overwrite_config" ]; then
+ overwrite_config=1
+ ynh_app_setting_set $app overwrite_config $overwrite_config
+fi
+
+# If overwrite_infcloud doesn't exist, create it
+if [ -z "$overwrite_infcloud" ]; then
+ overwrite_infcloud=1
+ ynh_app_setting_set $app overwrite_infcloud $overwrite_infcloud
+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 overwrite_phpfpm $overwrite_phpfpm
+fi
+
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
@@ -89,12 +132,16 @@ ynh_maintenance_mode_ON
# NGINX CONFIGURATION
#=================================================
-ynh_add_nginx_config
-if [ $infcloud -eq 1 ]
-then # Ajoute InfCloud dans la config Nginx
- ynh_replace_string "#INFCLOUD#" "" /etc/nginx/conf.d/$domain.d/$app.conf
+# Overwrite the nginx configuration only if it's allowed
+if [ $overwrite_nginx -eq 1 ]
+then
+ ynh_add_nginx_config
+ if [ $infcloud -eq 1 ]
+ then # Ajoute InfCloud dans la config Nginx
+ ynh_replace_string "#INFCLOUD#" "" /etc/nginx/conf.d/$domain.d/$app.conf
+ fi
+ ynh_store_file_checksum "$finalnginxconf"
fi
-ynh_store_file_checksum "$finalnginxconf"
#=================================================
# CREATE DEDICATED USER
@@ -108,7 +155,11 @@ then
# PHP-FPM CONFIGURATION
#=================================================
- ynh_add_fpm_config # Créer le fichier de configuration du pool php-fpm et le configure.
+ # Overwrite the php-fpm configuration only if it's allowed
+ if [ $overwrite_phpfpm -eq 1 ]
+ then
+ ynh_add_fpm_config # Créer le fichier de configuration du pool php-fpm et le configure.
+ fi
fi
#=================================================
@@ -143,7 +194,14 @@ then
then #Instal InfCloud
final_path_backup=$final_path # Sauvegarde le contenu de $final_path
final_path=$final_path/infcloud # Change final_path pour l'installation de infcloud
+ # If overwrite_infcloud is 0, copy the config file, then restore it.
+ if [ $overwrite_infcloud -eq 0 ]; then
+ cp -a $final_path/config.js ./config.js
+ fi
ynh_setup_source "$final_path" # Télécharge la source, décompresse et copie dans $final_path
+ if [ $overwrite_infcloud -eq 0 ]; then
+ mv ./config.js $final_path/config.js
+ fi
final_path=$final_path_backup # Restaure le contenu de $final_path
fi
fi
@@ -152,58 +210,92 @@ fi
# CONFIGURE RADICALE
#=================================================
-ynh_backup_if_checksum_is_different "/etc/$app/config" # Créé un backup du fichier de config si il a été modifié.
-cp ../conf/config /etc/$app/
-ynh_backup_if_checksum_is_different "/etc/$app/logging" # Créé un backup du fichier de config si il a été modifié.
-cp ../conf/logging /etc/$app/
-ynh_store_file_checksum "/etc/$app/logging" # Réenregistre la somme de contrôle du fichier de config
-ynh_replace_string "__PATH__" "${path_url%/}" /etc/$app/config
-ynh_replace_string "__FINALPATH__" "$final_path" /etc/$app/config
-ynh_store_file_checksum "/etc/$app/config" # Réenregistre la somme de contrôle du fichier de config
-if [ $infcloud -eq 1 ]
-then #Configuration InfCloud
- # Détermine la langue
- case "$language" in
- "Czech") language="cs_CZ"
- ;;
- "Danish") language="da_DK"
- ;;
- "German") language="de_DE"
- ;;
- "English/US") language="en_US"
- ;;
- "Spanish") language="es_ES"
- ;;
- "French") language="fr_FR"
- ;;
- "Italian") language="it_IT"
- ;;
- "Japan") language="ja_JP"
- ;;
- "Hungarian") language="hu_HU"
- ;;
- "Dutch") language="nl_NL"
- ;;
- "Slovak") language="sk_SK"
- ;;
- "Turkish") language="tr_TR"
- ;;
- "Russian") language="ru_RU"
- ;;
- "Ukrainian") language="uk_UA"
- ;;
- "Chinese") language="zh_CN"
- ;;
- esac
- ynh_app_setting_set $app language $language
- ynh_backup_if_checksum_is_different "$final_path/infcloud/config.js" # Créé un backup du fichier de config si il a été modifié.
- cp ../conf/config.js "$final_path/infcloud/"
- ynh_replace_string "__DOMAIN__" "$domain" "$final_path/infcloud/config.js"
- ynh_replace_string "__PATH__" "${path_url%/}" "$final_path/infcloud/config.js"
- ynh_replace_string "__LANG__" "$language" "$final_path/infcloud/config.js"
- ynh_replace_string "__ADMIN__" "$admin" "$final_path/infcloud/config.js"
- ynh_replace_string "__TIMEZONE__" "$(cat /etc/timezone)" "$final_path/infcloud/config.js"
- ynh_store_file_checksum "$final_path/infcloud/config.js" # Réenregistre la somme de contrôle du fichier de config
+# Overwrite the logging config file only if it's allowed
+if [ $overwrite_logging -eq 1 ]
+then
+ ynh_backup_if_checksum_is_different "/etc/$app/logging" # Créé un backup du fichier de config si il a été modifié.
+ cp ../conf/logging /etc/$app/
+ ynh_store_file_checksum "/etc/$app/logging" # Réenregistre la somme de contrôle du fichier de config
+fi
+
+# Overwrite the config file only if it's allowed
+if [ $overwrite_config -eq 1 ]
+then
+ ynh_backup_if_checksum_is_different "/etc/$app/config" # Créé un backup du fichier de config si il a été modifié.
+ cp ../conf/config /etc/$app/
+ ynh_replace_string "__PATH__" "${path_url%/}" /etc/$app/config
+ ynh_replace_string "__FINALPATH__" "$final_path" /etc/$app/config
+ ynh_store_file_checksum "/etc/$app/config" # Réenregistre la somme de contrôle du fichier de config
+fi
+
+# Overwrite the InfCloud config file only if it's allowed
+if [ $overwrite_infcloud -eq 1 ]
+then
+ if [ $infcloud -eq 1 ]
+ then #Configuration InfCloud
+ # Détermine la langue
+ case "$language" in
+ "Czech") language="cs_CZ"
+ ;;
+ "Danish") language="da_DK"
+ ;;
+ "German") language="de_DE"
+ ;;
+ "English/US") language="en_US"
+ ;;
+ "Spanish") language="es_ES"
+ ;;
+ "French") language="fr_FR"
+ ;;
+ "Italian") language="it_IT"
+ ;;
+ "Japan") language="ja_JP"
+ ;;
+ "Hungarian") language="hu_HU"
+ ;;
+ "Dutch") language="nl_NL"
+ ;;
+ "Slovak") language="sk_SK"
+ ;;
+ "Turkish") language="tr_TR"
+ ;;
+ "Russian") language="ru_RU"
+ ;;
+ "Ukrainian") language="uk_UA"
+ ;;
+ "Chinese") language="zh_CN"
+ ;;
+ esac
+ ynh_app_setting_set $app language $language
+ ynh_backup_if_checksum_is_different "$final_path/infcloud/config.js" # Créé un backup du fichier de config si il a été modifié.
+ cp ../conf/config.js "$final_path/infcloud/"
+ ynh_replace_string "__DOMAIN__" "$domain" "$final_path/infcloud/config.js"
+ ynh_replace_string "__PATH__" "${path_url%/}" "$final_path/infcloud/config.js"
+ ynh_replace_string "__LANG__" "$language" "$final_path/infcloud/config.js"
+ ynh_replace_string "__ADMIN__" "$admin" "$final_path/infcloud/config.js"
+ ynh_replace_string "__TIMEZONE__" "$(cat /etc/timezone)" "$final_path/infcloud/config.js"
+
+ # Optional parameters from config-panel feature
+ if [ -n "$firstdayofweek" ]; then
+ ynh_replace_string "\(^var globalDatepickerFirstDayOfWeek=\).*" "\1$firstdayofweek;" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$activeview" ]; then
+ ynh_replace_string "\(^var globalActiveView=\).*" "\1\'$activeview\';" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$openformmode" ]; then
+ ynh_replace_string "\(^var globalOpenFormMode=\).*" "\1\'$openformmode\';" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$startofbusiness" ]; then
+ ynh_replace_string "\(^var globalCalendarStartOfBusiness=\).*" "\1$startofbusiness;" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$endofbusiness" ]; then
+ ynh_replace_string "\(^var globalCalendarEndOfBusiness=\).*" "\1$endofbusiness;" "$final_path/infcloud/config.js"
+ fi
+ if [ -n "$defaulteventduration" ]; then
+ ynh_replace_string "\(^var globalDefaultEventDuration=\).*" "\1$defaulteventduration;" "$final_path/infcloud/config.js"
+ fi
+ ynh_store_file_checksum "$final_path/infcloud/config.js" # Réenregistre la somme de contrôle du fichier de config
+ fi
fi
#=================================================