From 67d95de3f61279e2f39692ed07e3575d852c0c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Thu, 6 May 2021 18:28:44 +0200 Subject: [PATCH] enh-Testing (#58) * Update check_process --- README.md | 14 ++++++----- check_process | 10 +++----- conf/baikal.yaml | 8 +++---- conf/nginx.conf | 1 + manifest.json | 18 +++----------- pull_request_template.md | 12 ++-------- scripts/install | 23 +++++------------- scripts/upgrade | 52 ++++++++++++++++------------------------ 8 files changed, 47 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index d46b2cb..1f62aff 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Baïkal for YunoHost [![Integration level](https://dash.yunohost.org/integration/baikal.svg)](https://dash.yunohost.org/appci/app/baikal) ![](https://ci-apps.yunohost.org/ci/badges/baikal.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/baikal.maintain.svg) -[![Install Baïkal with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=baikal) +[![Install Baïkal with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=baikal) > *This package allow you to install Baïkal 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 [Baïkal](http://baikal-server.com/) is a CalDAV and CardDAV server, based on @@ -14,6 +14,8 @@ sabre/dav, that includes an administration interface for easy management. ## Screenshots +![](http://www.baikal-server.com/res/img/screenshots/dashboard.png) + ## Demo * [YunoHost demo](https://demo.yunohost.org/baikal/admin/) @@ -25,7 +27,7 @@ sabre/dav, that includes an administration interface for easy management. ## Documentation * Official documentation: http://sabre.io/baikal/ - * YunoHost documentation: https://yunohost.org/#/app_baikal + * YunoHost documentation: https://yunohost.org/en/app_baikal ## YunoHost specific features @@ -37,14 +39,14 @@ In addition to Baïkal core features, the following are made available with this #### Supported architectures -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/baikal%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/baikal/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/baikal%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/baikal/) +* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/baikal.svg)](https://ci-apps.yunohost.org/ci/apps/baikal/) +* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/baikal.svg)](https://ci-apps-arm.yunohost.org/ci/apps/baikal/) ## Limitations ## Additional information -* There is a breaking change in the management of the administrator password when upgrading to 0.7.0. You must change the admin password! +* There is a breaking change in the management of the administrator password when upgrading to 0.7.0 You must change the admin password! * To be able to change the admin password, please visit the page: `https://you.domain.tld/yunohost/admin/#/apps/baikal/actions` and set a new password. ## Links diff --git a/check_process b/check_process index 904082b..db9882c 100644 --- a/check_process +++ b/check_process @@ -11,18 +11,14 @@ setup_private=0 setup_public=0 upgrade=1 - upgrade=1 from_commit=1aea3f3c4943c83135f7f287e6ac10c03df56323 + upgrade=1 from_commit=099f63413f120982232a77fd4ff5f62530d546ad backup_restore=1 multi_instance=0 - incorrect_path=1 - port_already_use=0 change_url=1 -;;; Levels - Level 5=auto ;;; Options Email= Notification=none ;;; Upgrade options - ; commit=1aea3f3c4943c83135f7f287e6ac10c03df56323 - name=Fix install + refactoring + ; commit=099f63413f120982232a77fd4ff5f62530d546ad + name=Testing (#57) manifest_arg=domain=DOMAIN&path=PATH&password=mysecret& diff --git a/conf/baikal.yaml b/conf/baikal.yaml index 47135ed..09fb85c 100644 --- a/conf/baikal.yaml +++ b/conf/baikal.yaml @@ -5,7 +5,7 @@ system: cal_enabled: true invite_from: 'noreply@localhost' dav_auth_type: 'LDAP-UserBind' - admin_passwordhash: __PASSWORDHASH__ + admin_passwordhash: __PASSWORD_HASH__ auth_realm: BaikalDAV base_uri: '__PATH__' # Auth Backend LDAP-UserBind; LDAP URI @@ -24,6 +24,6 @@ database: sqlite_file: "absolute/path/to/Specific/db/db.sqlite" mysql: true mysql_host: 'localhost' - mysql_dbname: '__DBNAME__' - mysql_username: '__DBUSER__' - mysql_password: '__DBPASS__' + mysql_dbname: '__DB_NAME__' + mysql_username: '__DB_NAME__' + mysql_password: '__DB_PWD__' diff --git a/conf/nginx.conf b/conf/nginx.conf index db0ab0d..518275c 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,6 +1,7 @@ location = /.well-known/carddav { return 301 https://$server_name__PATH__/card.php; } + location = /.well-known/caldav { return 301 https://$server_name__PATH__/cal.php; } diff --git a/manifest.json b/manifest.json index d7c2308..8d171b8 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Lightweight CalDAV and CardDAV server", "fr": "Serveur CalDAV et CardDAV léger" }, - "version": "0.7.1~ynh1", + "version": "0.7.1~ynh2", "url": "http://baikal-server.com/", "license": "GPL-3.0", "maintainer": { @@ -14,12 +14,12 @@ "email": "julien.malik@paraiso.me" }, "requirements": { - "yunohost": ">= 3.8.1" + "yunohost": ">= 4.1.7" }, "multi_instance": false, "services": [ "nginx", - "php7.0-fpm", + "php7.3-fpm", "mysql" ], "arguments": { @@ -27,29 +27,17 @@ { "name": "domain", "type": "domain", - "ask": { - "en": "Choose a domain for Baïkal", - "fr": "Choisissez un domaine pour Baïkal" - }, "example": "domain.org" }, { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for Baïkal", - "fr": "Choisissez un chemin pour Baïkal" - }, "example": "/baikal", "default": "/baikal" }, { "name": "password", "type": "password", - "ask": { - "en": "Set the password for the administration", - "fr": "Définissez le mot de passe pour l'administration" - }, "example": "mysecret" } ] diff --git a/pull_request_template.md b/pull_request_template.md index eb2a30e..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/baikal_ynh%20PR-NUM-/badge/icon)](https://ci-apps-hq.yunohost.org/jenkins/job/baikal_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 91021c1..ebbd114 100644 --- a/scripts/install +++ b/scripts/install @@ -116,25 +116,14 @@ ynh_mysql_connect_as --user=$db_name --password="$db_pwd" --database=$db_name \ #================================================= bk_conf="${final_path}/config/baikal.yaml" -cp ../conf/baikal.yaml "$bk_conf" - -ynh_replace_string --match_string="__TIMEZONE__" --replace_string="$(cat /etc/timezone)" --target_file="$bk_conf" -# Create admin password hash +timezone=$(cat /etc/timezone) password_hash=$(echo -n admin:BaikalDAV:$password | sha256sum | cut -d ' ' -f 1) -ynh_replace_string --match_string="__PASSWORDHASH__" --replace_string="${password_hash}" --target_file="$bk_conf" ynh_app_setting_set --app=$app --key=password_hash --value=$password_hash - -ynh_replace_string --match_string="__PATH__" --replace_string="${path_url%/}" --target_file="$bk_conf" -ynh_replace_string --match_string="__DBNAME__" --replace_string="$db_name" --target_file="$bk_conf" -ynh_replace_string --match_string="__DBUSER__" --replace_string="$db_name" --target_file="$bk_conf" -ynh_replace_string --match_string="__DBPASS__" --replace_string="$db_pwd" --target_file="$bk_conf" - +path=${path_url%/} deskey=$(ynh_string_random 24) ynh_app_setting_set --app=$app --key=encrypt_key --value="$deskey" -ynh_replace_string --match_string="__DESKEY__" --replace_string="$deskey" --target_file="$bk_conf" -# Store the config file checksum into the app settings -ynh_store_file_checksum --file="$bk_conf" +ynh_add_config --template="../conf/baikal.yaml" --destination="$bk_conf" # Disable installation touch "${final_path}/Specific/INSTALL_DISABLED" @@ -153,12 +142,12 @@ chmod 640 "$final_path/config/baikal.yaml" #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." --weight=2 +ynh_script_progression --message="Configuring permissions..." --weight=2 # Allow public access on / -ynh_permission_update --permission "main" --add "visitors" +ynh_permission_update --permission="main" --add="visitors" # But restrain on /admin -ynh_permission_create --permission "admin" --url "/admin" --allowed "all_users" +ynh_permission_create --permission="admin" --url="/admin" --allowed="all_users" #================================================= # RELOAD NGINX diff --git a/scripts/upgrade b/scripts/upgrade index d463884..21ab67d 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -20,6 +20,9 @@ domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) 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) +password_hash=$(ynh_app_setting_get --app=$app --key=password_hash) #================================================= # CHECK VERSION @@ -44,6 +47,18 @@ if [ -z "$db_name" ]; then ynh_app_setting_set --app=$app --key=db_name --value=$db_name fi +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + +if ! ynh_permission_exists --permission="admin"; then + # Create the required permissions + ynh_permission_create --permission="admin" --url="/admin" --allowed="all_users" +fi + #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= @@ -91,7 +106,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." # Create a dedicated NGINX config ynh_add_nginx_config -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # UPGRADE DEPENDENCIES @@ -129,29 +143,19 @@ then #================================================= ynh_script_progression --message="Upgrading Baïkal configuration..." --weight=2 - bk_conf="${final_path}/config/baikal.yaml" - ynh_backup_if_checksum_is_different --file="$bk_conf" - cp ../conf/baikal.yaml "$bk_conf" - - ynh_replace_string --match_string="__TIMEZONE__" --replace_string="$(cat /etc/timezone)" --target_file="$bk_conf" - password_hash=$(ynh_app_setting_get --app=$app --key=password_hash) - # If the password_hash is not in the app's config, recreate it from the password. if [ -z "$password_hash" ]; then password=$(ynh_app_setting_get --app=$app --key=password) password_hash=$(echo -n admin:BaikalDAV:$password | md5sum | cut -d ' ' -f 1) ynh_app_setting_set --app=$app --key=password_hash --value=$password_hash fi - ynh_replace_string --match_string="__PASSWORDHASH__" --replace_string="${password_hash}" --target_file="$bk_conf" - - ynh_replace_string --match_string="__PATH__" --replace_string="${path_url%/}" --target_file="$bk_conf" - ynh_replace_string --match_string="__DBNAME__" --replace_string="$db_name" --target_file="$bk_conf" - ynh_replace_string --match_string="__DBUSER__" --replace_string="$db_name" --target_file="$bk_conf" - db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) - ynh_replace_string --match_string="__DBPASS__" --replace_string="$db_pwd" --target_file="$bk_conf" + bk_conf="${final_path}/config/baikal.yaml" + timezone=$(cat /etc/timezone) + path=${path_url%/} deskey=$(ynh_app_setting_get --app=$app --key=encrypt_key) ynh_app_setting_set --app=$app --key=encrypt_key --value="$deskey" - ynh_replace_string --match_string="__DESKEY__" --replace_string="$deskey" --target_file="$bk_conf" + + ynh_add_config --template="../conf/baikal.yaml" --destination="$bk_conf" #================================================= # UPGRADE BAIKAL @@ -183,22 +187,6 @@ chown -R root: "$final_path" chown $app "$final_path/config/baikal.yaml" chmod 640 "$final_path/config/baikal.yaml" -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Configuring SSOwat..." --weight=2 - -# Upgrade from the legacy permissions system -protected_uris=$(ynh_app_setting_get --app="$app" --key=protected_uris) -if [ -n "${protected_uris}" ]; then - ynh_app_setting_delete --app="$app" --key=protected_uris - - # Allow public access on / - ynh_permission_update --permission "main" --add "visitors" - # But restrain on /admin - ynh_permission_create --permission "admin" --url "/admin" --allowed "all_users" -fi - #================================================= # RELOAD NGINX #=================================================