1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/agendav_ynh.git synced 2024-09-03 20:36:12 +02:00

Manifestv2 port

This commit is contained in:
Salamandar 2023-09-25 11:10:07 +02:00
parent 4df2c9ba15
commit d85220bb27
16 changed files with 197 additions and 555 deletions

View file

@ -1,30 +0,0 @@
;; Test complet
auto_remove=1
; Manifest
domain="domain.tld"
path="/path"
language="en"
; pre-install
sudo yunohost tools update --apps
sudo yunohost domain add baikaldomain.tld
sudo yunohost app install baikal --force -a "domain=baikaldomain.tld&path=/baikal&password=admin"
; Checks
pkg_linter=1
setup_sub_dir=1
setup_root=1
setup_nourl=0
setup_private=1
setup_public=0
upgrade=1
upgrade=1 from_commit=6fb29ddc7e32549b5587405e520d46a717e5582e
backup_restore=1
multi_instance=0
port_already_use=0
change_url=1
;;; Options
Email=
Notification=none
;;; Upgrade options
; commit=6fb29ddc7e32549b5587405e520d46a717e5582e
name= --admin-password ain't needed since like 2 years or so
manifest_arg=domain=DOMAIN&path=PATH&language=en&

View file

@ -1,7 +0,0 @@
SOURCE_URL=https://github.com/agendav/agendav/releases/download/2.6.0/agendav-2.6.0.tar.gz
SOURCE_SUM=af72c07886e30d2443ce9587992f59c78fad5ab4a069e311286e1e7216db895e
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tar.gz
SOURCE_IN_SUBDIR=true
SOURCE_FILENAME=
SOURCE_EXTRACT=true

View file

@ -1,30 +1,30 @@
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
location __PATH__/ { location __PATH__/ {
# Path to source # Path to source
alias __FINALPATH__/web/public/; alias __INSTALL_DIR__/web/public/;
index index.php; index index.php;
# Common parameter to increase upload size limit in conjunction with dedicated php-fpm file # Common parameter to increase upload size limit in conjunction with dedicated php-fpm file
#client_max_body_size 50M; #client_max_body_size 50M;
try_files $uri __PATH__/__PATH__/index.php$is_args$args; try_files $uri __PATH__/__PATH__/index.php$is_args$args;
location ~ ^__PATH__/index\.php(/|$) { location ~ ^__PATH__/index\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock;
fastcgi_index index.php; fastcgi_index index.php;
include fastcgi_params; include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user; fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_FILENAME $request_filename;
} }
location ~ \.php$ { location ~ \.php$ {
return 404; return 404;
} }
# Include SSOWAT user panel. # Include SSOWAT user panel.
include conf.d/yunohost_panel.conf.inc; include conf.d/yunohost_panel.conf.inc;
} }

View file

@ -358,7 +358,7 @@ request_terminate_timeout = 1d
; Chdir to this directory at the start. ; Chdir to this directory at the start.
; Note: relative path can be used. ; Note: relative path can be used.
; Default Value: current directory or / when chroot ; Default Value: current directory or / when chroot
chdir = __FINALPATH__ chdir = __INSTALL_DIR__
; Redirect worker stdout and stderr into main error log. If not set, stdout and ; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs. ; stderr will be redirected to /dev/null according to FastCGI specs.

View file

