1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/sogo_ynh.git synced 2024-09-03 20:26:07 +02:00

Add message and use getops for helper's args

This commit is contained in:
Josué Tille 2019-06-07 23:09:30 +02:00
parent 33ff5e69b8
commit 6127c7635b
No known key found for this signature in database
GPG key ID: 716A6C99B04194EF
10 changed files with 157 additions and 106 deletions

View file

@ -62,9 +62,8 @@ LDAP and HTTP auth are supported.
### Supported architectures
* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/sogo%20(Community).svg)](https://ci-apps.yunohost.org/ci/apps/sogo/)
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/sogo%20(Community).svg)](https://ci-apps-arm.yunohost.org/ci/apps/sogo/)
* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/jenkins/job/sogo%20(Community).svg)](https://ci-stretch.nohost.me/jenkins/job/sogo/)
* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/sog%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/sogo/)
* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/sogo%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/sogo/)
<!--Limitations
------------

View file

@ -24,7 +24,7 @@
"mysql"
],
"requirements": {
"yunohost": ">= 2.7.14"
"yunohost": ">= 3.5.2.2"
},
"arguments": {
"install" : [
@ -53,6 +53,10 @@
"en": "Is it a public site ? To be able to use caldav and cardav you need to set as public.",
"fr": "Est-ce un site public ? Pour pouvoir utiliser caldav et cardav vous devz mettre en public."
},
"help": {
"en": "If it's not public, everybody which want to access to any page of SOGo need to be authenticated on the SSO. On the public mode anybody can access to the authentication page. The shared calendar will be also accessible by anybody who has this link",
"fr": "Si n'est pas publique, n'importe qui veux accéder à n'importe quelle page de SOGo doit être authentifié dans le SSO. Dans le mode publique n'importe qui peut accéder à la page d'authentification de SOGo. Les agenda partagé seront aussi accessible par n'import qui qui à ce liens."
},
"default": true
}
]

View file

@ -18,37 +18,37 @@ config_sogo() {
# Avoid if the directory don't exist
mkdir -p /etc/$app
ynh_backup_if_checksum_is_different /etc/$app/sogo.conf
ynh_backup_if_checksum_is_different --file /etc/$app/sogo.conf
cp ../conf/sogo.conf /etc/$app/sogo.conf
ynh_replace_string "__APP__" "$app" /etc/$app/sogo.conf
ynh_replace_string "__ADMINUSER__" "$admin" /etc/$app/sogo.conf
ynh_replace_string "__DBUSER__" "$db_user" /etc/$app/sogo.conf
ynh_replace_string "__DBPASS__" "$db_pwd" /etc/$app/sogo.conf
ynh_replace_string "__PORT__" "$port" /etc/$app/sogo.conf
ynh_replace_string "__SMTP_PORT__" "$smtp_port" /etc/$app/sogo.conf
ynh_replace_string --match_string __APP__ --replace_string $app --target_file /etc/$app/sogo.conf
ynh_replace_string --match_string __ADMINUSER__ --replace_string $admin --target_file /etc/$app/sogo.conf
ynh_replace_string --match_string __DBUSER__ --replace_string $db_user --target_file /etc/$app/sogo.conf
ynh_replace_string --match_string __DBPASS__ --replace_string $db_pwd --target_file /etc/$app/sogo.conf
ynh_replace_string --match_string __PORT__ --replace_string $port --target_file /etc/$app/sogo.conf
ynh_replace_string --match_string __SMTP_PORT__ --replace_string $smtp_port --target_file /etc/$app/sogo.conf
ynh_store_file_checksum /etc/$app/sogo.conf
ynh_store_file_checksum --file /etc/$app/sogo.conf
}
config_stunnel() {
ynh_backup_if_checksum_is_different /etc/stunnel/$app.conf
ynh_backup_if_checksum_is_different --file /etc/stunnel/$app.conf
cp ../conf/stunnel.conf /etc/stunnel/$app.conf
ynh_replace_string "__SMTP_PORT__" "$smtp_port" /etc/stunnel/$app.conf
ynh_replace_string --match_string __SMTP_PORT__ --replace_string $smtp_port --target_file /etc/stunnel/$app.conf
ynh_store_file_checksum /etc/stunnel/$app.conf
ynh_store_file_checksum --file /etc/stunnel/$app.conf
# Enable stunnel at startup
ynh_replace_string "ENABLED=0" "ENABLED=1" /etc/default/stunnel4
ynh_replace_string --match_string "ENABLED=0" --replace_string "ENABLED=1" --target_file /etc/default/stunnel4
}
config_cron() {
ynh_backup_if_checksum_is_different /etc/cron.d/$app
ynh_backup_if_checksum_is_different --file /etc/cron.d/$app
cp ../conf/cron /etc/cron.d/$app
ynh_replace_string "__APP__" "$app" /etc/cron.d/$app
ynh_store_file_checksum /etc/cron.d/$app
ynh_replace_string --match_string __APP__ --replace_string $app --target_file /etc/cron.d/$app
ynh_store_file_checksum --file /etc/cron.d/$app
systemctl restart cron
}
@ -83,7 +83,7 @@ location /.well-known/carddav {
}
" >> "$nginx_config_path"
ynh_store_file_checksum "$nginx_config_path"
ynh_store_file_checksum --file "$nginx_config_path"
systemctl reload nginx
}

