From 8bdd0b4d3f20422008eb2e96dc719e3796647f1b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 29 Nov 2020 19:20:12 +0100 Subject: [PATCH 01/19] Upgrade to version 5.0.4 --- README.md | 2 +- README_fr.md | 2 +- check_process | 2 -- conf/app.src | 4 ++-- manifest.json | 4 ++-- 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 6793911..720075f 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement. -**Shipped version:** 5.0.2 +**Shipped version:** 5.0.4 ## Screenshots diff --git a/README_fr.md b/README_fr.md index fb3b300..d65d55a 100644 --- a/README_fr.md +++ b/README_fr.md @@ -12,7 +12,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l'administration de MySQL sur le Web. phpMyAdmin prend en charge un large éventail d'opérations sur MySQL et MariaDB. Les opérations fréquemment utilisées (gestion des bases de données, des tables, des colonnes, des relations, des index, des utilisateurs, des autorisations, etc.) peuvent être effectuées via l'interface utilisateur, tandis que vous avez toujours la possibilité d'exécuter directement les instructions SQL. -**Version incluse :** 5.0.2 +**Version incluse :** 5.0.4 ## Captures d'écran diff --git a/check_process b/check_process index f99d833..2a0aceb 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/conf/app.src b/conf/app.src index d7cd70d..eb7abbc 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz -SOURCE_SUM=8d5cb67de154262b6e51e6ac6967d0931d28ef39cdc7fbec44011d374eb432ae +SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip +SOURCE_SUM=830bbca930d5e417ae4249931838e2c70ca0365044268fa0ede75e33aff677de SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index d835e35..83b140e 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Manage MySQL databases over the web", "fr": "Application web de gestion des bases de données MySQL" }, - "version": "5.0.2~ynh1", + "version": "5.0.4~ynh1", "url": "http://www.phpmyadmin.net", "license": "GPL-2.0-only", "maintainer": { @@ -14,7 +14,7 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.0.0" }, "multi_instance": false, "services": [ From f7f0caa40213c81e5622eca13e9d3352e014565a Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 29 Nov 2020 19:22:33 +0100 Subject: [PATCH 02/19] Update app.src --- conf/app.src | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/app.src b/conf/app.src index eb7abbc..7b7f8ad 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip -SOURCE_SUM=830bbca930d5e417ae4249931838e2c70ca0365044268fa0ede75e33aff677de +SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz +SOURCE_SUM=fbb993b74a7c29ce2fcdb6b6be22b0b6c58bff8df3292ab42f6280871450c316 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true From 3a066a438f931161c8fc5f725a063dbebe14340f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 6 Dec 2020 11:57:14 +0100 Subject: [PATCH 03/19] Fix linter warnings --- check_process | 1 - scripts/install | 2 +- scripts/restore | 2 +- scripts/upgrade | 9 +-------- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/check_process b/check_process index 2a0aceb..201bb2d 100644 --- a/check_process +++ b/check_process @@ -14,7 +14,6 @@ upgrade=1 from_commit=09ad01673cdfb9f893c138d92fce3bc965f5f8ed backup_restore=1 multi_instance=0 - incorrect_path=1 port_already_use=0 change_url=1 ;;; Options diff --git a/scripts/install b/scripts/install index deb7975..7688b3a 100644 --- a/scripts/install +++ b/scripts/install @@ -101,7 +101,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 --package="$extra_php_dependencies" +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # SPECIFIC SETUP diff --git a/scripts/restore b/scripts/restore index 6ee3164..9f85bc0 100644 --- a/scripts/restore +++ b/scripts/restore @@ -101,7 +101,7 @@ ynh_script_progression --message="Reconfiguring PHP-FPM.." --weight=6 ynh_restore_file --origin_path="/etc/php/$YNH_PHP_VERSION/fpm/pool.d/$app.conf" # Recreate a dedicated php-fpm config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # GENERIC FINALIZATION diff --git a/scripts/upgrade b/scripts/upgrade index d89e35c..1e33017 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -85,13 +85,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=$path_url) - #================================================= # STANDARD UPGRADE STEPS #================================================= @@ -128,7 +121,7 @@ ynh_system_user_create --username=$app ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=4 # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion="$YNH_PHP_VERSION" --package="$extra_php_dependencies" +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # SPECIFIC UPGRADE From 6a355e7cba595d9e476bf975278d3c2f7bd5d441 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:51:54 +0100 Subject: [PATCH 04/19] Set badge in SVG --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 720075f..4ace15c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # phpMyAdmin for YunoHost [![Integration level](https://dash.yunohost.org/integration/phpmyadmin.svg)](https://dash.yunohost.org/appci/app/phpmyadmin) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.maintain.svg) -[![Install phpMyAdmin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=phpmyadmin) +[![Install phpMyAdmin with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=phpmyadmin) *[Lire ce readme en français.](./README_fr.md)* From bb6f939c4911b26d0f5af0faafc45d6e8015573e 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:53:17 +0100 Subject: [PATCH 05/19] Set YunoHost requirements to 3.8.1 --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 83b140e..e8ea9e4 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": false, "services": [ From 3860248a1b9af60158ae239a12f311ee52621c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Tue, 23 Mar 2021 19:27:48 +0100 Subject: [PATCH 06/19] Upgrade to 5.1.0 (#107) * Upgrade to 5.1.0 * Fix doc links --- README.md | 4 ++-- README_fr.md | 6 +++--- conf/app.src | 4 ++-- manifest.json | 4 ++-- pull_request_template.md | 12 ++---------- scripts/install | 4 ++-- scripts/upgrade | 13 +++++-------- 7 files changed, 18 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 4ace15c..32f35d4 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement. -**Shipped version:** 5.0.4 +**Shipped version:** 5.1.0 ## Screenshots @@ -28,7 +28,7 @@ phpMyAdmin is a free software tool written in PHP, intended to handle the admini ## Documentation * Official documentation: https://www.phpmyadmin.net/docs/ - * YunoHost documentation: https://yunohost.org/#/app_phpmyadmin + * YunoHost documentation: https://yunohost.org/en/app_phpmyadmin ## YunoHost specific features diff --git a/README_fr.md b/README_fr.md index d65d55a..9e6c01b 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,7 +1,7 @@ # phpMyAdmin avec YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/phpmyadmin.svg)](https://dash.yunohost.org/appci/app/phpmyadmin) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.maintain.svg) -[![Installer phpMyAdmin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=phpmyadmin) +[![Installer phpMyAdmin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=phpmyadmin) *[Read this readme in english.](./README.md)* @@ -12,7 +12,7 @@ Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l'administration de MySQL sur le Web. phpMyAdmin prend en charge un large éventail d'opérations sur MySQL et MariaDB. Les opérations fréquemment utilisées (gestion des bases de données, des tables, des colonnes, des relations, des index, des utilisateurs, des autorisations, etc.) peuvent être effectuées via l'interface utilisateur, tandis que vous avez toujours la possibilité d'exécuter directement les instructions SQL. -**Version incluse :** 5.0.4 +**Version incluse :** 5.1.0 ## Captures d'écran @@ -28,7 +28,7 @@ phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l'admin ## Documentation * Documentation officielle : https://www.phpmyadmin.net/docs/ - * Documentation YunoHost : https://yunohost.org/#/app_phpmyadmin_fr + * Documentation YunoHost : https://yunohost.org/fr/app_phpmyadmin ## Caractéristiques spécifiques YunoHost diff --git a/conf/app.src b/conf/app.src index 7b7f8ad..31705bb 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz -SOURCE_SUM=fbb993b74a7c29ce2fcdb6b6be22b0b6c58bff8df3292ab42f6280871450c316 +SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.1.0/phpMyAdmin-5.1.0-all-languages.tar.gz +SOURCE_SUM=fec6996440009b29af82e031ea2c085766752732771289975af7573652ed4798 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index e8ea9e4..8a1637d 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Manage MySQL databases over the web", "fr": "Application web de gestion des bases de données MySQL" }, - "version": "5.0.4~ynh1", + "version": "5.1.0~ynh1", "url": "http://www.phpmyadmin.net", "license": "GPL-2.0-only", "maintainer": { @@ -19,7 +19,7 @@ "multi_instance": false, "services": [ "nginx", - "php7.0-fpm", + "php7.3-fpm", "mysql" ], "arguments": { diff --git a/pull_request_template.md b/pull_request_template.md index 10bffa7..0a198cf 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -11,14 +11,6 @@ - [ ] 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/phpmyadmin_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/phpmyadmin_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. +* 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/install b/scripts/install index 7688b3a..60edeff 100644 --- a/scripts/install +++ b/scripts/install @@ -162,10 +162,10 @@ chown $app: $final_path/tmp #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." --weight=3 +ynh_script_progression --message="Configuring permissions..." --weight=3 # Restrict access to admin only -yunohost app addaccess --users=$admin $app +ynh_permission_create --permission="admin" --allowed=$admin #================================================= # RELOAD NGINX diff --git a/scripts/upgrade b/scripts/upgrade index 1e33017..d255fb3 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -71,6 +71,11 @@ if [ -z "$db_admin_user" ]; then fi fi +if ! ynh_permission_exists --permission="admin"; then + # Create the required permissions + ynh_permission_create --permission="admin" --allowed=$admin +fi + #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= @@ -199,14 +204,6 @@ then ynh_exec_warn_less ynh_composer_exec --commands=\"update --no-dev\" fi -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." - -# Restrict access to admin only -yunohost app addaccess --users=$admin $app - #================================================= # RELOAD NGINX #================================================= From 8a98f0794a12bf132e71a6211876e6a5ca92e3af Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Tue, 11 May 2021 08:33:52 +0200 Subject: [PATCH 07/19] [autopatch] Update issue and PR templates (#111) 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 0a198cf..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,16 +0,0 @@ -## Problem -- *Description of why you made this PR* - -## Solution -- *And how you fix that* - -## 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 2454a162f3407522884fea3361fd677ee32a9d8b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 11 May 2021 08:36:08 +0200 Subject: [PATCH 08/19] Add ynh_abort_if_errors --- scripts/change_url | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/change_url b/scripts/change_url index dd32bb0..2e7bd2c 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -29,6 +29,23 @@ 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) +#================================================= +# BACKUP BEFORE CHANGE URL 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 2fdb855df1c3199aadaf820716d33f1973bc8f15 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 11 May 2021 08:59:11 +0200 Subject: [PATCH 09/19] Fix badges --- README.md | 6 +++--- README_fr.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 32f35d4..262c735 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 phpMyAdmin 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 @@ -36,8 +36,8 @@ phpMyAdmin is a free software tool written in PHP, intended to handle the admini #### Supported architectures -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/phpmyadmin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/phpmyadmin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/phpmyadmin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/phpmyadmin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps.yunohost.org/ci/apps/phpmyadmin/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/phpmyadmin/) ## Limitations diff --git a/README_fr.md b/README_fr.md index 9e6c01b..bd6e491 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 phpMyAdmin rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* +Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/install) pour apprendre comment l'installer.* ## Vue d'ensemble @@ -36,8 +36,8 @@ phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l'admin #### Architectures supportées -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/phpmyadmin%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/phpmyadmin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/phpmyadmin%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/phpmyadmin/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps.yunohost.org/ci/apps/phpmyadmin/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/phpmyadmin/) ## Limitations From 83afc959c2691984ee19160028d2067bf4c29e61 Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Fri, 4 Jun 2021 09:51:48 +0200 Subject: [PATCH 10/19] [autopatch] Update issue and PR templates (#112) Co-authored-by: Yunohost-Bot <> --- .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 003d1adbaade106142db3919a3688a25214af3ea Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 8 Jul 2021 08:26:34 +0200 Subject: [PATCH 11/19] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index 60edeff..2736378 100644 --- a/scripts/install +++ b/scripts/install @@ -165,7 +165,7 @@ chown $app: $final_path/tmp ynh_script_progression --message="Configuring permissions..." --weight=3 # Restrict access to admin only -ynh_permission_create --permission="admin" --allowed=$admin +ynh_permission_update --permission="main" --add=$admin --remove="all_users" --protected=true #================================================= # RELOAD NGINX From 1ed98e050f82e39715fd393ec7cf89990692e596 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 8 Jul 2021 08:33:33 +0200 Subject: [PATCH 12/19] Cleaning up --- check_process | 7 +++---- manifest.json | 2 +- scripts/_common.sh | 15 +-------------- 3 files changed, 5 insertions(+), 19 deletions(-) diff --git a/check_process b/check_process index 201bb2d..9775dbd 100644 --- a/check_process +++ b/check_process @@ -1,8 +1,8 @@ ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) - admin="john" (USER) + domain="domain.tld" + path="/path" + admin="john" ; Checks pkg_linter=1 setup_sub_dir=1 @@ -14,7 +14,6 @@ upgrade=1 from_commit=09ad01673cdfb9f893c138d92fce3bc965f5f8ed backup_restore=1 multi_instance=0 - port_already_use=0 change_url=1 ;;; Options Email= diff --git a/manifest.json b/manifest.json index 8a1637d..fd2a62b 100644 --- a/manifest.json +++ b/manifest.json @@ -14,7 +14,7 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.2.0" }, "multi_instance": false, "services": [ diff --git a/scripts/_common.sh b/scripts/_common.sh index 46ce7fb..10b2191 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -5,26 +5,13 @@ #================================================= YNH_PHP_VERSION="7.3" -extra_php_dependencies="php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-mbstring" +extra_php_dependencies="php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-mbstring" #================================================= # EXPERIMENTAL HELPERS #================================================= -# Execute a command as another user -# usage: exec_as USER COMMAND [ARG ...] -ynh_exec_as() { - local USER=$1 - shift 1 - - if [[ $USER = $(whoami) ]]; then - eval "$@" - else - sudo -u "$USER" "$@" - fi -} - # Execute a command with Composer # # usage: ynh_composer_exec [--phpversion=phpversion] [--workdir=$final_path] --commands="commands" From 5d100f4c982d170f66f229554c240a479db82ee4 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 8 Jul 2021 08:42:29 +0200 Subject: [PATCH 13/19] Upgrade to 5.1.1 --- conf/app.src | 4 ++-- doc/.DS_Store | Bin 0 -> 6148 bytes doc/DISCLAIMER.md | 3 +++ doc/DISCLAIMER_fr.md | 3 +++ ...73686f74732f7374727563747572652e706e67.png | Bin 0 -> 140113 bytes manifest.json | 22 +++++++----------- scripts/change_url | 2 +- scripts/install | 2 +- scripts/remove | 2 +- scripts/restore | 2 +- scripts/upgrade | 2 +- 11 files changed, 22 insertions(+), 20 deletions(-) create mode 100644 doc/.DS_Store create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md create mode 100644 doc/screenshots/68747470733a2f2f7777772e7068706d7961646d696e2e6e65742f7374617469632f696d616765732f73637265656e73686f74732f7374727563747572652e706e67.png diff --git a/conf/app.src b/conf/app.src index 31705bb..c80e538 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.1.0/phpMyAdmin-5.1.0-all-languages.tar.gz -SOURCE_SUM=fec6996440009b29af82e031ea2c085766752732771289975af7573652ed4798 +SOURCE_URL=https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.tar.gz +SOURCE_SUM=8264b57aeaa1f91c6d859331777c71e80d26088bef7cdcd5f9431119747ed1c1 SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/doc/.DS_Store b/doc/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c90376b56b73b627c519d1a34c5d8c9abb7004dc GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NNG}1?l15Mt0;UyegFv&DbPhqfch%Fi%(bFB<-Yt6!=#P*lfL7ulP#UTPH8)y|&RG>0a|qcjG!J4AG8> j(T=(Cc6=8_S=W5c^IkY62A%n!6ZJFTy2zx!wH5dQ#>Eyj literal 0 HcmV?d00001 diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..e9f5ca8 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,3 @@ +## Overview + +phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement. \ No newline at end of file diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..9d3bf51 --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,3 @@ +## Vue d'ensemble + +phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l'administration de MySQL sur le Web. phpMyAdmin prend en charge un large éventail d'opérations sur MySQL et MariaDB. Les opérations fréquemment utilisées (gestion des bases de données, des tables, des colonnes, des relations, des index, des utilisateurs, des autorisations, etc.) peuvent être effectuées via l'interface utilisateur, tandis que vous avez toujours la possibilité d'exécuter directement les instructions SQL. \ No newline at end of file diff --git a/doc/screenshots/68747470733a2f2f7777772e7068706d7961646d696e2e6e65742f7374617469632f696d616765732f73637265656e73686f74732f7374727563747572652e706e67.png b/doc/screenshots/68747470733a2f2f7777772e7068706d7961646d696e2e6e65742f7374617469632f696d616765732f73637265656e73686f74732f7374727563747572652e706e67.png new file mode 100644 index 0000000000000000000000000000000000000000..054eb79d7a07e95333f138d957f17a56ab81cfa1 GIT binary patch literal 140113 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

