diff --git a/conf/config.php b/conf/config.php index 03b79e6..5b47aa4 100644 --- a/conf/config.php +++ b/conf/config.php @@ -7,7 +7,7 @@ /*******************************************************************/ // Data folder (must be writeable by the web server user and absolute) -define('DATA_DIR', __DIR__.DIRECTORY_SEPARATOR.'data'); +define('DATA_DIR', '__DATA_DIR__/'); // Enable/Disable debug define('DEBUG', false); @@ -16,10 +16,10 @@ define('DEBUG', false); define('LOG_DRIVER', 'system'); // Log filename if the log driver is "file" -define('LOG_FILE', DATA_DIR.DIRECTORY_SEPARATOR.'debug.log'); +define('LOG_FILE', '__DATA_DIR__/debug.log'); // Plugins directory -define('PLUGINS_DIR', __DIR__.DIRECTORY_SEPARATOR.'plugins'); +define('PLUGINS_DIR', '__INSTALL_DIR__/plugins'); // Plugins directory URL define('PLUGIN_API_URL', 'https://kanboard.org/plugins.json'); @@ -33,10 +33,10 @@ define('PLUGIN_INSTALLER', true); define('CACHE_DRIVER', 'memory'); // Cache folder to use if cache driver is "file" (must be writeable by the web server user) -define('CACHE_DIR', DATA_DIR.DIRECTORY_SEPARATOR.'cache'); +define('CACHE_DIR', '__DATA_DIR__/cache'); // Folder for uploaded files (must be writeable by the web server user) -define('FILES_DIR', DATA_DIR.DIRECTORY_SEPARATOR.'files'); +define('FILES_DIR', '__DATA_DIR__/files'); // Enable/disable email configuration from the user interface define('MAIL_CONFIGURATION', true); diff --git a/conf/nginx.conf b/conf/nginx.conf index 9bfe759..f95318a 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -13,11 +13,6 @@ location __PATH__/ { location __PATH__/(?:kanboard|config.php|config.default.php) { deny all; } - - # Deny access to the directory data - location __PATH__/data { - deny all; - } try_files $uri $uri/ __PATH__/index.php; location ~ [^/]\.php(/|$) { diff --git a/manifest.toml b/manifest.toml index 86f4b30..4bf86bc 100644 --- a/manifest.toml +++ b/manifest.toml @@ -59,6 +59,9 @@ ram.runtime = "50M" [resources.install_dir] + [resources.data_dir] + subdirs = ["cache", "files"] + [resources.permissions] main.url = "/" ics.url = "/?controller=ICalendarController" diff --git a/scripts/backup b/scripts/backup index 8f2ab35..b3bf5a5 100644 --- a/scripts/backup +++ b/scripts/backup @@ -21,6 +21,13 @@ ynh_print_info --message="Declaring files to be backed up..." ynh_backup --src_path="$install_dir" +#================================================= +# BACKUP THE DATA DIR +#================================================= + +# Only relevant if there is a "data_dir" resource for this app +ynh_backup --src_path="$data_dir" --is_big + #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= diff --git a/scripts/install b/scripts/install index 9bc25ac..44985a7 100644 --- a/scripts/install +++ b/scripts/install @@ -35,7 +35,7 @@ ynh_setup_source --dest_dir="$install_dir" mkdir -p $install_dir/sessions/ -chown -R $app $install_dir/{data,plugins,sessions} +chown -R $app $install_dir/{plugins,sessions} chmod -R 700 $install_dir/sessions chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" diff --git a/scripts/restore b/scripts/restore index a54ac47..6a33e34 100644 --- a/scripts/restore +++ b/scripts/restore @@ -24,6 +24,16 @@ chmod -R 700 $install_dir/sessions chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" +#================================================= +# RESTORE THE DATA DIRECTORY +#================================================= +ynh_script_progression --message="Restoring the data directory..." --weight=1 + +ynh_restore_file --origin_path="$data_dir" --not_mandatory + +# (Same as for install dir) +chown -R $app:www-data "$data_dir" + #================================================= # RESTORE THE MYSQL DATABASE #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 7fde12f..406d11f 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -49,12 +49,12 @@ 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="$install_dir" --keep="data/ config.php" + ynh_setup_source --dest_dir="$install_dir" --keep="config.php" fi mkdir -p $install_dir/sessions/ -chown -R $app $install_dir/{data,plugins,sessions} +chown -R $app $install_dir/{plugins,sessions} chmod -R 700 $install_dir/sessions chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" @@ -77,6 +77,17 @@ ynh_add_config --template="../conf/cron" --destination="/etc/cron.d/$app" chown root: "/etc/cron.d/$app" chmod 644 "/etc/cron.d/$app" +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." --weight=1 + +dir="__DIR__" +ynh_add_config --template="../conf/config.php" --destination="$install_dir/config.php" + +chmod 400 "$install_dir/config.php" +chown $app "$install_dir/config.php" + #================================================= # SPECIFIC UPGRADE #================================================= @@ -87,8 +98,6 @@ ynh_script_progression --message="Upgrading the app..." --weight=2 pushd $install_dir # Launch database migration php$phpversion cli db:migrate --no-interaction --verbose - # Launch plugins migration - #php$phpversion cli plugin:upgrade --no-interaction --verbose popd #=================================================