View file

@ -14,27 +14,36 @@ ynh_abort_if_errors
source ../settings/scripts/experimental_helper.sh
source ../settings/scripts/_common.sh
domain=$(ynh_app_setting_get $app domain)
db_name=$(ynh_app_setting_get $app db_name)
ynh_script_progression --message="Loading installation settings..."
# retrieve useful param
domain=$(ynh_app_setting_get --app $app --key domain)
db_name=$(ynh_app_setting_get --app $app --key db_name)
#=================================================
# STANDARD BACKUP STEPS
#=================================================
ynh_script_progression --message="Backing up configuration..."
# BACKUP THE NGINX CONFIGURATION
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_backup --src_path "/etc/nginx/conf.d/$domain.d/$app.conf"
# Backup SOGo config
ynh_backup "/etc/$app"
ynh_backup --src_path "/etc/$app"
# Backup stunnel config
ynh_backup "/etc/stunnel/$app.conf"
# Backup Logs
ynh_backup "/var/log/$app"
ynh_backup --src_path "/etc/stunnel/$app.conf"
# Backup Cron
ynh_backup "/etc/cron.d/$app"
ynh_backup --src_path "/etc/cron.d/$app"
# Backup Logs
ynh_script_progression --message="Backing up logs"
ynh_backup --src_path "/var/log/$app"
# BACKUP THE MYSQL DATABASE
ynh_script_progression --message="Backing up database"
ynh_mysql_dump_db "$db_name" > db.sql
ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last

View file

@ -14,36 +14,42 @@ ynh_abort_if_errors
source ./experimental_helper.sh
source ./_common.sh
ynh_script_progression --message="Loading installation settings..."
# RETRIEVE ARGUMENTS
old_domain=$YNH_APP_OLD_DOMAIN
domain=$YNH_APP_NEW_DOMAIN
path_url=$(ynh_normalize_url_path ${YNH_APP_NEW_PATH:-'/'})
path_url=$(ynh_normalize_url_path --path_url $YNH_APP_NEW_PATH)
app=$YNH_APP_INSTANCE_NAME
port=$(ynh_app_setting_get $app web_port)
admin=$(ynh_app_setting_get $app admin)
final_path=$(ynh_app_setting_get $app final_path)
port=$(ynh_app_setting_get --app $app --key web_port)
admin=$(ynh_app_setting_get --app $app --key admin)
final_path=$(ynh_app_setting_get --app $app --key final_path)
# Check if the new path stay /SOGo if not exit
if [[ $path_url != "/SOGo" ]]
then
ynh_die "You can't use an other path than '/SOGo'"
ynh_die --message "You can't use an other path than '/SOGo'"
fi
#=================================================
# STANDARD MODIFICATIONS
#=================================================
ynh_script_progression --message="Updating nginx configuration..."
# MODIFY URL IN NGINX CONF
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
# Change the domain for nginx
# Delete file checksum for the old conf file location
ynh_delete_file_checksum "$nginx_conf_path"
ynh_delete_file_checksum --file "$nginx_conf_path"
mv $nginx_conf_path /etc/nginx/conf.d/$domain.d/$app.conf
# Store file checksum for the new config file location
ynh_store_file_checksum "/etc/nginx/conf.d/$domain.d/$app.conf"
ynh_store_file_checksum --file "/etc/nginx/conf.d/$domain.d/$app.conf"
#Configure Nginx
config_nginx
ynh_script_progression --message="Change of URL completed for $app" --last

