From 4397c5ee9fe3c76cf800612372210c3f9ffff892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:31:37 +0100 Subject: [PATCH 01/21] v2 --- conf/app.src | 3 -- conf/app_addons.src | 6 --- conf/nginx.conf | 2 +- conf/php-fpm.conf | 2 +- conf/poller-cron | 2 +- manifest.toml | 68 ++++++++++++++++++++++++++++++ scripts/_common.sh | 4 +- scripts/backup | 20 ++++----- scripts/install | 94 ++++++++++++++++++++--------------------- scripts/remove | 34 +++++++-------- scripts/restore | 54 ++++++++++++------------ scripts/upgrade | 100 ++++++++++++++++++++++---------------------- 12 files changed, 224 insertions(+), 165 deletions(-) delete mode 100644 conf/app.src delete mode 100644 conf/app_addons.src create mode 100644 manifest.toml diff --git a/conf/app.src b/conf/app.src deleted file mode 100644 index c396194..0000000 --- a/conf/app.src +++ /dev/null @@ -1,3 +0,0 @@ -SOURCE_URL=https://codeberg.org/zot-archive/zap/archive/078714b9dde991d02f8cce1183ce357d96405558.tar.gz -SOURCE_SUM=b188872d60ef30d50686a079da03cc4cdee451729a84bcf748649bbe8b8568e6 -SOURCE_FORMAT=tar.gz diff --git a/conf/app_addons.src b/conf/app_addons.src deleted file mode 100644 index 4a47767..0000000 --- a/conf/app_addons.src +++ /dev/null @@ -1,6 +0,0 @@ -SOURCE_URL=https://codeberg.org/zot-archive/zap-addons/archive/b2ddcc67735fb413f14efcc9c49780469b8b61cf.tar.gz -SOURCE_SUM=05595b3baa9d08001a8f01c7d069ebfb1b325621dd75e84ebc1257769e0f2f4a -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=tar.gz -SOURCE_IN_SUBDIR= -SOURCE_FILENAME= diff --git a/conf/nginx.conf b/conf/nginx.conf index 77fe6f9..8b32094 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,7 +1,7 @@ #sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; location __PATH__/ { - alias __FINALPATH__/; + alias __INSTALL_DIR__/; if (!-e $request_filename) { rewrite ^(.*)$ /index.php?req=$1; diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf index ab1a471..13a53b0 100644 --- a/conf/php-fpm.conf +++ b/conf/php-fpm.conf @@ -358,7 +358,7 @@ request_terminate_timeout = 1d ; Chdir to this directory at the start. ; Note: relative path can be used. ; Default Value: current directory or / when chroot -chdir = __FINALPATH__ +chdir = __INSTALL_DIR__ ; Redirect worker stdout and stderr into main error log. If not set, stdout and ; stderr will be redirected to /dev/null according to FastCGI specs. diff --git a/conf/poller-cron b/conf/poller-cron index f991757..b4c0026 100644 --- a/conf/poller-cron +++ b/conf/poller-cron @@ -1,2 +1,2 @@ # Run poller periodically to update Hubzilla -*/10 * * * * __APP__ cd __FINALPATH__; /usr/bin/php__PHPVERSION__ Zotlabs/Daemon/Master.php Cron > /dev/null 2>&1 \ No newline at end of file +*/10 * * * * __APP__ cd __INSTALL_DIR__; /usr/bin/php__PHPVERSION__ Zotlabs/Daemon/Master.php Cron > /dev/null 2>&1 \ No newline at end of file diff --git a/manifest.toml b/manifest.toml new file mode 100644 index 0000000..f51b735 --- /dev/null +++ b/manifest.toml @@ -0,0 +1,68 @@ +packaging_format = 2 + +id = "zap" +name = "Zap" +description.en = "Ethical fediverse server alternative" +description.fr = "serveur fedverse éthique" + +version = "21.11.28~ynh2" + +maintainers = [] + +[upstream] +license = "MIT" +code = "https://codeberg.org/zot-archive/zap" +website = "https://codeberg.org/zot-archive/zap" +cpe = "???" # FIXME: optional but recommended if relevant, this is meant to contain the Common Platform Enumeration, which is sort of a standard id for applications defined by the NIST. In particular, Yunohost may use this is in the future to easily track CVE (=security reports) related to apps. The CPE may be obtained by searching here: https://nvd.nist.gov/products/cpe/search. For example, for Nextcloud, the CPE is 'cpe:2.3:a:nextcloud:nextcloud' (no need to include the version number) +fund = "???" # FIXME: optional but recommended (or remove if irrelevant / not applicable). This is meant to be an URL where people can financially support this app, especially when its development is based on volunteers and/or financed by its community. YunoHost may later advertise it in the webadmin. + +[integration] +yunohost = ">= 11.1.21" +architectures = "all" # FIXME: can be replaced by a list of supported archs using the dpkg --print-architecture nomenclature (amd64/i386/armhf/arm64), for example: ["amd64", "i386"] +multi_instance = true +ldap = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "sso" key : the "ldap" key corresponds to wether or not a user *can* login on the app using its YunoHost credentials. +sso = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "ldap" key : the "sso" key corresponds to wether or not a user is *automatically logged-in* on the app when logged-in on the YunoHost portal. +disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ... +ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... +ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... + +[install] + [install.domain] + # this is a generic question - ask strings are automatically handled by Yunohost's core + help.en = "ZAP must run in the root of this domain. It means no other app can be accessed/run from this domain. We advise to use a dedicated subdomain such as zap.domain.tld" + help.fr = "ZAP doit être installé à la racine du domaine. Cela implique qu'aucune autre app ne pourra être installée ou accessible sur ce domain. Nous conseillons un sous-domaine dédié par exemple zap.domain.tld." + type = "domain" + full_domain = true + + [install.admin] + # this is a generic question - ask strings are automatically handled by Yunohost's core + type = "user" + + [install.database] + ask.en = "Choose the database to be used for the Zap [mysql:1,postgresql:2]" + ask.fr = "Choisissez la database de l'Zap [mysql:1,postgresql:2]" + type = "select" + choices = ["1", "2"] + default = "1" + +[resources] + [resources.sources] + [resources.sources.main] + url = "https://codeberg.org/zot-archive/zap/archive/078714b9dde991d02f8cce1183ce357d96405558.tar.gz" + sha256 = "b188872d60ef30d50686a079da03cc4cdee451729a84bcf748649bbe8b8568e6" + + [resources.sources.app_addons] + url = "https://codeberg.org/zot-archive/zap-addons/archive/b2ddcc67735fb413f14efcc9c49780469b8b61cf.tar.gz" + sha256 = "05595b3baa9d08001a8f01c7d069ebfb1b325621dd75e84ebc1257769e0f2f4a" + in_subdir = false + + + [resources.system_user] + + [resources.install_dir] + + [resources.permissions] + main.url = "/" + + [resources.database] + type = "mysql" diff --git a/scripts/_common.sh b/scripts/_common.sh index c630efa..601526e 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -5,9 +5,9 @@ #================================================= # dependencies used by the app -YNH_PHP_VERSION="7.4" +#REMOVEME? YNH_PHP_VERSION="7.4" -pkg_dependencies="postgresql postgresql-contrib php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-cli php${YNH_PHP_VERSION}-imagick php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-pgsql php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-json php${YNH_PHP_VERSION}-gd" +#REMOVEME? pkg_dependencies="postgresql postgresql-contrib php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-cli php${YNH_PHP_VERSION}-imagick php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-pgsql php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-json php${YNH_PHP_VERSION}-gd" #================================================= # EXPERIMENTAL HELPERS diff --git a/scripts/backup b/scripts/backup index d39ad02..d584663 100755 --- a/scripts/backup +++ b/scripts/backup @@ -13,24 +13,24 @@ source /usr/share/yunohost/helpers # MANAGE SCRIPT FAILURE #================================================= -ynh_clean_setup () { +#REMOVEME? ynh_clean_setup () { true } # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= -ynh_print_info --message="Loading installation settings..." +#REMOVEME? ynh_print_info --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -domain=$(ynh_app_setting_get --app=$app --key=domain) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) -database=$(ynh_app_setting_get --app=$app --key=database) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -41,7 +41,7 @@ ynh_print_info --message="Declaring files to be backed up..." # BACKUP THE APP MAIN DIR #================================================= -ynh_backup --src_path="$final_path" +ynh_backup --src_path="$install_dir" #================================================= # BACKUP THE NGINX CONFIGURATION diff --git a/scripts/install b/scripts/install index 68b0f3c..0c5a616 100755 --- a/scripts/install +++ b/scripts/install @@ -14,42 +14,42 @@ source /usr/share/yunohost/helpers #================================================= # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= -domain=$YNH_APP_ARG_DOMAIN -path_url="/" -admin=$YNH_APP_ARG_ADMIN +#REMOVEME? domain=$YNH_APP_ARG_DOMAIN +path="/" +#REMOVEME? admin=$YNH_APP_ARG_ADMIN email=$(ynh_user_get_info --username=$admin --key=mail) upload="256M" database="1" random_string=$(ynh_string_random --length=48) -database=`expr $YNH_APP_ARG_DATABASE` +#REMOVEME? database=`expr $YNH_APP_ARG_DATABASE` -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= -ynh_script_progression --message="Validating installation parameters..." +#REMOVEME? ynh_script_progression --message="Validating installation parameters..." -final_path=/var/www/$app -test ! -e "$final_path" || ynh_die --message="This path already contains a folder" +#REMOVEME? install_dir=/var/www/$app +#REMOVEME? test ! -e "$install_dir" || ynh_die --message="This path already contains a folder" # Register (book) web path -ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url +#REMOVEME? ynh_webpath_register --app=$app --domain=$domain --path=$path #================================================= # STORE SETTINGS FROM MANIFEST #================================================= -ynh_print_info "Storing installation settings..." +#REMOVEME? ynh_print_info "Storing installation settings..." -ynh_app_setting_set --app=$app --key=domain --value=$domain -ynh_app_setting_set --app=$app --key=path --value=$path_url -ynh_app_setting_set --app=$app --key=admin --value=$admin +#REMOVEME? ynh_app_setting_set --app=$app --key=domain --value=$domain +#REMOVEME? ynh_app_setting_set --app=$app --key=path --value=$path +#REMOVEME? ynh_app_setting_set --app=$app --key=admin --value=$admin ynh_app_setting_set --app=$app --key=email --value=$email ynh_app_setting_set --app=$app --key=upload --value=$upload ynh_app_setting_set --app=$app --key=database --value=$database @@ -63,16 +63,16 @@ ynh_app_setting_set --app=$app --key=random_string --value=$random_string ynh_print_info "Installing dependencies..." if [ $database -eq 2 ]; then - ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_install_app_dependencies $pkg_dependencies fi #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Configuring system user..." +#REMOVEME? ynh_script_progression --message="Configuring system user..." # Create a system user -ynh_system_user_create --username=$app --home_dir="$final_path" +#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -81,19 +81,19 @@ ynh_system_user_create --username=$app --home_dir="$final_path" # 1 - Zap ynh_script_progression --message="Setting up Zap source files..." -ynh_app_setting_set --app=$app --key=final_path --value=$final_path +#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir # Download, check integrity, uncompress and patch the source from app.src -git clone https://codeberg.org/zot-archive/zap.git "$final_path" --quiet +git clone https://codeberg.org/zot-archive/zap.git "$install_dir" --quiet # 2 - Zap Addons # Make addon Directory and unpack the addons to this directory ynh_script_progression --message="Setting up Zap addons source files..." -pushd "$final_path" +pushd "$install_dir" mkdir -p extend/addon/zaddons mkdir addon - git clone https://codeberg.org/zot-archive/zap-addons.git $final_path/extend/addon/zaddons --quiet + git clone https://codeberg.org/zot-archive/zap-addons.git $install_dir/extend/addon/zaddons --quiet filelist=(`ls extend/addon/zaddons`) cd addon for a in "${filelist[@]}" ; do @@ -123,46 +123,46 @@ popd # 3 - Some extra folders ynh_script_progression --message="Creating smarty3 folder for personal data..." -mkdir -p "${final_path}/store" -mkdir -p "${final_path}/cache/smarty3" -chmod -R 775 $final_path/store $final_path/cache +mkdir -p "${install_dir}/store" +mkdir -p "${install_dir}/cache/smarty3" +chmod -R 775 $install_dir/store $install_dir/cache # Copy the template install/htconfig.sample.php to .htconfig.php -config="$final_path/.htconfig.php" +config="$install_dir/.htconfig.php" ynh_script_progression --message="Moving .htconfig.php to root of Zap ..." -cp $final_path/install/htconfig.sample.php $config -config="$final_path/.htconfig.php" +cp $install_dir/install/htconfig.sample.php $config +config="$install_dir/.htconfig.php" # Create php.log inside for logs ynh_print_info "Create php.log for the debuging..." -touch "$final_path/php.log" +touch "$install_dir/php.log" -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R $app:www-data "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:www-data "$install_dir" #================================================= # CREATE A DATABASE #================================================= if [ $database -eq 1 ]; then - ynh_script_progression --message="Creating a MySQL database..." +#REMOVEME? 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_user --db_name=$db_name +#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name +#REMOVEME? ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name ynh_script_progression --message="Importing database..." - ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $final_path/install/schema_mysql.sql + ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_mysql.sql elif [ $database -eq 2 ]; then # Create postgresql database ynh_script_progression --message="Creating a postgresql database..." ynh_replace_string --match_string="db_type = 0;" --replace_string="db_type = 1;" --target_file="$config" db_name=$(ynh_sanitize_dbid --db_name=$app) db_user=$app - ynh_psql_test_if_first_run - ynh_psql_setup_db --db_user=$db_user --db_name=$db_name - ynh_app_setting_set --app=$app --key=db_name --value=$db_name +#REMOVEME? ynh_psql_test_if_first_run +#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name +#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name ynh_script_progression --message="Importing database..." - ynh_psql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $final_path/install/schema_postgres.sql + ynh_psql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_postgres.sql else ynh_die --message="Some problem occured in creating the database, contact maintainer" fi @@ -171,7 +171,7 @@ fi # MODIFY A CONFIG FILE #================================================= -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) ynh_replace_string --match_string="your.mysqlhost.com" --replace_string="localhost" --target_file="$config" ynh_replace_string --match_string= "mysqlpassword" --replace_string="$db_pwd" --target_file="$config" ynh_replace_string --match_string="mysqlusername" --replace_string="$db_name" --target_file="$config" @@ -188,7 +188,7 @@ sed -i "s/\['php_path'\] = 'php';/\['php_path'\] = 'php$phpversion';/g" "$config # addon LDAP config ynh_script_progression --message="Push Ldap configuration to .htconfig.php..." -cat ../conf/ldap_conf.php >> $final_path/.htconfig.php +cat ../conf/ldap_conf.php >> $install_dir/.htconfig.php #================================================= # NGINX CONFIGURATION @@ -221,28 +221,28 @@ chmod 644 "/etc/cron.d/$app" ynh_script_progression --message="Configuring log rotation..." # Use logrotate to manage application logfile(s) -ynh_use_logrotate "$final_path/php.log" +ynh_use_logrotate "$install_dir/php.log" #================================================= # SETUP FAIL2BAN #================================================= ynh_script_progression --message="Add Fail2Ban..." -ynh_add_fail2ban_config --logpath="$final_path/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" +ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring permissions..." +#REMOVEME? ynh_script_progression --message="Configuring permissions..." -ynh_permission_update --permission="main" --add="visitors" +#REMOVEME? ynh_permission_update --permission="main" --add="visitors" #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload +#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload #================================================= # END OF SCRIPT diff --git a/scripts/remove b/scripts/remove index 8655412..250858a 100755 --- a/scripts/remove +++ b/scripts/remove @@ -12,44 +12,44 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +#REMOVEME? ynh_script_progression --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user="$db_name" -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -database=$(ynh_app_setting_get --app=$app --key=database) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? db_user="$db_name" +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) #================================================= # REMOVE THE DATABASE #================================================= if [ $database -eq 1 ]; then - ynh_script_progression --message="Removing MySQL database..." - ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name +#REMOVEME? ynh_script_progression --message="Removing MySQL database..." +#REMOVEME? ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name elif [ $database -eq 2 ]; then # Removing postgresql database - ynh_script_progression --message="Removing postgreSQL database..." - ynh_psql_remove_db --db_user=$db_user --db_name=$db_name +#REMOVEME? ynh_script_progression --message="Removing postgreSQL database..." +#REMOVEME? ynh_psql_remove_db --db_user=$db_user --db_name=$db_name fi #================================================= # REMOVE DEPENDENCIES #================================================= -ynh_script_progression --message="Removing dependencies" +#REMOVEME? ynh_script_progression --message="Removing dependencies" # Remove metapackage and its dependencies -ynh_remove_app_dependencies +#REMOVEME? ynh_remove_app_dependencies #================================================= # REMOVE APP MAIN DIR #================================================= -ynh_script_progression --message="Removing app main directory..." +#REMOVEME? ynh_script_progression --message="Removing app main directory..." # Remove the app directory securely -ynh_secure_remove --file="$final_path" +#REMOVEME? ynh_secure_remove --file="$install_dir" #================================================= # REMOVE NGINX CONFIGURATION @@ -94,10 +94,10 @@ ynh_remove_fail2ban_config #================================================= # REMOVE DEDICATED USER #================================================= -ynh_script_progression --message="Removing the dedicated system user..." +#REMOVEME? ynh_script_progression --message="Removing the dedicated system user..." # Delete a system user -ynh_system_user_delete --username=$app +#REMOVEME? ynh_system_user_delete --username=$app #================================================= # END OF SCRIPT diff --git a/scripts/restore b/scripts/restore index 2c9b96b..3a1b374 100755 --- a/scripts/restore +++ b/scripts/restore @@ -15,30 +15,30 @@ source /usr/share/yunohost/helpers #================================================= # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= ynh_script_progression --message="Loading settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -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) -database=$(ynh_app_setting_get --app=$app --key=database) -db_user=$db_name -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) +#REMOVEME? admin=$(ynh_app_setting_get --app=$app --key=admin) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) +#REMOVEME? db_user=$db_name +#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= -ynh_script_progression --message="Validating restoration parameters..." +#REMOVEME? ynh_script_progression --message="Validating restoration parameters..." -test ! -d $final_path || ynh_die --message="There is already a directory: $final_path " +#REMOVEME? test ! -d $install_dir || ynh_die --message="There is already a directory: $install_dir " #================================================= # STANDARD RESTORATION STEPS @@ -54,38 +54,38 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_print_info "Recreating the dedicated system user..." # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" +#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # RESTORE THE APP MAIN DIR #================================================= ynh_script_progression --message="Restoring the app main directory..." -ynh_restore_file --origin_path="$final_path" +ynh_restore_file --origin_path="$install_dir" -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R $app:www-data "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:www-data "$install_dir" #================================================= # RESTORE THE MYSQL DATABASE #================================================= -ynh_script_progression --message="Restoring the MySQL database..." +#REMOVEME? ynh_script_progression --message="Restoring the MySQL database..." if [ $database -eq 1 ]; then - ynh_script_progression --message="Restoring MySQL database..." - 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 +#REMOVEME? ynh_script_progression --message="Restoring MySQL database..." +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) +#REMOVEME? 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 elif [ $database -eq 2 ]; then # Removing postgresql database - ynh_script_progression --message="Reinstalling dependencies..." +#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." # Define and install dependencies - ynh_install_app_dependencies $pkg_dependencies - ynh_script_progression --message="Restoring the PostgreSQL database..." - db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) - ynh_psql_test_if_first_run - ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +#REMOVEME? ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_script_progression --message="Restoring the PostgreSQL database..." +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +#REMOVEME? ynh_psql_test_if_first_run +#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_psql_execute_file_as_root --file="./db.sql" --database="$db_name" fi diff --git a/scripts/upgrade b/scripts/upgrade index 3e42f49..4d3e918 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -12,18 +12,18 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -ynh_script_progression --message="Loading installation settings..." +#REMOVEME? ynh_script_progression --message="Loading installation settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -path_url=$(ynh_app_setting_get --app=$app --key=path) -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -upload=$(ynh_app_setting_get --app=$app --key=upload) -version=$(grep STD_VERSION $final_path/boot.php | cut -c 38- | rev | cut -c 5- | rev) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? upload=$(ynh_app_setting_get --app=$app --key=upload) +version=$(grep STD_VERSION $install_dir/boot.php | cut -c 38- | rev | cut -c 5- | rev) last_update=$(grep update_time: /etc/yunohost/apps/$app/settings.yml | cut -c 14-) -database=$(ynh_app_setting_get --app=$app --key=database) -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) +#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # ENSURE DOWNWARD COMPATIBILITY @@ -32,37 +32,37 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) # If db_name doesn't exist, create it if [ -z "$db_name" ]; then db_name=$(ynh_sanitize_dbid --db_name=$app) - ynh_app_setting_set --app=$app --key=db_name --value=$db_name +#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." +#REMOVEME? ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." # Backup the current version of the app -ynh_backup_before_upgrade -ynh_clean_setup () { +#REMOVEME? ynh_backup_before_upgrade +#REMOVEME? ynh_clean_setup () { # restore it if the upgrade fails - ynh_restore_upgradebackup +#REMOVEME? ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script -ynh_abort_if_errors +#REMOVEME? ynh_abort_if_errors #================================================= # Migrate legacy permissions to new system #================================================= ynh_script_progression --message="Ensuring downward compatibility..." -# If final_path doesn't exist, create it -if [ -z "$final_path" ]; then - final_path=/var/www/$app - ynh_app_setting_set --app=$app --key=final_path --value=$final_path +# If install_dir doesn't exist, create it +if [ -z "$install_dir" ]; then +#REMOVEME? install_dir=/var/www/$app +#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir fi -if ynh_legacy_permissions_exists +#REMOVEME? if ynh_legacy_permissions_exists then - ynh_legacy_permissions_delete_all +#REMOVEME? ynh_legacy_permissions_delete_all ynh_app_setting_delete --app=$app --key=is_public fi @@ -70,10 +70,10 @@ fi #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." +#REMOVEME? 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" +#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -81,10 +81,10 @@ ynh_system_user_create --username=$app --home_dir="$final_path" ynh_script_progression --message="Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src -# ynh_setup_source --dest_dir="$final_path" +# ynh_setup_source --dest_dir="$install_dir" -if [ `cd $final_path && git rev-parse --is-inside-work-tree` ]; then - pushd "$final_path" +if [ `cd $install_dir && git rev-parse --is-inside-work-tree` ]; then + pushd "$install_dir" git pull --quiet cd extend/addon/zaddons git pull --quiet @@ -117,36 +117,36 @@ if [ `cd $final_path && git rev-parse --is-inside-work-tree` ]; then fi; done popd - chmod -R 775 $final_path/store + chmod -R 775 $install_dir/store else # Create a temporary directory tmpdir="$(ynh_smart_mktemp 6000)" # Backup the config file in the temp dir - cp -a "$final_path/.htconfig.php" "$tmpdir/.htconfig.php" - cp -a "$final_path/store" "$tmpdir/store" - cp -a "$final_path/php.log" "$tmpdir/php.log" - cp -a "$final_path/cache" "$tmpdir/cache" + cp -a "$install_dir/.htconfig.php" "$tmpdir/.htconfig.php" + cp -a "$install_dir/store" "$tmpdir/store" + cp -a "$install_dir/php.log" "$tmpdir/php.log" + cp -a "$install_dir/cache" "$tmpdir/cache" # Remove the app directory securely - ynh_secure_remove "$final_path" +#REMOVEME? ynh_secure_remove "$install_dir" # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$final_path" + ynh_setup_source --dest_dir="$install_dir" - cp -a "$tmpdir/cache" "${final_path}" - cp -a "$tmpdir/store" "${final_path}" - cp -a "$tmpdir/.htconfig.php" "${final_path}" - cp -a "$tmpdir/php.log" "${final_path}" + cp -a "$tmpdir/cache" "${install_dir}" + cp -a "$tmpdir/store" "${install_dir}" + cp -a "$tmpdir/.htconfig.php" "${install_dir}" + cp -a "$tmpdir/php.log" "${install_dir}" ynh_secure_remove --file="$tmpdir" - chmod -R 775 $final_path/store - mkdir $final_path/addon - ynh_setup_source --dest_dir="$final_path/addon" --source_id="app_addons" + chmod -R 775 $install_dir/store + mkdir $install_dir/addon + ynh_setup_source --dest_dir="$install_dir/addon" --source_id="app_addons" fi -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R $app:www-data "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:www-data "$install_dir" #================================================= # NGINX CONFIGURATION @@ -166,9 +166,9 @@ ynh_add_fpm_config ### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. ### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it. -ynh_backup_if_checksum_is_different --file="$final_path/.htconfig.php" +ynh_backup_if_checksum_is_different --file="$install_dir/.htconfig.php" # Recalculate and store the checksum of the file for the next upgrade. -ynh_store_file_checksum --file="$final_path/.htconfig.php" +ynh_store_file_checksum --file="$install_dir/.htconfig.php" #================================================= # SETUP LOGROTATE @@ -183,7 +183,7 @@ ynh_use_logrotate --non-append #================================================= ynh_script_progression --message="Re-configure Fail2Ban..." -ynh_add_fail2ban_config --logpath="$final_path/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" +ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" #================================================= # UPGRADE CRON @@ -197,18 +197,18 @@ chmod 644 "/etc/cron.d/$app" #================================================= # UPGRADE DEPENDENCIES #================================================= -ynh_script_progression --message="Upgrading dependencies..." +#REMOVEME? ynh_script_progression --message="Upgrading dependencies..." if [ $database -eq 2 ]; then - ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_install_app_dependencies $pkg_dependencies fi #================================================= # RELOAD NGINX #================================================= -ynh_script_progression --message="Reloading NGINX web server..." +#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." -ynh_systemd_action --service_name=nginx --action=reload +#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload #================================================= # END OF SCRIPT From 0686bb70a408b47e91ea158b6689a9ce75eaa72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:34:46 +0100 Subject: [PATCH 02/21] fix --- conf/extra_php-fpm.conf | 4 + conf/php-fpm.conf | 430 -------------------------------- doc/{DISCLAIMER.md => ADMIN.md} | 0 manifest.json | 55 ---- manifest.toml | 24 +- 5 files changed, 17 insertions(+), 496 deletions(-) create mode 100644 conf/extra_php-fpm.conf delete mode 100644 conf/php-fpm.conf rename doc/{DISCLAIMER.md => ADMIN.md} (100%) delete mode 100644 manifest.json diff --git a/conf/extra_php-fpm.conf b/conf/extra_php-fpm.conf new file mode 100644 index 0000000..700c37c --- /dev/null +++ b/conf/extra_php-fpm.conf @@ -0,0 +1,4 @@ +; Additional php.ini defines, specific to this pool of workers. + +php_admin_value[upload_max_filesize] = 50M +php_admin_value[post_max_size] = 50M diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf deleted file mode 100644 index 13a53b0..0000000 --- a/conf/php-fpm.conf +++ /dev/null @@ -1,430 +0,0 @@ -; Start a new pool named 'www'. -; the variable $pool can be used in any directive and will be replaced by the -; pool name ('www' here) -[__NAMETOCHANGE__] - -; Per pool prefix -; It only applies on the following directives: -; - 'access.log' -; - 'slowlog' -; - 'listen' (unixsocket) -; - 'chroot' -; - 'chdir' -; - 'php_values' -; - 'php_admin_values' -; When not set, the global prefix (or /usr) applies instead. -; Note: This directive can also be relative to the global prefix. -; Default Value: none -;prefix = /path/to/pools/$pool - -; Unix user/group of processes -; Note: The user is mandatory. If the group is not set, the default user's group -; will be used. -user = __USER__ -group = __USER__ - -; The address on which to accept FastCGI requests. -; Valid syntaxes are: -; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on -; a specific port; -; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on -; a specific port; -; 'port' - to listen on a TCP socket to all addresses -; (IPv6 and IPv4-mapped) on a specific port; -; '/path/to/unix/socket' - to listen on a unix socket. -; Note: This value is mandatory. -listen = /var/run/php/php__PHPVERSION__-fpm-__NAMETOCHANGE__.sock - -; Set listen(2) backlog. -; Default Value: 511 (-1 on FreeBSD and OpenBSD) -;listen.backlog = 511 - -; Set permissions for unix socket, if one is used. In Linux, read/write -; permissions must be set in order to allow connections from a web server. Many -; BSD-derived systems allow connections regardless of permissions. -; Default Values: user and group are set as the running user -; mode is set to 0660 -listen.owner = www-data -listen.group = www-data -;listen.mode = 0660 -; When POSIX Access Control Lists are supported you can set them using -; these options, value is a comma separated list of user/group names. -; When set, listen.owner and listen.group are ignored -;listen.acl_users = -;listen.acl_groups = - -; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. -; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original -; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address -; must be separated by a comma. If this value is left blank, connections will be -; accepted from any ip address. -; Default Value: any -;listen.allowed_clients = 127.0.0.1 - -; Specify the nice(2) priority to apply to the pool processes (only if set) -; The value can vary from -19 (highest priority) to 20 (lower priority) -; Note: - It will only work if the FPM master process is launched as root -; - The pool processes will inherit the master process priority -; unless it specified otherwise -; Default Value: no set -; process.priority = -19 - -; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user -; or group is differrent than the master process user. It allows to create process -; core dump and ptrace the process for the pool user. -; Default Value: no -; process.dumpable = yes - -; Choose how the process manager will control the number of child processes. -; Possible Values: -; static - a fixed number (pm.max_children) of child processes; -; dynamic - the number of child processes are set dynamically based on the -; following directives. With this process management, there will be -; always at least 1 children. -; pm.max_children - the maximum number of children that can -; be alive at the same time. -; pm.start_servers - the number of children created on startup. -; pm.min_spare_servers - the minimum number of children in 'idle' -; state (waiting to process). If the number -; of 'idle' processes is less than this -; number then some children will be created. -; pm.max_spare_servers - the maximum number of children in 'idle' -; state (waiting to process). If the number -; of 'idle' processes is greater than this -; number then some children will be killed. -; ondemand - no children are created at startup. Children will be forked when -; new requests will connect. The following parameter are used: -; pm.max_children - the maximum number of children that -; can be alive at the same time. -; pm.process_idle_timeout - The number of seconds after which -; an idle process will be killed. -; Note: This value is mandatory. -pm = dynamic - -; The number of child processes to be created when pm is set to 'static' and the -; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. -; This value sets the limit on the number of simultaneous requests that will be -; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. -; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP -; CGI. The below defaults are based on a server without much resources. Don't -; forget to tweak pm.* to fit your needs. -; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' -; Note: This value is mandatory. -pm.max_children = 5 - -; The number of child processes created on startup. -; Note: Used only when pm is set to 'dynamic' -; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 -pm.start_servers = 2 - -; The desired minimum number of idle server processes. -; Note: Used only when pm is set to 'dynamic' -; Note: Mandatory when pm is set to 'dynamic' -pm.min_spare_servers = 1 - -; The desired maximum number of idle server processes. -; Note: Used only when pm is set to 'dynamic' -; Note: Mandatory when pm is set to 'dynamic' -pm.max_spare_servers = 3 - -; The number of seconds after which an idle process will be killed. -; Note: Used only when pm is set to 'ondemand' -; Default Value: 10s -;pm.process_idle_timeout = 10s; - -; The number of requests each child process should execute before respawning. -; This can be useful to work around memory leaks in 3rd party libraries. For -; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. -; Default Value: 0 -;pm.max_requests = 500 - -; The URI to view the FPM status page. If this value is not set, no URI will be -; recognized as a status page. It shows the following informations: -; pool - the name of the pool; -; process manager - static, dynamic or ondemand; -; start time - the date and time FPM has started; -; start since - number of seconds since FPM has started; -; accepted conn - the number of request accepted by the pool; -; listen queue - the number of request in the queue of pending -; connections (see backlog in listen(2)); -; max listen queue - the maximum number of requests in the queue -; of pending connections since FPM has started; -; listen queue len - the size of the socket queue of pending connections; -; idle processes - the number of idle processes; -; active processes - the number of active processes; -; total processes - the number of idle + active processes; -; max active processes - the maximum number of active processes since FPM -; has started; -; max children reached - number of times, the process limit has been reached, -; when pm tries to start more children (works only for -; pm 'dynamic' and 'ondemand'); -; Value are updated in real time. -; Example output: -; pool: www -; process manager: static -; start time: 01/Jul/2011:17:53:49 +0200 -; start since: 62636 -; accepted conn: 190460 -; listen queue: 0 -; max listen queue: 1 -; listen queue len: 42 -; idle processes: 4 -; active processes: 11 -; total processes: 15 -; max active processes: 12 -; max children reached: 0 -; -; By default the status page output is formatted as text/plain. Passing either -; 'html', 'xml' or 'json' in the query string will return the corresponding -; output syntax. Example: -; http://www.foo.bar/status -; http://www.foo.bar/status?json -; http://www.foo.bar/status?html -; http://www.foo.bar/status?xml -; -; By default the status page only outputs short status. Passing 'full' in the -; query string will also return status for each pool process. -; Example: -; http://www.foo.bar/status?full -; http://www.foo.bar/status?json&full -; http://www.foo.bar/status?html&full -; http://www.foo.bar/status?xml&full -; The Full status returns for each process: -; pid - the PID of the process; -; state - the state of the process (Idle, Running, ...); -; start time - the date and time the process has started; -; start since - the number of seconds since the process has started; -; requests - the number of requests the process has served; -; request duration - the duration in µs of the requests; -; request method - the request method (GET, POST, ...); -; request URI - the request URI with the query string; -; content length - the content length of the request (only with POST); -; user - the user (PHP_AUTH_USER) (or '-' if not set); -; script - the main script called (or '-' if not set); -; last request cpu - the %cpu the last request consumed -; it's always 0 if the process is not in Idle state -; because CPU calculation is done when the request -; processing has terminated; -; last request memory - the max amount of memory the last request consumed -; it's always 0 if the process is not in Idle state -; because memory calculation is done when the request -; processing has terminated; -; If the process is in Idle state, then informations are related to the -; last request the process has served. Otherwise informations are related to -; the current request being served. -; Example output: -; ************************ -; pid: 31330 -; state: Running -; start time: 01/Jul/2011:17:53:49 +0200 -; start since: 63087 -; requests: 12808 -; request duration: 1250261 -; request method: GET -; request URI: /test_mem.php?N=10000 -; content length: 0 -; user: - -; script: /home/fat/web/docs/php/test_mem.php -; last request cpu: 0.00 -; last request memory: 0 -; -; Note: There is a real-time FPM status monitoring sample web page available -; It's available in: /usr/share/php/7.0/fpm/status.html -; -; Note: The value must start with a leading slash (/). The value can be -; anything, but it may not be a good idea to use the .php extension or it -; may conflict with a real PHP file. -; Default Value: not set -;pm.status_path = /status - -; The ping URI to call the monitoring page of FPM. If this value is not set, no -; URI will be recognized as a ping page. This could be used to test from outside -; that FPM is alive and responding, or to -; - create a graph of FPM availability (rrd or such); -; - remove a server from a group if it is not responding (load balancing); -; - trigger alerts for the operating team (24/7). -; Note: The value must start with a leading slash (/). The value can be -; anything, but it may not be a good idea to use the .php extension or it -; may conflict with a real PHP file. -; Default Value: not set -;ping.path = /ping - -; This directive may be used to customize the response of a ping request. The -; response is formatted as text/plain with a 200 response code. -; Default Value: pong -;ping.response = pong - -; The access log file -; Default: not set -;access.log = log/$pool.access.log - -; The access log format. -; The following syntax is allowed -; %%: the '%' character -; %C: %CPU used by the request -; it can accept the following format: -; - %{user}C for user CPU only -; - %{system}C for system CPU only -; - %{total}C for user + system CPU (default) -; %d: time taken to serve the request -; it can accept the following format: -; - %{seconds}d (default) -; - %{miliseconds}d -; - %{mili}d -; - %{microseconds}d -; - %{micro}d -; %e: an environment variable (same as $_ENV or $_SERVER) -; it must be associated with embraces to specify the name of the env -; variable. Some exemples: -; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e -; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e -; %f: script filename -; %l: content-length of the request (for POST request only) -; %m: request method -; %M: peak of memory allocated by PHP -; it can accept the following format: -; - %{bytes}M (default) -; - %{kilobytes}M -; - %{kilo}M -; - %{megabytes}M -; - %{mega}M -; %n: pool name -; %o: output header -; it must be associated with embraces to specify the name of the header: -; - %{Content-Type}o -; - %{X-Powered-By}o -; - %{Transfert-Encoding}o -; - .... -; %p: PID of the child that serviced the request -; %P: PID of the parent of the child that serviced the request -; %q: the query string -; %Q: the '?' character if query string exists -; %r: the request URI (without the query string, see %q and %Q) -; %R: remote IP address -; %s: status (response code) -; %t: server time the request was received -; it can accept a strftime(3) format: -; %d/%b/%Y:%H:%M:%S %z (default) -; The strftime(3) format must be encapsuled in a %{}t tag -; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t -; %T: time the log has been written (the request has finished) -; it can accept a strftime(3) format: -; %d/%b/%Y:%H:%M:%S %z (default) -; The strftime(3) format must be encapsuled in a %{}t tag -; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t -; %u: remote user -; -; Default: "%R - %u %t \"%m %r\" %s" -;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" - -; The log file for slow requests -; Default Value: not set -; Note: slowlog is mandatory if request_slowlog_timeout is set -;slowlog = log/$pool.log.slow - -; The timeout for serving a single request after which a PHP backtrace will be -; dumped to the 'slowlog' file. A value of '0s' means 'off'. -; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) -; Default Value: 0 -;request_slowlog_timeout = 0 - -; The timeout for serving a single request after which the worker process will -; be killed. This option should be used when the 'max_execution_time' ini option -; does not stop script execution for some reason. A value of '0' means 'off'. -; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) -; Default Value: 0 -request_terminate_timeout = 1d - -; Set open file descriptor rlimit. -; Default Value: system defined value -;rlimit_files = 1024 - -; Set max core size rlimit. -; Possible Values: 'unlimited' or an integer greater or equal to 0 -; Default Value: system defined value -;rlimit_core = 0 - -; Chroot to this directory at the start. This value must be defined as an -; absolute path. When this value is not set, chroot is not used. -; Note: you can prefix with '$prefix' to chroot to the pool prefix or one -; of its subdirectories. If the pool prefix is not set, the global prefix -; will be used instead. -; Note: chrooting is a great security feature and should be used whenever -; possible. However, all PHP paths will be relative to the chroot -; (error_log, sessions.save_path, ...). -; Default Value: not set -;chroot = - -; Chdir to this directory at the start. -; Note: relative path can be used. -; Default Value: current directory or / when chroot -chdir = __INSTALL_DIR__ - -; Redirect worker stdout and stderr into main error log. If not set, stdout and -; stderr will be redirected to /dev/null according to FastCGI specs. -; Note: on highloaded environement, this can cause some delay in the page -; process time (several ms). -; Default Value: no -;catch_workers_output = yes - -; Clear environment in FPM workers -; Prevents arbitrary environment variables from reaching FPM worker processes -; by clearing the environment in workers before env vars specified in this -; pool configuration are added. -; Setting to "no" will make all environment variables available to PHP code -; via getenv(), $_ENV and $_SERVER. -; Default Value: yes -;clear_env = no - -; Limits the extensions of the main script FPM will allow to parse. This can -; prevent configuration mistakes on the web server side. You should only limit -; FPM to .php extensions to prevent malicious users to use other extensions to -; execute php code. -; Note: set an empty value to allow all extensions. -; Default Value: .php -;security.limit_extensions = .php .php3 .php4 .php5 .php7 - -; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from -; the current environment. -; Default Value: clean env -;env[HOSTNAME] = $HOSTNAME -;env[PATH] = /usr/local/bin:/usr/bin:/bin -;env[TMP] = /tmp -;env[TMPDIR] = /tmp -;env[TEMP] = /tmp - -; Additional php.ini defines, specific to this pool of workers. These settings -; overwrite the values previously defined in the php.ini. The directives are the -; same as the PHP SAPI: -; php_value/php_flag - you can set classic ini defines which can -; be overwritten from PHP call 'ini_set'. -; php_admin_value/php_admin_flag - these directives won't be overwritten by -; PHP call 'ini_set' -; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. - -; Defining 'extension' will load the corresponding shared extension from -; extension_dir. Defining 'disable_functions' or 'disable_classes' will not -; overwrite previously defined php.ini values, but will append the new value -; instead. - -; Note: path INI options can be relative and will be expanded with the prefix -; (pool, global or /usr) - -; Default Value: nothing is defined by default except the values in php.ini and -; specified at startup with the -d argument -;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com -;php_flag[display_errors] = off -;php_admin_value[error_log] = /var/log/fpm-php.www.log -;php_admin_flag[log_errors] = on -;php_admin_value[memory_limit] = 32M - -; Common values to change to increase file upload limit -; php_admin_value[upload_max_filesize] = 50M -; php_admin_value[post_max_size] = 50M -; php_admin_flag[mail.add_x_header] = Off - -; Other common parameters -; php_admin_value[max_execution_time] = 600 -; php_admin_value[max_input_time] = 300 -; php_admin_value[memory_limit] = 256M -; php_admin_flag[short_open_tag] = On diff --git a/doc/DISCLAIMER.md b/doc/ADMIN.md similarity index 100% rename from doc/DISCLAIMER.md rename to doc/ADMIN.md diff --git a/manifest.json b/manifest.json deleted file mode 100644 index 0ab605a..0000000 --- a/manifest.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "Zap", - "id": "zap", - "packaging_format": 1, - "description": { - "en": "Ethical fediverse server alternative", - "fr": "serveur fedverse éthique" - }, - "version": "21.11.28~ynh2", - "url": "https://codeberg.org/zot-archive/zap", - "upstream": { - "license": "MIT", - "code": "https://codeberg.org/zot-archive/zap" - }, - "license": "MIT", - "maintainer": { - "name": "" - }, - "requirements": { - "yunohost": ">= 11.1.21" - }, - "multi_instance": true, - "services": [ - "nginx", - "php7.4-fpm", - "mysql", - "postgresql" - ], - "arguments": { - "install" : [ - { - "name": "domain", - "type": "domain", - "help": { - "en": "ZAP must run in the root of this domain. It means no other app can be accessed/run from this domain. We advise to use a dedicated subdomain such as zap.domain.tld", - "fr": "ZAP doit être installé à la racine du domaine. Cela implique qu'aucune autre app ne pourra être installée ou accessible sur ce domain. Nous conseillons un sous-domaine dédié par exemple zap.domain.tld." - } - }, - { - "name": "admin", - "type": "user" - }, - { - "name": "database", - "type": "select", - "ask": { - "en": "Choose the database to be used for the Zap [mysql:1,postgresql:2]", - "fr": "Choisissez la database de l'Zap [mysql:1,postgresql:2]" - }, - "choices": ["1", "2"], - "default": "1" - } - ] - } -} diff --git a/manifest.toml b/manifest.toml index f51b735..20ee54c 100644 --- a/manifest.toml +++ b/manifest.toml @@ -13,29 +13,28 @@ maintainers = [] license = "MIT" code = "https://codeberg.org/zot-archive/zap" website = "https://codeberg.org/zot-archive/zap" -cpe = "???" # FIXME: optional but recommended if relevant, this is meant to contain the Common Platform Enumeration, which is sort of a standard id for applications defined by the NIST. In particular, Yunohost may use this is in the future to easily track CVE (=security reports) related to apps. The CPE may be obtained by searching here: https://nvd.nist.gov/products/cpe/search. For example, for Nextcloud, the CPE is 'cpe:2.3:a:nextcloud:nextcloud' (no need to include the version number) -fund = "???" # FIXME: optional but recommended (or remove if irrelevant / not applicable). This is meant to be an URL where people can financially support this app, especially when its development is based on volunteers and/or financed by its community. YunoHost may later advertise it in the webadmin. [integration] -yunohost = ">= 11.1.21" -architectures = "all" # FIXME: can be replaced by a list of supported archs using the dpkg --print-architecture nomenclature (amd64/i386/armhf/arm64), for example: ["amd64", "i386"] +yunohost = ">= 11.2" +architectures = "all" multi_instance = true -ldap = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "sso" key : the "ldap" key corresponds to wether or not a user *can* login on the app using its YunoHost credentials. -sso = "?" # FIXME: replace with true, false, or "not_relevant". Not to confuse with the "ldap" key : the "sso" key corresponds to wether or not a user is *automatically logged-in* on the app when logged-in on the YunoHost portal. -disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ... -ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... -ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... + +ldap = false + +sso = false + +disk = "50M" +ram.build = "50M" +ram.runtime = "50M" [install] [install.domain] - # this is a generic question - ask strings are automatically handled by Yunohost's core help.en = "ZAP must run in the root of this domain. It means no other app can be accessed/run from this domain. We advise to use a dedicated subdomain such as zap.domain.tld" help.fr = "ZAP doit être installé à la racine du domaine. Cela implique qu'aucune autre app ne pourra être installée ou accessible sur ce domain. Nous conseillons un sous-domaine dédié par exemple zap.domain.tld." type = "domain" full_domain = true [install.admin] - # this is a generic question - ask strings are automatically handled by Yunohost's core type = "user" [install.database] @@ -64,5 +63,8 @@ ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requiremen [resources.permissions] main.url = "/" + [resources.apt] + packages = "postgresql postgresql-contrib php7.4-mbstring php7.4-cli php7.4-imagick php7.4-xml php7.4-zip php7.4-pgsql php7.4-mysql php7.4-json php7.4-gd" + [resources.database] type = "mysql" From eda5c3b18d061135695a1ff747bffad2ffb1e1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:39:42 +0100 Subject: [PATCH 03/21] v2 --- scripts/_common.sh | 5 --- scripts/backup | 49 +++++++----------------- scripts/install | 80 +-------------------------------------- scripts/remove | 58 ----------------------------- scripts/restore | 59 +---------------------------- scripts/upgrade | 93 +--------------------------------------------- 6 files changed, 17 insertions(+), 327 deletions(-) diff --git a/scripts/_common.sh b/scripts/_common.sh index 601526e..be9f593 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,11 +4,6 @@ # COMMON VARIABLES #================================================= -# dependencies used by the app -#REMOVEME? YNH_PHP_VERSION="7.4" - -#REMOVEME? pkg_dependencies="postgresql postgresql-contrib php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-cli php${YNH_PHP_VERSION}-imagick php${YNH_PHP_VERSION}-xml php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-pgsql php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-json php${YNH_PHP_VERSION}-gd" - #================================================= # EXPERIMENTAL HELPERS #================================================= diff --git a/scripts/backup b/scripts/backup index d584663..f0e3c59 100755 --- a/scripts/backup +++ b/scripts/backup @@ -9,29 +9,6 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -#REMOVEME? ynh_clean_setup () { - true -} -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_print_info --message="Loading installation settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) -#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) - #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= @@ -55,19 +32,6 @@ ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" -#================================================= -# BACKUP OF THE DATABASE -#================================================= - -if [ $database -eq 1 ]; then - ynh_print_info --message="Backup of the MySQL database..." - ynh_mysql_dump_db --database="$db_name" > db.sql -elif [ $database -eq 2 ]; then - # Removing postgresSQL database - ynh_print_info --message="Backup of the postgreSQL database..." - ynh_psql_dump_db --database="$db_name" > db.sql -fi - #================================================= # BACKUP LOGROTATE #================================================= @@ -87,6 +51,19 @@ ynh_backup --src_path="/etc/cron.d/$app" ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" +#================================================= +# BACKUP OF THE DATABASE +#================================================= + +if [ $database -eq 1 ]; then + ynh_print_info --message="Backup of the MySQL database..." + ynh_mysql_dump_db --database="$db_name" > db.sql +elif [ $database -eq 2 ]; then + # Removing postgresSQL database + ynh_print_info --message="Backup of the postgreSQL database..." + ynh_psql_dump_db --database="$db_name" > db.sql +fi + #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/install b/scripts/install index 0c5a616..fa5ddde 100755 --- a/scripts/install +++ b/scripts/install @@ -9,13 +9,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - #================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= @@ -27,53 +20,17 @@ email=$(ynh_user_get_info --username=$admin --key=mail) upload="256M" database="1" random_string=$(ynh_string_random --length=48) -#REMOVEME? database=`expr $YNH_APP_ARG_DATABASE` - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#================================================= -# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS -#================================================= -#REMOVEME? ynh_script_progression --message="Validating installation parameters..." - -#REMOVEME? install_dir=/var/www/$app -#REMOVEME? test ! -e "$install_dir" || ynh_die --message="This path already contains a folder" - -# Register (book) web path -#REMOVEME? ynh_webpath_register --app=$app --domain=$domain --path=$path #================================================= # STORE SETTINGS FROM MANIFEST #================================================= #REMOVEME? ynh_print_info "Storing installation settings..." -#REMOVEME? ynh_app_setting_set --app=$app --key=domain --value=$domain -#REMOVEME? ynh_app_setting_set --app=$app --key=path --value=$path -#REMOVEME? ynh_app_setting_set --app=$app --key=admin --value=$admin ynh_app_setting_set --app=$app --key=email --value=$email ynh_app_setting_set --app=$app --key=upload --value=$upload ynh_app_setting_set --app=$app --key=database --value=$database ynh_app_setting_set --app=$app --key=random_string --value=$random_string -#================================================= -# STANDARD MODIFICATIONS -#================================================= -# INSTALL DEPENDENCIES -#================================================= -ynh_print_info "Installing dependencies..." - -if [ $database -eq 2 ]; then -#REMOVEME? ynh_install_app_dependencies $pkg_dependencies -fi - -#================================================= -# CREATE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Configuring system user..." - -# Create a system user -#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" - #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -171,7 +128,6 @@ fi # MODIFY A CONFIG FILE #================================================= -#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) ynh_replace_string --match_string="your.mysqlhost.com" --replace_string="localhost" --target_file="$config" ynh_replace_string --match_string= "mysqlpassword" --replace_string="$db_pwd" --target_file="$config" ynh_replace_string --match_string="mysqlusername" --replace_string="$db_name" --target_file="$config" @@ -198,52 +154,18 @@ ynh_script_progression --message="Configuring NGINX web server..." # Create a dedicated nginx config ynh_add_nginx_config -#================================================= -# PHP-FPM CONFIGURATION -#================================================= -ynh_script_progression --message="Configuring PHP-FPM..." - # Create a dedicated php-fpm config ynh_add_fpm_config -#================================================= -# CRON JOB CONFIGURATION -#================================================= -ynh_script_progression --message="Setting up cron job..." - -ynh_add_config --template="../conf/poller-cron" --destination="/etc/cron.d/$app" +ynh_add_config --template="poller-cron" --destination="/etc/cron.d/$app" chown root: "/etc/cron.d/$app" chmod 644 "/etc/cron.d/$app" -#================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Configuring log rotation..." - # Use logrotate to manage application logfile(s) ynh_use_logrotate "$install_dir/php.log" -#================================================= -# SETUP FAIL2BAN -#================================================= -ynh_script_progression --message="Add Fail2Ban..." - ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" -#================================================= -# SETUP SSOWAT -#================================================= -#REMOVEME? ynh_script_progression --message="Configuring permissions..." - -#REMOVEME? ynh_permission_update --permission="main" --add="visitors" - -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." - -#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/remove b/scripts/remove index 250858a..56195ef 100755 --- a/scripts/remove +++ b/scripts/remove @@ -9,19 +9,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# LOAD SETTINGS -#================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#REMOVEME? db_user="$db_name" -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) - #================================================= # REMOVE THE DATABASE #================================================= @@ -35,22 +22,6 @@ elif [ $database -eq 2 ]; then #REMOVEME? ynh_psql_remove_db --db_user=$db_user --db_name=$db_name fi -#================================================= -# REMOVE DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Removing dependencies" - -# Remove metapackage and its dependencies -#REMOVEME? ynh_remove_app_dependencies - -#================================================= -# REMOVE APP MAIN DIR -#================================================= -#REMOVEME? ynh_script_progression --message="Removing app main directory..." - -# Remove the app directory securely -#REMOVEME? ynh_secure_remove --file="$install_dir" - #================================================= # REMOVE NGINX CONFIGURATION #================================================= @@ -59,46 +30,17 @@ ynh_script_progression --message="Removing NGINX web server configuration..." # Remove the dedicated NGINX config ynh_remove_nginx_config -#================================================= -# REMOVE PHP-FPM CONFIGURATION -#================================================= -ynh_script_progression --message="Removing PHP-FPM configuration..." - # Remove the dedicated php-fpm config ynh_remove_fpm_config -#================================================= -# REMOVE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Removing logrotate configuration..." - # Remove the app-specific logrotate config ynh_remove_logrotate -#================================================= -# REMOVE THE CRON FILE -#================================================= - # Remove a cron file ynh_secure_remove --file="/etc/cron.d/$app" -#================================================= -# REMOVE FAIL2BAN CONFIGURATION -#================================================= -ynh_script_progression --message="Removing Fail2Ban configuration..." - ynh_remove_fail2ban_config -#================================================= -# GENERIC FINALIZATION -#================================================= -# REMOVE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Removing the dedicated system user..." - -# Delete a system user -#REMOVEME? ynh_system_user_delete --username=$app - #================================================= # END OF SCRIPT #================================================= diff --git a/scripts/restore b/scripts/restore index 3a1b374..48c835c 100755 --- a/scripts/restore +++ b/scripts/restore @@ -10,52 +10,6 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -ynh_script_progression --message="Loading settings..." - -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) -#REMOVEME? admin=$(ynh_app_setting_get --app=$app --key=admin) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) -#REMOVEME? db_user=$db_name -#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) - -#================================================= -# CHECK IF THE APP CAN BE RESTORED -#================================================= -#REMOVEME? ynh_script_progression --message="Validating restoration parameters..." - -#REMOVEME? test ! -d $install_dir || ynh_die --message="There is already a directory: $install_dir " - -#================================================= -# STANDARD RESTORATION STEPS -#================================================= -# RESTORE THE NGINX CONFIGURATION -#================================================= - -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" - -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -ynh_print_info "Recreating the dedicated system user..." - -# Create the dedicated user (if not existing) -#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" - #================================================= # RESTORE THE APP MAIN DIR #================================================= @@ -96,23 +50,12 @@ ynh_script_progression --message="Restoring PHP-FPM configuration..." ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" -#================================================= -# RESTORE THE CRON FILE -#================================================= +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file --origin_path="/etc/cron.d/$app" -#================================================= -# RESTORE THE LOGROTATE CONFIGURATION -#================================================= - ynh_restore_file --origin_path="/etc/logrotate.d/$app" -#================================================= -# RESTORE FAIL2BAN CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the Fail2Ban configuration..." - ynh_restore_file "/etc/fail2ban/jail.d/$app.conf" ynh_restore_file "/etc/fail2ban/filter.d/$app.conf" ynh_systemd_action --action=restart --service_name=fail2ban diff --git a/scripts/upgrade b/scripts/upgrade index 4d3e918..75707a8 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -14,66 +14,8 @@ source /usr/share/yunohost/helpers #================================================= #REMOVEME? ynh_script_progression --message="Loading installation settings..." -#REMOVEME? app=$YNH_APP_INSTANCE_NAME - -#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) -#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) -#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) -#REMOVEME? upload=$(ynh_app_setting_get --app=$app --key=upload) version=$(grep STD_VERSION $install_dir/boot.php | cut -c 38- | rev | cut -c 5- | rev) last_update=$(grep update_time: /etc/yunohost/apps/$app/settings.yml | cut -c 14-) -#REMOVEME? database=$(ynh_app_setting_get --app=$app --key=database) -#REMOVEME? phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) - -#================================================= -# ENSURE DOWNWARD COMPATIBILITY -#================================================= - -# If db_name doesn't exist, create it -if [ -z "$db_name" ]; then - db_name=$(ynh_sanitize_dbid --db_name=$app) -#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name -fi - -#================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP -#================================================= -#REMOVEME? ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." - -# Backup the current version of the app -#REMOVEME? ynh_backup_before_upgrade -#REMOVEME? ynh_clean_setup () { - # restore it if the upgrade fails -#REMOVEME? ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -#REMOVEME? ynh_abort_if_errors - -#================================================= -# Migrate legacy permissions to new system -#================================================= -ynh_script_progression --message="Ensuring downward compatibility..." - -# If install_dir doesn't exist, create it -if [ -z "$install_dir" ]; then -#REMOVEME? install_dir=/var/www/$app -#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir -fi - -#REMOVEME? if ynh_legacy_permissions_exists -then -#REMOVEME? ynh_legacy_permissions_delete_all - - ynh_app_setting_delete --app=$app --key=is_public -fi - -#================================================= -# CREATE DEDICATED USER -#================================================= -#REMOVEME? ynh_script_progression --message="Making sure dedicated system user exists..." - -# Create a dedicated user (if not existing) -#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -129,7 +71,7 @@ else cp -a "$install_dir/cache" "$tmpdir/cache" # Remove the app directory securely -#REMOVEME? ynh_secure_remove "$install_dir" + ynh_secure_remove "$install_dir" # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$install_dir" @@ -156,11 +98,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." # Create a dedicated nginx config ynh_add_nginx_config -#================================================= -# PHP-FPM CONFIGURATION -#================================================= -ynh_script_progression --message="Upgrading PHP-FPM configuration..." - # Create a dedicated php-fpm config ynh_add_fpm_config @@ -170,19 +107,9 @@ ynh_backup_if_checksum_is_different --file="$install_dir/.htconfig.php" # Recalculate and store the checksum of the file for the next upgrade. ynh_store_file_checksum --file="$install_dir/.htconfig.php" -#================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Upgrading logrotate configuration..." - # Use logrotate to manage app-specific logfile(s) ynh_use_logrotate --non-append -#================================================= -# UPGRADE FAIL2BAN -#================================================= -ynh_script_progression --message="Re-configure Fail2Ban..." - ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" #================================================= @@ -190,26 +117,10 @@ ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.p #================================================= ynh_script_progression --message="Setting up cron job..." -ynh_add_config --template="../conf/poller-cron" --destination="/etc/cron.d/$app" +ynh_add_config --template=".poller-cron" --destination="/etc/cron.d/$app" chown root: "/etc/cron.d/$app" chmod 644 "/etc/cron.d/$app" -#================================================= -# UPGRADE DEPENDENCIES -#================================================= -#REMOVEME? ynh_script_progression --message="Upgrading dependencies..." - -if [ $database -eq 2 ]; then -#REMOVEME? ynh_install_app_dependencies $pkg_dependencies -fi - -#================================================= -# RELOAD NGINX -#================================================= -#REMOVEME? ynh_script_progression --message="Reloading NGINX web server..." - -#REMOVEME? ynh_systemd_action --service_name=nginx --action=reload - #================================================= # END OF SCRIPT #================================================= From 15821d889d5452c8157e243f2dcbab8d22d18f42 Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Mon, 13 Nov 2023 10:34:50 +0000 Subject: [PATCH 04/21] Auto-update README --- README.md | 23 +---------------------- README_fr.md | 23 +---------------------- 2 files changed, 2 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index a24818d..dc913cf 100644 --- a/README.md +++ b/README.md @@ -32,34 +32,13 @@ Compatible with **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzil **Shipped version:** 21.11.28~ynh2 -## Disclaimers / important information - -## Installation - -Before installing, read the [Zap installation instructions](https://codeberg.org/zot/zap/src/branch/release/install/INSTALL.txt) for important information about: - -### Register a new domain and add it to YunoHost - -- Zap requires a dedicated domain, so obtain one and add it using the YunoHost admin panel. **Domains -> Add domain**. As Zap uses the full domain and is installed on the root, you can create a subdomain such as Zap.domain.tld. Don't forget to update your DNS if you manage them manually. - -## LDAP Admin user rights, logs and failed database updates - -- **For admin rights**: When installation is complete, you will need to visit your new hub's page and login with the **admin account username** which was entered at the time of installation process. You should then be able to create your first channel and have the **admin rights** for the hub. - -- **For normal YunoHost users :** Normal LDAP users can login through Ldap authentication and create there channels. - -- **Failing to get admin rights :** If the admin cannot access the admin settings at `https://zap.example.com/admin` or you want to grant admin rights to any other user(s) on the hub, then you have to **manually add 4096** to the **account_roles** under **accounts** for that user in the **database through phpMYAdmin**. - -- **For logs:** Go to **admin->logs** and enter the file name **php.log**. - -- **Failed Database after Upgrade:** Some times databse upgrade fails after version upgrade. You can go to hub eg. `https://zap.example.com/admin/dbsync/` and check the numbers of failled update. These updates will have to be ran manually by **phpMYAdmin**. - ## :red_circle: Antifeatures - **Upstream not maintained**: This software is not maintained anymore. Expect it to break down over time, be exposed to unfixed security breaches, etc. ## Documentation and resources +* Official app website: * Upstream app code repository: * YunoHost Store: * Report a bug: diff --git a/README_fr.md b/README_fr.md index ddabc41..07987ef 100644 --- a/README_fr.md +++ b/README_fr.md @@ -32,34 +32,13 @@ Compatible with **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzil **Version incluse :** 21.11.28~ynh2 -## Avertissements / informations importantes - -## Installation - -Before installing, read the [Zap installation instructions](https://codeberg.org/zot/zap/src/branch/release/install/INSTALL.txt) for important information about: - -### Register a new domain and add it to YunoHost - -- Zap requires a dedicated domain, so obtain one and add it using the YunoHost admin panel. **Domains -> Add domain**. As Zap uses the full domain and is installed on the root, you can create a subdomain such as Zap.domain.tld. Don't forget to update your DNS if you manage them manually. - -## LDAP Admin user rights, logs and failed database updates - -- **For admin rights**: When installation is complete, you will need to visit your new hub's page and login with the **admin account username** which was entered at the time of installation process. You should then be able to create your first channel and have the **admin rights** for the hub. - -- **For normal YunoHost users :** Normal LDAP users can login through Ldap authentication and create there channels. - -- **Failing to get admin rights :** If the admin cannot access the admin settings at `https://zap.example.com/admin` or you want to grant admin rights to any other user(s) on the hub, then you have to **manually add 4096** to the **account_roles** under **accounts** for that user in the **database through phpMYAdmin**. - -- **For logs:** Go to **admin->logs** and enter the file name **php.log**. - -- **Failed Database after Upgrade:** Some times databse upgrade fails after version upgrade. You can go to hub eg. `https://zap.example.com/admin/dbsync/` and check the numbers of failled update. These updates will have to be ran manually by **phpMYAdmin**. - ## :red_circle: Fonctions indésirables - **Upstream not maintained**: This software is not maintained anymore. Expect it to break down over time, be exposed to unfixed security breaches, etc. ## Documentations et ressources +* Site officiel de l’app : * Dépôt de code officiel de l’app : * YunoHost Store: * Signaler un bug : From 0cfad2a85cff4a0598daa416da5a2aad459bd367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:51:13 +0100 Subject: [PATCH 05/21] fix --- conf/nginx.conf | 11 +---------- manifest.toml | 21 ++++++++++++++------- scripts/backup | 7 +++---- scripts/install | 35 ++++++++++++++++------------------- scripts/remove | 12 +++++------- scripts/restore | 27 +++++++++++---------------- scripts/upgrade | 2 +- tests.toml | 14 ++++++++++++++ 8 files changed, 65 insertions(+), 64 deletions(-) create mode 100644 tests.toml diff --git a/conf/nginx.conf b/conf/nginx.conf index 8b32094..cc7e811 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -7,7 +7,7 @@ location __PATH__/ { rewrite ^(.*)$ /index.php?req=$1; } - client_max_body_size 20m; + client_max_body_size 50m; client_body_buffer_size 128k; # Default indexes and catch-all @@ -31,15 +31,6 @@ location __PATH__/ { } } - # statically serve these file types when possible - # otherwise fall back to front controller - # allow browser to cache them - # added .htm for advanced source code editor library - # location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|map|ttf|woff|woff2|svg)$ { - # expires 30d; - # try_files $uri /index.php?q=$uri&$args; - # } - # block these file types location ~* \.(tpl|md|tgz|log|out)$ { deny all; diff --git a/manifest.toml b/manifest.toml index 20ee54c..3e6564f 100644 --- a/manifest.toml +++ b/manifest.toml @@ -38,11 +38,11 @@ ram.runtime = "50M" type = "user" [install.database] - ask.en = "Choose the database to be used for the Zap [mysql:1,postgresql:2]" - ask.fr = "Choisissez la database de l'Zap [mysql:1,postgresql:2]" + ask.en = "Do you need a database?" + ask.fr = "Avez-vous besoin d'une base de données ?" type = "select" - choices = ["1", "2"] - default = "1" + choices = [ "mysql", "postgresql" ] + default = "mysql" [resources] [resources.sources] @@ -64,7 +64,14 @@ ram.runtime = "50M" main.url = "/" [resources.apt] - packages = "postgresql postgresql-contrib php7.4-mbstring php7.4-cli php7.4-imagick php7.4-xml php7.4-zip php7.4-pgsql php7.4-mysql php7.4-json php7.4-gd" + packages = "php7.4-mbstring, php7.4-cli, php7.4-imagick, php7.4-xml, php7.4-zip, php7.4-json, php7.4-gd" - [resources.database] - type = "mysql" + packages_from_raw_bash = """ + if [[ "$database" == "mysql" ]]; then + echo "mariadb-server, php7.4-mysql" + + elif [[ "$database" == "postgresql" ]]; then + echo "postgresql, postgresql-contrib, php7.4-pgsql" + + fi + """ diff --git a/scripts/backup b/scripts/backup index f0e3c59..e990219 100755 --- a/scripts/backup +++ b/scripts/backup @@ -55,12 +55,11 @@ ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" # BACKUP OF THE DATABASE #================================================= -if [ $database -eq 1 ]; then +if [ $database == "mysql" ]; then ynh_print_info --message="Backup of the MySQL database..." ynh_mysql_dump_db --database="$db_name" > db.sql -elif [ $database -eq 2 ]; then - # Removing postgresSQL database - ynh_print_info --message="Backup of the postgreSQL database..." +else + ynh_print_info --message="Backup of the PostgreSQL database..." ynh_psql_dump_db --database="$db_name" > db.sql fi diff --git a/scripts/install b/scripts/install index fa5ddde..324c433 100755 --- a/scripts/install +++ b/scripts/install @@ -101,27 +101,24 @@ chown -R $app:www-data "$install_dir" # CREATE A DATABASE #================================================= -if [ $database -eq 1 ]; then -#REMOVEME? ynh_script_progression --message="Creating a MySQL database..." - db_name=$(ynh_sanitize_dbid --db_name=$app) - db_user=$db_name -#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name -#REMOVEME? ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name - ynh_script_progression --message="Importing database..." +db_name=$(ynh_sanitize_dbid --db_name=$app) +db_user=$db_name +db_pwd=$(ynh_string_random --length=30) +ynh_app_setting_set --app=$app --key=db_name --value=$db_name +ynh_app_setting_set --app=$app --key=db_user --value=$db_user +ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd + +if [ $database == "mysql" ]; then + ynh_script_progression --message="Creating a MySQL database..." + ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_mysql.sql -elif [ $database -eq 2 ]; then - # Create postgresql database - ynh_script_progression --message="Creating a postgresql database..." - ynh_replace_string --match_string="db_type = 0;" --replace_string="db_type = 1;" --target_file="$config" - db_name=$(ynh_sanitize_dbid --db_name=$app) - db_user=$app -#REMOVEME? ynh_psql_test_if_first_run -#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name -#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name - ynh_script_progression --message="Importing database..." - ynh_psql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_postgres.sql else - ynh_die --message="Some problem occured in creating the database, contact maintainer" + # Create postgresql database + ynh_script_progression --message="Creating a PostgreSQL database..." + ynh_replace_string --match_string="db_type = 0;" --replace_string="db_type = 1;" --target_file="$config" + ynh_psql_test_if_first_run + ynh_psql_setup_db --db_user=$db_user --db_name=$db_name + ynh_psql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_postgres.sql fi #================================================= diff --git a/scripts/remove b/scripts/remove index 56195ef..cc7877b 100755 --- a/scripts/remove +++ b/scripts/remove @@ -13,13 +13,11 @@ source /usr/share/yunohost/helpers # REMOVE THE DATABASE #================================================= -if [ $database -eq 1 ]; then -#REMOVEME? ynh_script_progression --message="Removing MySQL database..." -#REMOVEME? ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name -elif [ $database -eq 2 ]; then - # Removing postgresql database -#REMOVEME? ynh_script_progression --message="Removing postgreSQL database..." -#REMOVEME? ynh_psql_remove_db --db_user=$db_user --db_name=$db_name +# Remove a database if it exists, along with the associated user +if [ $database == "mysql" ]; then + ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name +else + ynh_psql_remove_db --db_user=$db_user --db_name=$db_name fi #================================================= diff --git a/scripts/restore b/scripts/restore index 48c835c..0679a6e 100755 --- a/scripts/restore +++ b/scripts/restore @@ -24,23 +24,18 @@ chown -R $app:www-data "$install_dir" #================================================= # RESTORE THE MYSQL DATABASE #================================================= -#REMOVEME? ynh_script_progression --message="Restoring the MySQL database..." +ynh_script_progression --message="Restoring the MySQL database..." -if [ $database -eq 1 ]; then -#REMOVEME? ynh_script_progression --message="Restoring MySQL database..." -#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) -#REMOVEME? 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 -elif [ $database -eq 2 ]; then - # Removing postgresql database -#REMOVEME? ynh_script_progression --message="Reinstalling dependencies..." - # Define and install dependencies -#REMOVEME? ynh_install_app_dependencies $pkg_dependencies -#REMOVEME? ynh_script_progression --message="Restoring the PostgreSQL database..." -#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -#REMOVEME? ynh_psql_test_if_first_run -#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd - ynh_psql_execute_file_as_root --file="./db.sql" --database="$db_name" +db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_user=$db_name +db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) + +if [ $database == "mysql" ]; then + ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd + ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql +else + ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd + ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql fi #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 75707a8..9f80986 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -12,7 +12,7 @@ source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= -#REMOVEME? ynh_script_progression --message="Loading installation settings..." +ynh_script_progression --message="Loading installation settings..." version=$(grep STD_VERSION $install_dir/boot.php | cut -c 38- | rev | cut -c 5- | rev) last_update=$(grep update_time: /etc/yunohost/apps/$app/settings.yml | cut -c 14-) diff --git a/tests.toml b/tests.toml new file mode 100644 index 0000000..10afb88 --- /dev/null +++ b/tests.toml @@ -0,0 +1,14 @@ +test_format = 1.0 + +[default] + + # ------------------------------- + # Default args to use for install + # ------------------------------- + + args.database = "mysql" + +[postgresql_test] + + only = ["install.subdir", "backup_restore", "upgrade" ] + args.database = "postgresql" From 8d38050f07d223604ec080897538086ca1e2dbed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:00:51 +0100 Subject: [PATCH 06/21] fix --- scripts/backup | 2 +- scripts/install | 3 +-- scripts/remove | 2 +- scripts/restore | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/backup b/scripts/backup index e990219..28d0cf3 100755 --- a/scripts/backup +++ b/scripts/backup @@ -58,7 +58,7 @@ ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" if [ $database == "mysql" ]; then ynh_print_info --message="Backup of the MySQL database..." ynh_mysql_dump_db --database="$db_name" > db.sql -else +elif [ $database == "postgresql" ]; then ynh_print_info --message="Backup of the PostgreSQL database..." ynh_psql_dump_db --database="$db_name" > db.sql fi diff --git a/scripts/install b/scripts/install index 324c433..c6f777c 100755 --- a/scripts/install +++ b/scripts/install @@ -38,7 +38,6 @@ ynh_app_setting_set --app=$app --key=random_string --value=$random_string # 1 - Zap ynh_script_progression --message="Setting up Zap source files..." -#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir # Download, check integrity, uncompress and patch the source from app.src git clone https://codeberg.org/zot-archive/zap.git "$install_dir" --quiet @@ -112,7 +111,7 @@ if [ $database == "mysql" ]; then ynh_script_progression --message="Creating a MySQL database..." ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_mysql.sql -else +elif [ $database == "postgresql" ]; then # Create postgresql database ynh_script_progression --message="Creating a PostgreSQL database..." ynh_replace_string --match_string="db_type = 0;" --replace_string="db_type = 1;" --target_file="$config" diff --git a/scripts/remove b/scripts/remove index cc7877b..0a5a621 100755 --- a/scripts/remove +++ b/scripts/remove @@ -16,7 +16,7 @@ source /usr/share/yunohost/helpers # Remove a database if it exists, along with the associated user if [ $database == "mysql" ]; then ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name -else +elif [ $database == "postgresql" ]; then ynh_psql_remove_db --db_user=$db_user --db_name=$db_name fi diff --git a/scripts/restore b/scripts/restore index 0679a6e..b2fa666 100755 --- a/scripts/restore +++ b/scripts/restore @@ -33,7 +33,7 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) if [ $database == "mysql" ]; then ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql -else +elif [ $database == "postgresql" ]; then ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql fi From cc7abb268dbe4a589861759ca742ad880616b589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:02:39 +0100 Subject: [PATCH 07/21] Update manifest.toml --- manifest.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/manifest.toml b/manifest.toml index 3e6564f..250871a 100644 --- a/manifest.toml +++ b/manifest.toml @@ -29,10 +29,11 @@ ram.runtime = "50M" [install] [install.domain] - help.en = "ZAP must run in the root of this domain. It means no other app can be accessed/run from this domain. We advise to use a dedicated subdomain such as zap.domain.tld" - help.fr = "ZAP doit être installé à la racine du domaine. Cela implique qu'aucune autre app ne pourra être installée ou accessible sur ce domain. Nous conseillons un sous-domaine dédié par exemple zap.domain.tld." type = "domain" - full_domain = true + + [install.init_main_permission] + type = "group" + default = "visitors" [install.admin] type = "user" @@ -65,7 +66,6 @@ ram.runtime = "50M" [resources.apt] packages = "php7.4-mbstring, php7.4-cli, php7.4-imagick, php7.4-xml, php7.4-zip, php7.4-json, php7.4-gd" - packages_from_raw_bash = """ if [[ "$database" == "mysql" ]]; then echo "mariadb-server, php7.4-mysql" From fefdf53b75864d8afba686d2616aaa7871f10995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:03:13 +0100 Subject: [PATCH 08/21] Update install --- scripts/install | 5 ----- 1 file changed, 5 deletions(-) diff --git a/scripts/install b/scripts/install index c6f777c..654662f 100755 --- a/scripts/install +++ b/scripts/install @@ -13,12 +13,8 @@ source /usr/share/yunohost/helpers # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= -#REMOVEME? domain=$YNH_APP_ARG_DOMAIN -path="/" -#REMOVEME? admin=$YNH_APP_ARG_ADMIN email=$(ynh_user_get_info --username=$admin --key=mail) upload="256M" -database="1" random_string=$(ynh_string_random --length=48) #================================================= @@ -28,7 +24,6 @@ random_string=$(ynh_string_random --length=48) ynh_app_setting_set --app=$app --key=email --value=$email ynh_app_setting_set --app=$app --key=upload --value=$upload -ynh_app_setting_set --app=$app --key=database --value=$database ynh_app_setting_set --app=$app --key=random_string --value=$random_string #================================================= From e414b24cfd1c052acc27316d7d7e5331d38a3238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:23:54 +0100 Subject: [PATCH 09/21] Update restore --- scripts/restore | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/restore b/scripts/restore index b2fa666..de26485 100755 --- a/scripts/restore +++ b/scripts/restore @@ -17,7 +17,6 @@ ynh_script_progression --message="Restoring the app main directory..." ynh_restore_file --origin_path="$install_dir" -chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" @@ -26,15 +25,13 @@ chown -R $app:www-data "$install_dir" #================================================= ynh_script_progression --message="Restoring the MySQL database..." -db_name=$(ynh_app_setting_get --app=$app --key=db_name) +db_name=$(ynh_sanitize_dbid --db_name=$app) db_user=$db_name db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) if [ $database == "mysql" ]; then - ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql elif [ $database == "postgresql" ]; then - ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql fi From 0f49b834fb9038f997e02241345575f7cbcc8c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:41:11 +0100 Subject: [PATCH 10/21] cleaning --- conf/htconfig.php | 104 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/install | 36 ++++------------ scripts/upgrade | 17 ++------ 3 files changed, 115 insertions(+), 42 deletions(-) create mode 100644 conf/htconfig.php diff --git a/conf/htconfig.php b/conf/htconfig.php new file mode 100644 index 0000000..a2ad41c --- /dev/null +++ b/conf/htconfig.php @@ -0,0 +1,104 @@ +> $install_dir/.htconfig.php +chmod 400 "$install_dir/.htconfig.php" +chown $app:$app "$install_dir/.htconfig.php" #================================================= # NGINX CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 9f80986..1e11536 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -101,26 +101,15 @@ ynh_add_nginx_config # Create a dedicated php-fpm config ynh_add_fpm_config -### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script. -### And create a backup of this file if the checksum is different. So the file will be backed up if the admin had modified it. -ynh_backup_if_checksum_is_different --file="$install_dir/.htconfig.php" -# Recalculate and store the checksum of the file for the next upgrade. -ynh_store_file_checksum --file="$install_dir/.htconfig.php" - # Use logrotate to manage app-specific logfile(s) ynh_use_logrotate --non-append -ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" - -#================================================= -# UPGRADE CRON -#================================================= -ynh_script_progression --message="Setting up cron job..." - -ynh_add_config --template=".poller-cron" --destination="/etc/cron.d/$app" +ynh_add_config --template="poller-cron" --destination="/etc/cron.d/$app" chown root: "/etc/cron.d/$app" chmod 644 "/etc/cron.d/$app" +ynh_add_fail2ban_config --logpath="$install_dir/php.log" --failregex="^.*auth\.php.*failed login attempt.*from IP .*$" --max_retry="5" + #================================================= # END OF SCRIPT #================================================= From a07890bf07e63610b5d44afa4b3917a04c1113fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:41:29 +0100 Subject: [PATCH 11/21] Delete ldap_conf.php --- conf/ldap_conf.php | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 conf/ldap_conf.php diff --git a/conf/ldap_conf.php b/conf/ldap_conf.php deleted file mode 100644 index a4688d6..0000000 --- a/conf/ldap_conf.php +++ /dev/null @@ -1,7 +0,0 @@ -App::$config['system']['addon'] = 'ldapauth'; - -App::$config['ldapauth']['ldap_server'] = 'localhost'; -App::$config['ldapauth']['ldap_searchdn'] = 'ou=users,dc=yunohost,dc=org'; -App::$config['ldapauth']['ldap_userattr'] = 'uid'; -App::$config['ldapauth']['ldap_autocreateaccount_emailattribute'] = 'mail'; -App::$config['ldapauth']['create_account'] = '1'; From 5b8c3a3bc57628192523d4d8dcc9d8117bb86900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:59:00 +0100 Subject: [PATCH 12/21] Update install --- scripts/install | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install b/scripts/install index 4736996..78594dc 100755 --- a/scripts/install +++ b/scripts/install @@ -15,6 +15,7 @@ source /usr/share/yunohost/helpers email=$(ynh_user_get_info --username=$admin --key=mail) random_string=$(ynh_string_random --length=48) +timezone=$(cat /etc/timezone) #================================================= # STORE SETTINGS FROM MANIFEST From 3dd34d0f1e91d2432fe01f4e548f25d59f033684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 18:20:32 +0100 Subject: [PATCH 13/21] cleaning --- check_process | 20 -------------------- manifest.toml | 18 +----------------- scripts/backup | 9 ++------- scripts/install | 42 ++++++++++-------------------------------- scripts/remove | 11 ----------- scripts/restore | 10 +--------- 6 files changed, 14 insertions(+), 96 deletions(-) delete mode 100644 check_process diff --git a/check_process b/check_process deleted file mode 100644 index b89514a..0000000 --- a/check_process +++ /dev/null @@ -1,20 +0,0 @@ -;; Test complet - ; Manifest - domain="domain.tld" - admin="john" - upload="256M" - database="1" - ; Checks - pkg_linter=1 - setup_sub_dir=0 - setup_root=1 - setup_nourl=0 - setup_private=0 - setup_public=1 - upgrade=1 - backup_restore=1 - multi_instance=1 - change_url=0 -;;; Options -Email= -Notification= diff --git a/manifest.toml b/manifest.toml index 250871a..1c6f79a 100644 --- a/manifest.toml +++ b/manifest.toml @@ -38,13 +38,6 @@ ram.runtime = "50M" [install.admin] type = "user" - [install.database] - ask.en = "Do you need a database?" - ask.fr = "Avez-vous besoin d'une base de données ?" - type = "select" - choices = [ "mysql", "postgresql" ] - default = "mysql" - [resources] [resources.sources] [resources.sources.main] @@ -65,13 +58,4 @@ ram.runtime = "50M" main.url = "/" [resources.apt] - packages = "php7.4-mbstring, php7.4-cli, php7.4-imagick, php7.4-xml, php7.4-zip, php7.4-json, php7.4-gd" - packages_from_raw_bash = """ - if [[ "$database" == "mysql" ]]; then - echo "mariadb-server, php7.4-mysql" - - elif [[ "$database" == "postgresql" ]]; then - echo "postgresql, postgresql-contrib, php7.4-pgsql" - - fi - """ + packages = "postgresql, postgresql-contrib, php7.4-pgsql, php7.4-mbstring, php7.4-cli, php7.4-imagick, php7.4-xml, php7.4-zip, php7.4-json, php7.4-gd" diff --git a/scripts/backup b/scripts/backup index 28d0cf3..0738c13 100755 --- a/scripts/backup +++ b/scripts/backup @@ -54,14 +54,9 @@ ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" #================================================= # BACKUP OF THE DATABASE #================================================= +ynh_print_info --message="Backup of the PostgreSQL database..." -if [ $database == "mysql" ]; then - ynh_print_info --message="Backup of the MySQL database..." - ynh_mysql_dump_db --database="$db_name" > db.sql -elif [ $database == "postgresql" ]; then - ynh_print_info --message="Backup of the PostgreSQL database..." - ynh_psql_dump_db --database="$db_name" > db.sql -fi +ynh_psql_dump_db --database="$db_name" > db.sql #================================================= # END OF SCRIPT diff --git a/scripts/install b/scripts/install index 78594dc..6dc82de 100755 --- a/scripts/install +++ b/scripts/install @@ -27,22 +27,28 @@ ynh_app_setting_set --app=$app --key=random_string --value=$random_string #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= - -# 1 - Zap ynh_script_progression --message="Setting up Zap source files..." +ynh_setup_source --dest_dir="$install_dir" + # Download, check integrity, uncompress and patch the source from app.src -git clone https://codeberg.org/zot-archive/zap.git "$install_dir" --quiet +#git clone https://codeberg.org/zot-archive/zap.git "$install_dir" --quiet # 2 - Zap Addons # Make addon Directory and unpack the addons to this directory ynh_script_progression --message="Setting up Zap addons source files..." + + pushd "$install_dir" mkdir -p extend/addon/zaddons mkdir addon - git clone https://codeberg.org/zot-archive/zap-addons.git $install_dir/extend/addon/zaddons --quiet + + ynh_setup_source --dest_dir="$install_dir/extend/addon/zaddons" --source="app_addons" + + + #git clone https://codeberg.org/zot-archive/zap-addons.git $install_dir/extend/addon/zaddons --quiet filelist=(`ls extend/addon/zaddons`) cd addon for a in "${filelist[@]}" ; do @@ -64,11 +70,8 @@ pushd "$install_dir" ln -s ../extend/addon/zaddons/$base $base done - popd - - # 3 - Some extra folders ynh_script_progression --message="Creating smarty3 folder for personal data..." @@ -83,31 +86,6 @@ chmod 750 "$install_dir" chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" -#================================================= -# CREATE A DATABASE -#================================================= - -db_name=$(ynh_sanitize_dbid --db_name=$app) -db_user=$db_name -db_pwd=$(ynh_string_random --length=30) -ynh_app_setting_set --app=$app --key=db_name --value=$db_name -ynh_app_setting_set --app=$app --key=db_user --value=$db_user -ynh_app_setting_set --app=$app --key=db_pwd --value=$db_pwd - -if [ $database == "mysql" ]; then - ynh_script_progression --message="Creating a MySQL database..." - db_type=0 - ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name - ynh_mysql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_mysql.sql -elif [ $database == "postgresql" ]; then - # Create postgresql database - ynh_script_progression --message="Creating a PostgreSQL database..." - db_type=1 - ynh_psql_test_if_first_run - ynh_psql_setup_db --db_user=$db_user --db_name=$db_name - ynh_psql_connect_as --user="$db_name" --password="$db_pwd" --database="$db_name" < $install_dir/install/schema_postgres.sql -fi - #================================================= # ADD A CONFIGURATION #================================================= diff --git a/scripts/remove b/scripts/remove index 0a5a621..30a7cd2 100755 --- a/scripts/remove +++ b/scripts/remove @@ -9,17 +9,6 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# REMOVE THE DATABASE -#================================================= - -# Remove a database if it exists, along with the associated user -if [ $database == "mysql" ]; then - ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name -elif [ $database == "postgresql" ]; then - ynh_psql_remove_db --db_user=$db_user --db_name=$db_name -fi - #================================================= # REMOVE NGINX CONFIGURATION #================================================= diff --git a/scripts/restore b/scripts/restore index de26485..55606b9 100755 --- a/scripts/restore +++ b/scripts/restore @@ -25,15 +25,7 @@ chown -R $app:www-data "$install_dir" #================================================= ynh_script_progression --message="Restoring the MySQL database..." -db_name=$(ynh_sanitize_dbid --db_name=$app) -db_user=$db_name -db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) - -if [ $database == "mysql" ]; then - ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql -elif [ $database == "postgresql" ]; then - ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql -fi +ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql #================================================= # RESTORE THE PHP-FPM CONFIGURATION From dfdb7c492339f963e064e5a8cfe8987396449ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 18:51:43 +0100 Subject: [PATCH 14/21] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index 6dc82de..43d6005 100755 --- a/scripts/install +++ b/scripts/install @@ -45,7 +45,7 @@ pushd "$install_dir" mkdir -p extend/addon/zaddons mkdir addon - ynh_setup_source --dest_dir="$install_dir/extend/addon/zaddons" --source="app_addons" + ynh_setup_source --dest_dir="$install_dir/extend/addon/zaddons" --source_id="app_addons" #git clone https://codeberg.org/zot-archive/zap-addons.git $install_dir/extend/addon/zaddons --quiet From 1e334bf1b9cf0ddbc9d80bc3e9e6081c50977e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 19:04:04 +0100 Subject: [PATCH 15/21] Update manifest.toml --- manifest.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/manifest.toml b/manifest.toml index 1c6f79a..03a100b 100644 --- a/manifest.toml +++ b/manifest.toml @@ -59,3 +59,6 @@ ram.runtime = "50M" [resources.apt] packages = "postgresql, postgresql-contrib, php7.4-pgsql, php7.4-mbstring, php7.4-cli, php7.4-imagick, php7.4-xml, php7.4-zip, php7.4-json, php7.4-gd" + + [resources.database] + type = "postgresql" \ No newline at end of file From 1a2fe1b562d60a153f8ba237402038f456946376 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 21:10:28 +0100 Subject: [PATCH 16/21] Update tests.toml --- tests.toml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests.toml b/tests.toml index 10afb88..1940614 100644 --- a/tests.toml +++ b/tests.toml @@ -6,9 +6,4 @@ test_format = 1.0 # Default args to use for install # ------------------------------- - args.database = "mysql" - -[postgresql_test] - - only = ["install.subdir", "backup_restore", "upgrade" ] args.database = "postgresql" From 54d62b6d537a1cc8f223b597963c9d6af0bad098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 21:13:00 +0100 Subject: [PATCH 17/21] cleaning --- scripts/install | 2 -- scripts/remove | 8 +++++--- scripts/restore | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/install b/scripts/install index 43d6005..d793ca2 100755 --- a/scripts/install +++ b/scripts/install @@ -39,8 +39,6 @@ ynh_setup_source --dest_dir="$install_dir" # Make addon Directory and unpack the addons to this directory ynh_script_progression --message="Setting up Zap addons source files..." - - pushd "$install_dir" mkdir -p extend/addon/zaddons mkdir addon diff --git a/scripts/remove b/scripts/remove index 30a7cd2..472e3e5 100755 --- a/scripts/remove +++ b/scripts/remove @@ -10,14 +10,16 @@ source _common.sh source /usr/share/yunohost/helpers #================================================= -# REMOVE NGINX CONFIGURATION +# REMOVE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Removing NGINX web server configuration..." +# REMOVE SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 # Remove the dedicated NGINX config ynh_remove_nginx_config -# Remove the dedicated php-fpm config +# Remove the dedicated PHP-FPM config ynh_remove_fpm_config # Remove the app-specific logrotate config diff --git a/scripts/restore b/scripts/restore index 55606b9..a4ea548 100755 --- a/scripts/restore +++ b/scripts/restore @@ -21,9 +21,9 @@ chmod -R o-rwx "$install_dir" chown -R $app:www-data "$install_dir" #================================================= -# RESTORE THE MYSQL DATABASE +# RESTORE THE SQL DATABASE #================================================= -ynh_script_progression --message="Restoring the MySQL database..." +ynh_script_progression --message="Restoring the PostgreSQL database..." ynh_psql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql From 3510c23ea2c5f0e48161f739574091fae8fe8945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 21:13:26 +0100 Subject: [PATCH 18/21] Update install --- scripts/install | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/install b/scripts/install index d793ca2..4096d21 100755 --- a/scripts/install +++ b/scripts/install @@ -31,11 +31,6 @@ ynh_script_progression --message="Setting up Zap source files..." ynh_setup_source --dest_dir="$install_dir" -# Download, check integrity, uncompress and patch the source from app.src -#git clone https://codeberg.org/zot-archive/zap.git "$install_dir" --quiet - -# 2 - Zap Addons - # Make addon Directory and unpack the addons to this directory ynh_script_progression --message="Setting up Zap addons source files..." @@ -45,8 +40,6 @@ pushd "$install_dir" ynh_setup_source --dest_dir="$install_dir/extend/addon/zaddons" --source_id="app_addons" - - #git clone https://codeberg.org/zot-archive/zap-addons.git $install_dir/extend/addon/zaddons --quiet filelist=(`ls extend/addon/zaddons`) cd addon for a in "${filelist[@]}" ; do From bf885522e0e8708348f361369cc1f43186193101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=CC=81ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Fri, 17 Nov 2023 22:20:26 +0100 Subject: [PATCH 19/21] Update htconfig.php --- conf/htconfig.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/htconfig.php b/conf/htconfig.php index a2ad41c..e737876 100644 --- a/conf/htconfig.php +++ b/conf/htconfig.php @@ -17,7 +17,7 @@ $db_port = 0; // leave 0 for default or set your port $db_user = '__DB_USER__'; $db_pass = '__DB_PWD__'; $db_data = '__DB_NAME__'; -$db_type = __DB_TYPE__; // use 1 for postgres, 0 for mysql +$db_type = 1; // use 1 for postgres, 0 for mysql /* * Notice: Many of the following settings will be available in the admin panel From 1729680496d6bfb51909e9dc0f4de101e7b2fb3b Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 18 Nov 2023 07:49:59 +0100 Subject: [PATCH 20/21] cleaning --- doc/DESCRIPTION.md | 2 +- doc/DESCRIPTION_fr.md | 13 +++++++++++++ tests.toml | 8 ++++---- 3 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 doc/DESCRIPTION_fr.md diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md index e561e61..a0d6963 100644 --- a/doc/DESCRIPTION.md +++ b/doc/DESCRIPTION.md @@ -1,4 +1,4 @@ -[Zap](https://zotlabs.com/zap/) is an an ethical alternative to Fediverse that provides powerful features for creating interconnected websites featuring a decentralized identity, communications, and permissions framework built using common webserver technology. +Zap is an an ethical alternative to Fediverse that provides powerful features for creating interconnected websites featuring a decentralized identity, communications, and permissions framework built using common webserver technology. Compatible with **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzilla**, **Funkwhale**, **Peertube**, **Plume**, **WriteFreely** and many, many more. diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md new file mode 100644 index 0000000..4bdda53 --- /dev/null +++ b/doc/DESCRIPTION_fr.md @@ -0,0 +1,13 @@ +Zap est une alternative éthique à Fediverse qui fournit des fonctionnalités puissantes pour créer des sites Web interconnectés dotés d'un cadre décentralisé d'identité, de communications et d'autorisations construit à l'aide d'une technologie de serveur Web commune. + +Compatible avec **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzilla**, **Funkwhale**, **Peertube**, **Plume**, **WriteFreely** et bien d'autres encore. + +## Caractéristiques uniques de ZAP + +- **Groupes** : publics, privés et modérés. +- **Événements** : Calendrier et participation ; notifications d'anniversaire automatiques pour les amis utilisant cette fonctionnalité. +- Stockage **Cloud** : stockage de fichiers réseau intégré intégré à l'accès aux réseaux sociaux. +- **Éditeur** : Prend en charge à la fois le markdown et le bbcode. Utilisez l'un ou les deux, si vous le souhaitez. +- **Partager** : faites glisser et déposez un certain nombre d'éléments différents tels que des fichiers, des photos, des pages Web, des cartes, des numéros de téléphone pour les partager. +- **Listes** : parfois appelées cercles ou aspects, cela vous permet de définir vos propres groupes d'amis liés et de communiquer avec eux en tant que groupe privé. +- **Extend** : modifiez ou mettez à niveau les fonctionnalités de votre logiciel comme vous le souhaitez en installant des fonctionnalités supplémentaires à partir des modules complémentaires et de la collection d'applications gratuites. \ No newline at end of file diff --git a/tests.toml b/tests.toml index 1940614..b55cdd8 100644 --- a/tests.toml +++ b/tests.toml @@ -2,8 +2,8 @@ test_format = 1.0 [default] - # ------------------------------- - # Default args to use for install - # ------------------------------- + # ------------ + # Tests to run + # ------------ - args.database = "postgresql" + exclude = ["change_url"] \ No newline at end of file From 5a731328f70ee77016679929039300a8dc80decf Mon Sep 17 00:00:00 2001 From: yunohost-bot Date: Sat, 18 Nov 2023 06:50:06 +0000 Subject: [PATCH 21/21] Auto-update README --- README.md | 2 +- README_fr.md | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index dc913cf..3b63854 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -[Zap](https://zotlabs.com/zap/) is an an ethical alternative to Fediverse that provides powerful features for creating interconnected websites featuring a decentralized identity, communications, and permissions framework built using common webserver technology. +Zap is an an ethical alternative to Fediverse that provides powerful features for creating interconnected websites featuring a decentralized identity, communications, and permissions framework built using common webserver technology. Compatible with **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzilla**, **Funkwhale**, **Peertube**, **Plume**, **WriteFreely** and many, many more. diff --git a/README_fr.md b/README_fr.md index 07987ef..1b956c9 100644 --- a/README_fr.md +++ b/README_fr.md @@ -16,20 +16,19 @@ Si vous n’avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) po ## Vue d’ensemble -[Zap](https://zotlabs.com/zap/) is an an ethical alternative to Fediverse that provides powerful features for creating interconnected websites featuring a decentralized identity, communications, and permissions framework built using common webserver technology. +Zap est une alternative éthique à Fediverse qui fournit des fonctionnalités puissantes pour créer des sites Web interconnectés dotés d'un cadre décentralisé d'identité, de communications et d'autorisations construit à l'aide d'une technologie de serveur Web commune. -Compatible with **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzilla**, **Funkwhale**, **Peertube**, **Plume**, **WriteFreely** and many, many more. +Compatible avec **Mastodon**, **Pleroma**, **Pixelfed**, **Friendica**, **Hubzilla**, **Funkwhale**, **Peertube**, **Plume**, **WriteFreely** et bien d'autres encore. -## Unique Features of ZAP - -- **Groups** : public, private, and moderated. -- **Events** : Calendar and attendance; automatic birthday notifications for friends using this feature. -- **Cloud**storage : Built-in network file storage integrated with social networking access. -- **Editor** : Supports both markdown and bbcode. Use either or both - if you want. -- **Share**: Drag-and-drop a number of different things such as files, photos, webpages, maps, phone numbers to share- them. -- **Lists**: Sometimes referred to as circles or aspects, this lets you define your own groups of related friends and- communicate with them as a private group. -- **Extend** : Change or upgrade your software functionality as desired by installing additional features from addons and- the free app collection. +## Caractéristiques uniques de ZAP +- **Groupes** : publics, privés et modérés. +- **Événements** : Calendrier et participation ; notifications d'anniversaire automatiques pour les amis utilisant cette fonctionnalité. +- Stockage **Cloud** : stockage de fichiers réseau intégré intégré à l'accès aux réseaux sociaux. +- **Éditeur** : Prend en charge à la fois le markdown et le bbcode. Utilisez l'un ou les deux, si vous le souhaitez. +- **Partager** : faites glisser et déposez un certain nombre d'éléments différents tels que des fichiers, des photos, des pages Web, des cartes, des numéros de téléphone pour les partager. +- **Listes** : parfois appelées cercles ou aspects, cela vous permet de définir vos propres groupes d'amis liés et de communiquer avec eux en tant que groupe privé. +- **Extend** : modifiez ou mettez à niveau les fonctionnalités de votre logiciel comme vous le souhaitez en installant des fonctionnalités supplémentaires à partir des modules complémentaires et de la collection d'applications gratuites. **Version incluse :** 21.11.28~ynh2 ## :red_circle: Fonctions indésirables