@ -23,11 +23,11 @@ $app['proxies'] = [];
// Database settings // Database settings
$app['db.options'] = [ $app['db.options'] = [
'dbname' => '__DB_NAME__', 'dbname' => '__DB_NAME__',
'user' => '__DB_USER__', 'user' => '__DB_USER__',
'password' => '__DB_PWD__', 'password' => '__DB_PWD__',
'host' => 'localhost', 'host' => 'localhost',
'driver' => 'pdo_mysql' 'driver' => 'pdo_mysql'
]; ];
// CSRF secret // CSRF secret
@ -160,7 +160,7 @@ $app['calendar.colors'] = [
* Local configuration * Local configuration
*/ */
$local_config = '__FINALPATH__/web/config/local.php'; $local_config = '__INSTALL_DIR__/web/config/local.php';
if (file_exists($local_config)) { if (file_exists($local_config)) {
require $local_config; require $local_config;
} }

View file

View file

@ -1,63 +0,0 @@
{
"name": "AgenDAV",
"id": "agendav",
"packaging_format": 1,
"description": {
"en": "CalDAV web client",
"fr": "Client web pour CalDAV"
},
"version": "2.6.0~ynh2",
"url": "http://agendav.org",
"upstream": {
"license": "GPL-3.0",
"website": "http://agendav.org",
"demo": "https://demo.yunohost.org/agendav/",
"admindoc": "https://agendav.readthedocs.io/",
"code": "https://github.com/agendav/agendav"
},
"license": "GPL-3.0",
"maintainer": {
"name": "",
"email": ""
},
"requirements": {
"yunohost": ">= 4.3.0"
},
"multi_instance": false,
"services": [
"nginx",
"php7.3-fpm",
"mysql"
],
"arguments": {
"install": [
{
"name": "domain",
"type": "domain"
},
{
"name": "path",
"type": "path",
"example": "/agendav",
"default": "/agendav"
},
{
"name": "language",
"type": "string",
"ask": {
"en": "Choose the application language",
"fr": "Choisissez la langue de l'application"
},
"choices": [
"de_DE",
"en",
"es_ES",
"fr_FR",
"it_IT",
"nl_NL"
],
"default": "en"
}
]
}
}

79
manifest.toml Normal file
View file

@ -0,0 +1,79 @@
#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json
packaging_format = 2
id = "agendav"
name = "AgenDAV"
description.en = "CalDAV web client"
description.fr = "Client web pour CalDAV"
version = "2.6.0~ynh3"
maintainers = []
[upstream]
license = "GPL-3.0"
code = "https://github.com/agendav/agendav"
demo = "https://demo.yunohost.org/agendav"
admindoc = "https://agendav.readthedocs.io"
# fund = "???"
[integration]
yunohost = ">= 11.1.0"
architectures = "all"
multi_instance = false
ldap = true
sso = true
disk = "10M"
ram.build = "50M"
ram.runtime = "10M"
[install]
[install.domain]
type = "domain"
[install.path]
type = "path"
default = "/agendav"
[install.init_main_permission]
help.en = "A public server means that everybody is able to access to the main page of the forge, on the public profile of the user and on the public repository. But you still can limit the access to each repository if you set it as private. Note that to be able to use the remote Git command (clone, pull, push) with HTTP and to use the API by (by example with a smartphone), you need to set this application as public."
help.fr = "Un serveur public signifie que tout le monde peut accéder à la page principale de la forge, au profil public des utilisateurs et aux dépôts publics. Vous pouvez également définir les dépôts comme étant privés. Notez que pour pouvoir utiliser les commandes Git distantes (clone, pull, push) avec HTTP et pour pouvoir utiliser l'API (par exemple avec un smartphone), vous devez paramétrer cette application comme étant publique."
type = "group"
default = "all_users"
[install.language]
ask.en = "Choose the application language"
ask.fr = "Choisissez la langue de l'application"
type = "select"
choices = ["de_DE", "en", "es_ES", "fr_FR", "it_IT", "nl_NL"]
default = "en"
[resources]
[resources.sources.main]
url = "https://github.com/agendav/agendav/releases/download/2.6.0/agendav-2.6.0.tar.gz"
sha256 = "af72c07886e30d2443ce9587992f59c78fad5ab4a069e311286e1e7216db895e"
[resources.system_user]
[resources.install_dir]
[resources.permissions]
main.url = "/"
[resources.apt]
packages = [
"php7.4-ctype",
"php7.4-curl",
"php7.4-mbstring",
"php7.4-mcrypt",
"php7.4-tokenizer",
"php7.4-xml",
"php7.4-xmlreader",
"php7.4-xmlwriter",
"php7.4-mysql",
"mariadb-server"
]
[resources.database]
type = "mysql"

View file

@ -4,17 +4,29 @@
# COMMON VARIABLES # COMMON VARIABLES
#================================================= #=================================================
YNH_PHP_VERSION="7.4"
php_dependencies="php$YNH_PHP_VERSION-ctype php$YNH_PHP_VERSION-curl php$YNH_PHP_VERSION-mbstring php$YNH_PHP_VERSION-mcrypt php$YNH_PHP_VERSION-tokenizer php$YNH_PHP_VERSION-xml php$YNH_PHP_VERSION-xmlreader php$YNH_PHP_VERSION-xmlwriter php$YNH_PHP_VERSION-mysql"
# dependencies used by the app (must be on a single line)
pkg_dependencies="$php_dependencies mariadb-server"
#================================================= #=================================================
# PERSONAL HELPERS # PERSONAL HELPERS
#================================================= #=================================================
_ynh_agendav_find_caldav_app() {
mapfile -t all_apps < <(yunohost app list --output-as json --quiet | jq -r ".apps[].id")
mapfile -t installed_baikal < <(printf -- '%s\n' "${all_apps[@]}" | grep baikal)
mapfile -t installed_radicale < <(printf -- '%s\n' "${all_apps[@]}" | grep radicale)
if (( "${#installed_baikal[@]}" > 0 )); then
caldav_app="${installed_baikal[0]}"
caldav_baseurl="/cal.php/"
elif (( "${#installed_radicale[@]}" > 0 )); then
caldav_app="${installed_baikal[0]}"
caldav_baseurl=/
else
ynh_die --message="Please install Baïkal or Radicale before AgenDAV."
fi
echo -e "$caldav_app $caldav_baseurl"
}
#================================================= #=================================================
# EXPERIMENTAL HELPERS # EXPERIMENTAL HELPERS
#================================================= #=================================================

View file

@ -10,28 +10,6 @@
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info --message="Loading installation settings..."
app=$YNH_APP_INSTANCE_NAME
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
domain=$(ynh_app_setting_get --app=$app --key=domain)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
#================================================= #=================================================
# DECLARE DATA AND CONF FILES TO BACKUP # DECLARE DATA AND CONF FILES TO BACKUP
#================================================= #=================================================
@ -42,12 +20,12 @@ ynh_print_info --message="Declaring files to be backed up..."
#================================================= #=================================================
# Clean cache files before backup # Clean cache files before backup
ynh_secure_remove --file=${final_path}/web/var/cache/profiler ynh_secure_remove --file="$install_dir/web/var/cache/profiler"
ynh_secure_remove --file=${final_path}/web/var/cache/twig ynh_secure_remove --file="$install_dir/web/var/cache/twig"
mkdir -p ${final_path}/web/var/cache/{profiler,twig} mkdir -p "$install_dir/web/var/cache/"{profiler,twig}
chown -R $app ${final_path}/web/var/cache/{profiler,twig} chown -R "$app" "$install_dir/web/var/cache/"{profiler,twig}
ynh_backup --src_path="$final_path" ynh_backup --src_path="$install_dir"
#================================================= #=================================================
# BACKUP THE NGINX CONFIGURATION # BACKUP THE NGINX CONFIGURATION

View file

@ -9,42 +9,6 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# 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
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
# Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get --app=$app --key=final_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
#================================================= #=================================================
# STANDARD MODIFICATIONS # STANDARD MODIFICATIONS
#================================================= #=================================================
@ -52,38 +16,7 @@ fi
#================================================= #=================================================
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2 ynh_script_progression --message="Updating NGINX web server configuration..." --weight=2
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf ynh_change_url_nginx_config
# 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 --file="$nginx_conf_path"
# Set global variables for NGINX helper
domain="$old_domain"
path_url="$new_path"
# Create a dedicated NGINX config
ynh_add_nginx_config
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 --file="$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
# Store file checksum for the new config file location
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
fi
#=================================================
# GENERIC FINALISATION
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT

View file

@ -9,108 +9,27 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url=$YNH_APP_ARG_PATH
language=$YNH_APP_ARG_LANGUAGE
app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters..." --weight=1
final_path=/var/www/$app
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
# Register (book) web path
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
#================================================= #=================================================
# GET THE CALDAV APP # GET THE CALDAV APP
#================================================= #=================================================
agendav_app_check_installation() { caldav_info=$(_ynh_agendav_find_caldav_app)
echo $(yunohost app list | grep "id: $1") caldav_app="$(cut -d " " -f 1 <<< "$caldav_info")"
} caldav_baseurl="$(cut -d " " -f 2 <<< "$caldav_info")"
# Check whether Baïkal or Radicale is installed
baikal_install=$(agendav_app_check_installation "baikal")
radicale_install=$(agendav_app_check_installation "radicale")
if [ -n "$baikal_install" ]
then
caldav_app=baikal
caldav_baseurl="/cal.php/"
elif [ -n "$radicale_install" ]
then
caldav_app=radicale
caldav_baseurl=/
else
ynh_die --message="Please install Baïkal or Radicale before AgenDAV."
fi
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_script_progression --message="Storing installation settings..." --weight=2
ynh_app_setting_set --app=$app --key=domain --value=$domain
ynh_app_setting_set --app=$app --key=path --value=$path_url
ynh_app_setting_set --app=$app --key=language --value=$language
#================================================= #=================================================
# STANDARD MODIFICATIONS # STANDARD MODIFICATIONS
#=================================================
# INSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Installing dependencies..." --weight=1
ynh_install_app_dependencies $pkg_dependencies
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=2
# Create a system user
ynh_system_user_create --username=$app --home_dir="$final_path"
#=================================================
# CREATE A MYSQL DATABASE
#=================================================
ynh_script_progression --message="Creating a MySQL database..." --weight=1
db_name=$(ynh_sanitize_dbid --db_name=$app)
db_user=$db_name
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
#================================================= #=================================================
ynh_script_progression --message="Setting up source files..." --weight=4 ynh_script_progression --message="Setting up source files..." --weight=4
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" ynh_setup_source --dest_dir="$install_dir"
chmod 750 "$final_path" chmod 750 "$install_dir"
chmod -R o-rwx "$final_path" chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$final_path" chown -R "$app:www-data" "$install_dir"
#================================================= #=================================================
# PHP-FPM CONFIGURATION # PHP-FPM CONFIGURATION
@ -127,7 +46,6 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=3
# Create a dedicated NGINX config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
#================================================= #=================================================
# SPECIFIC SETUP # SPECIFIC SETUP
@ -139,7 +57,7 @@ ynh_script_progression --message="Adding a configuration file..." --weight=2
# Generate random encryption key # Generate random encryption key
encryptkey=$(ynh_string_random --length=24) encryptkey=$(ynh_string_random --length=24)
ynh_app_setting_set --app=$app --key=encryptkey --value="$encryptkey" ynh_app_setting_set --app="$app" --key=encryptkey --value="$encryptkey"
# Copy and set AgenDAV configuration # Copy and set AgenDAV configuration
timezone=$(cat /etc/timezone) timezone=$(cat /etc/timezone)
@ -149,7 +67,7 @@ caldav_path=$(ynh_app_setting_get --app=$caldav_app --key=path)
caldav_url="https://${caldav_domain}${caldav_path%/}" caldav_url="https://${caldav_domain}${caldav_path%/}"
caldav_baseurl="${caldav_url}${caldav_baseurl}" caldav_baseurl="${caldav_url}${caldav_baseurl}"
ynh_add_config --template="../conf/settings.php" --destination="${final_path}/web/config/settings.php" ynh_add_config --template="../conf/settings.php" --destination="${install_dir}/web/config/settings.php"
#================================================= #=================================================
# RUN DATABASE MIGRATIONS (INCLUDES INITIALIZATION) # RUN DATABASE MIGRATIONS (INCLUDES INITIALIZATION)
@ -157,19 +75,19 @@ ynh_add_config --template="../conf/settings.php" --destination="${final_path}/we
ynh_script_progression --message="Initialising AgenDAV..." --weight=3 ynh_script_progression --message="Initialising AgenDAV..." --weight=3
( (
cd $final_path cd "$install_dir" || ynh_die
php${phpversion} agendavcli migrations:migrate --no-interaction "php$phpversion" agendavcli migrations:migrate --no-interaction
) )
chown -R $app:www-data $final_path chown -R "$app:www-data" "$install_dir"
# Only agendav user should write here # Only agendav user should write here
chown -R $app ${final_path}/web/var/cache/{profiler,twig} chown -R "$app" "$install_dir/web/var/cache/"{profiler,twig}
# The agendav user should read here, but does not need to write # The agendav user should read here, but does not need to write
# Other users should not be able to read as it stores passwords. # Other users should not be able to read as it stores passwords.
chown -R $app:www-data ${final_path}/web/config/ chown -R "$app:www-data" "$install_dir/web/config/"
chmod -R 750 ${final_path}/web/config/ chmod -R 750 "$install_dir/web/config/"
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
@ -178,19 +96,12 @@ chmod -R 750 ${final_path}/web/config/
#================================================= #=================================================
ynh_script_progression --message="Configuring log rotation..." --weight=1 ynh_script_progression --message="Configuring log rotation..." --weight=1
mkdir -p /var/log/$app mkdir -p "/var/log/$app"
chown -R $app: /var/log/$app chown -R "$app:" "/var/log/$app"
# Use logrotate to manage application logfile(s) # Use logrotate to manage application logfile(s)
ynh_use_logrotate ynh_use_logrotate
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================

View file

@ -9,18 +9,6 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
#================================================= #=================================================
# REMOVE LOGROTATE CONFIGURATION # REMOVE LOGROTATE CONFIGURATION
#================================================= #=================================================
@ -29,22 +17,6 @@ ynh_script_progression --message="Removing logrotate configuration..." --weight=
# Remove the app-specific logrotate config # Remove the app-specific logrotate config
ynh_remove_logrotate ynh_remove_logrotate
#=================================================
# REMOVE THE MYSQL DATABASE
#=================================================
ynh_script_progression --message="Removing the MySQL database..." --weight=1
# Remove a database if it exists, along with the associated user
ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_script_progression --message="Removing app main directory..." --weight=2
# Remove the app directory securely
ynh_secure_remove --file="$final_path"
#================================================= #=================================================
# REMOVE NGINX CONFIGURATION # REMOVE NGINX CONFIGURATION
#================================================= #=================================================
@ -61,14 +33,6 @@ ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=2
# Remove the dedicated PHP-FPM config # Remove the dedicated PHP-FPM config
ynh_remove_fpm_config ynh_remove_fpm_config
#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_script_progression --message="Removing dependencies..." --weight=1
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
#================================================= #=================================================
# SPECIFIC REMOVE # SPECIFIC REMOVE
#================================================= #=================================================
@ -78,16 +42,6 @@ ynh_script_progression --message="Removing various files..." --weight=1
ynh_secure_remove --file="/var/log/$app" ynh_secure_remove --file="/var/log/$app"
#=================================================
# GENERIC FINALIZATION
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_script_progression --message="Removing the dedicated system user..." --weight=1
# Delete a system user
ynh_system_user_delete --username=$app
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================

View file

@ -10,79 +10,29 @@
source ../settings/scripts/_common.sh source ../settings/scripts/_common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
true
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=2
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
ynh_script_progression --message="Validating restoration parameters..." --weight=1
test ! -d $final_path \
|| ynh_die --message="There is already a directory: $final_path "
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_script_progression --message="Recreating the dedicated system user..." --weight=2
# Create the dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# RESTORE THE APP MAIN DIR # RESTORE THE APP MAIN DIR
#================================================= #=================================================
ynh_script_progression --message="Restoring the app main directory..." --weight=1 ynh_script_progression --message="Restoring the app main directory..." --weight=1
ynh_restore_file --origin_path="$final_path" ynh_restore_file --origin_path="$install_dir"
chmod 750 "$final_path" chmod 750 "$install_dir"
chmod -R o-rwx "$final_path" chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$final_path" chown -R "$app:www-data" "$install_dir"
chown -R $app:www-data $final_path chown -R "$app:www-data" "$install_dir"
# Only agendav user should write here # Only agendav user should write here
chown -R $app ${final_path}/web/var/cache/{profiler,twig} chown -R "$app" "$install_dir/web/var/cache/"{profiler,twig}
# The agendav user should read here, but does not need to write # The agendav user should read here, but does not need to write
# Other users should not be able to read as it stores passwords. # Other users should not be able to read as it stores passwords.
chown -R $app:www-data ${final_path}/web/config/ chown -R "$app:www-data" "$install_dir/web/config/"
chmod -R 750 ${final_path}/web/config/ chmod -R 750 "$install_dir/web/config/"
#================================================= #=================================================
# SPECIFIC RESTORATION # SPECIFIC RESTORATION
#=================================================
# REINSTALL DEPENDENCIES
#=================================================
ynh_script_progression --message="Reinstalling dependencies..." --weight=1
# Define and install dependencies
ynh_install_app_dependencies $pkg_dependencies
#================================================= #=================================================
# RESTORE THE PHP-FPM CONFIGURATION # RESTORE THE PHP-FPM CONFIGURATION
#================================================= #=================================================
@ -102,17 +52,15 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
#================================================= #=================================================
ynh_script_progression --message="Restoring the MySQL database..." --weight=2 ynh_script_progression --message="Restoring the MySQL database..." --weight=2
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) ynh_mysql_connect_as --user="$db_user" --password="$db_pwd" --database="$db_name" < ./db.sql
ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql
#================================================= #=================================================
# RESTORE THE LOGROTATE CONFIGURATION # RESTORE THE LOGROTATE CONFIGURATION
#================================================= #=================================================
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
mkdir -p /var/log/$app mkdir -p "/var/log/$app"
chown -R $app: /var/log/$app chown -R "$app:" "/var/log/$app"
ynh_restore_file --origin_path="/etc/logrotate.d/$app" ynh_restore_file --origin_path="/etc/logrotate.d/$app"
@ -123,7 +71,7 @@ ynh_restore_file --origin_path="/etc/logrotate.d/$app"
#================================================= #=================================================
ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=2 ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=2
ynh_systemd_action --service_name=php$phpversion-fpm --action=reload ynh_systemd_action --service_name="php$phpversion-fpm" --action=reload
ynh_systemd_action --service_name=nginx --action=reload ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================