View file

@ -1,13 +0,0 @@
#!/bin/bash
# ============= FUTURE YUNOHOST HELPER =============
# Delete a file checksum from the app settings
#
# $app should be defined when calling this helper
#
# usage: ynh_remove_file_checksum file
# | arg: file - The file for which the checksum will be deleted
ynh_delete_file_checksum () {
local checksum_setting_name=checksum_${1//[\/ ]/_} # Replace all '/' and ' ' by '_'
ynh_app_setting_delete $app $checksum_setting_name
}

View file

@ -14,6 +14,8 @@ ynh_abort_if_errors
source ./experimental_helper.sh
source ./_common.sh
ynh_script_progression --message="Validating installation parameters..."
# RETRIEVE ARGUMENTS FROM THE MANIFEST
domain=$YNH_APP_ARG_DOMAIN
admin=$YNH_APP_ARG_ADMIN
@ -23,35 +25,38 @@ is_public=$YNH_APP_ARG_IS_PUBLIC
path_url="/SOGo"
# final_path="/opt/yunohost/$app"
# STORE SETTINGS FROM MANIFEST
ynh_app_setting_set $app admin $admin
ynh_app_setting_set $app is_public $is_public
# Check web path availability
ynh_webpath_available $domain $path_url || ynh_die "$domain$path_url is not available, please use an other domain or path."
# Register (book) web path
ynh_webpath_register $app $domain $path_url
ynh_webpath_register --app $app --domain $domain --path_url $path_url
# Find a port for SOGo
port=$(ynh_find_port 20000)
ynh_app_setting_set $app web_port $port
smtp_port=$(ynh_find_port $((port+1)))
ynh_app_setting_set $app smtp_port $smtp_port
ynh_script_progression --message="Finding available ports..."
port=$(ynh_find_port --port 20000)
smtp_port=$(ynh_find_port --port $((port+1)))
# STORE SETTINGS FROM MANIFEST
ynh_script_progression --message="Storing installation settings..."
ynh_app_setting_set --app $app --key admin --value $admin
ynh_app_setting_set --app $app --key is_public --value $is_public
ynh_app_setting_set --app $app --key smtp_port --value $smtp_port
ynh_app_setting_set --app $app --key web_port --value $port
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# INSTALL DEPENDENCIES
ynh_script_progression --message="Installing dependencies..." --weight=7
install_dependance
# CREATE A MYSQL DATABASE
ynh_script_progression --message="Configuring MySQL database..."
db_name=$(ynh_sanitize_dbid $app)
db_user=$db_name
ynh_app_setting_set $app db_name $db_name
ynh_app_setting_set $app db_user $db_user
db_pwd=$(ynh_string_random 15)
ynh_mysql_setup_db $db_name $db_user $db_pwd
ynh_app_setting_set --app $app --key db_name --value $db_name
ynh_app_setting_set --app $app --key db_user --value $db_user
ynh_mysql_setup_db --db_name $db_name --db_user $db_user
ynh_script_progression --message="Configuring application..." --weight=3
# Configure SOGO
config_sogo
@ -64,6 +69,7 @@ config_stunnel
config_cron
#Configure Nginx
ynh_script_progression --message="Configuring nginx..." --weight=1
config_nginx
#=================================================
@ -71,20 +77,26 @@ config_nginx
#=================================================
# SECURE FILES AND DIRECTORIES
ynh_script_progression --message="Protecting directory..."
set_permission
# configure the sso
ynh_script_progression --message="Configuring permissions..."
if [ "$is_public" = "0" ];
then # Retire l'accès public
ynh_app_setting_delete $app skipped_uris
ynh_app_setting_delete --app $app --key skipped_uris
else
ynh_app_setting_set $app unprotected_uris "/"
ynh_app_setting_set --app $app --key unprotected_uris --value "/"
fi
python3 add_sso_conf.py
# SETUP LOGROTATE
ynh_use_logrotate /var/log/$app/sogo.log --non-append
ynh_script_progression --message="Configuring log rotation..."
ynh_use_logrotate --logfile /var/log/$app/sogo.log --non-append
# Restart services
ynh_script_progression --message="Starting sogo services..." --weight=3
systemctl restart sogo
systemctl restart stunnel4
ynh_script_progression --message="Installation of $app completed" --last

View file

@ -7,40 +7,51 @@
# Source YunoHost helpers
source /usr/share/yunohost/helpers
# Stop script if errors
set -u
# Import common cmd
source ./experimental_helper.sh
source ./_common.sh
ynh_script_progression --message="Loading installation settings..."
# Retrieve app settings
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
port=$(ynh_app_setting_get $app port)
db_name=$(ynh_app_setting_get $app db_name)
db_user=$(ynh_app_setting_get $app db_user)
final_path=$(ynh_app_setting_get $app final_path)
domain=$(ynh_app_setting_get --app $app --key domain)
port=$(ynh_app_setting_get --app $app --key port)
db_name=$(ynh_app_setting_get --app $app --key db_name)
db_user=$(ynh_app_setting_get --app $app --key db_user)
final_path=$(ynh_app_setting_get --app $app --key final_path)
#=================================================
# STANDARD REMOVE
#=================================================
# Remove metapackage and its dependencies
ynh_script_progression --message="Removing dependencies" --weight=10
ynh_remove_app_dependencies
# Remove a database if it exists, along with the associated user
ynh_mysql_remove_db $db_user $db_name
ynh_script_progression --message="Removing databases..."
ynh_mysql_remove_db --db_user $db_user --db_name $db_name
# Remove the app directory securely
ynh_secure_remove "$final_path"
ynh_script_progression --message="Removing user data..."
ynh_secure_remove --file="$final_path"
ynh_script_progression --message="Removing configuration..."
# Remove sogo config
ynh_secure_remove "/etc/$app"
ynh_secure_remove --file="/etc/$app"
# Remove stunnel config
ynh_secure_remove "/etc/stunnel/$app.conf"
ynh_secure_remove --file="/etc/stunnel/$app.conf"
# Remove custom SSO config
python3 remove_sso_conf.py
# Remove the app-specific logrotate config
ynh_remove_logrotate
ynh_script_progression --message="Removal of $app completed" --last

View file

@ -14,47 +14,57 @@ ynh_abort_if_errors
source ../settings/scripts/experimental_helper.sh
source ../settings/scripts/_common.sh
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path)
final_path=$(ynh_app_setting_get $app final_path)
db_name=$(ynh_app_setting_get $app db_name)
ynh_script_progression --message="Loading settings..."
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)
# CHECK IF THE APP CAN BE RESTORED
ynh_webpath_available $domain $path_url \
|| ynh_die "Path not available: ${domain}${path_url}"
ynh_webpath_available --domain $domain --path_url $path_url \
|| ynh_die --message "Path not available: ${domain}${path_url}"
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
# Define and install dependencies
ynh_script_progression --message="Reinstalling dependencies..." --weight=5
install_dependance
# Restore all config and data
ynh_script_progression --message="Restoring files..." --weight=10
ynh_restore
# RESTORE THE MYSQL DATABASE
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
ynh_mysql_setup_db $db_name $db_name $db_pwd
ynh_mysql_connect_as $db_name $db_pwd $db_name < ./db.sql
ynh_script_progression --message="Restoring database..." --weight=3
db_user=$db_name
db_pwd=$(ynh_app_setting_get --app $app --key mysqlpwd)
ynh_mysql_setup_db --db_name $db_name --db_user $db_user --db_pwd $db_pwd
ynh_mysql_connect_as --user $db_user --password $db_pwd --database $db_name < ./db.sql
# Enable stunnel at startup
ynh_replace_string "ENABLED=0" "ENABLED=1" /etc/default/stunnel4
ynh_replace_string --match_string "ENABLED=0" --replace_string "ENABLED=1" --target_file /etc/default/stunnel4
#=================================================
# GENERIC FINALIZATION
#=================================================
# SECURE FILES AND DIRECTORIES
ynh_script_progression --message="Protecting directory..."
set_permission
python3 ../settings/scripts/add_sso_conf.py
# SETUP LOGROTATE
ynh_use_logrotate /var/log/$app/sogo.log --non-append
ynh_use_logrotate --logfile /var/log/$app/sogo.log --non-append
# Restart services
ynh_script_progression --message="Starting SOGo services..." --weight=3
systemctl restart sogo
systemctl restart stunnel4
systemctl reload nginx
systemctl restart cron
ynh_script_progression --message="Restoration completed for $app" --last

