diff --git a/README.md b/README.md index 283a7e1..db3b390 100755 --- a/README.md +++ b/README.md @@ -5,7 +5,8 @@ It shall NOT be edited by hand. # LibreQR for YunoHost -[![Integration level](https://dash.yunohost.org/integration/qr.svg)](https://dash.yunohost.org/appci/app/qr) ![Working status](https://ci-apps.yunohost.org/ci/badges/qr.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/qr.maintain.svg) +[![Integration level](https://dash.yunohost.org/integration/qr.svg)](https://dash.yunohost.org/appci/app/qr) ![Working status](https://ci-apps.yunohost.org/ci/badges/qr.status.svg) ![Maintenance status](https://ci-apps.yunohost.org/ci/badges/qr.maintain.svg) + [![Install LibreQR with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=qr) *[Lire ce readme en français.](./README_fr.md)* @@ -17,8 +18,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Web interface for generating QR codes -**Shipped version:** 2.0.0~ynh2 - +**Shipped version:** 2.0.1~ynh1 **Demo:** https://qr.antopie.org @@ -28,7 +28,6 @@ Web interface for generating QR codes ## Documentation and resources -* Official app website: * Upstream app code repository: * YunoHost documentation for this app: * Report a bug: @@ -40,9 +39,9 @@ Please send your pull request to the [testing branch](https://code.antopie.org/m To try the testing branch, please proceed like that. ``` bash -sudo yunohost app install https://code.antopie.org/miraty/qr_ynh/tree/testing --debug +sudo yunohost app install https://code.antopie.org/miraty/qr_ynh/src/branch/testing --debug or -sudo yunohost app upgrade qr -u https://code.antopie.org/miraty/qr_ynh/tree/testing --debug +sudo yunohost app upgrade qr -u https://code.antopie.org/miraty/qr_ynh/src/branch/testing --debug ``` **More info regarding app packaging:** diff --git a/README_fr.md b/README_fr.md index 5d703fb..ff679ce 100755 --- a/README_fr.md +++ b/README_fr.md @@ -5,33 +5,32 @@ It shall NOT be edited by hand. # LibreQR pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/qr.svg)](https://dash.yunohost.org/appci/app/qr) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/qr.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/qr.maintain.svg) +[![Niveau d’intégration](https://dash.yunohost.org/integration/qr.svg)](https://dash.yunohost.org/appci/app/qr) ![Statut du fonctionnement](https://ci-apps.yunohost.org/ci/badges/qr.status.svg) ![Statut de maintenance](https://ci-apps.yunohost.org/ci/badges/qr.maintain.svg) + [![Installer LibreQR avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=qr) *[Read this readme in english.](./README.md)* -> *Ce package vous permet d'installer LibreQR 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.* +> *Ce package vous permet d’installer LibreQR 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 +## Vue d’ensemble Interface Web pour générer des codes QR -**Version incluse :** 2.0.0~ynh2 - +**Version incluse :** 2.0.1~ynh1 **Démo :** https://qr.antopie.org -## Captures d'écran +## Captures d’écran -![Capture d'écran de LibreQR](./doc/screenshots/screenshot.png) +![Capture d’écran de LibreQR](./doc/screenshots/screenshot.png) ## Documentations et ressources -* Site officiel de l'app : -* Dépôt de code officiel de l'app : +* Dépôt de code officiel de l’app : * Documentation YunoHost pour cette app : -* Signaler un bug : +* Signaler un bug : ## Informations pour les développeurs @@ -40,9 +39,9 @@ Merci de faire vos pull request sur la [branche testing](https://code.antopie.or Pour essayer la branche testing, procédez comme suit. ``` bash -sudo yunohost app install https://code.antopie.org/miraty/qr_ynh/tree/testing --debug +sudo yunohost app install https://code.antopie.org/miraty/qr_ynh/src/branch/testing --debug ou -sudo yunohost app upgrade qr -u https://code.antopie.org/miraty/qr_ynh/tree/testing --debug +sudo yunohost app upgrade qr -u https://code.antopie.org/miraty/qr_ynh/src/branch/testing --debug ``` -**Plus d'infos sur le packaging d'applications :** +**Plus d’infos sur le packaging d’applications :** diff --git a/check_process b/check_process deleted file mode 100644 index 41623c3..0000000 --- a/check_process +++ /dev/null @@ -1,18 +0,0 @@ -;; Default test serie - ; Checks - pkg_linter=1 - setup_sub_dir=1 - setup_root=1 - setup_private=1 - setup_public=1 - upgrade=1 - upgrade=1 from_commit=3b225b6a98f91493bdf3ae593a59cbdd3616106f - upgrade=1 from_commit=53600a0a5838d26d0d6989be4c461007a58b4bf0 - backup_restore=1 - multi_instance=1 - change_url=1 -;;; Upgrade options - ; commit=3b225b6a98f91493bdf3ae593a59cbdd3616106f - name=1.3.0~ynh1 - ; commit=53600a0a5838d26d0d6989be4c461007a58b4bf0 - name=2.0.0~ynh1 diff --git a/conf/app.src b/conf/app.src deleted file mode 100755 index 83b1595..0000000 --- a/conf/app.src +++ /dev/null @@ -1,7 +0,0 @@ -SOURCE_URL=https://libreqr.antopie.org/releases/libreqr-2.0.0.tar.gz -SOURCE_SUM=3c30b6371fde58b89f1c93f58cc6bb234c6e0f5d025f6427eb879b46156adbcb0ef468cbe9bf96f6d934b373f53f34c14d261e1c968c595195b596df32e7606c -SOURCE_SUM_PRG=sha512sum -SOURCE_FORMAT=tar.gz -SOURCE_IN_SUBDIR=true -SOURCE_FILENAME= -SOURCE_EXTRACT=true diff --git a/conf/extra_php-fpm.conf b/conf/extra_php-fpm.conf new file mode 100755 index 0000000..2f5f32f --- /dev/null +++ b/conf/extra_php-fpm.conf @@ -0,0 +1,2 @@ +chroot = __INSTALL_DIR__ +chdir = / diff --git a/conf/nginx.conf b/conf/nginx.conf index 1cda048..2f4b123 100755 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,27 +1,28 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - # Path to source - alias __FINALPATH__/; + # Path to source + alias __INSTALL_DIR__/; - index index.php; + index index.php; - # Chrooted PHP-FPM + # Chrooted PHP-FPM #sub_path_only location ~ ^__PATH__(?/.*\.php)$ { #root_path_only location ~ ^(?/.*\.php)$ { - alias /; - fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; - fastcgi_index index.php; - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param SCRIPT_FILENAME $chroot_path; - include fastcgi_params; - } + alias /; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; + fastcgi_index index.php; + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $chroot_path; + include fastcgi_params; +#sub_path_only } +#root_path_only } - # Security related headers - more_set_headers "Referrer-Policy: no-referrer"; - more_set_headers "Content-Security-Policy: default-src 'none'; style-src 'self'; img-src 'self' data:; frame-ancestors 'none'; form-action 'self';"; + # Security related headers + more_set_headers "Referrer-Policy: no-referrer"; + more_set_headers "Content-Security-Policy: default-src 'none'; style-src 'self'; img-src 'self' data:; frame-ancestors 'none'; form-action 'self';"; - # Include SSOWAT user panel. - include conf.d/yunohost_panel.conf.inc; + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; } diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf deleted file mode 100755 index 600477d..0000000 --- a/conf/php-fpm.conf +++ /dev/null @@ -1,23 +0,0 @@ -[__NAMETOCHANGE__] - -user = __USER__ -group = __USER__ - -listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock - -listen.owner = www-data -listen.group = www-data - -pm = dynamic -pm.max_children = 5 -pm.start_servers = 2 -pm.min_spare_servers = 1 -pm.max_spare_servers = 3 - -request_terminate_timeout = 1d - -chroot = __FINALPATH__ -chdir = / - -clear_env = yes -security.limit_extensions = .php diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..0cae17d --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +A PHP Web interface for generating QR codes. You can choose colors, size and redundancy rate. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md new file mode 100644 index 0000000..c22ca0c --- /dev/null +++ b/doc/DESCRIPTION_fr.md @@ -0,0 +1 @@ +Une interface Web en PHP pour générer des codes QR. On peut choisir les couleurs, la taille et le taux de redondance. diff --git a/manifest.toml b/manifest.toml new file mode 100644 index 0000000..1727be8 --- /dev/null +++ b/manifest.toml @@ -0,0 +1,53 @@ +packaging_format = 2 + +id = "qr" +name = "LibreQR" +description.en = "Web interface for generating QR codes" +description.fr = "Interface Web pour générer des codes QR" + +version = "2.0.1~ynh1" + +maintainers = ["Miraty"] + +[upstream] +license = "AGPL-3.0-or-later" +demo = "https://qr.antopie.org" +code = "https://code.antopie.org/miraty/libreqr" + +[integration] +yunohost = ">= 11.1.21" +architectures = "all" +multi_instance = true +ldap = "not_relevant" +sso = "not_relevant" +disk = "5M" +ram.build = "50M" +ram.runtime = "50M" + +[install] + [install.domain] + type = "domain" + + [install.path] + type = "path" + default = "/" + + [install.init_main_permission] + type = "group" + default = "visitors" + +[resources] + [resources.system_user] + + [resources.install_dir] + + [resources.permissions] + main.url = "/" + + [resources.apt] + packages = "php8.2-fpm" + + [resources.sources] + [resources.sources.main] + url = "https://libreqr.antopie.org/releases/libreqr-2.0.1.tar.gz" + sha256 = "92a0cb8d9a9bfefd3f763a717914a0860ea31a50747bc86ecac702db2b47e12e" diff --git a/scripts/_common.sh b/scripts/_common.sh index d74a579..287b456 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -1,14 +1,16 @@ libreqr_apply_filesystem_permissions() { - find "$final_path" -type f -exec chmod 400 "{}" + - find "$final_path" -type f -exec chown www-data:www-data "{}" + - find "$final_path" -type d -exec chmod 510 "{}" + - find "$final_path" -type d -exec chown $app:www-data "{}" + - find "$final_path" -type f -name "*.php" -exec chmod 400 "{}" + - find "$final_path" -type f -name "*.php" -exec chown $app:$app "{}" + - find "$final_path" -type f -name "*.css" -exec chmod 440 "{}" + - find "$final_path" -type f -name "*.css" -exec chown $app:www-data "{}" + - find "$final_path" -type f -name "*.less" -exec chmod 440 "{}" + - find "$final_path" -type f -name "*.less" -exec chown $app:www-data "{}" + - chmod 750 "$final_path"/css - chown $app:www-data "$final_path"/css + mktemp -p "$install_dir"/css/ + rm "$install_dir"/css/* + find "$install_dir" -type f -exec chmod 400 "{}" + + find "$install_dir" -type f -exec chown www-data:www-data "{}" + + find "$install_dir" -type d -exec chmod 510 "{}" + + find "$install_dir" -type d -exec chown $app:www-data "{}" + + find "$install_dir" -type f -name "*.php" -exec chmod 400 "{}" + + find "$install_dir" -type f -name "*.php" -exec chown $app:$app "{}" + + find "$install_dir" -type f -name "*.css" -exec chmod 440 "{}" + + find "$install_dir" -type f -name "*.css" -exec chown $app:www-data "{}" + + find "$install_dir" -type f -name "*.less" -exec chmod 440 "{}" + + find "$install_dir" -type f -name "*.less" -exec chown $app:www-data "{}" + + chmod 750 "$install_dir"/css + chown $app:www-data "$install_dir"/css } diff --git a/scripts/backup b/scripts/backup index e30872a..dd15163 100755 --- a/scripts/backup +++ b/scripts/backup @@ -1,17 +1,7 @@ #!/bin/bash source /usr/share/yunohost/helpers -ynh_abort_if_errors - -ynh_print_info --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -domain=$(ynh_app_setting_get --app=$app --key=domain) -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) - ynh_print_info --message="Declaring files to be backed up..." -ynh_backup --src_path="$final_path" +ynh_backup --src_path="$install_dir" ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -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 01a284d..c977153 100755 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,52 +1,5 @@ #!/bin/bash source /usr/share/yunohost/helpers -old_domain=$YNH_APP_OLD_DOMAIN -old_path=$YNH_APP_OLD_PATH -new_domain=$YNH_APP_NEW_DOMAIN -new_path=$YNH_APP_NEW_PATH -app=$YNH_APP_INSTANCE_NAME -nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf - -ynh_script_progression --message="Loading installation settings..." -final_path=$(ynh_app_setting_get --app=$app --key=final_path) - -ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." -ynh_backup_before_upgrade -ynh_clean_setup () { - ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" - ynh_restore_upgradebackup -} -ynh_abort_if_errors - ynh_script_progression --message="Updating NGINX web server configuration..." -# Change the path if needed -change_path=0 -if [ "$old_path" != "$new_path" ] -then - change_path=1 -fi -if [ $change_path -eq 1 ] -then - ynh_backup_if_checksum_is_different --file="$nginx_conf_path" - domain="$old_domain" - path_url="$new_path" - ynh_add_nginx_config -fi -# Change the domain if needed -change_domain=0 -if [ "$old_domain" != "$new_domain" ] -then - change_domain=1 -fi -if [ $change_domain -eq 1 ] -then - ynh_delete_file_checksum --file="$nginx_conf_path" - mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf - ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf" -fi - -ynh_script_progression --message="Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload - -ynh_script_progression --message="Change of URL completed for $app" --last +ynh_change_url_nginx_config diff --git a/scripts/install b/scripts/install index e56f14e..6d3a238 100755 --- a/scripts/install +++ b/scripts/install @@ -2,40 +2,11 @@ source _common.sh source /usr/share/yunohost/helpers -ynh_abort_if_errors - -domain=$YNH_APP_ARG_DOMAIN -path_url=$YNH_APP_ARG_PATH -is_public=$YNH_APP_ARG_IS_PUBLIC -app=$YNH_APP_INSTANCE_NAME - -ynh_script_progression --message="Validating installation parameters..." -final_path=/var/www/$app -test ! -e "$final_path" || ynh_die --message="This path already contains a folder" -ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url - -ynh_script_progression --message="Storing installation settings..." -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=final_path --value=$final_path - -ynh_script_progression --message="Configuring system user..." -ynh_system_user_create --username=$app --home_dir="$final_path" - -ynh_script_progression --message="Setting up source files..." -ynh_setup_source --dest_dir="$final_path" +ynh_setup_source --dest_dir="$install_dir" libreqr_apply_filesystem_permissions ynh_script_progression --message="Configuring NGINX web server..." ynh_add_nginx_config ynh_script_progression --message="Configuring PHP-FPM..." -ynh_add_fpm_config - -ynh_script_progression --message="Configuring permissions..." -if [ $is_public -eq 1 ] -then - ynh_permission_update --permission="main" --add="visitors" -fi - -ynh_script_progression --message="Installation of $app completed" --last +ynh_add_fpm_config --usage="medium" --footprint="medium" diff --git a/scripts/remove b/scripts/remove index 0322438..670fc9f 100755 --- a/scripts/remove +++ b/scripts/remove @@ -1,22 +1,8 @@ #!/bin/bash source /usr/share/yunohost/helpers -ynh_script_progression --message="Loading installation settings..." - -app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -final_path=$(ynh_app_setting_get --app=$app --key=final_path) - -ynh_script_progression --message="Removing app main directory..." -ynh_secure_remove --file="$final_path" - ynh_script_progression --message="Removing NGINX web server configuration..." ynh_remove_nginx_config ynh_script_progression --message="Removing PHP-FPM configuration..." ynh_remove_fpm_config - -ynh_script_progression --message="Removing the dedicated system user..." -ynh_system_user_delete --username=$app - -ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore index 2f94f48..2a3c64e 100755 --- a/scripts/restore +++ b/scripts/restore @@ -2,20 +2,8 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -ynh_abort_if_errors - -ynh_script_progression --message="Loading installation settings..." -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) - -ynh_script_progression --message="Recreating the dedicated system user..." -ynh_system_user_create --username=$app --home_dir="$final_path" - ynh_script_progression --message="Restoring the app main directory..." -ynh_restore_file --origin_path="$final_path" +ynh_restore_file --origin_path="$install_dir" libreqr_apply_filesystem_permissions ynh_script_progression --message="Restoring the PHP-FPM configuration..." @@ -25,5 +13,3 @@ ynh_systemd_action --service_name=php$phpversion-fpm --action=reload ynh_script_progression --message="Restoring the NGINX configuration..." ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_systemd_action --service_name=nginx --action=reload - -ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade index 2306faa..debe899 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -2,42 +2,11 @@ source _common.sh source /usr/share/yunohost/helpers -ynh_script_progression --message="Loading installation settings..." -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) - -upgrade_type=$(ynh_check_app_version_changed) - -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." -ynh_backup_before_upgrade -ynh_clean_setup () { - ynh_restore_upgradebackup -} -ynh_abort_if_errors - -ynh_script_progression --message="Ensuring downward compatibility..." -if ynh_legacy_permissions_exists; then - ynh_legacy_permissions_delete_all - ynh_app_setting_delete --app=$app --key=is_public -fi - -ynh_script_progression --message="Making sure dedicated system user exists..." -ynh_system_user_create --username=$app --home_dir="$final_path" - -if [ "$upgrade_type" == "UPGRADE_APP" ] -then - ynh_script_progression --message="Upgrading source files..." - ynh_secure_remove --file="$final_path" - ynh_setup_source --dest_dir="$final_path" -fi +ynh_setup_source --dest_dir="$install_dir" libreqr_apply_filesystem_permissions ynh_script_progression --message="Upgrading NGINX web server configuration..." ynh_add_nginx_config ynh_script_progression --message="Upgrading PHP-FPM configuration..." -ynh_add_fpm_config - -ynh_script_progression --message="Upgrade of $app completed" --last +ynh_add_fpm_config --usage="medium" --footprint="low" diff --git a/tests.toml b/tests.toml new file mode 100644 index 0000000..8ea9ade --- /dev/null +++ b/tests.toml @@ -0,0 +1,9 @@ +test_format = 1.0 + +[default] + + #exclude = ["install.root", "install.subpath", "install.private", "install.multi", "backup_restore", "change_url"] + + test_upgrade_from.3b225b6a.name = "1.3.0~ynh1" + test_upgrade_from.53600a0a.name = "2.0.0~ynh1" + test_upgrade_from.3b4562b7.name = "2.0.0~ynh2"