tYl 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index fd2a62b..2795400 100644 --- a/manifest.json +++ b/manifest.json @@ -6,8 +6,16 @@ "en": "Manage MySQL databases over the web", "fr": "Application web de gestion des bases de données MySQL" }, - "version": "5.1.0~ynh1", + "version": "5.1.1~ynh1", "url": "http://www.phpmyadmin.net", + "upstream": { + "license": "GPL-2.0-only", + "website": "http://www.phpmyadmin.net", + "demo": "https://demo.phpmyadmin.net/master-config", + "admindoc": "https://www.phpmyadmin.net/docs/", + "userdoc": "https://yunohost.org/en/app_phpmyadmin", + "code": "https://github.com/phpmyadmin/phpmyadmin" + }, "license": "GPL-2.0-only", "maintainer": { "name": "julien", @@ -27,29 +35,17 @@ { "name": "domain", "type": "domain", - "ask": { - "en": "Choose a domain for phpMyAdmin", - "fr": "Choisissez un domaine pour phpMyAdmin" - }, "example": "domain.org" }, { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for phpMyAdmin", - "fr": "Choisissez un chemin pour phpMyAdmin" - }, "example": "/phpmyadmin", "default": "/phpmyadmin" }, { "name": "admin", "type": "user", - "ask": { - "en": "Choose the only allowed admin user", - "fr": "Choisissez l'unique utilisateur autorisé" - }, "example": "johndoe" } ] diff --git a/scripts/change_url b/scripts/change_url index 2e7bd2c..416724c 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -106,4 +106,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Change of URL completed for phpMyAdmin" --last +ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/install b/scripts/install index 2736378..c056334 100644 --- a/scripts/install +++ b/scripts/install @@ -178,4 +178,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Installation of phpMyAdmin completed" --last +ynh_script_progression --message="Installation of $app completed" --last diff --git a/scripts/remove b/scripts/remove index 47fc652..d95d4fd 100644 --- a/scripts/remove +++ b/scripts/remove @@ -72,4 +72,4 @@ ynh_system_user_delete --username=$app # END OF SCRIPT #================================================= -ynh_script_progression --message="Removal of phpMyAdmin completed" --last +ynh_script_progression --message="Removal of $app completed" --last diff --git a/scripts/restore b/scripts/restore index 9f85bc0..49ff202 100644 --- a/scripts/restore +++ b/scripts/restore @@ -116,4 +116,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Restoration completed for phpMyAdmin" --last +ynh_script_progression --message="Restoration completed for $app" --last diff --git a/scripts/upgrade b/scripts/upgrade index d255fb3..7f20b44 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -215,4 +215,4 @@ ynh_systemd_action --service_name=nginx --action=reload # END OF SCRIPT #================================================= -ynh_script_progression --message="Upgrade of phpMyAdmin completed" --last +ynh_script_progression --message="Upgrade of $app completed" --last From 2541363e66669da05516d925169415d631712018 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Thu, 8 Jul 2021 06:42:39 +0000 Subject: [PATCH 14/19] Auto-update README --- README.md | 75 +++++++++++++++++++++---------------------------- README_fr.md | 79 +++++++++++++++++++++------------------------------- 2 files changed, 64 insertions(+), 90 deletions(-) diff --git a/README.md b/README.md index 262c735..79f86b1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ + + # phpMyAdmin for YunoHost [![Integration level](https://dash.yunohost.org/integration/phpmyadmin.svg)](https://dash.yunohost.org/appci/app/phpmyadmin) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.maintain.svg) @@ -5,56 +10,38 @@ *[Lire ce readme en français.](./README_fr.md)* -> *This package allow you to install phpMyAdmin 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 phpMyAdmin 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 + +Manage MySQL databases over the web + +**Shipped version:** 5.1.1~ynh1 + +**Demo:** https://demo.phpmyadmin.net/master-config + +## Screenshots + +![](./doc/screenshots/68747470733a2f2f7777772e7068706d7961646d696e2e6e65742f7374617469632f696d616765732f73637265656e73686f74732f7374727563747572652e706e67.png) + +## Disclaimers / important information ## Overview phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement. +## Documentation and resources -**Shipped version:** 5.1.0 +* Official app website: http://www.phpmyadmin.net +* Official user documentation: https://yunohost.org/en/app_phpmyadmin +* Official admin documentation: https://www.phpmyadmin.net/docs/ +* Upstream app code repository: https://github.com/phpmyadmin/phpmyadmin +* YunoHost documentation for this app: https://yunohost.org/app_phpmyadmin +* Report a bug: https://github.com/YunoHost-Apps/phpmyadmin_ynh/issues -## Screenshots +## Developer info -![](https://www.phpmyadmin.net/static/images/screenshots/structure.png) - -## Demo - -* [YunoHost demo](https://demo.yunohost.org/phpmyadmin/) -* [Official demo](https://demo.phpmyadmin.net/master-config/) - -## Configuration - -## Documentation - - * Official documentation: https://www.phpmyadmin.net/docs/ - * YunoHost documentation: https://yunohost.org/en/app_phpmyadmin - -## YunoHost specific features - -#### Multi-users support - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps.yunohost.org/ci/apps/phpmyadmin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/phpmyadmin/) - -## Limitations - -## Additionnal informations - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/phpmyadmin_ynh/issues - * phpMyAdmin website: https://www.phpmyadmin.net/ - * phpMyAdmin repository: https://github.com/phpmyadmin/phpmyadmin - * YunoHost website: https://yunohost.org/ - ---- - -## Developers infos - -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/testing). To try the testing branch, please proceed like that. ``` @@ -62,3 +49,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/t or sudo yunohost app upgrade phpmyadmin -u https://github.com/YunoHost-Apps/phpmyadmin_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 bd6e491..56e9cda 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,64 +1,49 @@ -# phpMyAdmin avec YunoHost +# phpMyAdmin pour YunoHost [![Niveau d'intégration](https://dash.yunohost.org/integration/phpmyadmin.svg)](https://dash.yunohost.org/appci/app/phpmyadmin) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/phpmyadmin.maintain.svg) [![Installer phpMyAdmin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=phpmyadmin) -*[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 phpMyAdmin rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/install) pour apprendre comment l'installer.* +> *Ce package vous permet d'installer phpMyAdmin 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 + +Application web de gestion des bases de données MySQL + +**Version incluse :** 5.1.1~ynh1 + +**Démo :** https://demo.phpmyadmin.net/master-config + +## Captures d'écran + +![](./doc/screenshots/68747470733a2f2f7777772e7068706d7961646d696e2e6e65742f7374617469632f696d616765732f73637265656e73686f74732f7374727563747572652e706e67.png) + +## Avertissements / informations importantes ## Vue d'ensemble phpMyAdmin est un outil logiciel libre écrit en PHP, destiné à gérer l'administration de MySQL sur le Web. phpMyAdmin prend en charge un large éventail d'opérations sur MySQL et MariaDB. Les opérations fréquemment utilisées (gestion des bases de données, des tables, des colonnes, des relations, des index, des utilisateurs, des autorisations, etc.) peuvent être effectuées via l'interface utilisateur, tandis que vous avez toujours la possibilité d'exécuter directement les instructions SQL. +## Documentations et ressources -**Version incluse :** 5.1.0 +* Site officiel de l'app : http://www.phpmyadmin.net +* Documentation officielle utilisateur : https://yunohost.org/en/app_phpmyadmin +* Documentation officielle de l'admin : https://www.phpmyadmin.net/docs/ +* Dépôt de code officiel de l'app : https://github.com/phpmyadmin/phpmyadmin +* Documentation YunoHost pour cette app : https://yunohost.org/app_phpmyadmin +* Signaler un bug : https://github.com/YunoHost-Apps/phpmyadmin_ynh/issues -## Captures d'écran +## Informations pour les développeurs -![](https://www.phpmyadmin.net/static/images/screenshots/structure.png) +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/testing). -## Démo - -* [Démo YunoHost](https://demo.yunohost.org/phpmyadmin/) -* [Démo officielle](https://demo.phpmyadmin.net/master-config/) - -## Configuration - -## Documentation - - * Documentation officielle : https://www.phpmyadmin.net/docs/ - * Documentation YunoHost : https://yunohost.org/fr/app_phpmyadmin - -## Caractéristiques spécifiques YunoHost - -#### Support multi-utilisateur - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps.yunohost.org/ci/apps/phpmyadmin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/phpmyadmin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/phpmyadmin/) - -## Limitations - -## Informations additionnelles - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/phpmyadmin_ynh/issues - * Site de l'application : https://www.phpmyadmin.net/ - * Dépôt de l'application principale : https://github.com/phpmyadmin/phpmyadmin - * Site web YunoHost : https://yunohost.org/ - ---- - -## Developers infos - -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/testing). - -To try the testing branch, please proceed like that. +Pour essayer la branche testing, procédez comme suit. ``` sudo yunohost app install https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/testing --debug -or +ou sudo yunohost app upgrade phpmyadmin -u https://github.com/YunoHost-Apps/phpmyadmin_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From 822c3869993e42516f10cdd3ff3a93c8a3cce3d9 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 10 Jul 2021 08:42:48 +0200 Subject: [PATCH 15/19] Update check_process --- check_process | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/check_process b/check_process index 9775dbd..35e66e0 100644 --- a/check_process +++ b/check_process @@ -11,7 +11,7 @@ setup_private=0 setup_public=0 upgrade=1 - upgrade=1 from_commit=09ad01673cdfb9f893c138d92fce3bc965f5f8ed + upgrade=1 from_commit=e8bcf5f9e61621256fa62f8813ba161443dd488b backup_restore=1 multi_instance=0 change_url=1 @@ -19,6 +19,6 @@ Email= Notification=none ;;; Upgrade options - ; commit=09ad01673cdfb9f893c138d92fce3bc965f5f8ed - name=Force php5 for composer + ; commit=e8bcf5f9e61621256fa62f8813ba161443dd488b + name=Testing (#106) manifest_arg=domain=DOMAIN&path=PATH&admin=USER& From 840c860961f237dee97f02d24d60d986e5a58c7d Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 10 Jul 2021 08:44:09 +0200 Subject: [PATCH 16/19] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index c056334..a2c7a0c 100644 --- a/scripts/install +++ b/scripts/install @@ -165,7 +165,7 @@ chown $app: $final_path/tmp ynh_script_progression --message="Configuring permissions..." --weight=3 # Restrict access to admin only -ynh_permission_update --permission="main" --add=$admin --remove="all_users" --protected=true +ynh_permission_update --permission="main" --add=$admin --remove="all_users" #================================================= # RELOAD NGINX From ba80089c71346c82943b20a71a6d572c21e764d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 10 Jul 2021 22:32:23 +0200 Subject: [PATCH 17/19] 5.1.1 (#114) * 5.1.1 --- conf/config.inc.php | 10 ++++---- conf/create_db.sql | 12 ++++----- scripts/_common.sh | 60 +++++++-------------------------------------- scripts/install | 43 ++++++++++++++------------------ scripts/restore | 23 ++++++++--------- scripts/upgrade | 46 +++++++++++----------------------- 6 files changed, 65 insertions(+), 129 deletions(-) diff --git a/conf/config.inc.php b/conf/config.inc.php index b42cffd..647750e 100644 --- a/conf/config.inc.php +++ b/conf/config.inc.php @@ -28,8 +28,8 @@ $i = 0; $i++; /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'config'; -$cfg['Servers'][$i]['user'] = '__YNH_PMA_ADMIN_USER__'; -$cfg['Servers'][$i]['password'] = '__YNH_PMA_ADMIN_PASSWORD__'; +$cfg['Servers'][$i]['user'] = '__DB_ADMIN_USER__'; +$cfg['Servers'][$i]['password'] = '__DB_ADMIN_PWD__'; /* Server parameters */ /* $cfg['Servers'][$i]['host'] = 'localhost'; @@ -49,11 +49,11 @@ $cfg['Servers'][$i]['AllowNoPassword'] = false; /* User used to manipulate with storage */ // $cfg['Servers'][$i]['controlhost'] = ''; // $cfg['Servers'][$i]['controlport'] = ''; -$cfg['Servers'][$i]['controluser'] = '__YNH_PMA_USER__'; -$cfg['Servers'][$i]['controlpass'] = '__YNH_PMA_PASSWORD__'; +$cfg['Servers'][$i]['controluser'] = '__DB_USER__'; +$cfg['Servers'][$i]['controlpass'] = '__DB_PWD__'; /* Storage database and tables */ -$cfg['Servers'][$i]['pmadb'] = '__YNH_PMA_USER__'; +$cfg['Servers'][$i]['pmadb'] = '__DB_USER__'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; diff --git a/conf/create_db.sql b/conf/create_db.sql index d603e62..ed1ef72 100644 --- a/conf/create_db.sql +++ b/conf/create_db.sql @@ -14,14 +14,14 @@ -- -------------------------------------------------------- -DROP DATABASE `__YNH_PMA_USER__`; +DROP DATABASE `__DB_USER__`; -- --- Database : `__YNH_PMA_USER__` +-- Database : `__DB_USER__` -- -CREATE DATABASE IF NOT EXISTS `__YNH_PMA_USER__` +CREATE DATABASE IF NOT EXISTS `__DB_USER__` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; -USE __YNH_PMA_USER__; +USE __DB_USER__; -GRANT SELECT, INSERT, DELETE, UPDATE ON `__YNH_PMA_USER__`.* TO - '__YNH_PMA_USER__'@localhost; +GRANT SELECT, INSERT, DELETE, UPDATE ON `__DB_USER__`.* TO + '__DB_USER__'@localhost; diff --git a/scripts/_common.sh b/scripts/_common.sh index 10b2191..45d51fa 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -8,58 +8,16 @@ YNH_PHP_VERSION="7.3" extra_php_dependencies="php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-mbstring" +YNH_COMPOSER_VERSION=2.0.14 + +#================================================= +# PERSONAL HELPERS +#================================================= + #================================================= # EXPERIMENTAL HELPERS #================================================= -# Execute a command with Composer -# -# usage: ynh_composer_exec [--phpversion=phpversion] [--workdir=$final_path] --commands="commands" -# | arg: -v, --phpversion - PHP version to use with composer -# | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. -# | arg: -c, --commands - Commands to execute. -ynh_composer_exec () { - # Declare an array to define the options of this helper. - local legacy_args=vwc - declare -Ar args_array=( [v]=phpversion= [w]=workdir= [c]=commands= ) - local phpversion - local workdir - local commands - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - workdir="${workdir:-$final_path}" - phpversion="${phpversion:-$YNH_PHP_VERSION}" - - COMPOSER_HOME="$workdir/.composer" \ - php${phpversion} "$workdir/composer.phar" $commands \ - -d "$workdir" --quiet --no-interaction -} - -# Install and initialize Composer in the given directory -# -# usage: ynh_install_composer [--phpversion=phpversion] [--workdir=$final_path] [--install_args="--optimize-autoloader"] -# | arg: -v, --phpversion - PHP version to use with composer -# | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. -# | arg: -a, --install_args - Additional arguments provided to the composer install. Argument --no-dev already include -ynh_install_composer () { - # Declare an array to define the options of this helper. - local legacy_args=vwa - declare -Ar args_array=( [v]=phpversion= [w]=workdir= [a]=install_args=) - local phpversion - local workdir - local install_args - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - workdir="${workdir:-$final_path}" - phpversion="${phpversion:-$YNH_PHP_VERSION}" - install_args="${install_args:-}" - - curl -sS https://getcomposer.org/installer \ - | COMPOSER_HOME="$workdir/.composer" \ - php${phpversion} -- --quiet --install-dir="$workdir" \ - || ynh_die "Unable to install Composer." - - # update dependencies to create composer.lock - ynh_composer_exec --phpversion="${phpversion}" --workdir="$workdir" --commands="install --no-dev $install_args" \ - || ynh_die "Unable to update core dependencies with Composer." -} \ No newline at end of file +#================================================= +# FUTURE OFFICIAL HELPERS +#================================================= diff --git a/scripts/install b/scripts/install index a2c7a0c..cf28515 100644 --- a/scripts/install +++ b/scripts/install @@ -54,6 +54,7 @@ ynh_app_setting_set --app=$app --key=admin --value=$admin ynh_script_progression --message="Creating a MySQL database..." db_name=$(ynh_sanitize_dbid --db_name=$app) +db_user=$db_name ynh_app_setting_set --app=$app --key=db_name --value=$db_name ynh_mysql_setup_db --db_user=$db_name --db_name=$db_name @@ -70,6 +71,14 @@ then FLUSH PRIVILEGES;" --database=mysql fi +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." --weight=3 + +# Create a system user +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -79,6 +88,10 @@ 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" +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # NGINX CONFIGURATION #================================================= @@ -87,14 +100,6 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=3 # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." --weight=3 - -# Create a system user -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -110,7 +115,7 @@ ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= ynh_script_progression --message="Filling database..." --weight=3 -ynh_replace_string --match_string="__YNH_PMA_USER__" --replace_string="$db_name" --target_file=../conf/create_db.sql +ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_name" --target_file=../conf/create_db.sql ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" \ < ../conf/create_db.sql ynh_replace_string --match_string="phpmyadmin" --replace_string="$db_name" --target_file=$final_path/sql/create_tables.sql @@ -122,15 +127,10 @@ ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name #================================================= ynh_script_progression --message="Configuring phpMyAdmin..." -ynh_replace_string --match_string="__YNH_PMA_ADMIN_USER__" --replace_string="$db_admin_user" --target_file=../conf/config.inc.php -ynh_replace_string --match_string="__YNH_PMA_ADMIN_PASSWORD__" --replace_string="$db_admin_pwd" --target_file=../conf/config.inc.php -ynh_replace_string --match_string="__YNH_PMA_USER__" --replace_string="$db_name" --target_file=../conf/config.inc.php -ynh_replace_string --match_string="__YNH_PMA_PASSWORD__" --replace_string="$db_pwd" --target_file=../conf/config.inc.php - -cp ../conf/config.inc.php $final_path - -# Calculate and store the config file checksum into the app settings -ynh_store_file_checksum --file="$final_path/config.inc.php" +ynh_add_config --template="../conf/config.inc.php" --destination="$final_path/config.inc.php" +# config.inc.php contains sensitive data, restrict its access +chown $app: $final_path/config.inc.php +chmod 640 $final_path/config.inc.php #================================================= # INSTALL DEPENDENCIES WITH COMPOSER @@ -150,11 +150,6 @@ ynh_composer_exec --commands="update --no-dev" # SECURE FILES AND DIRECTORIES #================================================= -# Set permissions to app files -chown -R root: $final_path -# config.inc.php contains sensitive data, restrict its access -chown root:$app $final_path/config.inc.php -chmod 640 $final_path/config.inc.php # Setup phpMyAdmin temporary folder mkdir -p $final_path/tmp chown $app: $final_path/tmp @@ -165,7 +160,7 @@ chown $app: $final_path/tmp ynh_script_progression --message="Configuring permissions..." --weight=3 # Restrict access to admin only -ynh_permission_update --permission="main" --add=$admin --remove="all_users" +ynh_permission_update --permission="main" --remove="all_users" --add=$admin #================================================= # RELOAD NGINX diff --git a/scripts/restore b/scripts/restore index 49ff202..4a7311d 100644 --- a/scripts/restore +++ b/scripts/restore @@ -47,6 +47,14 @@ test ! -d $final_path \ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=2 + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # RESTORE THE APP MAIN DIR #================================================= @@ -54,6 +62,10 @@ ynh_script_progression --message="Restoring phpMyAdmin main directory..." ynh_restore_file --origin_path="$final_path" +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # RESTORE THE MYSQL DATABASE #================================================= @@ -74,21 +86,10 @@ then FLUSH PRIVILEGES;" --database=mysql fi -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -ynh_script_progression --message="Recreating the dedicated system user..." --weight=2 - -# Create the dedicated user (if not existing) -ynh_system_user_create --username=$app - #================================================= # RESTORE USER RIGHTS #================================================= -# config.inc.php contains sensitive data, restrict its access -chown root:$app $final_path/config.inc.php - chown $app: $final_path/tmp #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 7f20b44..38435b5 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -21,6 +21,7 @@ path_url=$(ynh_app_setting_get --app=$app --key=path) admin=$(ynh_app_setting_get --app=$app --key=admin) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name db_admin_user=$(ynh_app_setting_get --app=$app --key=db_admin_user) db_admin_pwd=$(ynh_app_setting_get --app=$app --key=db_admin_pwd) @@ -90,6 +91,14 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # STANDARD UPGRADE STEPS #================================================= @@ -101,9 +110,13 @@ then ynh_script_progression --message="Upgrading source files..." --weight=5 # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$final_path" + ynh_setup_source --dest_dir="$final_path" --keep="$final_path/config.inc.php" fi +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # NGINX CONFIGURATION #================================================= @@ -112,14 +125,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." - # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -156,35 +161,12 @@ then < $final_path/sql/create_tables.sql fi -#================================================= -# CONFIGURE PHPMYADMIN -#================================================= -ynh_script_progression --message="Reconfiguring phpMyAdmin..." - -# Verify the checksum and backup the file if it's different -ynh_backup_if_checksum_is_different --file="$final_path/config.inc.php" - -ynh_replace_string --match_string="__YNH_PMA_ADMIN_USER__" --replace_string="$db_admin_user" --target_file=../conf/config.inc.php -ynh_replace_string --match_string="__YNH_PMA_ADMIN_PASSWORD__" --replace_string="$db_admin_pwd" --target_file=../conf/config.inc.php -ynh_replace_string --match_string="__YNH_PMA_USER__" --replace_string="$db_name" --target_file=../conf/config.inc.php -ynh_replace_string --match_string="__YNH_PMA_PASSWORD__" --replace_string="$db_pwd" --target_file=../conf/config.inc.php - -cp ../conf/config.inc.php $final_path - -# Recalculate and store the config file checksum into the app settings -ynh_store_file_checksum --file="$final_path/config.inc.php" - #================================================= # GENERIC FINALIZATION #================================================= # SECURE FILES AND DIRECTORIES #================================================= -# Set permissions to app files -chown -R root: $final_path -# config.inc.php contains sensitive data, restrict its access -chown root:$app $final_path/config.inc.php -chmod 640 $final_path/config.inc.php # Setup phpMyAdmin temporary folder mkdir -p $final_path/tmp chown -R $app: $final_path/tmp From 25b3752614299fb33c48ada423a5d5664af3829c Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 13 Jul 2021 07:38:12 +0200 Subject: [PATCH 18/19] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index cf28515..809b57e 100644 --- a/scripts/install +++ b/scripts/install @@ -115,7 +115,7 @@ ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= ynh_script_progression --message="Filling database..." --weight=3 -ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_name" --target_file=../conf/create_db.sql +ynh_replace_string --match_string="__DB_USER__" --replace_string="$db_user" --target_file=../conf/create_db.sql ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" \ < ../conf/create_db.sql ynh_replace_string --match_string="phpmyadmin" --replace_string="$db_name" --target_file=$final_path/sql/create_tables.sql From ba84302f2baa4feee80211a3980d22c69d611c1b Mon Sep 17 00:00:00 2001 From: yalh76 Date: Thu, 5 Aug 2021 21:51:35 +0200 Subject: [PATCH 19/19] Fix upgrade --- check_process | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/check_process b/check_process index 35e66e0..1c5da66 100644 --- a/check_process +++ b/check_process @@ -11,7 +11,8 @@ setup_private=0 setup_public=0 upgrade=1 - upgrade=1 from_commit=e8bcf5f9e61621256fa62f8813ba161443dd488b + #5.1.1~ynh1 + upgrade=1 from_commit=209c11b5d8bd09cace673f654273d73ae1e7bf51 backup_restore=1 multi_instance=0 change_url=1 @@ -19,6 +20,6 @@ Email= Notification=none ;;; Upgrade options - ; commit=e8bcf5f9e61621256fa62f8813ba161443dd488b - name=Testing (#106) + ; commit=209c11b5d8bd09cace673f654273d73ae1e7bf51 + name=5.1.1~ynh1 manifest_arg=domain=DOMAIN&path=PATH&admin=USER&