View file

@ -14,16 +14,18 @@ ynh_abort_if_errors
source ./experimental_helper.sh
source ./_common.sh
ynh_script_progression --message="Loading installation settings..."
# LOAD SETTINGS
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_normalize_url_path $(ynh_app_setting_get $app path))
admin=$(ynh_app_setting_get $app admin)
is_public=$(ynh_app_setting_get $app is_public)
port=$(ynh_app_setting_get $app web_port)
smtp_port=$(ynh_app_setting_get $app smtp_port)
db_name=$(ynh_app_setting_get $app db_name)
db_user=$(ynh_app_setting_get $app db_user)
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
domain=$(ynh_app_setting_get --app $app --key domain)
path_url=$(ynh_normalize_url_path --path_url $(ynh_app_setting_get --app $app --key path))
admin=$(ynh_app_setting_get --app $app --key admin)
is_public=$(ynh_app_setting_get --app $app --key is_public)
port=$(ynh_app_setting_get --app $app --key web_port)
smtp_port=$(ynh_app_setting_get --app $app --key smtp_port)
db_name=$(ynh_app_setting_get --app $app --key db_name)
db_user=$(ynh_app_setting_get --app $app --key db_user)
db_pwd=$(ynh_app_setting_get --app $app --key mysqlpwd)
# Backup the current version of the app
ynh_backup_before_upgrade
@ -39,35 +41,37 @@ ynh_abort_if_errors
# UPGRADE SETTINGS FROM OLD INSTALL
#=================================================
ynh_script_progression --message="Fixing old settings..." --weight=1
if [[ ${is_public,,*} = "yes" ]]
then
is_public=1
ynh_app_setting_set $app is_public 1
ynh_app_setting_set --app $app --key is_public --value 1
fi
if [[ ${is_public,,*} = "no" ]]
then
is_public=0
ynh_app_setting_set $app is_public 0
ynh_app_setting_set --app $app --key is_public --value 0
fi
if [[ -z $port ]]
then
# Find a port for SOGo
port=$(ynh_find_port 20000)
ynh_app_setting_set $app web_port $port
port=$(ynh_find_port --port 20000)
ynh_app_setting_set --app $app --key web_port --value $port
fi
if [[ -z $db_name ]]
then
db_name=$app
ynh_app_setting_set $app db_name $db_name
ynh_app_setting_set --app $app --key db_name --value $db_name
fi
if [[ -z $db_user ]]
then
db_user=$app
ynh_app_setting_set $app db_user $db_user
ynh_app_setting_set --app $app --key db_user --value $db_user
fi
#=================================================
@ -75,8 +79,11 @@ fi
#=================================================
# INSTALL DEPENDENCIES
ynh_script_progression --message="Upgrading dependencies..."
install_dependance
ynh_script_progression --message="Configuring application..."
# Configure SOGO
config_sogo
@ -94,20 +101,26 @@ config_nginx
#=================================================
# SECURE FILES AND DIRECTORIES
ynh_script_progression --message="Protecting directory..."
set_permission
# configure the sso
ynh_script_progression --message="Configuring permissions..."
if [ "$is_public" = "0" ];
then # Retire l'accès public
ynh_app_setting_delete $app skipped_uris
ynh_app_setting_delete --app $app --key skipped_uris
else
ynh_app_setting_set $app unprotected_uris "/"
ynh_app_setting_set --app $app --key unprotected_uris --value "/"
fi
python3 add_sso_conf.py
# SETUP LOGROTATE
ynh_use_logrotate /var/log/$app/sogo.log --non-append
ynh_script_progression --message="Configuring log rotation..."
ynh_use_logrotate --logfile /var/log/$app/sogo.log --non-append
# Restart services
ynh_script_progression --message="Starting SOGo services..." --weight=3
systemctl restart sogo
systemctl restart stunnel4
ynh_script_progression --message="Upgrade of $app completed" --last