From 3a55070fa9ece5640dc799a3273e9b20bed0e366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Fri, 24 Apr 2020 16:07:42 +0200 Subject: [PATCH 01/25] Whitespace changes : fix this weird 7-spaces indent --- conf/nginx.conf | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index c9e580f..e55f050 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,30 +1,30 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - # Path to source - alias __FINALPATH__/; + # Path to source + alias __FINALPATH__/; - # Force usage of https - if ($scheme = http) { - rewrite ^ https://$server_name$request_uri? permanent; - } + # Force usage of https + if ($scheme = http) { + rewrite ^ https://$server_name$request_uri? permanent; + } - index index.php; - try_files $uri $uri/ /index.php; - location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; - include fastcgi_params; - fastcgi_param REMOTE_USER $remote_user; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param SCRIPT_FILENAME $request_filename; - fastcgi_param HTTPS on; - } + index index.php; + try_files $uri $uri/ /index.php; + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; + include fastcgi_params; + fastcgi_param REMOTE_USER $remote_user; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $request_filename; + fastcgi_param HTTPS on; + } - # Include SSOWAT user panel. - include conf.d/yunohost_panel.conf.inc; + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; } location ~ ^__PATH__/(data|config|\.ht|db_structure\.xml|README) { - deny all; + deny all; } From cf4bf61069681dd57bce55e8cb99232b912ea1f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Fri, 24 Apr 2020 16:47:31 +0200 Subject: [PATCH 02/25] Add url rewrites --- conf/nginx.conf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/conf/nginx.conf b/conf/nginx.conf index e55f050..56d6c10 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -9,6 +9,15 @@ location __PATH__/ { rewrite ^ https://$server_name$request_uri? permanent; } + rewrite "^__PATH__/([a-zA-Z0-9-]+)$" "__PATH__/studs.php?poll=$1"; + rewrite "^__PATH__/([a-zA-Z0-9-]+)/action/([a-zA-Z_-]+)/(.+)$" "__PATH__/studs.php?poll=$1&$2=$3"; + rewrite "^__PATH__/([a-zA-Z0-9-]+)/vote/([a-zA-Z0-9]{16})$" "__PATH__/studs.php?poll=$1&vote=$2"; + + # Admin requires the private poll ID, 24-char long + rewrite "^__PATH__/([a-zA-Z0-9-]{24})/admin$" "__PATH__/adminstuds.php?poll=$1"; + rewrite "^__PATH__/([a-zA-Z0-9-]{24})/admin/vote/([a-zA-Z0-9]{16})$" "__PATH__/adminstuds.php?poll=$1&vote=$2"; + rewrite "^__PATH__/([a-zA-Z0-9-]{24})/admin/action/([a-zA-Z_-]+)(/(.+))?$" "__PATH__/adminstuds.php?poll=$1&$2=$4"; + index index.php; try_files $uri $uri/ /index.php; location ~ [^/]\.php(/|$) { From 55d4c4dcd4bb8a86a9a620c066b9f0a0745d8c93 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 14 Dec 2020 13:55:23 +0100 Subject: [PATCH 03/25] Fix linter warning --- scripts/upgrade | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index c320bb3..d8f3d6b 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -92,13 +92,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 #================================================= From 8bdce2ecaf4ca8f5b15a60095b051be46d558ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Mon, 21 Dec 2020 14:56:26 +0100 Subject: [PATCH 04/25] Add session.cookie_httponly, and a default timezone --- conf/php-fpm.conf | 3 +++ scripts/install | 2 ++ scripts/upgrade | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 6adfb01..53058cf 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -431,3 +431,6 @@ chdir = __FINALPATH__ php_admin_value[upload_max_filesize] = 10G php_admin_value[post_max_size] = 10G + +php_admin_value[session.cookie_httponly] = 1 +php_admin_value[date.timezone] = __TIMEZONE__ diff --git a/scripts/install b/scripts/install index 6907e1f..b06c0a6 100644 --- a/scripts/install +++ b/scripts/install @@ -121,6 +121,8 @@ ynh_replace_string --match_string="__ADMINMAIL__" --replace_string=$admin_mail - ynh_replace_string --match_string="__LANGUAGE__" --replace_string=$language --target_file="$config" ynh_replace_string --match_string="__DOMAIN__" --replace_string=$domain --target_file="$config" ynh_replace_string --match_string="__PATH__" --replace_string=$path_url --target_file="$config" +timezone="$(cat /etc/timezone)" +ynh_replace_string --match_string="__TIMEZONE__" --replace_string=$timezone --target_file="$config" # Calculate and store the config file checksum into the app settings ynh_store_file_checksum --file="$config" diff --git a/scripts/upgrade b/scripts/upgrade index c320bb3..5263bad 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -172,7 +172,8 @@ then ynh_replace_string --match_string="__LANGUAGE__" --replace_string=$language --target_file="$config" ynh_replace_string --match_string="__DOMAIN__" --replace_string=$domain --target_file="$config" ynh_replace_string --match_string="__PATH__" --replace_string=$path_url --target_file="$config" - + timezone="$(cat /etc/timezone)" + ynh_replace_string --match_string="__TIMEZONE__" --replace_string=$timezone --target_file="$config" # Calculate and store the config file checksum into the app settings ynh_store_file_checksum --file="$config" fi From 1bdc9d48386eec8132ae654102554580c73014fd Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Thu, 13 May 2021 17:50:35 +0200 Subject: [PATCH 05/25] [autopatch] Update issue and PR templates --- issue_template.md => .github/ISSUE_TEMPLATE.md | 12 ++++++------ .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++++++++ pull_request_template.md | 18 ------------------ 3 files changed, 22 insertions(+), 24 deletions(-) rename issue_template.md => .github/ISSUE_TEMPLATE.md (87%) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 pull_request_template.md diff --git a/issue_template.md b/.github/ISSUE_TEMPLATE.md similarity index 87% rename from issue_template.md rename to .github/ISSUE_TEMPLATE.md index 5941f80..2729a6b 100644 --- a/issue_template.md +++ b/.github/ISSUE_TEMPLATE.md @@ -6,11 +6,11 @@ about: When creating a bug report, please use the following template to provide **How to post a meaningful bug report** 1. *Read this whole template first.* -2. *Make sure 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!* +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.* - - *In doubt, ask here and we will figure it out together.* -3. *Delete these italic comments as you write over them below, and remove this guide.* + - *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 @@ -25,13 +25,13 @@ about: When creating a bug report, please use the following template to provide - 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 opensondage`* +- 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 opensondage + 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:* 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) diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 2504029..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,18 +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 ---- -*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/opensondage_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/opensondage_ynh%20PR-NUM-%20(USERNAME)/) From 68fe2e0101a1431b67248d517d16e119be08832f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 17:48:31 +0200 Subject: [PATCH 06/25] 1.1.16 --- check_process | 12 +++----- conf/app.src | 6 ++-- conf/config.php | 8 +++--- manifest.json | 32 ++++----------------- scripts/_common.sh | 15 +--------- scripts/install | 41 ++++++-------------------- scripts/restore | 14 ++++----- scripts/upgrade | 72 ++++++++++++++-------------------------------- 8 files changed, 55 insertions(+), 145 deletions(-) diff --git a/check_process b/check_process index 8c5439a..51d2363 100644 --- a/check_process +++ b/check_process @@ -1,10 +1,10 @@ ;; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) - admin="john" (USER) + domain="domain.tld" + path="/path" + admin="john" language="fr" - is_public=1 (PUBLIC|public=1|private=0) + is_public=1 ; Checks pkg_linter=1 setup_sub_dir=1 @@ -16,11 +16,7 @@ upgrade=1 from_commit=eb508660841801995fe2c66e5bf3259cdbea5922 backup_restore=1 multi_instance=1 - incorrect_path=1 - port_already_use=0 change_url=1 -;;; Levels - Level 5=auto ;;; Upgrade options ; commit=eb508660841801995fe2c66e5bf3259cdbea5922 name=Remove Framasoft signature diff --git a/conf/app.src b/conf/app.src index bb83dc9..6a39146 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,6 +1,6 @@ -SOURCE_URL=https://framagit.org/framasoft/framadate/framadate/-/archive/1.1.10/framadate-1.1.10.tar.gz -SOURCE_SUM=ea9ab8bd713da17dc7e5d6ddd782ce704184a3189888ed837ba8e59ee7b6fa5f +SOURCE_URL=https://framagit.org/framasoft/framadate/framadate/-/archive/1.1.16/framadate-1.1.16.tar.gz +SOURCE_SUM=89da42a915c912a91ae1ba44fd32a61ec8fa5f59c517ee3f5d74335ddee77c7d SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true -SOURCE_FILENAME=opensondage-1-1-10.tar.gz +SOURCE_FILENAME=opensondage-1-1-16.tar.gz diff --git a/conf/config.php b/conf/config.php index 2a37665..e3123af 100644 --- a/conf/config.php +++ b/conf/config.php @@ -26,19 +26,19 @@ const APP_URL = '__DOMAIN__'; const NOMAPPLICATION = 'OpenSondage'; // Database administrator email -const ADRESSEMAILADMIN = '__ADMINMAIL__'; +const ADRESSEMAILADMIN = '__EMAIL__'; // Email for automatic responses (you should set it to "no-reply") const ADRESSEMAILREPONSEAUTO = ''; // Database user -const DB_USER= '__DBUSER__'; +const DB_USER= '__DB_USER__'; // Database password -const DB_PASSWORD = '__DBPWD__'; +const DB_PASSWORD = '__DB_PWD__'; // Database server name, leave empty to use a socket -const DB_CONNECTION_STRING = 'mysql:host=localhost;dbname=__DBNAME__;port=3306'; +const DB_CONNECTION_STRING = 'mysql:host=localhost;dbname=__DB_NAME__;port=3306'; // Name of the table that store migration script already executed const MIGRATION_TABLE = 'framadate_migration'; diff --git a/manifest.json b/manifest.json index e1bef3a..2c58d8b 100644 --- a/manifest.json +++ b/manifest.json @@ -3,11 +3,11 @@ "id": "opensondage", "packaging_format": 1, "description": { - "en": "Service for planning an appointment or making a decision quickly and easily.", - "fr": "Service pour planifier un rendez-vous ou prendre une décision rapidement et facilement.", - "de": "Service zur schnellen und einfachen Planung eines Termins oder zur Entscheidungsfindung." + "en": "Service for planning an appointment or making a decision quickly and easily", + "fr": "Service pour planifier un rendez-vous ou prendre une décision rapidement et facilement", + "de": "Service zur schnellen und einfachen Planung eines Termins oder zur Entscheidungsfindung" }, - "version": "1.1.10~ynh2", + "version": "1.1.16~ynh1", "url": "https://git.framasoft.org/framasoft/framadate", "license": "CECILL-B", "maintainer": { @@ -19,12 +19,12 @@ "email": "ljf+opensondage_ynh@grimaud.me" }], "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.2.0" }, "multi_instance": true, "services": [ "nginx", - "php7.0-fpm", + "php7.3-fpm", "mysql" ], "arguments": { @@ -32,32 +32,17 @@ { "name": "domain", "type": "domain", - "ask": { - "en": "Choose a domain for OpenSondage", - "fr": "Choisissez un nom de domaine pour OpenSondage", - "de": "Wählen Sie bitte einen Domain für OpenSondage" - }, "example": "domain.org" }, { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for OpenSondage", - "fr": "Choisissez l'adresse pour OpenSondage", - "de": "Tragen Sie bitte den Pfad für OpenSondage ein" - }, "example": "/date", "default": "/date" }, { "name": "admin", "type": "user", - "ask": { - "en": "Choose the OpenSondage administrator (must be an existing YunoHost user)", - "fr": "Choisissez l'administrateur d'OpenSondage (doit être un utilisateur YunoHost)", - "de": "Wählen Sie bitte den OpenSondageadministrator (muss ein vorhandener YunoHost Nutzer sein)" - }, "example": "johndoe" }, { @@ -74,11 +59,6 @@ { "name": "is_public", "type": "boolean", - "ask": { - "en": "Can non-members create a poll?", - "fr": "Une personne non membre peut elle créer un sondage ?", - "de": "Kann einen nicht eingeloggter Nutzer einen Umfrage erstellen?" - }, "default": true } ] diff --git a/scripts/_common.sh b/scripts/_common.sh index d5039c1..189ff7b 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -7,7 +7,7 @@ # dependencies used by the app YNH_PHP_VERSION="7.3" -pkg_dependencies="php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-cli" +extra_php_dependencies="php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-cli" #================================================= # PERSONAL HELPERS @@ -21,19 +21,6 @@ pkg_dependencies="php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-intl php$ # EXPERIMENTAL HELPERS #================================================= -# Execute a command as another user -# usage: exec_as USER COMMAND [ARG ...] -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" diff --git a/scripts/install b/scripts/install index 6907e1f..cac8d6f 100644 --- a/scripts/install +++ b/scripts/install @@ -24,6 +24,7 @@ path_url=$YNH_APP_ARG_PATH admin=$YNH_APP_ARG_ADMIN language=$YNH_APP_ARG_LANGUAGE is_public=$YNH_APP_ARG_IS_PUBLIC +email=$(ynh_user_get_info --username=$admin --key=mail) app=$YNH_APP_INSTANCE_NAME @@ -47,16 +48,15 @@ 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=admin --value=$admin ynh_app_setting_set --app=$app --key=language --value=$language -ynh_app_setting_set --app=$app --key=is_public --value=$is_public +ynh_app_setting_set --app=$app --key=email --value=$email #================================================= -# STANDARD MODIFICATIONS +# CREATE DEDICATED USER #================================================= -# INSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Installing dependencies..." --weight=3 +ynh_script_progression --message="Configuring system user..." --weight=2 -ynh_install_app_dependencies $pkg_dependencies +# Create a system user +ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # CREATE A MYSQL DATABASE @@ -84,21 +84,14 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=2 # Create a dedicated nginx config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." --weight=2 - -# Create a system user -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= ynh_script_progression --message="Configuring PHP-FPM..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --package="$extra_php_dependencies" +phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # SPECIFIC SETUP @@ -107,23 +100,7 @@ ynh_add_fpm_config #================================================= ynh_script_progression --message="Configuring $app..." --weight=2 -config="$final_path/app/inc/config.php" - -admin_mail=$(ynh_user_get_info --username=$admin --key=mail) - -cp ../conf/config.php "$config" - -# Change variables in configuration -ynh_replace_string --match_string="__DBUSER__" --replace_string=$db_name --target_file="$config" -ynh_replace_string --match_string="__DBPWD__" --replace_string="$db_pwd" --target_file="$config" -ynh_replace_string --match_string="__DBNAME__" --replace_string=$db_name --target_file="$config" -ynh_replace_string --match_string="__ADMINMAIL__" --replace_string=$admin_mail --target_file="$config" -ynh_replace_string --match_string="__LANGUAGE__" --replace_string=$language --target_file="$config" -ynh_replace_string --match_string="__DOMAIN__" --replace_string=$domain --target_file="$config" -ynh_replace_string --match_string="__PATH__" --replace_string=$path_url --target_file="$config" - -# Calculate and store the config file checksum into the app settings -ynh_store_file_checksum --file="$config" +ynh_add_config --template="../conf/config.php" --destination="$final_path/app/inc/config.php" #================================================= # REPLACE LOGO IMAGE (DEFAULT IS FRAMADATE) diff --git a/scripts/restore b/scripts/restore index 3b413e6..7c86b5d 100644 --- a/scripts/restore +++ b/scripts/restore @@ -47,13 +47,6 @@ test ! -d $final_path \ 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_restore_file --origin_path="$final_path" - #================================================= # RECREATE THE DEDICATED USER #================================================= @@ -62,6 +55,13 @@ ynh_script_progression --message="Recreating the dedicated system user..." --wei # Create the dedicated user (if not existing) ynh_system_user_create --username=$app +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring the app main directory..." + +ynh_restore_file --origin_path="$final_path" + #================================================= # RESTORE USER RIGHTS #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index c320bb3..41f8b55 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -24,6 +24,8 @@ final_path=$(ynh_app_setting_get --app=$app --key=final_path) language=$(ynh_app_setting_get --app=$app --key=language) db_name=$(ynh_app_setting_get --app=$app --key=db_name) phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) +db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +email=$(ynh_app_setting_get --app=$app --key=email) #================================================= # CHECK VERSION @@ -43,15 +45,6 @@ then ynh_app_setting_delete --app=$app --key=public_site fi -# 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 -fi - # If db_name doesn't exist, create it if [ -z "$db_name" ]; then db_name=$(ynh_sanitize_dbid --db_name=$app) @@ -64,6 +57,12 @@ if [ -z "$final_path" ]; then ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi +# If email doesn't exist, create it +if [ -z "$email" ] +then + email=$(ynh_user_get_info --username=$admin --key=mail) +fi + # Make sure default language is set if [ -z "$language" ] then @@ -93,11 +92,12 @@ ynh_clean_setup () { ynh_abort_if_errors #================================================= -# CHECK THE PATH +# CREATE DEDICATED USER #================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." -# Normalize the URL path syntax -path_url=$(ynh_normalize_url_path --path_url=$path_url) +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # STANDARD UPGRADE STEPS @@ -113,6 +113,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" + #================================================= # NGINX CONFIGURATION #================================================= @@ -121,28 +125,13 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." - # Create a dedicated nginx config ynh_add_nginx_config -#================================================= -# UPGRADE DEPENDENCIES -#================================================= -ynh_script_progression --message="Upgrading dependencies..." --weight=7 - -ynh_install_app_dependencies $pkg_dependencies - -#================================================= -# 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 #================================================= ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=3 # Create a dedicated PHP-FPM config -ynh_add_fpm_config +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # SPECIFIC UPGRADE @@ -154,27 +143,9 @@ if [ "$upgrade_type" == "UPGRADE_APP" ] then ynh_script_progression --message="Reconfiguring $app..." --weight=2 - config="$final_path/app/inc/config.php" - - # Verify the checksum and backup the file if it's different - ynh_backup_if_checksum_is_different --file="$config" - - admin_mail=$(ynh_user_get_info --username=$admin --key=mail) - - cp ../conf/config.php "$config" - - # Change variables in configuration - ynh_replace_string --match_string="__DBUSER__" --replace_string=$db_name --target_file="$config" - db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) - ynh_replace_string --match_string="__DBPWD__" --replace_string="$db_pwd" --target_file="$config" - ynh_replace_string --match_string="__DBNAME__" --replace_string=$db_name --target_file="$config" - ynh_replace_string --match_string="__ADMINMAIL__" --replace_string=$admin_mail --target_file="$config" - ynh_replace_string --match_string="__LANGUAGE__" --replace_string=$language --target_file="$config" - ynh_replace_string --match_string="__DOMAIN__" --replace_string=$domain --target_file="$config" - ynh_replace_string --match_string="__PATH__" --replace_string=$path_url --target_file="$config" - - # Calculate and store the config file checksum into the app settings - ynh_store_file_checksum --file="$config" + ynh_add_config --template="../conf/config.php" --destination="$final_path/app/inc/config.php" + chmod 400 "$final_path/app/inc/config.php" + chown $app:$app "$final_path/app/inc/config.php" fi #================================================= @@ -200,7 +171,7 @@ then # Install composer ynh_install_composer - ynh_exec_warn_less php "$final_path/admin/migration.php" + ynh_exec_warn_less php$phpversion "$final_path/admin/migration.php" fi #================================================= @@ -209,7 +180,6 @@ fi # SECURE FILES AND DIRECTORIES #================================================= -chown -R root: "$final_path" chown -R $app: "$final_path/"{tpl_c,admin/stdout.log} #================================================= From e02dc7b6ab064ffdbfc2604b5da33b1319cf2542 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 17:51:09 +0200 Subject: [PATCH 07/25] Fix --- scripts/remove | 10 ---------- scripts/restore | 19 ++++++++----------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/scripts/remove b/scripts/remove index 3621935..b2badd5 100644 --- a/scripts/remove +++ b/scripts/remove @@ -20,16 +20,6 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) final_path=$(ynh_app_setting_get --app=$app --key=final_path) -#================================================= -# STANDARD REMOVE -#================================================= -# REMOVE DEPENDENCIES -#================================================= -ynh_script_progression --message="Removing dependencies..." --weight=3 - -# Remove metapackage and its dependencies -ynh_remove_app_dependencies - #================================================= # REMOVE THE MYSQL DATABASE #================================================= diff --git a/scripts/restore b/scripts/restore index 7c86b5d..88cb95f 100644 --- a/scripts/restore +++ b/scripts/restore @@ -53,7 +53,7 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_script_progression --message="Recreating the dedicated system user..." --weight=2 # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app +ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # RESTORE THE APP MAIN DIR @@ -62,6 +62,10 @@ ynh_script_progression --message="Restoring the app 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 USER RIGHTS #================================================= @@ -72,9 +76,12 @@ chown -R $app: "$final_path/"{tpl_c,admin/stdout.log} #================================================= # RESTORE THE PHP-FPM CONFIGURATION #================================================= +ynh_script_progression --message="Restoring the PHP-FPM configuration..." --weight=5 ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" +ynh_add_fpm_config --package="$extra_php_dependencies" + #================================================= # RESTORE THE MYSQL DATABASE #================================================= @@ -84,16 +91,6 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) ynh_mysql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$db_pwd ynh_mysql_connect_as --user=$db_name --password=$db_pwd --database=$db_name < ./db.sql -#================================================= -# SPECIFIC RESTORATION -#================================================= -# REINSTALL DEPENDENCIES -#================================================= -ynh_script_progression --message="Reinstalling dependencies..." --weight=9 - -# Define and install dependencies -ynh_install_app_dependencies $pkg_dependencies - #================================================= # GENERIC FINALIZATION #================================================= From 9ed5901cdbcaa56ef82846c8a7d3f99fde16379b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 17:52:31 +0200 Subject: [PATCH 08/25] Update _common.sh --- scripts/_common.sh | 47 ---------------------------------------------- 1 file changed, 47 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 189ff7b..6b4020a 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -20,50 +20,3 @@ extra_php_dependencies="php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-int #================================================= # EXPERIMENTAL HELPERS #================================================= - -# Execute a command with Composer -# -# usage: ynh_composer_exec --phpversion=phpversion [--workdir=$final_path] --commands="commands" -# | 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:-7.0}" - - 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] -# | arg: -w, --workdir - The directory from where the command will be executed. Default $final_path. -ynh_install_composer () { - # Declare an array to define the options of this helper. - local legacy_args=vw - declare -Ar args_array=( [v]=phpversion= [w]=workdir= ) - local phpversion - local workdir - # Manage arguments with getopts - ynh_handle_getopts_args "$@" - workdir="${workdir:-$final_path}" - phpversion="${phpversion:-7.0}" - - 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" \ - || ynh_die "Unable to update core dependencies with Composer." -} From f1fc96ae02e7895a4f55ab899240d4129e26ba8f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 17:53:19 +0200 Subject: [PATCH 09/25] Update install --- scripts/install | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install b/scripts/install index cac8d6f..2771085 100644 --- a/scripts/install +++ b/scripts/install @@ -64,6 +64,7 @@ ynh_system_user_create --username=$app --home_dir=$final_path ynh_script_progression --message="Creating a MySQL database..." --weight=2 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 From 7a41d35ffecc9b0508724106563333d7fd9d4792 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:00:29 +0200 Subject: [PATCH 10/25] Fix --- scripts/_common.sh | 2 +- scripts/install | 3 +-- scripts/upgrade | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 6b4020a..406bdfb 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -6,7 +6,7 @@ # dependencies used by the app YNH_PHP_VERSION="7.3" - +YNH_COMPOSER_VERSION=2.1.1 extra_php_dependencies="php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-cli" #================================================= diff --git a/scripts/install b/scripts/install index 2771085..a52cab7 100644 --- a/scripts/install +++ b/scripts/install @@ -123,7 +123,7 @@ ynh_script_progression --message="Initializing database..." --weight=2 # Install composer ynh_install_composer -ynh_exec_warn_less php$YNH_PHP_VERSION "$final_path/admin/migration.php" +ynh_exec_warn_less php$phpversion "$final_path/admin/migration.php" #================================================= # GENERIC FINALIZATION @@ -131,7 +131,6 @@ ynh_exec_warn_less php$YNH_PHP_VERSION "$final_path/admin/migration.php" # SECURE FILES AND DIRECTORIES #================================================= -chown -R root: "$final_path" chown -R $app: "$final_path/"{tpl_c,admin/stdout.log} #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 41f8b55..28f3128 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -23,6 +23,7 @@ is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) language=$(ynh_app_setting_get --app=$app --key=language) db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) email=$(ynh_app_setting_get --app=$app --key=email) From 8c9bce2c47cc639cdfacb9371a8aae740289f698 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:03:47 +0200 Subject: [PATCH 11/25] Update install --- scripts/install | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/install b/scripts/install index a52cab7..4494e34 100644 --- a/scripts/install +++ b/scripts/install @@ -77,6 +77,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 #================================================= From 773b7e4d51555697d1ac65fc2cff351b915d76d7 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:08:16 +0200 Subject: [PATCH 12/25] Add templates --- doc/DISCLAIMER.md | 8 ++++++++ doc/DISCLAIMER_fr.md | 8 ++++++++ manifest.json | 8 ++++++++ 3 files changed, 24 insertions(+) create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..20b31a6 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,8 @@ +## Limitations + +* There is no way to configure mail, either with smtp or with sendmail. See https://framagit.org/framasoft/framadate/merge_requests/184 +* There is no way to use SSOWAT to identify current user. See https://framagit.org/framasoft/framadate/issues/177 + +## Additional information + +* This package contains a custom version of Framadate (fork of OpenSondage and Studs), the sources are here: https://git.framasoft.org/framasoft/framadate/. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..c6bdc14 --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,8 @@ +## Limitations + +* Impossible de configurer le courrier, que ce soit avec smtp ou avec sendmail. Voir https://framagit.org/framasoft/framadate/merge_requests/184 +* Impossible d'utiliser SSOWAT pour identifier l'utilisateur actuel. Voir https://framagit.org/framasoft/framadate/issues/177 + +## Additional information + +* Ce paquet contient une version personnalisée de Framadate (fork d'OpenSondage et Studs), les sources sont ici : https://git.framasoft.org/framasoft/framadate/. diff --git a/manifest.json b/manifest.json index 2c58d8b..3f34dfc 100644 --- a/manifest.json +++ b/manifest.json @@ -9,6 +9,14 @@ }, "version": "1.1.16~ynh1", "url": "https://git.framasoft.org/framasoft/framadate", + "upstream": { + "license": "CECILL-B", + "website": "https://framadate.org/", + "demo": "https://framadate.org/", + "admindoc": "https://framagit.org/framasoft/framadate/framadate/wikis/home", + "userdoc": "https://yunohost.org/#/app_opensondage", + "code": "https://git.framasoft.org/framasoft/framadate" + }, "license": "CECILL-B", "maintainer": { "name": "", From cd45062147227522bbbd4df933a9f68d69780efe Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Tue, 20 Jul 2021 16:08:25 +0000 Subject: [PATCH 13/25] Auto-update README --- README.md | 60 ++++++++++++++++++++-------------------------------- README_fr.md | 59 ++++++++++++++++++--------------------------------- 2 files changed, 43 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index 96ba3eb..063006b 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,27 @@ + + # OpenSondage for YunoHost [![Integration level](https://dash.yunohost.org/integration/opensondage.svg)](https://dash.yunohost.org/appci/app/opensondage) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.maintain.svg) -[![Install OpenSondage with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=opensondage) +[![Install OpenSondage with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=opensondage) *[Lire ce readme en français.](./README_fr.md)* -> *This package allow you to install OpenSondage 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 OpenSondage 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 -OpenSondage is an online service for planning an appointment or making a decision quickly and easily. It's a community free/libre software alternative to Doodle. +Service for planning an appointment or making a decision quickly and easily -**Shipped version:** 1.1.10 +**Shipped version:** 1.1.16~ynh1 -## Screenshots +**Demo:** https://framadate.org/ -![](https://framadate.org/images/date.png) - -## Demo - -* [YunoHost demo](https://demo.yunohost.org/date/) -* [Official demo](https://framadate.org/) - -## Configuration - -## Documentation - - * Official documentation: https://framagit.org/framasoft/framadate/framadate/wikis/home - * YunoHost documentation: https://yunohost.org/#/app_opensondage - -## YunoHost specific features - -#### Multi-users support - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/opensondage%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/opensondage/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/opensondage%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/opensondage/) +## Disclaimers / important information ## Limitations @@ -48,18 +32,18 @@ OpenSondage is an online service for planning an appointment or making a decisio * This package contains a custom version of Framadate (fork of OpenSondage and Studs), the sources are here: https://git.framasoft.org/framasoft/framadate/. -## Links +## Documentation and resources - * Report a bug: https://github.com/YunoHost-Apps/opensondage_ynh/issues - * OpenSondage website: https://git.framasoft.org/framasoft/framadate/framadate - * OpenSondage repository: https://git.framasoft.org/framasoft/framadate/framadate - * YunoHost website: https://yunohost.org/ +* Official app website: https://framadate.org/ +* Official user documentation: https://yunohost.org/#/app_opensondage +* Official admin documentation: https://framagit.org/framasoft/framadate/framadate/wikis/home +* Upstream app code repository: https://git.framasoft.org/framasoft/framadate +* YunoHost documentation for this app: https://yunohost.org/app_opensondage +* Report a bug: https://github.com/YunoHost-Apps/opensondage_ynh/issues ---- +## Developer info -## Developers info - -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/opensondage_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/opensondage_ynh/tree/testing). To try the testing branch, please proceed like that. ``` @@ -67,3 +51,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/opensondage_ynh/tree/ or sudo yunohost app upgrade opensondage -u https://github.com/YunoHost-Apps/opensondage_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 cc36910..0cdefa0 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,44 +1,23 @@ # OpenSondage pour YunoHost -[![Integration level](https://dash.yunohost.org/integration/opensondage.svg)](https://dash.yunohost.org/appci/app/opensondage) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.maintain.svg) -[![Installer OpenSondage avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=opensondage) +[![Niveau d'intégration](https://dash.yunohost.org/integration/opensondage.svg)](https://dash.yunohost.org/appci/app/opensondage) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/opensondage.maintain.svg) +[![Installer OpenSondage avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=opensondage) -*[Read this readme in english.](./README.md)* - -> *Ce package vous permet d'installer OpenSondage 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.* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* +> *Ce package vous permet d'installer OpenSondage 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 -OpenSondage est un service en ligne permettant de planifier un rendez-vous ou de prendre une décision rapidement et facilement. C'est une alternative logicielle libre et communautaire à Doodle. +Service pour planifier un rendez-vous ou prendre une décision rapidement et facilement -**Version incluse :** 1.1.10 +**Version incluse :** 1.1.16~ynh1 -## Captures d'écran +**Démo :** https://framadate.org/ -![](https://framadate.org/images/date.png) - -## Démo - -* [Démo YunoHost](https://demo.yunohost.org/date/) -* [Démo officielle](https://framadate.org/) - -## Configuration - -## Documentation - - * Documentation officielle : https://framagit.org/framasoft/framadate/framadate/wikis/home - * Documentation YunoHost : https://yunohost.org/#/app_opensondage_fr - -## Caractéristiques spécifiques YunoHost - -#### Support multi-utilisateur - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/opensondage%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/opensondage/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/opensondage%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/opensondage/) +## Avertissements / informations importantes ## Limitations @@ -49,14 +28,14 @@ OpenSondage est un service en ligne permettant de planifier un rendez-vous ou de * Ce paquet contient une version personnalisée de Framadate (fork d'OpenSondage et Studs), les sources sont ici : https://git.framasoft.org/framasoft/framadate/. -## Liens +## Documentations et ressources - * Signaler un bug : https://github.com/YunoHost-Apps/opensondage_ynh/issues - * Site de l'application OpenSondage : https://git.framasoft.org/framasoft/framadate/framadate - * Dépôt de l'application principale : https://git.framasoft.org/framasoft/framadate/framadate - * Site web YunoHost : https://yunohost.org/ - ---- +* Site officiel de l'app : https://framadate.org/ +* Documentation officielle utilisateur : https://yunohost.org/#/app_opensondage +* Documentation officielle de l'admin : https://framagit.org/framasoft/framadate/framadate/wikis/home +* Dépôt de code officiel de l'app : https://git.framasoft.org/framasoft/framadate +* Documentation YunoHost pour cette app : https://yunohost.org/app_opensondage +* Signaler un bug : https://github.com/YunoHost-Apps/opensondage_ynh/issues ## Informations pour les développeurs @@ -65,6 +44,8 @@ Merci de faire vos pull request sur la [branche testing](https://github.com/Yuno Pour essayer la branche testing, procédez comme suit. ``` sudo yunohost app install https://github.com/YunoHost-Apps/opensondage_ynh/tree/testing --debug -or +ou sudo yunohost app upgrade opensondage -u https://github.com/YunoHost-Apps/opensondage_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From 7316f9ac3ab538ed6e6541490219c84aa84fc890 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:13:57 +0200 Subject: [PATCH 14/25] Update check_process --- check_process | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/check_process b/check_process index 51d2363..98248f7 100644 --- a/check_process +++ b/check_process @@ -13,11 +13,11 @@ setup_private=1 setup_public=1 upgrade=1 - upgrade=1 from_commit=eb508660841801995fe2c66e5bf3259cdbea5922 + upgrade=1 from_commit=02f2cd7e656ebae74643e969746b23d8912c7798 backup_restore=1 multi_instance=1 change_url=1 ;;; Upgrade options - ; commit=eb508660841801995fe2c66e5bf3259cdbea5922 - name=Remove Framasoft signature + ; commit=02f2cd7e656ebae74643e969746b23d8912c7798 + name=Merge pull request #70 from YunoHost-Apps/testing manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr_FR&is_public=1& From f93a579213c64494a0a2e09a1f956951ef3d8dad Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:33:39 +0200 Subject: [PATCH 15/25] Update nginx.conf --- conf/nginx.conf | 49 +++++++++++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/conf/nginx.conf b/conf/nginx.conf index c9e580f..56d6c10 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,30 +1,39 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - # Path to source - alias __FINALPATH__/; + # Path to source + alias __FINALPATH__/; - # Force usage of https - if ($scheme = http) { - rewrite ^ https://$server_name$request_uri? permanent; - } + # Force usage of https + if ($scheme = http) { + rewrite ^ https://$server_name$request_uri? permanent; + } - index index.php; - try_files $uri $uri/ /index.php; - location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; - include fastcgi_params; - fastcgi_param REMOTE_USER $remote_user; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param SCRIPT_FILENAME $request_filename; - fastcgi_param HTTPS on; - } + rewrite "^__PATH__/([a-zA-Z0-9-]+)$" "__PATH__/studs.php?poll=$1"; + rewrite "^__PATH__/([a-zA-Z0-9-]+)/action/([a-zA-Z_-]+)/(.+)$" "__PATH__/studs.php?poll=$1&$2=$3"; + rewrite "^__PATH__/([a-zA-Z0-9-]+)/vote/([a-zA-Z0-9]{16})$" "__PATH__/studs.php?poll=$1&vote=$2"; - # Include SSOWAT user panel. - include conf.d/yunohost_panel.conf.inc; + # Admin requires the private poll ID, 24-char long + rewrite "^__PATH__/([a-zA-Z0-9-]{24})/admin$" "__PATH__/adminstuds.php?poll=$1"; + rewrite "^__PATH__/([a-zA-Z0-9-]{24})/admin/vote/([a-zA-Z0-9]{16})$" "__PATH__/adminstuds.php?poll=$1&vote=$2"; + rewrite "^__PATH__/([a-zA-Z0-9-]{24})/admin/action/([a-zA-Z_-]+)(/(.+))?$" "__PATH__/adminstuds.php?poll=$1&$2=$4"; + + index index.php; + try_files $uri $uri/ /index.php; + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php/php__PHPVERSION__-fpm-__NAME__.sock; + include fastcgi_params; + fastcgi_param REMOTE_USER $remote_user; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $request_filename; + fastcgi_param HTTPS on; + } + + # Include SSOWAT user panel. + include conf.d/yunohost_panel.conf.inc; } location ~ ^__PATH__/(data|config|\.ht|db_structure\.xml|README) { - deny all; + deny all; } From 364ac503bcb34f70f47b77ca4d7dd37fbde1a044 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:46:27 +0200 Subject: [PATCH 16/25] Fix --- conf/php-fpm.conf | 3 +++ scripts/install | 5 +++-- scripts/remove | 4 ++-- scripts/restore | 7 ++++--- scripts/upgrade | 21 +++++++++------------ 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index 6adfb01..53058cf 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -431,3 +431,6 @@ chdir = __FINALPATH__ php_admin_value[upload_max_filesize] = 10G php_admin_value[post_max_size] = 10G + +php_admin_value[session.cookie_httponly] = 1 +php_admin_value[date.timezone] = __TIMEZONE__ diff --git a/scripts/install b/scripts/install index 4494e34..d6e0857 100644 --- a/scripts/install +++ b/scripts/install @@ -25,13 +25,14 @@ admin=$YNH_APP_ARG_ADMIN language=$YNH_APP_ARG_LANGUAGE is_public=$YNH_APP_ARG_IS_PUBLIC email=$(ynh_user_get_info --username=$admin --key=mail) +timezone="$(cat /etc/timezone)" 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" @@ -140,7 +141,7 @@ chown -R $app: "$final_path/"{tpl_c,admin/stdout.log} #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring SSOwat..." --weight=1 # Make app public if necessary if [ $is_public -eq 1 ] diff --git a/scripts/remove b/scripts/remove index b2badd5..705c54d 100644 --- a/scripts/remove +++ b/scripts/remove @@ -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 @@ -57,7 +57,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=1 # Delete a system user ynh_system_user_delete --username=$app diff --git a/scripts/restore b/scripts/restore index 88cb95f..ad6e890 100644 --- a/scripts/restore +++ b/scripts/restore @@ -19,7 +19,7 @@ ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading settings..." --weight=2 +ynh_script_progression --message="Loading installation settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME @@ -32,7 +32,7 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================ -ynh_script_progression --message="Validating restoration parameters..." +ynh_script_progression --message="Validating restoration parameters..." --weight=1 ynh_webpath_available --domain=$domain --path_url=$path_url \ || ynh_die --message="Path not available: ${domain}${path_url}" @@ -44,6 +44,7 @@ test ! -d $final_path \ #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= +ynh_script_progression --message="Restoring the NGINX configuration..." --weight=1 ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" @@ -58,7 +59,7 @@ ynh_system_user_create --username=$app --home_dir=$final_path #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_script_progression --message="Restoring the app main directory..." +ynh_script_progression --message="Restoring the app main directory..." --weight=1 ynh_restore_file --origin_path="$final_path" diff --git a/scripts/upgrade b/scripts/upgrade index 28f3128..014b85b 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -27,6 +27,7 @@ db_user=$db_name phpversion=$(ynh_app_setting_get --app="$app" --key=phpversion) db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) email=$(ynh_app_setting_get --app=$app --key=email) +timezone="$(cat /etc/timezone)" #================================================= # CHECK VERSION @@ -37,10 +38,9 @@ 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=1 -if [ -z "$is_public" ] -then +if [ -z "$is_public" ]; then is_public=$(ynh_app_setting_get --app=$app --key=public_site) ynh_app_setting_set --app=$app --key=is_public --value=$is_public ynh_app_setting_delete --app=$app --key=public_site @@ -59,20 +59,17 @@ if [ -z "$final_path" ]; then fi # If email doesn't exist, create it -if [ -z "$email" ] -then +if [ -z "$email" ]; then email=$(ynh_user_get_info --username=$admin --key=mail) fi # Make sure default language is set -if [ -z "$language" ] -then +if [ -z "$language" ]; then language=$(grep LANGUE "/var/www/$app/variables.php" | grep -Po "'.*?'" | cut -d"'" -f2) fi # Use path instead of path_url in settings.yml... -if [ -z "$path_url" ] -then +if [ -z "$path_url" ]; then path_url=$(ynh_app_setting_get --app=$app --key=path_url) ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_app_setting_delete --app=$app --key=path_url @@ -95,7 +92,7 @@ ynh_abort_if_errors #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 # Create a dedicated user (if not existing) ynh_system_user_create --username=$app --home_dir="$final_path" @@ -186,7 +183,7 @@ chown -R $app: "$final_path/"{tpl_c,admin/stdout.log} #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." +ynh_script_progression --message="Upgrading SSOwat configuration..." --weight=1 # Make app public if necessary if [ $is_public -eq 1 ] @@ -206,7 +203,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 950b302ea6f3e343e317f875ab3beb1b8e7a58fd Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:47:44 +0200 Subject: [PATCH 17/25] Create screenshots.jpg --- doc/screenshots/screenshots.jpg | Bin 0 -> 23500 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/screenshots/screenshots.jpg diff --git a/doc/screenshots/screenshots.jpg b/doc/screenshots/screenshots.jpg new file mode 100644 index 0000000000000000000000000000000000000000..089e0534f39937e4d5e779dd8850f50dda3fcd70 GIT binary patch literal 23500 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 V^|#8G)XJK_7Yz9CZ?OG)>_56%v26eV literal 0 HcmV?d00001 From eccdcd81d594c79db69bbb626ec55134fe5ce4f6 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:49:11 +0200 Subject: [PATCH 18/25] Update upgrade --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 014b85b..a85534a 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -65,7 +65,7 @@ fi # Make sure default language is set if [ -z "$language" ]; then - language=$(grep LANGUE "/var/www/$app/variables.php" | grep -Po "'.*?'" | cut -d"'" -f2) + language=en fi # Use path instead of path_url in settings.yml... From 713e1fd43fbe70ff5c5e1c3819eacb3325d94a4f Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Tue, 20 Jul 2021 16:49:19 +0000 Subject: [PATCH 19/25] Auto-update README --- README.md | 4 ++++ README_fr.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index 063006b..058b6d6 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,10 @@ Service for planning an appointment or making a decision quickly and easily **Demo:** https://framadate.org/ +## Screenshots + +![](./doc/screenshots/screenshots.jpg) + ## Disclaimers / important information ## Limitations diff --git a/README_fr.md b/README_fr.md index 0cdefa0..ea78b08 100644 --- a/README_fr.md +++ b/README_fr.md @@ -17,6 +17,10 @@ Service pour planifier un rendez-vous ou prendre une décision rapidement et fac **Démo :** https://framadate.org/ +## Captures d'écran + +![](./doc/screenshots/screenshots.jpg) + ## Avertissements / informations importantes ## Limitations From 0707aab8dc9ff1060ff335d8b4827ae9e6c1d108 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 18:51:21 +0200 Subject: [PATCH 20/25] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 3f34dfc..42ae370 100644 --- a/manifest.json +++ b/manifest.json @@ -61,7 +61,7 @@ "fr": "Choisissez la langue par défault d'OpenSondage", "de": "Wählen Sie bitte die Standardsprache für OpenSondage." }, - "choices": ["fr","en", "oc", "es", "de", "nl", "it", "br"], + "choices": ["br", "de", "en", "es", "fr", "it", "nl", "oc"], "default": "en" }, { From 5c68a033e8fa0bd72f2c4ffc493bc0fd98e71ee5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Tue, 20 Jul 2021 19:06:56 +0200 Subject: [PATCH 21/25] Update restore --- scripts/restore | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/restore b/scripts/restore index ad6e890..364a839 100644 --- a/scripts/restore +++ b/scripts/restore @@ -28,6 +28,7 @@ path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +timezone="$(cat /etc/timezone)" #================================================= # CHECK IF THE APP CAN BE RESTORED From 233425459adfda795d1d7a481270eb0f38a8ba86 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 22 Jul 2021 16:31:47 +0200 Subject: [PATCH 22/25] Update install --- scripts/install | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index d6e0857..a8d6742 100644 --- a/scripts/install +++ b/scripts/install @@ -146,7 +146,7 @@ ynh_script_progression --message="Configuring SSOwat..." --weight=1 # Make app public if necessary if [ $is_public -eq 1 ] then - ynh_app_setting_set --app=$app --key=skipped_uris --value="/" + ynh_permission_update --permission="main" --add="visitors" # Keep /admin private if [ "$path_url" == "/" ]; then @@ -158,6 +158,8 @@ then ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/admin/" fi +ynh_permission_create --permission="admin" --allowed="$admin" --url="/admin" + #================================================= # RELOAD NGINX #================================================= From 89bb6b5a398b80a07c1cfa4102035a13ed809c7a Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 22 Jul 2021 16:34:27 +0200 Subject: [PATCH 23/25] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index a8d6742..f162e97 100644 --- a/scripts/install +++ b/scripts/install @@ -141,7 +141,7 @@ chown -R $app: "$final_path/"{tpl_c,admin/stdout.log} #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." --weight=1 +ynh_script_progression --message="Configuring permissions..." --weight=1 # Make app public if necessary if [ $is_public -eq 1 ] From 2a0be9ade2891f122c08e4f069866cc607b20356 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 22 Jul 2021 16:37:19 +0200 Subject: [PATCH 24/25] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index f162e97..c584bc7 100644 --- a/scripts/install +++ b/scripts/install @@ -158,7 +158,7 @@ then ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/admin/" fi -ynh_permission_create --permission="admin" --allowed="$admin" --url="/admin" +ynh_permission_create --permission="admin" --allowed="$admin" --remove="all_users" --url="/admin" #================================================= # RELOAD NGINX From 643fed1d40c1a573352f902146cbbab1f3196f89 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Thu, 22 Jul 2021 16:39:02 +0200 Subject: [PATCH 25/25] Update install --- scripts/install | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/install b/scripts/install index c584bc7..f2ba5ba 100644 --- a/scripts/install +++ b/scripts/install @@ -158,8 +158,6 @@ then ynh_app_setting_set --app=$app --key=protected_regex --value="$domain_regex$path_url/admin/" fi -ynh_permission_create --permission="admin" --allowed="$admin" --remove="all_users" --url="/admin" - #================================================= # RELOAD NGINX #=================================================