View file

@ -9,22 +9,6 @@
source _common.sh source _common.sh
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_script_progression --message="Loading installation settings..." --weight=1
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get --app=$app --key=domain)
path_url=$(ynh_app_setting_get --app=$app --key=path)
language=$(ynh_app_setting_get --app=$app --key=language)
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
db_user=$db_name
db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd)
phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
#================================================= #=================================================
# CHECK VERSION # CHECK VERSION
#================================================= #=================================================
@ -32,20 +16,6 @@ ynh_script_progression --message="Checking version..." --weight=1
upgrade_type=$(ynh_check_app_version_changed) upgrade_type=$(ynh_check_app_version_changed)
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=9
# Backup the current version of the app
ynh_backup_before_upgrade
ynh_clean_setup () {
# Restore it if the upgrade fails
ynh_restore_upgradebackup
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
#================================================= #=================================================
# STANDARD UPGRADE STEPS # STANDARD UPGRADE STEPS
#================================================= #=================================================
@ -53,55 +23,13 @@ ynh_abort_if_errors
#================================================= #=================================================
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
# 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
fi
# 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
fi
# Cleaning legacy permissions
if ynh_legacy_permissions_exists; then
ynh_legacy_permissions_delete_all
ynh_app_setting_delete --app=$app --key=is_public
fi
#================================================= #=================================================
# GET THE CALDAV APP # GET THE CALDAV APP
#================================================= #=================================================
agendav_app_check_installation() { caldav_info=$(_ynh_agendav_find_caldav_app)
echo $(yunohost app list | grep "id: $1") caldav_app="$(cut -d " " -f 1 <<< "$caldav_info")"
} caldav_baseurl="$(cut -d " " -f 2 <<< "$caldav_info")"
# Check whether Baïkal or Radicale is installed
baikal_install=$(agendav_app_check_installation "baikal")
radicale_install=$(agendav_app_check_installation "radicale")
if [ -n "$baikal_install" ]
then
caldav_app=baikal
caldav_baseurl="/cal.php/"
elif [ -n "$radicale_install" ]
then
caldav_app=radicale
caldav_baseurl=/
else
ynh_die --message="Please install Baïkal or Radicale before AgenDAV."
fi
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
# Create a dedicated user (if not existing)
ynh_system_user_create --username=$app --home_dir="$final_path"
#================================================= #=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE # DOWNLOAD, CHECK AND UNPACK SOURCE
@ -109,22 +37,15 @@ ynh_system_user_create --username=$app --home_dir="$final_path"
if [ "$upgrade_type" == "UPGRADE_APP" ] if [ "$upgrade_type" == "UPGRADE_APP" ]
then then
ynh_script_progression --message="Upgrading source files..." --weight=1 ynh_script_progression --message="Upgrading source files..." --weight=1
# Download, check integrity, uncompress and patch the source from app.src # Download, check integrity, uncompress and patch the source from app.src
ynh_setup_source --dest_dir="$final_path" --keep="web/config/settings.php" ynh_setup_source --dest_dir="$install_dir" --keep="web/config/settings.php"
fi fi
chmod 750 "$final_path" chmod 750 "$install_dir"
chmod -R o-rwx "$final_path" chmod -R o-rwx "$install_dir"
chown -R $app:www-data "$final_path" chown -R "$app:www-data" "$install_dir"
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_script_progression --message="Upgrading dependencies..." --weight=1
ynh_install_app_dependencies $pkg_dependencies
#================================================= #=================================================
# PHP-FPM CONFIGURATION # PHP-FPM CONFIGURATION
@ -141,7 +62,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." -
# Create a dedicated NGINX config # Create a dedicated NGINX config
ynh_add_nginx_config ynh_add_nginx_config
phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
#================================================= #=================================================
# SPECIFIC UPGRADE # SPECIFIC UPGRADE
@ -150,18 +70,15 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion)
#================================================= #=================================================
ynh_script_progression --message="Updating a configuration file..." --weight=2 ynh_script_progression --message="Updating a configuration file..." --weight=2
# Generate random encryption key
encryptkey=$(ynh_app_setting_get --app=$app --key=encryptkey)
# Copy and set AgenDAV configuration # Copy and set AgenDAV configuration
timezone=$(cat /etc/timezone) timezone=$(cat /etc/timezone)
caldav_domain=$(ynh_app_setting_get --app=$caldav_app --key=domain) caldav_domain=$(ynh_app_setting_get --app="$caldav_app" --key=domain)
caldav_path=$(ynh_app_setting_get --app=$caldav_app --key=path) caldav_path=$(ynh_app_setting_get --app="$caldav_app" --key=path)
caldav_url="https://${caldav_domain}${caldav_path%/}" caldav_url="https://${caldav_domain}${caldav_path%/}"
caldav_baseurl="${caldav_url}${caldav_baseurl}" caldav_baseurl="${caldav_url}${caldav_baseurl}"
ynh_add_config --template="../conf/settings.php" --destination="${final_path}/web/config/settings.php" ynh_add_config --template="../conf/settings.php" --destination="${install_dir}/web/config/settings.php"
#================================================= #=================================================
# RUN DATABASE MIGRATIONS (INCLUDES INITIALIZATION) # RUN DATABASE MIGRATIONS (INCLUDES INITIALIZATION)
@ -169,19 +86,19 @@ ynh_add_config --template="../conf/settings.php" --destination="${final_path}/we
ynh_script_progression --message="Upgrading AgenDAV..." --weight=1 ynh_script_progression --message="Upgrading AgenDAV..." --weight=1
( (
cd $final_path cd "$install_dir" || ynh_die
php${phpversion} agendavcli migrations:migrate --no-interaction "php$phpversion" agendavcli migrations:migrate --no-interaction
) )
chown -R $app:www-data $final_path chown -R "$app:www-data" "$install_dir"
# Only agendav user should write here # Only agendav user should write here
chown -R $app ${final_path}/web/var/cache/{profiler,twig} chown -R "$app" "$install_dir/web/var/cache/"{profiler,twig}
# The agendav user should read here, but does not need to write # The agendav user should read here, but does not need to write
# Other users should not be able to read as it stores passwords. # Other users should not be able to read as it stores passwords.
chown -R $app:www-data ${final_path}/web/config/ chown -R "$app:www-data" "$install_dir/web/config/"
chmod -R 750 ${final_path}/web/config/ chmod -R 750 "$install_dir/web/config/"
#================================================= #=================================================
# GENERIC FINALIZATION # GENERIC FINALIZATION
@ -190,19 +107,12 @@ chmod -R 750 ${final_path}/web/config/
#================================================= #=================================================
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=2 ynh_script_progression --message="Upgrading logrotate configuration..." --weight=2
mkdir -p /var/log/$app mkdir -p "/var/log/$app"
chown -R $app: /var/log/$app chown -R "$app:" "/var/log/$app"
# Use logrotate to manage application logfile(s) # Use logrotate to manage application logfile(s)
ynh_use_logrotate --non-append ynh_use_logrotate --non-append
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
#================================================= #=================================================
# END OF SCRIPT # END OF SCRIPT
#================================================= #=================================================

17
tests.toml Normal file
View file

@ -0,0 +1,17 @@
#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/tests.v1.schema.json
test_format = 1.0
[default]
preinstall = """
sudo yunohost tools update apps
sudo yunohost domain add baikaldomain.tld
sudo yunohost app install baikal --force -a "domain=baikaldomain.tld&path=/baikal&password=admin"
"""
# -------------------------------
# Commits to test upgrade from
# -------------------------------
test_upgrade_from.6fb29dd.name = "--admin-password ain't needed since like 2 years or so"