diff --git a/check_process b/check_process new file mode 100644 index 0000000..d0ee85e --- /dev/null +++ b/check_process @@ -0,0 +1,25 @@ +;; Test complet + auto_remove=1 + ; Manifest + domain="domain.tld" (DOMAIN) + path="/path" (PATH) + admin="john" (USER) + is_public="Yes" (PUBLIC|public=Yes|private=No) + always_encrypt="Yes" + ; Checks + pkg_linter=1 + setup_sub_dir=1 + setup_root=1 + setup_nourl=0 + setup_private=1 + setup_public=1 + upgrade=1 + backup_restore=1 + multi_instance=0 + wrong_user=1 + wrong_path=1 + incorrect_path=1 + corrupt_source=0 + fail_download_source=0 + port_already_use=1 (8095) + final_path_already_use=0 diff --git a/conf/nginx.conf b/conf/nginx.conf index 732fb89..614897e 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,4 +1,4 @@ -location __PATH__ { +location __PATH__/ { if ($scheme = http) { rewrite ^ https://$server_name$request_uri? permanent; } diff --git a/manifest.json b/manifest.json index 784aa7b..e3d2509 100644 --- a/manifest.json +++ b/manifest.json @@ -1,46 +1,49 @@ { - "name": "Lutim", - "id": "lutim", - "packaging_format": 1, - "requirements": { - "yunohost": ">= 2.4" - }, - "description": { + "name": "Lutim", + "id": "lutim", + "packaging_format": 1, + "requirements": { + "yunohost": ">= 2.4" + }, + "description": { "en": "Self hosting images and sharing anonymous application", "fr": "Application d'hébergement et de partage d'images anonyme" - }, + }, "version": "0.6 dev", "url": "https://lut.im", - "licence": "free", - "maintainer": { - "name": "Maniack Crudelis et matlink", - "email": "maniackc_dev@crudelis.fr matlink@matlink.fr" - }, - "multi_instance": "false", - "services": [ - "nginx" - ], - "arguments": { - "install" : [ - { - "name": "domain", - "ask": { - "en": "Choose a domain for Lutim", - "fr": "Choisissez un domaine pour Lutim" - }, - "example": "domain.org" - }, - { - "name": "path", - "ask": { - "en": "Choose a path for Lutim", - "fr": "Choisissez un chemin pour Lutim" - }, - "example": "/lutim", - "default": "/lutim" - }, + "license": "free", + "maintainer": { + "name": "Maniack Crudelis et matlink", + "email": "maniackc_dev@crudelis.fr matlink@matlink.fr" + }, + "multi_instance": false, + "services": [ + "nginx" + ], + "arguments": { + "install" : [ + { + "name": "domain", + "type": "domain", + "ask": { + "en": "Choose a domain for Lutim", + "fr": "Choisissez un domaine pour Lutim" + }, + "example": "domain.org" + }, + { + "name": "path", + "type": "path", + "ask": { + "en": "Choose a path for Lutim", + "fr": "Choisissez un chemin pour Lutim" + }, + "example": "/lutim", + "default": "/lutim" + }, { "name": "admin", + "type": "user", "ask": { "en": "Choose the Lutim administrator (must be an existing YunoHost user)", "fr": "Choisissez un administrateur Lutim (doit être un utilisateur YunoHost)" @@ -65,6 +68,6 @@ "choices": ["Yes", "No"], "default": "Yes" } - ] - } + ] + } } diff --git a/scripts/.fonctions b/scripts/.fonctions index cfb9d49..ab08197 100755 --- a/scripts/.fonctions +++ b/scripts/.fonctions @@ -1,5 +1,7 @@ #!/bin/bash +ynh_version="2.4" + YNH_VERSION () { # Renvoi le numéro de version de la moulinette Yunohost ynh_version=$(sudo yunohost -v | grep "moulinette:" | cut -d' ' -f2 | cut -d'.' -f1,2) } @@ -7,20 +9,20 @@ YNH_VERSION () { # Renvoi le numéro de version de la moulinette Yunohost CHECK_VAR () { # Vérifie que la variable n'est pas vide. # $1 = Variable à vérifier # $2 = Texte à afficher en cas d'erreur - test -n "$1" || (echo "$2" && false) + test -n "$1" || (echo "$2" >&2 && false) } EXIT_PROPERLY () { # Provoque l'arrêt du script en cas d'erreur. Et nettoye les résidus. trap '' ERR echo -e "\e[91m \e[1m" # Shell in light red bold - echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" + echo -e "!!\n $app install's script has encountered an error. Installation was cancelled.\n!!" >&2 CLEAN_SETUP # Appel la fonction de nettoyage spécifique du script install. # Compense le bug de ssowat qui ne supprime pas l'entrée de l'app en cas d'erreur d'installation. sudo sed -i "\@\"$domain$path/\":@d" /etc/ssowat/conf.json - if [ $ynh_version = "2.2" ]; then + if [ "$ynh_version" = "2.2" ]; then /bin/bash $script_dir/remove # Appel le script remove. En 2.2, ce comportement n'est pas automatique. fi @@ -40,7 +42,7 @@ TRAP_OFF () { # Ignoring signal capture until TRAP_ON CHECK_USER () { # Vérifie la validité de l'user admin # $1 = Variable de l'user admin. - sudo yunohost user list --json | grep -q "\"username\": \"$1\"" || (echo "Wrong admin" && false) + sudo yunohost user list --json | grep -q "\"username\": \"$1\"" || (echo "Wrong admin" >&2 && false) } CHECK_PATH () { # Vérifie la présence du / en début de path. Et son absence à la fin. @@ -60,7 +62,7 @@ CHECK_FINALPATH () { # Vérifie que le dossier de destination n'est pas déjà u final_path=/var/www/$app if [ -e "$final_path" ] then - echo "This path already contains a folder" + echo "This path already contains a folder" >&2 false fi } @@ -81,7 +83,7 @@ SETUP_SOURCE () { # Télécharge la source, décompresse et copie dans $final_pa # $1 = Nom de l'archive téléchargée. wget -nv --show-progress -i ../sources/source_url -O $1 # Vérifie la somme de contrôle de la source téléchargée. - md5sum -c ../sources/source_md5 --status || (echo "Corrupt source" && false) + md5sum -c ../sources/source_md5 --status || (echo "Corrupt source" >&2 && false) # Décompresse la source if [ "$(echo ${1##*.})" == "gz" ]; then tar -x -f $1 diff --git a/scripts/backup b/scripts/backup index f0036f4..c60fc22 100644 --- a/scripts/backup +++ b/scripts/backup @@ -1,9 +1,7 @@ #!/bin/bash -source .fonctions # Charge les fonctions génériques habituellement utilisées dans le script - # Récupère les infos de l'application. -YNH_VERSION # Récupère le numéro de version de Yunohost. +ynh_version=$(sudo yunohost -v | grep "moulinette:" | cut -d' ' -f2 | cut -d'.' -f1,2) # Récupère le numéro de version de Yunohost. if [ $ynh_version = "2.4" ]; then app=$YNH_APP_INSTANCE_NAME else diff --git a/scripts/restore b/scripts/restore index db63a82..1a31c4a 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,9 +1,7 @@ #!/bin/bash -source .fonctions # Charge les fonctions génériques habituellement utilisées dans le script - # Récupère les infos de l'application. -YNH_VERSION # Récupère le numéro de version de Yunohost. +ynh_version=$(sudo yunohost -v | grep "moulinette:" | cut -d' ' -f2 | cut -d'.' -f1,2) # Récupère le numéro de version de Yunohost. if [ $ynh_version = "2.4" ]; then app=$YNH_APP_INSTANCE_NAME else @@ -29,17 +27,28 @@ then # Restauration des fichiers du script init sudo cp -a $backup_dir/init.d_lutim /etc/init.d/lutim sudo cp -a $backup_dir/default_lutim /etc/default/lutim + ## Démarrage auto du service + sudo update-rc.d lutim defaults else # Restauration des fichiers du script systemd sudo cp -a $backup_dir/lutim.service /etc/systemd/system/lutim.service + ## Démarrage auto du service + sudo systemctl enable lutim.service fi + # Restauration du fichier du cron sudo cp -a $backup_dir/cron_$app /etc/cron.d/$app +# Making log symbolic link to /var/log +sudo mkdir -p /var/log/$app/ +sudo touch /var/log/$app/production.log +sudo chown www-data: /var/log/$app/production.log # Restaure la configuration de logrotate sudo cp -a $backup_dir/logrotate /etc/logrotate.d/$app - # Restart webserver sudo service nginx reload + +# Start lutim +sudo service lutim start