From 5ff45db4d1931e4b60b3fa9828912fb970a61e57 Mon Sep 17 00:00:00 2001 From: maniack Date: Sun, 8 Mar 2020 20:09:34 +0100 Subject: [PATCH 01/43] Allow pastes to be seen in private --- manifest.json | 4 ++++ scripts/change_url | 18 ++++++++++++++++++ scripts/install | 10 ++++++++-- scripts/upgrade | 6 ++++++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index d34a079..1ff2094 100644 --- a/manifest.json +++ b/manifest.json @@ -49,6 +49,10 @@ "en": "Is it a public Zerobin site ?", "fr": "Est-ce un site public ?" }, + "help": { + "en": "If private, only YunoHost users can create a paste, but everyone can read it.", + "fr": "Si privé, seul les utilisateurs YunoHost peuvent créer un paste, mais tout le monde peut lire." + }, "default": true } ] diff --git a/scripts/change_url b/scripts/change_url index b15aa51..6dc7d8b 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -75,6 +75,24 @@ then ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" fi +#================================================= +# UPDATE SSOWAT +#================================================= +ynh_script_progression --message="Reconfiguring SSOwat..." + +if [ $is_public -eq 0 ] +then + # If the app is private, viewing images stays publicly accessible. + if [ "$new_path" == "/" ]; then + # If the path is /, clear it to prevent any error with the regex. + new_path="" + fi + # Modify the domain to be used in a regex + domain_regex=$(echo "$new_domain" | sed 's@-@.@g') + ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$new_path/$" + ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$new_path/.*$" +fi + #================================================= # GENERIC FINALISATION #================================================= diff --git a/scripts/install b/scripts/install index c22e678..b7b4cc8 100644 --- a/scripts/install +++ b/scripts/install @@ -105,8 +105,14 @@ ynh_script_progression --message="Configuring SSOwat..." # If app is public, add url to SSOWat conf as skipped_uris if [ $is_public -eq 1 ]; then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" + # unprotected_uris allows SSO credentials to be passed anyway. + ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" +else + # If the app is private, viewing paste stays publicly accessible. + # Modify the domain to be used in a regex + domain_regex=$(echo "$domain" | sed 's@-@.@g') + ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/$" + ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$path_url/.*$" fi #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index bf94e62..6684832 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -142,6 +142,12 @@ ynh_script_progression --message="Upgrading SSOwat configuration..." if [ $is_public -eq 1 ]; then # unprotected_uris allows SSO credentials to be passed anyway. ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" +else + # If the app is private, viewing paste stays publicly accessible. + # Modify the domain to be used in a regex + domain_regex=$(echo "$domain" | sed 's@-@.@g') + ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/$" + ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$path_url/.*$" fi #================================================= From 5d4e62cd3d5a11f0b645756fb8db8a9516e3847d Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 9 Oct 2020 17:41:34 +0200 Subject: [PATCH 02/43] upgrade to PHP7.3 --- README.md | 7 ++----- README_fr.md | 9 +++------ conf/nginx.conf | 2 +- conf/php-fpm.conf | 2 +- manifest.json | 8 ++++---- scripts/_common | 18 ++++++++++++++++++ scripts/backup | 13 +++++++------ scripts/change_url | 4 ++-- scripts/install | 13 +++++++------ scripts/restore | 11 ++++++----- scripts/upgrade | 15 ++++++++------- 11 files changed, 59 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 1dabafe..b7b9b22 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,8 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re #### Supported architectures -* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/zerobin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/zerobin/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/zerobin/) -* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/zerobin/) ## Limitations @@ -62,10 +61,8 @@ This means that we have decided to delete the directory that allows us to save t --- -Developers info ----------------- +## Developers info -**Only if you want to use a testing branch for coding, instead of merging directly into master.** Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing). To try the testing branch, please proceed like that. diff --git a/README_fr.md b/README_fr.md index 4645d0b..db82896 100644 --- a/README_fr.md +++ b/README_fr.md @@ -5,7 +5,7 @@ *[Read this readme in english.](./README.md)* -> *Ce package vous permet d'installer Privatebin rapidement et simplement sur un serveur Yunohost. +> *Ce package vous permet d'installer PrivateBin rapidement et simplement sur un serveur Yunohost. Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* ## Vue d'ensemble @@ -40,9 +40,8 @@ Il reste cependant compatible avec le schéma original de stockage des données #### Architectures supportées -* x86-64b - [![Build Status](https://ci-apps.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/zerobin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/zerobin/) * ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/zerobin/) -* Jessie x86-64b - [![Build Status](https://ci-stretch.nohost.me/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-stretch.nohost.me/ci/apps/zerobin/) ## Limitations @@ -62,10 +61,8 @@ Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin --- -Informations pour les développeurs ----------------- +## Informations pour les développeurs -**Seulement si vous voulez utiliser une branche de test pour le codage, au lieu de fusionner directement dans la banche principale.** Merci de faire vos pull request dans la [branche testing](https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. diff --git a/conf/nginx.conf b/conf/nginx.conf index 9d6af69..a1ccb61 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -14,7 +14,7 @@ location __PATH__/ { try_files $uri $uri/ index.php; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php7.0-fpm-__NAME__.sock; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; fastcgi_index index.php; include fastcgi_params; diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 2b5d7b2..61b251f 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -33,7 +33,7 @@ group = __USER__ ; (IPv6 and IPv4-mapped) on a specific port; ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. -listen = /var/run/php/php7.0-fpm-__NAMETOCHANGE__.sock +listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock ; Set listen(2) backlog. ; Default Value: 511 (-1 on FreeBSD and OpenBSD) diff --git a/manifest.json b/manifest.json index e38519f..5c57d5f 100644 --- a/manifest.json +++ b/manifest.json @@ -3,8 +3,8 @@ "id": "zerobin", "packaging_format": 1, "description": { - "en": "A minimalist, opensource online pastebin where the server has zero knowledge of pasted data", - "fr": "Un pastebin minimaliste, libre et où le serveur n'a aucune connaissance des données copiées" + "en": "Minimalist pastebin where the server has zero knowledge of pasted data", + "fr": "Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées" }, "version": "1.3.4~ynh1", "url": "http://sebsauvage.net/wiki/doku.php?id=php:zerobin", @@ -19,7 +19,7 @@ "multi_instance": true, "services": [ "nginx", - "php5-fpm" + "php7.0-fpm" ], "arguments": { "install" : [ @@ -46,7 +46,7 @@ "name": "is_public", "type": "boolean", "ask": { - "en": "Is it a public Zerobin site ?", + "en": "Is it a public site?", "fr": "Est-ce un site public ?" }, "default": true diff --git a/scripts/_common b/scripts/_common index a9bf588..a248e8a 100644 --- a/scripts/_common +++ b/scripts/_common @@ -1 +1,19 @@ #!/bin/bash + +#================================================= +# COMMON VARIABLES +#================================================= + +YNH_PHP_VERSION="7.3" + +#================================================= +# PERSONAL HELPERS +#================================================= + +#================================================= +# EXPERIMENTAL HELPERS +#================================================= + +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= \ No newline at end of file diff --git a/scripts/backup b/scripts/backup index 892b966..5bd529b 100644 --- a/scripts/backup +++ b/scripts/backup @@ -25,32 +25,33 @@ 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) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= -# STANDARD BACKUP STEPS +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + #================================================= # BACKUP THE APP MAIN DIR #================================================= -ynh_script_progression --message="Backing up the main app directory..." ynh_backup --src_path="$final_path" #================================================= # BACKUP THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Backing up nginx web server configuration..." ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # BACKUP THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Backing up php-fpm configuration..." -ynh_backup --src_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # END OF SCRIPT #================================================= -ynh_script_progression --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." --last +ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." diff --git a/scripts/change_url b/scripts/change_url index b15aa51..b5656df 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -49,7 +49,7 @@ fi #================================================= # MODIFY URL IN NGINX CONF #================================================= -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 @@ -80,7 +80,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index c22e678..9566af2 100644 --- a/scripts/install +++ b/scripts/install @@ -60,9 +60,9 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring nginx web server..." +ynh_script_progression --message="Configuring NGINX web server..." -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -76,10 +76,11 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Configuring php-fpm..." --weight=2 +ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 -# Create a dedicated php-fpm config -ynh_add_fpm_config +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # GENERIC FINALIZATION @@ -112,7 +113,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/restore b/scripts/restore index 19176b2..8594cc9 100644 --- a/scripts/restore +++ b/scripts/restore @@ -19,13 +19,14 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading settings..." +ynh_script_progression --message="Loading 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) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED @@ -48,7 +49,7 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." +ynh_script_progression --message="Restoring the app main directory..." --weight=6 ynh_restore_file --origin_path="$final_path" @@ -70,16 +71,16 @@ chown -R $app:root $final_path/{data,tmp} # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_restore_file --origin_path="/etc/php/7.0/fpm/pool.d/$app.conf" +ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # GENERIC FINALIZATION #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading nginx web server and php-fpm..." +ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=1 -ynh_systemd_action --service_name=php7.0-fpm --action=reload +ynh_systemd_action --service_name=php$phpversion-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index bf94e62..2e3d80d 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -12,7 +12,7 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +ynh_script_progression --message="Loading installation settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME @@ -20,6 +20,7 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK VERSION @@ -30,7 +31,7 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= -ynh_script_progression --message="Ensuring downward compatibility..." +ynh_script_progression --message="Ensuring downward compatibility..." --weight=3 # Fix is_public as a boolean value if [ "$is_public" = "Yes" ]; then @@ -95,7 +96,7 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading nginx web server configuration..." +ynh_script_progression --message="Upgrading NGINX web server configuration..." # Create a dedicated nginx config ynh_add_nginx_config @@ -111,10 +112,10 @@ ynh_system_user_create --username=$app #================================================= # PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading php-fpm configuration..." --weight=3 +ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=3 -# Create a dedicated php-fpm config -ynh_add_fpm_config +# Create a dedicated PHP-FPM config +ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION #================================================= # GENERIC FINALIZATION @@ -147,7 +148,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading nginx web server..." +ynh_script_progression --message="Reloading NGINX web server..." ynh_systemd_action --service_name=nginx --action=reload From 33f241c060334014214fb169b776a305306a6ef2 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 9 Oct 2020 17:42:00 +0200 Subject: [PATCH 03/43] Update README_fr.md --- README_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_fr.md b/README_fr.md index db82896..cc65710 100644 --- a/README_fr.md +++ b/README_fr.md @@ -5,7 +5,7 @@ *[Read this readme in english.](./README.md)* -> *Ce package vous permet d'installer PrivateBin rapidement et simplement sur un serveur Yunohost. +> *Ce package vous permet d'installer PrivateBin rapidement et simplement sur un serveur YunoHost. Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* ## Vue d'ensemble From eee98fa53e9e23452254ec6e9cf334d9411d9518 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 9 Oct 2020 18:06:47 +0200 Subject: [PATCH 04/43] Small fixes --- README.md | 1 + README_fr.md | 4 ++-- manifest.json | 4 ++-- scripts/remove | 8 ++++---- scripts/upgrade | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b7b9b22..f9820f0 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re ## Documentation * Official documentation: https://github.com/PrivateBin/PrivateBin/wiki + * YunoHost documentation: https://yunohost.org/#/app_zerobin ## YunoHost specific features diff --git a/README_fr.md b/README_fr.md index cc65710..150a9a6 100644 --- a/README_fr.md +++ b/README_fr.md @@ -33,6 +33,7 @@ Il reste cependant compatible avec le schéma original de stockage des données ## Documentation * Documentation officielle : https://github.com/PrivateBin/PrivateBin/wiki + * Documentation YunoHost : https://yunohost.org/#/app_zerobin_fr ## Caractéristiques spécifiques YunoHost @@ -48,13 +49,12 @@ Il reste cependant compatible avec le schéma original de stockage des données ## Informations additionnelles Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de Privatebin, il est précisé que : - * Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. * Ceci signifie que nous avons décidé de supprimer ce répertoire pour permettre la sécurisation des données. Vous pouvez sauvegarder le répertoire 'data', si vous voulez conservez vos données. Mais vous devriez savoir que cela réduit la sécurité de votre application. ## Liens - * Signaler un bug: https://github.com/YunoHost-Apps/zerobin_ynh/issues + * Signaler un bug : https://github.com/YunoHost-Apps/zerobin_ynh/issues * Site de l'application PrivateBin : https://privatebin.info/ * Dépot de l'application principale : https://github.com/PrivateBin/PrivateBin * Site web YunoHost : https://yunohost.org/ diff --git a/manifest.json b/manifest.json index 5c57d5f..ce81fd2 100644 --- a/manifest.json +++ b/manifest.json @@ -7,14 +7,14 @@ "fr": "Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées" }, "version": "1.3.4~ynh1", - "url": "http://sebsauvage.net/wiki/doku.php?id=php:zerobin", + "url": "https://github.com/PrivateBin/PrivateBin", "license": "Zlib", "maintainer": { "name": "julien", "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 3.5" + "yunohost": ">= 3.8.1" }, "multi_instance": true, "services": [ diff --git a/scripts/remove b/scripts/remove index 89dfbfc..97c1548 100644 --- a/scripts/remove +++ b/scripts/remove @@ -32,17 +32,17 @@ ynh_secure_remove --file="$final_path" #================================================= # REMOVE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Removing nginx web server configuration" --weight=3 +ynh_script_progression --message="Removing NGINX web server configuration" --weight=3 -# Remove the dedicated nginx config +# Remove the dedicated NGINX config ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing php-fpm configuration" +ynh_script_progression --message="Removing PHP-FPM configuration" -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 2e3d80d..81b1740 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -137,7 +137,7 @@ chmod 700 $final_path/{data,tmp} #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." +ynh_script_progression --message="Upgrading SSOwat configuration..." --weight=1 # If app is public, add url to SSOWat conf as skipped_uris if [ $is_public -eq 1 ]; then @@ -148,7 +148,7 @@ fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload From 761a058511a391ab6c3c2b57d0eb528bc292d7c2 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 9 Oct 2020 18:15:50 +0200 Subject: [PATCH 05/43] Typo --- README_fr.md | 2 +- scripts/change_url | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README_fr.md b/README_fr.md index 150a9a6..9c499e8 100644 --- a/README_fr.md +++ b/README_fr.md @@ -10,7 +10,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -PrivateBin est un logiciel libre, minimaliste, qui joue le rôle de Pastebin (coller-corbeille) où le serveur n'a aucune connaissance des données qu'il stocke. +PrivateBin est un logiciel libre, minimaliste, qui joue le rôle de pastebin (coller-corbeille) où le serveur n'a aucune connaissance des données qu'il stocke. Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). diff --git a/scripts/change_url b/scripts/change_url index b5656df..6bd3a54 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -53,19 +53,19 @@ ynh_script_progression --message="Updating NGINX web server configuration..." -- nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf -# Change the path in the nginx config file +# 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 + # 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 + # Set global variables for NGINX helper domain="$old_domain" path_url="$new_path" - # Create a dedicated nginx config + # Create a dedicated NGINX config ynh_add_nginx_config fi -# Change the domain for nginx +# Change the domain for NGINX if [ $change_domain -eq 1 ] then # Delete file checksum for the old conf file location From 43d0ef2f90b1635f3e90f90be71862152f396dfb Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 13 Oct 2020 16:48:46 +0200 Subject: [PATCH 06/43] ZeroBin -> PrivateBin --- README.md | 19 +++++++++---------- README_fr.md | 22 ++++++++++------------ manifest.json | 16 ++++++++-------- pull_request_template.md | 16 +++++----------- 4 files changed, 32 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index f9820f0..cb0d3b8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # PrivateBin for YunoHost -[![Integration level](https://dash.yunohost.org/integration/zerobin.svg)](https://dash.yunohost.org/appci/app/zerobin) ![](https://ci-apps.yunohost.org/ci/badges/zerobin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/zerobin.maintain.svg) -[![Install PrivateBin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=zerobin) +[![Integration level](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) +[![Install PrivateBin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=privatebin) *[Lire ce readme en français.](./README_fr.md)* @@ -24,7 +24,6 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re ## Demo -* [YunoHost demo](https://demo.yunohost.org/zerobin/) * [Official demo](https://privatebin.net/) ## Configuration @@ -32,7 +31,7 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re ## Documentation * Official documentation: https://github.com/PrivateBin/PrivateBin/wiki - * YunoHost documentation: https://yunohost.org/#/app_zerobin + * YunoHost documentation: https://yunohost.org/#/app_privatebin ## YunoHost specific features @@ -40,8 +39,8 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re #### Supported architectures -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/zerobin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/zerobin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) ## Limitations @@ -55,7 +54,7 @@ This means that we have decided to delete the directory that allows us to save t ## Links - * Report a bug: https://github.com/YunoHost-Apps/zerobin_ynh/issues + * Report a bug: https://github.com/YunoHost-Apps/privatebin_ynh/issues * PrivateBin website: https://privatebin.info/ * PrivateBin repository: https://github.com/PrivateBin/PrivateBin * YunoHost website: https://yunohost.org/ @@ -64,11 +63,11 @@ This means that we have decided to delete the directory that allows us to save t ## Developers info -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing). +Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). To try the testing branch, please proceed like that. ``` -sudo yunohost app install https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing --debug +sudo yunohost app install https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug or -sudo yunohost app upgrade zerobin -u https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing --debug +sudo yunohost app upgrade privatebin -u https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ``` diff --git a/README_fr.md b/README_fr.md index 9c499e8..e321736 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,7 +1,7 @@ # PrivateBin pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/zerobin.svg)](https://dash.yunohost.org/appci/app/zerobin) ![](https://ci-apps.yunohost.org/ci/badges/zerobin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/zerobin.maintain.svg) -[![Installer PrivateBin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=zerobin) +[![Niveau d'intégration](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) +[![Installer PrivateBin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=privatebin) *[Read this readme in english.](./README.md)* @@ -14,8 +14,7 @@ PrivateBin est un logiciel libre, minimaliste, qui joue le rôle de pastebin (co Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). -Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. -Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. +Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. **Version incluse:** 1.3.4 @@ -25,7 +24,6 @@ Il reste cependant compatible avec le schéma original de stockage des données ## Démo -* [Démo YunoHost](https://demo.yunohost.org/zerobin/) * [Démo Privatebin](https://privatebin.net/) ## Configuration @@ -33,7 +31,7 @@ Il reste cependant compatible avec le schéma original de stockage des données ## Documentation * Documentation officielle : https://github.com/PrivateBin/PrivateBin/wiki - * Documentation YunoHost : https://yunohost.org/#/app_zerobin_fr + * Documentation YunoHost : https://yunohost.org/#/app_privatebin_fr ## Caractéristiques spécifiques YunoHost @@ -41,8 +39,8 @@ Il reste cependant compatible avec le schéma original de stockage des données #### Architectures supportées -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/zerobin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/zerobin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/zerobin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) ## Limitations @@ -54,7 +52,7 @@ Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin ## Liens - * Signaler un bug : https://github.com/YunoHost-Apps/zerobin_ynh/issues + * Signaler un bug : https://github.com/YunoHost-Apps/privatebin_ynh/issues * Site de l'application PrivateBin : https://privatebin.info/ * Dépot de l'application principale : https://github.com/PrivateBin/PrivateBin * Site web YunoHost : https://yunohost.org/ @@ -63,11 +61,11 @@ Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin ## Informations pour les développeurs -Merci de faire vos pull request dans la [branche testing](https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing). +Merci de faire vos pull request dans la [branche testing](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. ``` -sudo yunohost app install https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing --debug +sudo yunohost app install https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug or -sudo yunohost app upgrade zerobin -u https://github.com/YunoHost-Apps/zerobin_ynh/tree/testing --debug +sudo yunohost app upgrade privatebin -u https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ``` diff --git a/manifest.json b/manifest.json index ce81fd2..d079163 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { - "name": "Zerobin", - "id": "zerobin", + "name": "PrivateBin", + "id": "privatebin", "packaging_format": 1, "description": { "en": "Minimalist pastebin where the server has zero knowledge of pasted data", @@ -27,8 +27,8 @@ "name": "domain", "type": "domain", "ask": { - "en": "Choose a domain for Zerobin", - "fr": "Choisissez un domaine pour Zerobin" + "en": "Choose a domain for PrivateBin", + "fr": "Choisissez un domaine pour PrivateBin" }, "example": "domain.org" }, @@ -36,11 +36,11 @@ "name": "path", "type": "path", "ask": { - "en": "Choose a path for Zerobin", - "fr": "Choisissez un chemin pour Zerobin" + "en": "Choose a path for PrivateBin", + "fr": "Choisissez un chemin pour PrivateBin" }, - "example": "/zerobin", - "default": "/zerobin" + "example": "/privatebin", + "default": "/privatebin" }, { "name": "is_public", diff --git a/pull_request_template.md b/pull_request_template.md index c828dea..1b38eac 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -2,7 +2,7 @@ - *Description of why you made this PR* ## Solution -- *And how you fix that* +- *And how do you fix that problem* ## PR Status - [ ] Code finished. @@ -11,14 +11,8 @@ - [ ] Upgrade from last version tested. - [ ] Can be reviewed and tested. -## Validation +## Package_check results --- -*Minor decision* -- **Upgrade previous version** : -- [ ] **Code review** : -- [ ] **Approval (LGTM)** : -- [ ] **Approval (LGTM)** : -- **CI succeeded** : -[![Build Status](https://ci-apps-hq.yunohost.org/jenkins/job/zerobin_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/zerobin_ynh%20PR-NUM-/) -*Please replace '-NUM-' in this link by the PR number.* -When the PR is marked as ready to merge, you have to wait for 3 days before really merging it. +*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* + +[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/privatebin_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/privatebin_ynh%20PR-NUM-%20(USERNAME)/) From e628f599c9adff213be4c3b50dd56f80dc4af4ee Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 13 Oct 2020 16:59:12 +0200 Subject: [PATCH 07/43] Small typos --- scripts/backup | 3 +-- scripts/change_url | 3 ++- scripts/install | 5 ++--- scripts/remove | 6 +++--- scripts/restore | 6 +++--- scripts/upgrade | 8 ++++---- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/scripts/backup b/scripts/backup index 5bd529b..fa68a35 100644 --- a/scripts/backup +++ b/scripts/backup @@ -6,14 +6,13 @@ # IMPORT GENERIC HELPERS #================================================= -# source ../settings/scripts/_common.sh +source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers #================================================= # MANAGE SCRIPT FAILURE #================================================= -# Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= diff --git a/scripts/change_url b/scripts/change_url index 6bd3a54..1647c29 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -6,6 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -88,4 +89,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Change of URL completed for $app" --last +ynh_script_progression --message="Change of URL completed for PrivateBin" --last diff --git a/scripts/install b/scripts/install index 9566af2..f352be7 100644 --- a/scripts/install +++ b/scripts/install @@ -6,14 +6,13 @@ # IMPORT GENERIC HELPERS #================================================= -# source _common.sh +source _common.sh source /usr/share/yunohost/helpers #================================================= # MANAGE SCRIPT FAILURE #================================================= -# Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= @@ -121,4 +120,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of $app completed" --last +ynh_script_progression --message="Installation of PrivateBin completed" --last diff --git a/scripts/remove b/scripts/remove index 97c1548..4238aa0 100644 --- a/scripts/remove +++ b/scripts/remove @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -# source _common.sh +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -24,7 +24,7 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) #================================================= # REMOVE APP MAIN DIR #================================================= -ynh_script_progression --message="Removing app main directory" --weight=2 +ynh_script_progression --message="Removing PrivateBin main directory" --weight=2 # Remove the app directory securely ynh_secure_remove --file="$final_path" @@ -59,4 +59,4 @@ ynh_system_user_delete --username=$app # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of $app completed" --last +ynh_script_progression --message="Removal of PrivateBin completed" --last diff --git a/scripts/restore b/scripts/restore index 8594cc9..ea1dd26 100644 --- a/scripts/restore +++ b/scripts/restore @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -# source ../settings/scripts/_common.sh +source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers #================================================= @@ -49,7 +49,7 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." --weight=6 +ynh_script_progression --message="Restoring PrivateBin main directory..." --weight=6 ynh_restore_file --origin_path="$final_path" @@ -87,4 +87,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for $app" --last +ynh_script_progression --message="Restoration completed for PrivateBin" --last diff --git a/scripts/upgrade b/scripts/upgrade index 81b1740..1304b77 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -6,7 +6,7 @@ # IMPORT GENERIC HELPERS #================================================= -# source _common.sh +source _common.sh source /usr/share/yunohost/helpers #================================================= @@ -61,7 +61,7 @@ fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=3 +ynh_script_progression --message="Backing up PrivateBin before upgrading (may take a while)..." --weight=3 # Backup the current version of the app ynh_backup_before_upgrade @@ -98,7 +98,7 @@ fi #================================================= ynh_script_progression --message="Upgrading NGINX web server configuration..." -# Create a dedicated nginx config +# Create a dedicated NGINX config ynh_add_nginx_config #================================================= @@ -156,4 +156,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of $app completed" --last +ynh_script_progression --message="Upgrade of PrivateBin completed" --last From 417c5a4d0ecbf6ed256fa3e73394ec755dd2ed51 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 13 Oct 2020 17:23:50 +0200 Subject: [PATCH 08/43] rename common.sh --- scripts/{_common => _common.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/{_common => _common.sh} (100%) diff --git a/scripts/_common b/scripts/_common.sh similarity index 100% rename from scripts/_common rename to scripts/_common.sh From 1f3decb91798e55881630775a9502cac0a90a61f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 13 Oct 2020 18:06:50 +0200 Subject: [PATCH 09/43] Typo --- README.md | 2 +- README_fr.md | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cb0d3b8..2ef8201 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re ## Additional information -In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of Parsebin, it is specified that: +In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of ParsteBin, it is specified that: For full compatibility with ZeroBin and to be able to decrypt old pastes, you would enable this option. However this is not recommend for new installations as it weakens the security of your PrivateBin instance. diff --git a/README_fr.md b/README_fr.md index e321736..56a897b 100644 --- a/README_fr.md +++ b/README_fr.md @@ -46,9 +46,11 @@ Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvag ## Informations additionnelles -Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de Privatebin, il est précisé que : -* Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. -* Ceci signifie que nous avons décidé de supprimer ce répertoire pour permettre la sécurisation des données. Vous pouvez sauvegarder le répertoire 'data', si vous voulez conservez vos données. Mais vous devriez savoir que cela réduit la sécurité de votre application. +Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de PrivateBin, il est précisé que : + +Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. + +Ceci signifie que nous avons décidé de supprimer ce répertoire pour permettre la sécurisation des données. Vous pouvez sauvegarder le répertoire 'data', si vous voulez conservez vos données. Mais vous devriez savoir que cela réduit la sécurité de votre application. ## Liens From c56d71c7d5a55cb2649fa78cd29e20d74ee22dbd Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 4 Dec 2020 13:42:36 +0100 Subject: [PATCH 10/43] Fix linter warnings --- README_fr.md | 2 +- check_process | 2 -- scripts/install | 2 +- scripts/upgrade | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/README_fr.md b/README_fr.md index 56a897b..27ffe0e 100644 --- a/README_fr.md +++ b/README_fr.md @@ -68,6 +68,6 @@ Merci de faire vos pull request dans la [branche testing](https://github.com/Yun Pour essayer la branche testing, procédez comme suit. ``` sudo yunohost app install https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug -or +ou sudo yunohost app upgrade privatebin -u https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ``` diff --git a/check_process b/check_process index aa24d7a..32cd1e9 100644 --- a/check_process +++ b/check_process @@ -17,8 +17,6 @@ incorrect_path=1 port_already_use=0 change_url=1 -;;; Levels - Level 5=auto ;;; Options Email= Notification=none diff --git a/scripts/install b/scripts/install index 28f93f2..7087485 100644 --- a/scripts/install +++ b/scripts/install @@ -78,7 +78,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +ynh_add_fpm_config phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 7dfe908..847de33 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -115,7 +115,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=3 # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION +ynh_add_fpm_config #================================================= # GENERIC FINALIZATION From ed795bfc70f6f58150e082f124546b2f621fb65a Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 7 Dec 2020 10:14:26 +0100 Subject: [PATCH 11/43] Fix linter warnings --- manifest.json | 2 +- scripts/upgrade | 7 ------- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/manifest.json b/manifest.json index 5e91bbb..bf348bc 100644 --- a/manifest.json +++ b/manifest.json @@ -14,7 +14,7 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.0.0" }, "multi_instance": true, "services": [ diff --git a/scripts/upgrade b/scripts/upgrade index 847de33..0acb397 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -72,13 +72,6 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors -#================================================= -# CHECK THE PATH -#================================================= - -# Normalize the URL path syntax -path_url=$(ynh_normalize_url_path $path_url) - #================================================= # STANDARD UPGRADE STEPS #================================================= From 7ae29eed58db922bf7530795bd110a473a79f83c Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 7 Dec 2020 10:17:15 +0100 Subject: [PATCH 12/43] Update README_fr.md --- README_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_fr.md b/README_fr.md index 27ffe0e..0918436 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. -**Version incluse:** 1.3.4 +**Version incluse :** 1.3.4 ## Captures d'écran From 269f7d2205a56ee59e46ef55bdc52a2a43dd0de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 14 Dec 2020 08:31:41 +0100 Subject: [PATCH 13/43] Update backup --- scripts/backup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/backup b/scripts/backup index fa68a35..ea50559 100644 --- a/scripts/backup +++ b/scripts/backup @@ -18,7 +18,7 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +ynh_print_info --message="Loading installation settings..." app=$YNH_APP_INSTANCE_NAME From 4d6326e2529143769e2e6403d2a26c70d7b1afde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 14 Dec 2020 08:32:43 +0100 Subject: [PATCH 14/43] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index bf348bc..5e91bbb 100644 --- a/manifest.json +++ b/manifest.json @@ -14,7 +14,7 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 4.0.0" + "yunohost": ">= 3.8.1" }, "multi_instance": true, "services": [ From 677c63c00b849db1be95a6fa96aa7286cbbf9840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 14 Dec 2020 08:34:08 +0100 Subject: [PATCH 15/43] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 5e91bbb..c55a692 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Minimalist pastebin where the server has zero knowledge of pasted data", "fr": "Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées" }, - "version": "1.3.4~ynh1", + "version": "1.3.4~ynh2", "url": "https://github.com/PrivateBin/PrivateBin", "license": "Zlib", "maintainer": { From 34b83ce34261a994142e0166da746551329bfc60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 19 Dec 2020 22:59:13 +0100 Subject: [PATCH 16/43] Set badge in SVG --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ef8201..f3b6fa6 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # PrivateBin for YunoHost [![Integration level](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) -[![Install PrivateBin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=privatebin) +[![Install PrivateBin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) *[Lire ce readme en français.](./README_fr.md)* From 6eba343ba39d9afeb5b5d16c098300e2dacf064d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 23 Dec 2020 13:27:51 +0100 Subject: [PATCH 17/43] Set badge to SVG --- README_fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_fr.md b/README_fr.md index 0918436..a74c0c1 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,7 +1,7 @@ # PrivateBin pour YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) -[![Installer PrivateBin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=privatebin) +[![Installer PrivateBin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) *[Read this readme in english.](./README.md)* From 9f537c2f8f7fcf05ccd8b8c8c5b44540ebcfe371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Wed, 3 Feb 2021 15:44:35 +0100 Subject: [PATCH 18/43] Enh testing (#3) * New permissions * Update check_process --- check_process | 8 ++++---- conf/php-fpm.conf | 7 ++----- manifest.json | 4 ++-- pull_request_template.md | 4 +--- scripts/change_url | 1 + scripts/install | 10 +++++----- scripts/remove | 4 ++-- scripts/upgrade | 19 +------------------ 8 files changed, 18 insertions(+), 39 deletions(-) diff --git a/check_process b/check_process index 32cd1e9..cd93ce5 100644 --- a/check_process +++ b/check_process @@ -8,10 +8,10 @@ setup_sub_dir=1 setup_root=1 setup_nourl=0 - setup_private=1 + setup_private=0 setup_public=1 upgrade=1 - upgrade=1 from_commit=42913fc917c98766b0cbba47a3b40148dffaac58 + upgrade=1 from_commit=8ce6cac57048e5df294269989c2432d67bef4c5c backup_restore=1 multi_instance=1 incorrect_path=1 @@ -21,6 +21,6 @@ Email= Notification=none ;;; Upgrade options - ; commit=42913fc917c98766b0cbba47a3b40148dffaac58 - name=Refactoring + ; commit=8ce6cac57048e5df294269989c2432d67bef4c5c + name=Testing (#1) manifest_arg=domain=DOMAIN&path=PATH&is_public=1& diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 61b251f..37344f6 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -419,8 +419,8 @@ chdir = __FINALPATH__ ;php_admin_value[memory_limit] = 32M ; Common values to change to increase file upload limit -; php_admin_value[upload_max_filesize] = 50M -; php_admin_value[post_max_size] = 50M +php_admin_value[upload_max_filesize] = 30M +php_admin_value[post_max_size] = 30M ; php_admin_flag[mail.add_x_header] = Off ; Other common parameters @@ -428,6 +428,3 @@ chdir = __FINALPATH__ ; php_admin_value[max_input_time] = 300 ; php_admin_value[memory_limit] = 256M ; php_admin_flag[short_open_tag] = On - -php_admin_value[upload_max_filesize] = 30M -php_admin_value[post_max_size] = 30M diff --git a/manifest.json b/manifest.json index c55a692..f3b92d6 100644 --- a/manifest.json +++ b/manifest.json @@ -14,12 +14,12 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.0.0" }, "multi_instance": true, "services": [ "nginx", - "php7.0-fpm" + "php7.3-fpm" ], "arguments": { "install" : [ diff --git a/pull_request_template.md b/pull_request_template.md index 1b38eac..6c28fc5 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -13,6 +13,4 @@ ## Package_check results --- -*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* - -[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/privatebin_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/privatebin_ynh%20PR-NUM-%20(USERNAME)/) +* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"* diff --git a/scripts/change_url b/scripts/change_url index 0017e2c..ac2c77f 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -28,6 +28,7 @@ ynh_script_progression --message="Loading installation settings..." # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) +is_public=$(ynh_app_setting_get --app=$app --key=is_public) #================================================= # CHECK WHICH PARTS SHOULD BE CHANGED diff --git a/scripts/install b/scripts/install index 7087485..44b34de 100644 --- a/scripts/install +++ b/scripts/install @@ -28,7 +28,7 @@ app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= -ynh_script_progression --message="Validating installation parameters..." +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" @@ -39,7 +39,7 @@ ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url #================================================= # STORE SETTINGS FROM MANIFEST #================================================= -ynh_script_progression --message="Storing installation settings..." +ynh_script_progression --message="Storing installation settings..." --weight=1 ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url @@ -59,7 +59,7 @@ ynh_setup_source --dest_dir="$final_path" #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Configuring NGINX web server..." +ynh_script_progression --message="Configuring NGINX web server..." --weight=1 # Create a dedicated NGINX config ynh_add_nginx_config @@ -101,12 +101,12 @@ chmod 700 $final_path/{data,tmp} #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring permissions..." --weight=1 # If app is public, add url to SSOWat conf as skipped_uris if [ $is_public -eq 1 ]; then # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" + ynh_permission_update --permission="main" --add="visitors" else # If the app is private, viewing paste stays publicly accessible. # Modify the domain to be used in a regex diff --git a/scripts/remove b/scripts/remove index 4238aa0..5d1d855 100644 --- a/scripts/remove +++ b/scripts/remove @@ -40,7 +40,7 @@ ynh_remove_nginx_config #================================================= # REMOVE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Removing PHP-FPM configuration" +ynh_script_progression --message="Removing PHP-FPM configuration" --weight=1 # Remove the dedicated PHP-FPM config ynh_remove_fpm_config @@ -50,7 +50,7 @@ ynh_remove_fpm_config #================================================= # REMOVE DEDICATED USER #================================================= -ynh_script_progression --message="Removing the dedicated system user" +ynh_script_progression --message="Removing the dedicated system user" --weight=2 # Delete a system user ynh_system_user_delete --username=$app diff --git a/scripts/upgrade b/scripts/upgrade index 0acb397..0a7ec94 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -89,7 +89,7 @@ fi #================================================= # NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Upgrading NGINX web server configuration..." +ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 # Create a dedicated NGINX config ynh_add_nginx_config @@ -127,23 +127,6 @@ mkdir -p $final_path/{data,tmp} chown -R $app:root $final_path/{data,tmp} chmod 700 $final_path/{data,tmp} -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." --weight=1 - -# If app is public, add url to SSOWat conf as skipped_uris -if [ $is_public -eq 1 ]; then - # unprotected_uris allows SSO credentials to be passed anyway. - ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" -else - # If the app is private, viewing paste stays publicly accessible. - # Modify the domain to be used in a regex - domain_regex=$(echo "$domain" | sed 's@-@.@g') - ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/$" - ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$path_url/.*$" -fi - #================================================= # RELOAD NGINX #================================================= From 6dd9a0487625772c4113bb68e64f384c4c627935 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 20 Mar 2021 13:49:03 +0100 Subject: [PATCH 19/43] Update change_url --- scripts/change_url | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/change_url b/scripts/change_url index ac2c77f..2fb4d2e 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -30,6 +30,23 @@ ynh_script_progression --message="Loading installation settings..." final_path=$(ynh_app_setting_get --app=$app --key=final_path) is_public=$(ynh_app_setting_get --app=$app --key=is_public) +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # Remove the new domain config file, the remove script won't do it as it doesn't know yet its location. + ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" + + # Restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # CHECK WHICH PARTS SHOULD BE CHANGED #================================================= From 0aeece8cdffa6575ef5173b0d745a6928af98f3c Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 20 Mar 2021 13:50:58 +0100 Subject: [PATCH 20/43] Update change_url --- scripts/change_url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/change_url b/scripts/change_url index 2fb4d2e..d7240ac 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -97,7 +97,7 @@ fi #================================================= # UPDATE SSOWAT #================================================= -ynh_script_progression --message="Reconfiguring SSOwat..." +ynh_script_progression --message="Reconfiguring permissions..." if [ $is_public -eq 0 ] then From 79eb4166c091fe5adf7a94f65861e8947801f316 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 20 Mar 2021 13:53:03 +0100 Subject: [PATCH 21/43] Update manifest.json --- manifest.json | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/manifest.json b/manifest.json index f3b92d6..1d746f4 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Minimalist pastebin where the server has zero knowledge of pasted data", "fr": "Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées" }, - "version": "1.3.4~ynh2", + "version": "1.3.4~ynh3", "url": "https://github.com/PrivateBin/PrivateBin", "license": "Zlib", "maintainer": { @@ -14,7 +14,7 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 4.0.0" + "yunohost": ">= 4.1.7" }, "multi_instance": true, "services": [ @@ -26,29 +26,17 @@ { "name": "domain", "type": "domain", - "ask": { - "en": "Choose a domain for PrivateBin", - "fr": "Choisissez un domaine pour PrivateBin" - }, "example": "domain.org" }, { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for PrivateBin", - "fr": "Choisissez un chemin pour PrivateBin" - }, "example": "/privatebin", "default": "/privatebin" }, { "name": "is_public", "type": "boolean", - "ask": { - "en": "Is it a public site?", - "fr": "Est-ce un site public ?" - }, "help": { "en": "If private, only YunoHost users can create a paste, but everyone can read it.", "fr": "Si privé, seul les utilisateurs YunoHost peuvent créer un paste, mais tout le monde peut lire." From 169c2acd954d7315eac5819eeb996a7315efe0e4 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 5 Apr 2021 17:52:05 +0200 Subject: [PATCH 22/43] Upgrade to version 1.3.5 --- README.md | 6 +++--- README_fr.md | 6 +++--- conf/app.src | 4 ++-- manifest.json | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f3b6fa6..98e13de 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mo This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. -**Shipped version:** 1.3.4 +**Shipped version:** 1.3.5 ## Screenshots @@ -39,8 +39,8 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re #### Supported architectures -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) ## Limitations diff --git a/README_fr.md b/README_fr.md index a74c0c1..1667977 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,7 +16,7 @@ Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. -**Version incluse :** 1.3.4 +**Version incluse :** 1.3.5 ## Captures d'écran @@ -39,8 +39,8 @@ Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvag #### Architectures supportées -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) ## Limitations diff --git a/conf/app.src b/conf/app.src index a8046ef..2592c4e 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/PrivateBin/PrivateBin/archive/1.3.4.tar.gz -SOURCE_SUM=0dad8976d823a01de8affb4136bd205f2e5ae418c01e560a0d84f94da7a78749 +SOURCE_URL=https://github.com/PrivateBin/PrivateBin/archive/1.3.5.tar.gz +SOURCE_SUM=cbee0a8c5ef58ae98cd77982619190356f657e8bbc9e3f429307c65a411bfb80 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index 1d746f4..1245d0f 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Minimalist pastebin where the server has zero knowledge of pasted data", "fr": "Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées" }, - "version": "1.3.4~ynh3", + "version": "1.3.5~ynh1", "url": "https://github.com/PrivateBin/PrivateBin", "license": "Zlib", "maintainer": { From 18cb5db78a9d9d648984bacf3d658e040874a887 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 7 May 2021 11:07:40 +0200 Subject: [PATCH 23/43] Fix links --- README.md | 4 ++-- README_fr.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 98e13de..35588ff 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ *[Lire ce readme en français.](./README_fr.md)* > *This package allow you to install PrivateBin quickly and simply on a YunoHost server. -If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.* +If you don't have YunoHost, please see [here](https://yunohost.org/install) to know how to install and enjoy it.* ## Overview @@ -31,7 +31,7 @@ This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was re ## Documentation * Official documentation: https://github.com/PrivateBin/PrivateBin/wiki - * YunoHost documentation: https://yunohost.org/#/app_privatebin + * YunoHost documentation: https://yunohost.org/en/app_privatebin ## YunoHost specific features diff --git a/README_fr.md b/README_fr.md index 1667977..4e5fa19 100644 --- a/README_fr.md +++ b/README_fr.md @@ -6,7 +6,7 @@ *[Read this readme in english.](./README.md)* > *Ce package vous permet d'installer PrivateBin rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/install) pour savoir comment l'installer et en profiter.* ## Vue d'ensemble @@ -31,7 +31,7 @@ Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvag ## Documentation * Documentation officielle : https://github.com/PrivateBin/PrivateBin/wiki - * Documentation YunoHost : https://yunohost.org/#/app_privatebin_fr + * Documentation YunoHost : https://yunohost.org/fr/app_privatebin ## Caractéristiques spécifiques YunoHost From dcbe51787fbf8fffc0e3e923014267c2dc5fbf02 Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Tue, 11 May 2021 07:38:14 +0200 Subject: [PATCH 24/43] [autopatch] Update issue and PR templates (#8) Co-authored-by: Yunohost-Bot <> --- pull_request_template.md | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 pull_request_template.md diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 6c28fc5..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,16 +0,0 @@ -## Problem -- *Description of why you made this PR* - -## Solution -- *And how do you fix that problem* - -## PR Status -- [ ] Code finished. -- [ ] Tested with Package_check. -- [ ] Fix or enhancement tested. -- [ ] Upgrade from last version tested. -- [ ] Can be reviewed and tested. - -## Package_check results ---- -* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"* From d07b141f34f4002c01a7b2ce1ea7c20e6b10d28b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 11 May 2021 11:03:02 +0200 Subject: [PATCH 25/43] Add templates --- .github/ISSUE_TEMPLATE.md | 55 ++++++++++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++ 2 files changed, 71 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..2729a6b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Determine if you are on the right place:* + - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* +3. *Delete the italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install the_app + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ef70e18 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Problem + +- *Description of why you made this PR* + +## Solution + +- *And how do you fix that problem* + +## PR Status + +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) + +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) From cfd9d5cafeec0f984395cb57b0fbd378f29f4551 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 20 May 2021 16:00:22 +0200 Subject: [PATCH 26/43] Update check_process --- check_process | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/check_process b/check_process index cd93ce5..a28d15d 100644 --- a/check_process +++ b/check_process @@ -1,8 +1,8 @@ ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) - is_public=1 (PUBLIC|public=1|private=0) + domain="domain.tld" + path="/path" + is_public=1 ; Checks pkg_linter=1 setup_sub_dir=1 @@ -15,7 +15,6 @@ backup_restore=1 multi_instance=1 incorrect_path=1 - port_already_use=0 change_url=1 ;;; Options Email= From 52b7e5b68193285739b9f49e5df8e0bcb92f82e3 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 22 May 2021 11:50:00 +0200 Subject: [PATCH 27/43] cleaning up --- check_process | 1 - manifest.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/check_process b/check_process index a28d15d..7cea352 100644 --- a/check_process +++ b/check_process @@ -14,7 +14,6 @@ upgrade=1 from_commit=8ce6cac57048e5df294269989c2432d67bef4c5c backup_restore=1 multi_instance=1 - incorrect_path=1 change_url=1 ;;; Options Email= diff --git a/manifest.json b/manifest.json index 1245d0f..dbda05a 100644 --- a/manifest.json +++ b/manifest.json @@ -14,7 +14,7 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 4.1.7" + "yunohost": ">= 4.2.4" }, "multi_instance": true, "services": [ From 2974c35912aa3167f6c7b4a8b477b57784f7cb8f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 22 May 2021 12:19:41 +0200 Subject: [PATCH 28/43] Add templates --- doc/DISCLAIMER.md | 11 +++++++++++ doc/DISCLAIMER_fr.md | 7 +++++++ doc/screenshots/bootstrap.png | Bin 0 -> 36313 bytes manifest.json | 8 ++++++++ 4 files changed, 26 insertions(+) create mode 100755 doc/DISCLAIMER.md create mode 100755 doc/DISCLAIMER_fr.md create mode 100644 doc/screenshots/bootstrap.png diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100755 index 0000000..3064cfd --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,11 @@ +## Additional information + +Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mode. + +This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. + +In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of ParsteBin, it is specified that: + +For full compatibility with ZeroBin and to be able to decrypt old pastes, you would enable this option. However this is not recommend for new installations as it weakens the security of your PrivateBin instance. + +This means that we have decided to delete the directory that allows us to save the data. You can save the 'data' directory, if you want to keep your data. But you should know that this weakens the security of this application. \ No newline at end of file diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100755 index 0000000..1ea5c7e --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,7 @@ +## Informations additionnelles + +Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de PrivateBin, il est précisé que : + +Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. + +Ceci signifie que nous avons décidé de supprimer ce répertoire pour permettre la sécurisation des données. Vous pouvez sauvegarder le répertoire 'data', si vous voulez conservez vos données. Mais vous devriez savoir que cela réduit la sécurité de votre application. \ No newline at end of file diff --git a/doc/screenshots/bootstrap.png b/doc/screenshots/bootstrap.png new file mode 100644 index 0000000000000000000000000000000000000000..28ebfa2cc363f7615862c992eceae1e26ab30d7b GIT binary patch literal 36313 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index dbda05a..b12987b 100644 --- a/manifest.json +++ b/manifest.json @@ -8,6 +8,14 @@ }, "version": "1.3.5~ynh1", "url": "https://github.com/PrivateBin/PrivateBin", + "upstream": { + "license": "Zlib", + "website": "https://privatebin.info/", + "demo": "https://privatebin.net/", + "admindoc": "https://github.com/PrivateBin/PrivateBin/wiki", + "userdoc": "https://yunohost.org/en/app_privatebin", + "code": "https://github.com/PrivateBin/PrivateBin" + }, "license": "Zlib", "maintainer": { "name": "julien", From 1d06b22c97e2d21353004fec9781ead3fc3b72b1 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sat, 22 May 2021 10:19:48 +0000 Subject: [PATCH 29/43] Auto-update README --- README.md | 85 ++++++++++++++++++++++++++-------------------------- README_fr.md | 57 ++++++++++++++--------------------- 2 files changed, 64 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index 35588ff..c468f4d 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,66 @@ + + +--- + + + # PrivateBin for YunoHost -[![Integration level](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) -[![Install PrivateBin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) +[![Integration level](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) +[![Install privatebin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) *[Lire ce readme en français.](./README_fr.md)* -> *This package allow you to install PrivateBin quickly and simply on a YunoHost server. -If you don't have YunoHost, please see [here](https://yunohost.org/install) to know how to install and enjoy it.* +> *This package allows you to install privatebin quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. +Minimalist pastebin where the server has zero knowledge of pasted data + +**Shipped version:** 1.3.5~ynh1 + +**Demo:** https://privatebin.net/ + + +## Screenshots + + + ![](./doc/screenshots/bootstrap.png) + + + + +## Disclaimers / important information + +## Additional information Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mode. This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. -**Shipped version:** 1.3.5 - -## Screenshots - -![](https://privatebin.info/img/1.0/bootstrap.png) - -## Demo - -* [Official demo](https://privatebin.net/) - -## Configuration - -## Documentation - - * Official documentation: https://github.com/PrivateBin/PrivateBin/wiki - * YunoHost documentation: https://yunohost.org/en/app_privatebin - -## YunoHost specific features - -#### Multi-users support - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) - -## Limitations - -## Additional information - In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of ParsteBin, it is specified that: For full compatibility with ZeroBin and to be able to decrypt old pastes, you would enable this option. However this is not recommend for new installations as it weakens the security of your PrivateBin instance. This means that we have decided to delete the directory that allows us to save the data. You can save the 'data' directory, if you want to keep your data. But you should know that this weakens the security of this application. -## Links - * Report a bug: https://github.com/YunoHost-Apps/privatebin_ynh/issues - * PrivateBin website: https://privatebin.info/ - * PrivateBin repository: https://github.com/PrivateBin/PrivateBin - * YunoHost website: https://yunohost.org/ +## Documentation and resources ---- +* Official app website: https://privatebin.info/ +* Official user documentation: https://yunohost.org/en/app_privatebin +* Official admin documentation: https://github.com/PrivateBin/PrivateBin/wiki +* Upstream app code repository: https://github.com/PrivateBin/PrivateBin +* YunoHost documentation for this app: https://yunohost.org/app_privatebin +* Report a bug: https://github.com/YunoHost-Apps/privatebin_ynh/issues -## Developers info +## Developer info -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). To try the testing branch, please proceed like that. ``` @@ -71,3 +68,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/privatebin_ynh/tree/t or sudo yunohost app upgrade privatebin -u https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index 4e5fa19..bcc5f09 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,48 +1,32 @@ # PrivateBin pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) -[![Installer PrivateBin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) +[![Niveau d'intégration](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) +[![Installer privatebin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* -> *Ce package vous permet d'installer PrivateBin rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/install) pour savoir comment l'installer et en profiter.* +> *This package allows you to install privatebin quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Vue d'ensemble -PrivateBin est un logiciel libre, minimaliste, qui joue le rôle de pastebin (coller-corbeille) où le serveur n'a aucune connaissance des données qu'il stocke. +Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées -Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). +**Version incluse:** 1.3.5~ynh1 -Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. +**Démo:** https://privatebin.net/ -**Version incluse :** 1.3.5 ## Captures d'écran -![](https://privatebin.info/img/1.0/bootstrap.png) -## Démo + ![](./doc/screenshots/bootstrap.png) -* [Démo Privatebin](https://privatebin.net/) -## Configuration -## Documentation - * Documentation officielle : https://github.com/PrivateBin/PrivateBin/wiki - * Documentation YunoHost : https://yunohost.org/fr/app_privatebin - -## Caractéristiques spécifiques YunoHost - -#### Support multi-utilisateurs - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps.yunohost.org/ci/apps/privatebin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/privatebin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/privatebin/) - -## Limitations +## Avertissements / informations importantes ## Informations additionnelles @@ -52,22 +36,25 @@ Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les Ceci signifie que nous avons décidé de supprimer ce répertoire pour permettre la sécurisation des données. Vous pouvez sauvegarder le répertoire 'data', si vous voulez conservez vos données. Mais vous devriez savoir que cela réduit la sécurité de votre application. -## Liens - * Signaler un bug : https://github.com/YunoHost-Apps/privatebin_ynh/issues - * Site de l'application PrivateBin : https://privatebin.info/ - * Dépot de l'application principale : https://github.com/PrivateBin/PrivateBin - * Site web YunoHost : https://yunohost.org/ +## Documentations et ressources ---- +* Site official de l'app : https://privatebin.info/ +* Documentation officielle utilisateur: https://yunohost.org/en/app_privatebin +* Documentation officielle de l'admin: https://github.com/PrivateBin/PrivateBin/wiki +* Dépôt de code officiel de l'app: https://github.com/PrivateBin/PrivateBin +* Documentation YunoHost pour cette app: https://yunohost.org/app_privatebin +* Signaler un bug: https://github.com/YunoHost-Apps/privatebin_ynh/issues ## Informations pour les développeurs -Merci de faire vos pull request dans la [branche testing](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. ``` sudo yunohost app install https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug -ou +or sudo yunohost app upgrade privatebin -u https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications:** https://yunohost.org/packaging_apps \ No newline at end of file From ab1ae84516940c583f1999772de76acbceb9183b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 22 May 2021 12:20:19 +0200 Subject: [PATCH 30/43] Update DISCLAIMER_fr.md --- doc/DISCLAIMER_fr.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md index 1ea5c7e..3158fbb 100755 --- a/doc/DISCLAIMER_fr.md +++ b/doc/DISCLAIMER_fr.md @@ -1,5 +1,9 @@ ## Informations additionnelles +Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). + +Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. + Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de PrivateBin, il est précisé que : Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. From e21aeb4ac82b20ecd1d931f578b47fe9139d394d Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sat, 22 May 2021 10:21:19 +0000 Subject: [PATCH 31/43] Auto-update README --- README_fr.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README_fr.md b/README_fr.md index bcc5f09..bc0b926 100644 --- a/README_fr.md +++ b/README_fr.md @@ -30,6 +30,10 @@ Pastebin minimaliste où le serveur n'a aucune connaissance des données copiée ## Informations additionnelles +Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). + +Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. + Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de PrivateBin, il est précisé que : Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. From b8362d83e2ab0f4c1a3ce5b7ed43c6cc76af8248 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 22 Sep 2021 18:44:06 +0200 Subject: [PATCH 32/43] cleaning up --- manifest.json | 4 +--- scripts/restore | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/manifest.json b/manifest.json index b12987b..ff3d165 100644 --- a/manifest.json +++ b/manifest.json @@ -13,7 +13,6 @@ "website": "https://privatebin.info/", "demo": "https://privatebin.net/", "admindoc": "https://github.com/PrivateBin/PrivateBin/wiki", - "userdoc": "https://yunohost.org/en/app_privatebin", "code": "https://github.com/PrivateBin/PrivateBin" }, "license": "Zlib", @@ -33,8 +32,7 @@ "install" : [ { "name": "domain", - "type": "domain", - "example": "domain.org" + "type": "domain" }, { "name": "path", diff --git a/scripts/restore b/scripts/restore index ea1dd26..2d21069 100644 --- a/scripts/restore +++ b/scripts/restore @@ -33,8 +33,6 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= ynh_script_progression --message="Validating restoration parameters..." --weight=2 -ynh_webpath_available --domain=$domain --path_url=$path_url \ - || ynh_die --message="Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die --message="There is already a directory: $final_path " From 93d55a55cd1dea28d6794a8321db2ce6c388df11 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Wed, 22 Sep 2021 16:44:11 +0000 Subject: [PATCH 33/43] Auto-update README --- README.md | 22 +++++----------------- README_fr.md | 36 ++++++++++++++---------------------- 2 files changed, 19 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index c468f4d..7f70ee5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ - - ---- - + # PrivateBin pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) +[![Niveau d'intégration](https://dash.yunohost.org/integration/privatebin.svg)](https://dash.yunohost.org/appci/app/privatebin) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/privatebin.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/privatebin.maintain.svg) [![Installer PrivateBin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=privatebin) *[Read this readme in english.](./README.md)* -*[Lire ce readme en français.](./README_fr.md)* > *Ce package vous permet d'installer PrivateBin rapidement et simplement sur un serveur YunoHost. Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* @@ -13,13 +17,14 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées -**Version incluse :** 1.4.0~ynh1 + +**Version incluse :** 1.4.0~ynh2 **Démo :** https://privatebin.net/ ## Captures d'écran -![](./doc/screenshots/bootstrap.png) +![Capture d'écran de PrivateBin](./doc/screenshots/bootstrap.png) ## Avertissements / informations importantes @@ -34,23 +39,25 @@ Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. Ceci signifie que nous avons décidé de supprimer ce répertoire pour permettre la sécurisation des données. Vous pouvez sauvegarder le répertoire 'data', si vous voulez conservez vos données. Mais vous devriez savoir que cela réduit la sécurité de votre application. + ## Documentations et ressources -* Site officiel de l'app : https://privatebin.info/ -* Documentation officielle de l'admin : https://github.com/PrivateBin/PrivateBin/wiki -* Dépôt de code officiel de l'app : https://github.com/PrivateBin/PrivateBin -* Documentation YunoHost pour cette app : https://yunohost.org/app_privatebin -* Signaler un bug : https://github.com/YunoHost-Apps/privatebin_ynh/issues +* Site officiel de l'app : +* Documentation officielle de l'admin : +* Dépôt de code officiel de l'app : +* Documentation YunoHost pour cette app : +* Signaler un bug : ## Informations pour les développeurs Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing). Pour essayer la branche testing, procédez comme suit. -``` + +``` bash sudo yunohost app install https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ou sudo yunohost app upgrade privatebin -u https://github.com/YunoHost-Apps/privatebin_ynh/tree/testing --debug ``` -**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file +**Plus d'infos sur le packaging d'applications :** From d797887ba659b1993ba1595e9265f2ba9f657ed6 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 29 Jul 2022 00:49:56 +0200 Subject: [PATCH 39/43] Apply example_ynh --- scripts/install | 28 ++++++++-------------------- scripts/upgrade | 23 +++++------------------ 2 files changed, 13 insertions(+), 38 deletions(-) diff --git a/scripts/install b/scripts/install index bb9b127..b59ec42 100644 --- a/scripts/install +++ b/scripts/install @@ -44,7 +44,6 @@ ynh_script_progression --message="Storing installation settings..." --weight=1 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=is_public --value=$is_public #================================================= # STANDARD MODIFICATIONS @@ -64,6 +63,11 @@ ynh_script_progression --message="Setting up source files..." --weight=3 ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" +mkdir -p $final_path/{data,tmp} + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # PHP-FPM CONFIGURATION @@ -81,23 +85,6 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=1 # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# SPECIFIC SETUP -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions to app files -chown -R root: $final_path -# Files owned by user specific can just read -find $final_path -type f | xargs chmod 644 -find $final_path -type d | xargs chmod 755 - -# Except for data and tmp subdir, where the user must have write permissions -mkdir -p $final_path/{data,tmp} -chown -R $app:root $final_path/{data,tmp} -chmod 700 $final_path/{data,tmp} - #================================================= # GENERIC FINALIZATION #================================================= @@ -105,10 +92,11 @@ chmod 700 $final_path/{data,tmp} #================================================= ynh_script_progression --message="Configuring permissions..." --weight=1 -# If app is public, add url to SSOWat conf as skipped_uris +# Make app public if necessary if [ $is_public -eq 1 ] then - # unprotected_uris allows SSO credentials to be passed anyway. + # Everyone can access the app. + # The "main" permission is automatically created before the install script. ynh_permission_update --permission="main" --add="visitors" else # If the app is private, viewing paste stays publicly accessible. diff --git a/scripts/upgrade b/scripts/upgrade index 824af72..6689f6b 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -18,7 +18,6 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) -is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) @@ -50,23 +49,11 @@ ynh_abort_if_errors #================================================= ynh_script_progression --message="Ensuring downward compatibility..." --weight=3 -# Fix is_public as a boolean value -if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 -elif [ "$is_public" = "No" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 -elif [ -z "$is_public" ] -then - if grep --quiet "unprotected_uris" "/etc/yunohost/apps/$app/settings.yml" - then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 - else - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 - 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 # If final_path doesn't exist, create it From 01903737d830b041e449b6c484ac991ab3db8b52 Mon Sep 17 00:00:00 2001 From: yalh76 Date: Fri, 29 Jul 2022 19:49:50 +0200 Subject: [PATCH 40/43] Update manifest.json --- manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 66c0a4c..a465e76 100644 --- a/manifest.json +++ b/manifest.json @@ -17,8 +17,8 @@ }, "license": "Zlib", "maintainer": { - "name": "julien", - "email": "julien.malik@paraiso.me" + "name": "", + "email": "" }, "requirements": { "yunohost": ">= 4.3.0" From 8ace1226a54d53daf33e5e3af9a313fcbbd77985 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Mon, 15 Aug 2022 13:41:09 +0000 Subject: [PATCH 41/43] Auto-update README --- README.md | 1 + README_fr.md | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f7c4b5..0fc0c04 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Minimalist pastebin where the server has zero knowledge of pasted data **Shipped version:** 1.4.0~ynh2 + **Demo:** https://privatebin.net/ ## Screenshots diff --git a/README_fr.md b/README_fr.md index 89719cd..cfaa39d 100644 --- a/README_fr.md +++ b/README_fr.md @@ -18,7 +18,8 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées -**Version incluse :** 1.4.0~ynh2 +**Version incluse :** 1.4.0~ynh2 + **Démo :** https://privatebin.net/ From 633c1b27c8a6b67ddab7ac1d6ac682ba61fcd5da Mon Sep 17 00:00:00 2001 From: yalh76 Date: Mon, 12 Sep 2022 21:28:20 +0200 Subject: [PATCH 42/43] Apply last example_ynh --- conf/app.src | 1 + conf/nginx.conf | 3 +++ conf/php-fpm.conf | 4 ++-- doc/DESCRIPTION.md | 4 ++++ doc/DESCRIPTION_fr.md | 4 ++++ doc/DISCLAIMER.md | 6 +----- doc/DISCLAIMER_fr.md | 4 ---- scripts/change_url | 27 ++------------------------- scripts/install | 7 +------ scripts/restore | 8 +++++--- scripts/upgrade | 23 ++++++----------------- 11 files changed, 29 insertions(+), 62 deletions(-) diff --git a/conf/app.src b/conf/app.src index 5f9e014..a9d2c32 100644 --- a/conf/app.src +++ b/conf/app.src @@ -4,3 +4,4 @@ SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true SOURCE_FILENAME= +SOURCE_EXTRACT=true diff --git a/conf/nginx.conf b/conf/nginx.conf index af017c4..d9fdc4e 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -6,6 +6,9 @@ location __PATH__/ { index index.php; + # Common parameter to increase upload size limit in conjunction with dedicated php-fpm file + #client_max_body_size 50M; + try_files $uri $uri/ index.php; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 37344f6..b4c2372 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -419,8 +419,8 @@ chdir = __FINALPATH__ ;php_admin_value[memory_limit] = 32M ; Common values to change to increase file upload limit -php_admin_value[upload_max_filesize] = 30M -php_admin_value[post_max_size] = 30M +php_admin_value[upload_max_filesize] = 50M +php_admin_value[post_max_size] = 50M ; php_admin_flag[mail.add_x_header] = Off ; Other common parameters diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index 050689a..4d0a7a2 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1 +1,5 @@ Minimalist pastebin where the server has zero knowledge of pasted data + +Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mode. + +This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md index d9aa879..b7cbe6b 100644 --- a/doc/DESCRIPTION_fr.md +++ b/doc/DESCRIPTION_fr.md @@ -1 +1,5 @@ Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées + +Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). + +Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md index 04dad56..239536a 100755 --- a/doc/DISCLAIMER.md +++ b/doc/DISCLAIMER.md @@ -1,10 +1,6 @@ ## Additional information -Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mode. - -This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. - -In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of ParsteBin, it is specified that: +In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of PrivateBin, it is specified that: For full compatibility with ZeroBin and to be able to decrypt old pastes, you would enable this option. However this is not recommend for new installations as it weakens the security of your PrivateBin instance. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md index 829bc77..230205f 100755 --- a/doc/DISCLAIMER_fr.md +++ b/doc/DISCLAIMER_fr.md @@ -1,9 +1,5 @@ ## Informations additionnelles -Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). - -Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. - Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de PrivateBin, il est précisé que : Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin. diff --git a/scripts/change_url b/scripts/change_url index e69e0b0..f7a7f11 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -24,14 +24,11 @@ app=$YNH_APP_INSTANCE_NAME #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation 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) -# Add settings here as needed by your application -is_public=$(ynh_app_setting_get --app=$app --key=is_public) - #================================================= # BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP #================================================= @@ -96,32 +93,12 @@ then ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" fi -#================================================= -# SPECIFIC MODIFICATIONS -#================================================= -# UPDATE SSOWAT -#================================================= -ynh_script_progression --message="Reconfiguring permissions..." - -if [ $is_public -eq 0 ] -then - # If the app is private, viewing images stays publicly accessible. - if [ "$new_path" == "/" ]; then - # If the path is /, clear it to prevent any error with the regex. - new_path="" - fi - # Modify the domain to be used in a regex - domain_regex=$(echo "$new_domain" | sed 's@-@.@g') - ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$new_path/$" - ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$new_path/.*$" -fi - #================================================= # GENERIC FINALISATION #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +ynh_script_progression --message="Reloading NGINX web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/install b/scripts/install index b59ec42..2dfdbd3 100644 --- a/scripts/install +++ b/scripts/install @@ -76,6 +76,7 @@ ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config ynh_add_fpm_config +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # NGINX CONFIGURATION @@ -98,12 +99,6 @@ then # Everyone can access the app. # The "main" permission is automatically created before the install script. ynh_permission_update --permission="main" --add="visitors" -else - # If the app is private, viewing paste stays publicly accessible. - # Modify the domain to be used in a regex - domain_regex=$(echo "$domain" | sed 's@-@.@g') - ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/$" - ynh_app_setting_set --app=$app --key=unprotected_regex --value="$domain_regex$path_url/.*$" fi #================================================= diff --git a/scripts/restore b/scripts/restore index 43bfbed..bfa9784 100644 --- a/scripts/restore +++ b/scripts/restore @@ -54,19 +54,21 @@ ynh_script_progression --message="Restoring the app main directory..." --weight= ynh_restore_file --origin_path="$final_path" -chown -R $app:root $final_path/{data,tmp} +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the PHP-FPM configuration..." +ynh_script_progression --message="Restoring the PHP-FPM configuration..." --weight=1 ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= -ynh_script_progression --message="Restoring the NGINX web server configuration..." +ynh_script_progression --message="Restoring the NGINX web server configuration..." --weight=1 ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" diff --git a/scripts/upgrade b/scripts/upgrade index 6689f6b..7036b61 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -31,12 +31,12 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up PrivateBin before upgrading (may take a while)..." --weight=3 +ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=3 # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { - # restore it if the upgrade fails + # Restore it if the upgrade fails ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script @@ -82,6 +82,10 @@ then ynh_setup_source --dest_dir="$final_path" fi +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -98,21 +102,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." - # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions to app files -chown -R root: $final_path -# Files owned by user specific can just read -find $final_path -type f | xargs chmod 644 -find $final_path -type d | xargs chmod 755 - -# except for data and tmp subdir, where the user must have write permissions -mkdir -p $final_path/{data,tmp} -chown -R $app:root $final_path/{data,tmp} -chmod 700 $final_path/{data,tmp} - #================================================= # GENERIC FINALIZATION #================================================= From 948459f2d693823997f9f497d8d009701f1b084a Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Mon, 12 Sep 2022 19:28:26 +0000 Subject: [PATCH 43/43] Auto-update README --- README.md | 10 +++++----- README_fr.md | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0fc0c04..80bef31 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Minimalist pastebin where the server has zero knowledge of pasted data +Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mode. + +This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. + **Shipped version:** 1.4.0~ynh2 @@ -31,11 +35,7 @@ Minimalist pastebin where the server has zero knowledge of pasted data ## Additional information -Data is encrypted/decrypted in the browser using 256bit AES in Galois Counter mode. - -This is a fork of ZeroBin, originally developed by Sébastien Sauvage. It was refactored to allow easier and cleaner extensions and has now much more features than the original. It is however still fully compatible to the original ZeroBin 0.19 data storage scheme. Therefore such installations can be upgraded to this fork without loosing any data. - -In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of ParsteBin, it is specified that: +In the [update documentation](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) of PrivateBin, it is specified that: For full compatibility with ZeroBin and to be able to decrypt old pastes, you would enable this option. However this is not recommend for new installations as it weakens the security of your PrivateBin instance. diff --git a/README_fr.md b/README_fr.md index cfaa39d..a6dd0a9 100644 --- a/README_fr.md +++ b/README_fr.md @@ -17,6 +17,10 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour Pastebin minimaliste où le serveur n'a aucune connaissance des données copiées +Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). + +Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. + **Version incluse :** 1.4.0~ynh2 @@ -31,10 +35,6 @@ Pastebin minimaliste où le serveur n'a aucune connaissance des données copiée ## Informations additionnelles -Les données sont chiffrées et déchiffrées dans le navigateur en utilisant la technologie AES 256bits en mode Galois Counter (GCM). - -Ce projet est un fork de ZeroBin, développé à l'origine par Sébastien Sauvage. Il a été ré-écrit pour accepter plus facilement des extensions en rajoutant plus de fonctionnalités. Il reste cependant compatible avec le schéma original de stockage des données Zerobin 0.19. Ainsi toutes les installations peuvent être mises à jour vers ce projet, sans perte de données. - Dans la [documentation de mise à jour](https://github.com/PrivateBin/PrivateBin/wiki/Configuration#zerobincompatibility) de PrivateBin, il est précisé que : Pour une compatibilité complète avec Zerobin et le déchiffrement de tous les vieux "paste", vous devriez activer cette option. Cependant, ce n'est pas recommandé pour les nouvelles installations car cela affaiblit la sécurité de votre instance PrivateBin.