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

Use new helpers

This commit is contained in:
Maniack Crudelis 2017-12-16 23:15:26 +01:00
parent 205f427cb8
commit f17b3f33cd
7 changed files with 151 additions and 136 deletions

View file

@ -6,7 +6,7 @@
"en": "Framapad clone, a online editor providing collaborative editing in real-time.",
"fr": "Clone de Framapad, un éditeur en ligne fournissant l'édition collaborative en temps réel."
},
"version": "1.6.2",
"version": "1.6.2~ynh1",
"url": "https://framapad.org",
"license": "Apache-2.0",
"maintainer": {
@ -27,8 +27,8 @@
"name": "domain",
"type": "domain",
"ask": {
"en": "Choose a dedicated domain for Etherpad Mypads.",
"fr": "Choisissez un domaine dédié pour Etherpad Mypads."
"en": "Choose a domain for Etherpad Mypads.",
"fr": "Choisissez un domaine pour Etherpad Mypads."
},
"example": "sub.domain.org"
},

51
scripts/_sed Normal file
View file

@ -0,0 +1,51 @@
#!/bin/bash
# https://github.com/YunoHost/yunohost/pull/394
# Substitute/replace a string (or expression) by another in a file
#
# usage: ynh_replace_string match_string replace_string target_file
# | arg: match_string - String to be searched and replaced in the file
# | arg: replace_string - String that will replace matches
# | arg: target_file - File in which the string will be replaced.
#
# As this helper is based on sed command, regular expressions and
# references to sub-expressions can be used
# (see sed manual page for more information)
ynh_replace_string () {
local delimit=@
local match_string=$1
local replace_string=$2
local workfile=$3
# Escape the delimiter if it's in the string.
match_string=${match_string//${delimit}/"\\${delimit}"}
replace_string=${replace_string//${delimit}/"\\${delimit}"}
sudo sed --in-place "s${delimit}${match_string}${delimit}${replace_string}${delimit}g" "$workfile"
}
# Substitute/replace a password by another in a file
#
# usage: ynh_replace_password_string match_string replace_string target_file
# | arg: match_string - String to be searched and replaced in the file
# | arg: replace_string - String that will replace matches
# | arg: target_file - File in which the string will be replaced.
#
# This helper will use ynh_replace_string, but as you can use special
# characters, you can't use some regular expressions and sub-expressions.
ynh_replace_password_string () {
local match_string=$1
local replace_string=$2
local workfile=$3
# Escape any backslash to preserve them as simple backslash.
match_string=${match_string//\\/"\\\\"}
replace_string=${replace_string//\\/"\\\\"}
# Escape the & character, who has a special function in sed.
match_string=${match_string//&/"\&"}
replace_string=${replace_string//&/"\&"}
ynh_replace_string "$match_string" "$replace_string" "$workfile"
}

View file

@ -8,6 +8,7 @@
source _common.sh
source /usr/share/yunohost/helpers
source _sed
#=================================================
# RETRIEVE ARGUMENTS
@ -63,11 +64,7 @@ fi
ynh_clean_setup () {
# Nettoyage des résidus d'installation non pris en charge par le script remove.
if test -n "$PID_TAIL"
then
SUPPRESS_WARNING kill -s 15 $PID_TAIL # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
fi
ynh_clean_check_starting
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
@ -130,30 +127,9 @@ fi
systemctl reload nginx
#=================================================
# START ETHERPAD IN BACKGROUND
#=================================================
# Démarre etherpad
WARNING echo "Redémarrage d'etherpad"
tempfile="$(mktemp)"
tail -f -n1 /var/log/$app/etherpad.log > "$tempfile" & # Suit le démarrage dans le log
PID_TAIL=$! # Récupère le PID de la commande tail, qui est passée en arrière plan.
systemctl start $app # Redémarre etherpad. Le démarrage est fait le plus tôt possible, car il est très long...
#=================================================
# CHECK ETHERPAD STARTING
#=================================================
for i in `seq 1 120`
do # La boucle attend le démarrage d'etherpad. Ou 2 minutes. Cette boucle évite simplement un 502 au début, car le démarrage est long...
if grep -q "You can access your Etherpad instance at" "$tempfile"; then
WARNING echo "Le service $app a démarré correctement."
break # Si le log annonce le démarrage d'etherpad, sort de la boucle.
fi
WARNING echo -n "."
sleep 1
done
echo ""
QUIET kill -s 15 $PID_TAIL # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
# Wait for etherpad fully started
ynh_check_starting "You can access your Etherpad instance at" "/var/log/$app/etherpad.log" "120"

View file

@ -10,6 +10,7 @@ source _common.sh
source /usr/share/yunohost/helpers
# Load common variables for all scripts.
source _variables
source _sed
#=================================================
# MANAGE FAILURE OF THE SCRIPT
@ -17,12 +18,7 @@ source _variables
ynh_clean_setup () {
# Nettoyage des résidus d'installation non pris en charge par le script remove.
if test -n "$PID_TAIL"
then
SUPPRESS_WARNING kill -s 15 $PID_TAIL # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
fi
echo ""
ynh_clean_check_starting
}
ynh_abort_if_errors # Active trap pour arrêter le script si une erreur est détectée.
@ -171,7 +167,7 @@ ynh_replace_string "__PORT__" "$port" "$final_path/settings.json"
ynh_replace_string "__DB_USER__" "$db_name" "$final_path/credentials.json"
ynh_replace_string "__DB_PWD__" "$db_pwd" "$final_path/credentials.json"
ynh_replace_string "__ADMIN__" "$admin" "$final_path/credentials.json"
ynh_replace_string "__PASSWD__" "$password" "$final_path/credentials.json"
ynh_replace_password_string "__PASSWD__" "$password" "$final_path/credentials.json"
if [ "$export" = "abiword" ]
then
abiword_path=`which abiword` # Récupère l'emplacement de l'exécutable de abiword
@ -251,16 +247,6 @@ then
sed -i "$mod_line s@div>@&\n\t<center><br><font size="5"><a href="./mypads">Mypads</a></font></center>@" $final_path/src/templates/index.html # Pour ajouter un lien vers le plugin mypads depuis la page d'Etherpad.
fi
#=================================================
# START ETHERPAD IN BACKGROUND
#=================================================
WARNING echo "Démarrage d'etherpad"
tempfile="$(mktemp)"
tail -f -n1 /var/log/$app/etherpad.log > "$tempfile" & # Suit le démarrage dans le log
PID_TAIL=$! # Récupère le PID de la commande tail, qui est passée en arrière plan.
systemctl start $app # Démarre etherpad. Le démarrage est fait le plus tôt possible, car il est très long...
#=================================================
# SETUP SSOWAT
#=================================================
@ -281,34 +267,43 @@ systemctl reload nginx
# CHECK ETHERPAD STARTING
#=================================================
# Wait for etherpad fully started
ynh_check_starting "You can access your Etherpad instance at" "/var/log/$app/etherpad.log" "120"
if [ $mypads -eq 1 ]
then
lang_OK=0
else
lang_OK=1
ynh_replace_string "__LANGUAGE__" "$language" "$script_dir/../conf/lang_mypads.sql"
mysql -u $db_name -p$db_pwd $db_name < "$script_dir/../conf/lang_mypads.sql"
# Wait for etherpad fully started
ynh_check_starting "You can access your Etherpad instance at" "/var/log/$app/etherpad.log" "120"
fi
for i in `seq 1 120`
do # La boucle attend le démarrage d'etherpad. Ou 2 minutes. Cette boucle évite simplement un 502 au début, car le démarrage est long...
if [ $mypads -eq 1 ]
then
if grep -q "You can access your Etherpad instance at" "$tempfile" && [ "$lang_OK" -eq 0 ] ; then
# Si le log annonce une première fois le démarrage d'etherpad, applique la langue de mypads et redémarre le service.
WARNING echo "Le service $app a démarré correctement."
ynh_replace_string "__LANGUAGE__" "$language" "$script_dir/../conf/lang_mypads.sql"
mysql -u $db_name -p$db_pwd $db_name < "$script_dir/../conf/lang_mypads.sql"
echo ""
systemctl restart $app
cat /dev/null > "$tempfile" # Purge le log de suivi du démarrage.
lang_OK=1
i=1;
fi
fi
if grep -q "You can access your Etherpad instance at" "$tempfile" && [ "$lang_OK" -eq 1 ]; then
WARNING echo "Le service $app a démarré correctement."
break # Si le log annonce une deuxième fois le démarrage d'etherpad, sort de la boucle.
fi
WARNING echo -n "."
sleep 1
done
SUPPRESS_WARNING kill -s 15 $PID_TAIL # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
#=================================================
# SEND A README FOR THE ADMIN
#=================================================
if [ $mypads -eq 1 ]
then
Informations1="You can access to 2 different admin panels, for etherpad by accessing https://$domain${path_url%/}/admin and for mypads by https://$domain${path_url%/}/mypads/?/admin."
Informations2="
Because there's no ldap support with mypads plugin, no user is created at the installation.
You have to connect to the admin panel to create the first users.
"
else
Informations1="You can access to the admin panel, by accessing https://$domain${path_url%/}/admin."
Informations2=""
fi
message="$Informations1
Or, you can find a config file for etherpad at this path /var/www/etherpad_mypads/settings.json.
Your credentials for the admin panel are:
- login : $admin
- password : $password
$Informations2
If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/etherpad_mypads_ynh"
ynh_send_readme_to_admin "$message" "$admin"

View file

@ -34,7 +34,7 @@ ynh_remove_systemd_config
if yunohost service status | grep -q $app # Test l'existence du service dans Yunohost
then
echo "Remove $app service"
ynh_print_info "Remove $app service" >&2
yunohost service remove $app
fi

View file

@ -20,6 +20,10 @@ source ../settings/scripts/_variables
# MANAGE SCRIPT FAILURE
#=================================================
ynh_clean_setup () {
# Nettoyage des résidus d'installation non pris en charge par le script remove.
ynh_clean_check_starting
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
@ -30,16 +34,19 @@ ynh_abort_if_errors
app=$YNH_APP_INSTANCE_NAME
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path_url)
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)
export=$(ynh_app_setting_get $app export)
mypads=$(ynh_app_setting_get $app mypads)
admin=$(ynh_app_setting_get $app admin)
password=$(ynh_app_setting_get $app password)
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
yunohost app checkurl "${domain}${path_url}" -a "$app" \
ynh_webpath_available $domain $path_url \
|| ynh_die "Path not available: ${domain}${path_url}"
test ! -d $final_path \
|| ynh_die "There is already a directory: $final_path "
@ -126,16 +133,6 @@ ynh_restore_file "/etc/systemd/system/$app.service"
## Démarrage auto du service
systemctl enable $app.service
#=================================================
# START ETHERPAD IN BACKGROUND
#=================================================
echo "Démarrage d'etherpad" >&2
tempfile="$(mktemp)"
tail -f -n1 /var/log/$app/etherpad.log > "$tempfile" & # Suit le démarrage dans le log
PID_TAIL=$! # Récupère le PID de la commande tail, qui est passée en arrière plan.
systemctl start $app # Démarre etherpad. Le démarrage est fait le plus tôt possible, car il est très long...
#=================================================
# RELOAD NGINX
#=================================================
@ -146,16 +143,34 @@ systemctl reload nginx
# CHECK ETHERPAD STARTING
#=================================================
# Surveille le démarrage du service.
for i in `seq 1 60`
do # La boucle attend le démarrage d'etherpad. Ou 1 minute. Cette boucle évite simplement un 502 au début, car le démarrage est long...
if grep -q "You can access your Etherpad instance at" "$tempfile"; then
echo "Le service $app a démarré correctement." >&2
break # Si le log annonce le démarrage d'etherpad, sort de la boucle.
fi
echo -n "." >&2
sleep 1
done
echo ""
kill -s 15 $PID_TAIL > /dev/null # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
# Wait for etherpad fully started
ynh_check_starting "You can access your Etherpad instance at" "/var/log/$app/etherpad.log" "120"
#=================================================
# SEND A README FOR THE ADMIN
#=================================================
if [ $mypads -eq 1 ]
then
Informations1="You can access to 2 different admin panels, for etherpad by accessing https://$domain${path_url%/}/admin and for mypads by https://$domain${path_url%/}/mypads/?/admin."
Informations2="
Because there's no ldap support with mypads plugin, no user is created at the installation.
You have to connect to the admin panel to create the first users.
"
else
Informations1="You can access to the admin panel, by accessing https://$domain${path_url%/}/admin."
Informations2=""
fi
message="$Informations1
Or, you can find a config file for etherpad at this path /var/www/etherpad_mypads/settings.json.
Your credentials for the admin panel are:
- login : $admin
- password : $password
$Informations2
If you facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/etherpad_mypads_ynh"
ynh_send_readme_to_admin "$message" "$admin"

View file

@ -10,6 +10,7 @@ source _common.sh
source /usr/share/yunohost/helpers
# Load common variables for all scripts.
source _variables
source _sed
#=================================================
# LOAD SETTINGS
@ -28,6 +29,12 @@ export=$(ynh_app_setting_get $app export)
db_name=$(ynh_app_setting_get $app db_name)
mypads=$(ynh_app_setting_get $app mypads)
#=================================================
# CHECK VERSION
#=================================================
ynh_abort_if_up_to_date
#=================================================
# FIX OLD THINGS
#=================================================
@ -81,11 +88,7 @@ fi
ynh_backup_before_upgrade
ynh_clean_setup () {
# Nettoyage des résidus d'installation non pris en charge par le script remove.
if test -n "$PID_TAIL"
then
SUPPRESS_WARNING kill -s 15 $PID_TAIL # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
fi
ynh_clean_check_starting
# restore it if the upgrade fails
ynh_restore_upgradebackup
@ -155,7 +158,7 @@ db_pwd=$(ynh_app_setting_get $app mysqlpwd)
password=$(ynh_app_setting_get $app password)
ynh_replace_string "__DB_PWD__" "$db_pwd" "$final_path/credentials.json"
ynh_replace_string "__ADMIN__" "$admin" "$final_path/credentials.json"
ynh_replace_string "__PASSWD__" "$password" "$final_path/credentials.json"
ynh_replace_password_string "__PASSWD__" "$password" "$final_path/credentials.json"
if [ "$export" = "abiword" ]
then
abiword_path=`which abiword` # Récupère l'emplacement de l'exécutable de abiword
@ -192,10 +195,7 @@ chown $app -R /var/log/$app/etherpad.log
# SETUP LOGROTATE
#=================================================
# Remove logrotate config
ynh_remove_logrotate
# And replace it
ynh_use_logrotate
ynh_use_logrotate --non-append
#=================================================
# SETUP SYSTEMD
@ -215,17 +215,6 @@ then
sed -i "$mod_line s@div>@&\n\t<center><br><font size="5"><a href="./mypads">Mypads</a></font></center>@" $final_path/src/templates/index.html # Pour ajouter un lien vers le plugin mypads depuis la page d'Etherpad.
fi
#=================================================
# START ETHERPAD IN BACKGROUND
#=================================================
# Démarre etherpad
WARNING echo "Redémarrage d'etherpad"
tempfile="$(mktemp)"
tail -f -n1 /var/log/$app/etherpad.log > "$tempfile" & # Suit le démarrage dans le log
PID_TAIL=$! # Récupère le PID de la commande tail, qui est passée en arrière plan.
systemctl start $app # Redémarre etherpad. Le démarrage est fait le plus tôt possible, car il est très long...
#=================================================
# SETUP SSOWAT
#=================================================
@ -247,16 +236,5 @@ systemctl reload nginx
# CHECK ETHERPAD STARTING
#=================================================
for i in `seq 1 120`
do # La boucle attend le démarrage d'etherpad. Ou 2 minutes. Cette boucle évite simplement un 502 au début, car le démarrage est long...
if grep -q "You can access your Etherpad instance at" "$tempfile"; then
WARNING echo "Le service $app a démarré correctement."
break # Si le log annonce le démarrage d'etherpad, sort de la boucle.
fi
WARNING echo -n "."
sleep 1
done
echo ""
QUIET kill -s 15 $PID_TAIL # Arrête l'exécution de tail.
ynh_secure_remove "$tempfile"
# Wait for etherpad fully started
ynh_check_starting "You can access your Etherpad instance at" "/var/log/$app/etherpad.log" "120"