diff --git a/README.md b/README.md index e217be3..cd53289 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,31 @@ + + # FreshRSS for YunoHost [![Integration level](https://dash.yunohost.org/integration/freshrss.svg)](https://dash.yunohost.org/appci/app/freshrss) ![](https://ci-apps.yunohost.org/ci/badges/freshrss.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/freshrss.maintain.svg) [![Install FreshRSS with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=freshrss) -> *This package allow you to install FreshRSS quickly and simply on a YunoHost server. -If you don't have YunoHost, please see [here](https://yunohost.org/#/install) to know how to install and enjoy it.* +*[Lire ce readme en français.](./README_fr.md)* + +> *This package allows you to install FreshRSS quickly and simply on a YunoHost server. +If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -An efficient but powerful RSS aggregator with a nice and mobile-friendly design, as well as extension and themes support. +RSS aggregator with a nice and mobile-friendly design -**Shipped version:** 1.18.0 +**Shipped version:** 1.18.1~ynh1 + +**Demo:** https://demo.freshrss.org ## Screenshots -![](https://freshrss.org/images/screenshot.png) +![](./doc/screenshots/screenshot.png) -## Demo - -* [Official demo](https://demo.freshrss.org) +## Disclaimers / important information ## Configuration @@ -28,32 +35,24 @@ API (mini) How To: * Check that the API is working: https://example.net/rss/api/greader.php * Setup your client with: username: ynh user, password: the password you just setup, URL https://example.tld/rss/api/greader.php +## Documentation and resources -## Documentation +* Official app website: http://freshrss.org/ +* Official user documentation: https://yunohost.org/apps +* Official admin documentation: https://freshrss.github.io/FreshRSS/ +* Upstream app code repository: https://github.com/FreshRSS/FreshRSS +* YunoHost documentation for this app: https://yunohost.org/app_freshrss +* Report a bug: https://github.com/YunoHost-Apps/freshrss_ynh/issues - * Official documentation: https://freshrss.github.io/FreshRSS/ +## Developer info -#### Supported architectures +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing). -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/freshrss%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/freshrss/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/freshrss%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/freshrss/) - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/freshrss_ynh/issues - * App website: https://freshrss.org/ - * Upstream app repository: https://github.com/FreshRSS/FreshRSS - * YunoHost website: https://yunohost.org/ - ---- - -## Developers info - -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing). - -To try the testing branch, please proceed like this: +To try the testing branch, please proceed like that. ``` sudo yunohost app install https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing --debug or sudo yunohost app upgrade freshrss -u https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md new file mode 100644 index 0000000..2a1f242 --- /dev/null +++ b/README_fr.md @@ -0,0 +1,54 @@ +# FreshRSS pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/freshrss.svg)](https://dash.yunohost.org/appci/app/freshrss) ![](https://ci-apps.yunohost.org/ci/badges/freshrss.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/freshrss.maintain.svg) +[![Installer FreshRSS avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=freshrss) + +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* + +> *Ce package vous permet d'installer FreshRSS rapidement et simplement sur un serveur YunoHost. +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* + +## Vue d'ensemble + +Agrégateur de flux RSS avec une interface adaptée au mobile + +**Version incluse :** 1.18.1~ynh1 + +**Démo :** https://demo.freshrss.org + +## Captures d'écran + +![](./doc/screenshots/screenshot.png) + +## Avertissements / informations importantes + +## Configuration + +API (mini) How To: +* Into your user profile: Settings > profil +* Setup an API password +* Check that the API is working: https://example.net/rss/api/greader.php +* Setup your client with: username: ynh user, password: the password you just setup, URL https://example.tld/rss/api/greader.php + +## Documentations et ressources + +* Site officiel de l'app : http://freshrss.org/ +* Documentation officielle utilisateur : https://yunohost.org/apps +* Documentation officielle de l'admin : https://freshrss.github.io/FreshRSS/ +* Dépôt de code officiel de l'app : https://github.com/FreshRSS/FreshRSS +* Documentation YunoHost pour cette app : https://yunohost.org/app_freshrss +* Signaler un bug : https://github.com/YunoHost-Apps/freshrss_ynh/issues + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing --debug +ou +sudo yunohost app upgrade freshrss -u https://github.com/YunoHost-Apps/freshrss_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/check_process b/check_process index f84104e..f78678a 100644 --- a/check_process +++ b/check_process @@ -1,17 +1,17 @@ ;; Test complet - auto_remove=1 ; Manifest domain="domain.tld" path="/path" admin="homer" + is_public=1 language="fr" ; Checks pkg_linter=1 setup_sub_dir=1 setup_root=1 setup_nourl=0 - setup_private=0 - setup_public=0 + setup_private=1 + setup_public=1 upgrade=1 upgrade=1 from_commit=0b1c3be0716e4800f2ed6f5b3065f707ed67b6bf backup_restore=1 diff --git a/conf/app.src b/conf/app.src index 3ae0e54..6741ea2 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://github.com/FreshRSS/FreshRSS/archive/1.18.0.tar.gz -SOURCE_SUM=41698e8b1417a12440a8c4d7cc2c9ea40a581f2ad89475ded7d372a87b6b7120 +SOURCE_URL=https://github.com/FreshRSS/FreshRSS/archive/1.18.1.tar.gz +SOURCE_SUM=162b0be7bdc0e51022061c895b46e7a8f229588d530b196f06ddd8d9aaaf248a SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..bb57452 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,7 @@ +## Configuration + +API (mini) How To: +* Into your user profile: Settings > profil +* Setup an API password +* Check that the API is working: https://example.net/rss/api/greader.php +* Setup your client with: username: ynh user, password: the password you just setup, URL https://example.tld/rss/api/greader.php diff --git a/doc/screenshots/screenshot.png b/doc/screenshots/screenshot.png new file mode 100644 index 0000000..2bcd6e6 Binary files /dev/null and b/doc/screenshots/screenshot.png differ diff --git a/manifest.json b/manifest.json index 602050e..034839b 100644 --- a/manifest.json +++ b/manifest.json @@ -6,15 +6,23 @@ "en": "RSS aggregator with a nice and mobile-friendly design", "fr": "Agrégateur de flux RSS avec une interface adaptée au mobile" }, - "version": "1.18.0~ynh1", + "version": "1.18.1~ynh1", "url": "http://freshrss.org/", + "upstream": { + "license": "AGPL-3.0-only", + "website": "http://freshrss.org/", + "demo": "https://demo.freshrss.org", + "admindoc": "https://freshrss.github.io/FreshRSS/", + "userdoc": "https://yunohost.org/apps", + "code": "https://github.com/FreshRSS/FreshRSS" + }, "license": "AGPL-3.0-only", "maintainer": { "name": "plopoyop", "email": "plopoyop@gmail.com" }, "requirements": { - "yunohost": ">= 4.1.7" + "yunohost": ">= 4.2.0" }, "multi_instance": true, "services": [ @@ -41,6 +49,11 @@ "optional": false, "example": "homer" }, + { + "name": "is_public", + "type": "boolean", + "default": true + }, { "name": "language", "type": "string", diff --git a/scripts/_common.sh b/scripts/_common.sh index 71401d9..77aad72 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -10,17 +10,6 @@ YNH_PHP_VERSION="7.3" extra_php_dependencies="php${YNH_PHP_VERSION}-gd php${YNH_PHP_VERSION}-zip php${YNH_PHP_VERSION}-dom php${YNH_PHP_VERSION}-mbstring php${YNH_PHP_VERSION}-gmp php${YNH_PHP_VERSION}-mysql php${YNH_PHP_VERSION}-sqlite3 php${YNH_PHP_VERSION}-curl php${YNH_PHP_VERSION}-intl php${YNH_PHP_VERSION}-xml" -#================================================= -# PERSONAL HELPERS -#================================================= - -function set_permissions { - chown -R root:$app $final_path - chmod -R g=u,g-w,o-rwx $final_path - chown -R $app:$app $final_path/{data,extensions} - setfacl -n -R -m u:www-data:rx -m d:u:www-data:rx $final_path -} - #================================================= # EXPERIMENTAL HELPERS #================================================= diff --git a/scripts/change_url b/scripts/change_url index f00a925..2a27927 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -128,7 +128,7 @@ fi # SPECIFIC MODIFICATIONS #================================================= -sudo -u $app $final_path/cli/reconfigure.php --auth_type http_auth --environment production --base_url https://$domain$path_url --title FreshRSS --api_enabled --db-type mysql --db-host localhost --db-user $db_name --db-password $db_pwd --db-base $db_name +ynh_exec_as $app $final_path/cli/reconfigure.php --auth_type http_auth --environment production --base_url https://$domain$path_url --title FreshRSS --api_enabled --db-type mysql --db-host localhost --db-user $db_name --db-password $db_pwd --db-base $db_name #================================================= # GENERIC FINALIZATION diff --git a/scripts/install b/scripts/install index 93bb6b6..794adf2 100755 --- a/scripts/install +++ b/scripts/install @@ -23,6 +23,7 @@ ynh_abort_if_errors domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH admin=$YNH_APP_ARG_ADMIN +is_public=$YNH_APP_ARG_IS_PUBLIC language=$YNH_APP_ARG_LANGUAGE app=$YNH_APP_INSTANCE_NAME @@ -63,7 +64,7 @@ ynh_install_app_dependencies $pkg_dependencies ynh_script_progression --message="Configuring system user..." # Create a system user -ynh_system_user_create --username=$app +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # CREATE A MYSQL DATABASE @@ -84,7 +85,9 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" -set_permissions +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # NGINX CONFIGURATION @@ -108,7 +111,7 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= ynh_script_progression --message="FreshRSS setup script..." -sudo -u $app $final_path/cli/do-install.php --default_user $admin --auth_type http_auth --environment production --base_url https://$domain$path_url --title FreshRSS --api_enabled --db-type mysql --db-host localhost --db-user $db_name --db-password $db_pwd --db-base $db_name +ynh_exec_as $app $final_path/cli/do-install.php --default_user $admin --auth_type http_auth --environment production --base_url https://$domain$path_url --title FreshRSS --api_enabled --db-type mysql --db-host localhost --db-user $db_name --db-password $db_pwd --db-base $db_name #================================================= # CREATE DEDICATED USER @@ -118,7 +121,7 @@ ynh_script_progression --message="Creating users..." for myuser in $(ynh_user_list) do user_token=$(ynh_string_random) - sudo -u $app $final_path/cli/create-user.php --user $myuser --language $language --token $user_token + ynh_exec_as $app $final_path/cli/create-user.php --user $myuser --language $language --token $user_token done #================================================= @@ -134,12 +137,13 @@ chmod 644 "/etc/cron.d/$app" #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring permissions..." --weight=1 -#skip api directory -ynh_app_setting_set --app="$app" --key=skipped_uris --value="/api/,/scripts/api.js" -ynh_app_setting_delete --app="$app" --key=unprotected_regex -ynh_app_setting_delete --app="$app" --key=unprotected_uris +# Make app public if necessary +if [ $is_public -eq 1 ] +then + ynh_permission_update --permission="main" --add="visitors" +fi #================================================= # RELOAD NGINX @@ -153,4 +157,3 @@ ynh_systemd_action --service_name=nginx --action=reload #================================================= ynh_script_progression --message="Installation of $app completed" --last - diff --git a/scripts/restore b/scripts/restore index d324575..bb5a383 100644 --- a/scripts/restore +++ b/scripts/restore @@ -55,7 +55,7 @@ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_script_progression --message="Recreating the dedicated system user..." # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # REINSTALL DEPENDENCIES @@ -72,7 +72,9 @@ ynh_script_progression --message="Restoring the app main directory..." ynh_restore_file --origin_path="$final_path" -set_permissions +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # RESTORE THE PHP-FPM CONFIGURATION diff --git a/scripts/upgrade b/scripts/upgrade index 06cbe61..af3c219 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -57,6 +57,13 @@ if [ -z "$final_path" ]; then ynh_app_setting_set --app=$app --key=final_path --value=$final_path fi +# Cleaning legacy permissions +if ynh_legacy_permissions_exists; then + ynh_legacy_permissions_delete_all + + ynh_app_setting_delete --app=$app --key=is_public +fi + #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= @@ -79,12 +86,12 @@ ynh_abort_if_errors ynh_script_progression --message="Making sure dedicated system user exists..." # Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # UPGRADE DEPENDENCIES #================================================= -ynh_script_progression --message="Upgrading dependencies..." --weight=1 +ynh_script_progression --message="Upgrading dependencies..." ynh_install_app_dependencies $pkg_dependencies @@ -95,8 +102,8 @@ ynh_script_progression --message="Upgrading source files..." # Download, check integrity, uncompress and patch the source from app.src # into tmp dir -tmp_path=$(mktemp -d) -ynh_setup_source "$tmp_path" +# tmp_path=$(mktemp -d) +# ynh_setup_source "$tmp_path" #================================================= # NGINX CONFIGURATION @@ -118,21 +125,33 @@ ynh_add_fpm_config --package="$extra_php_dependencies" # SPECIFIC UPGRADE #================================================= -#old version cleanup -if [ -f $final_path/data/user.php.dist ]; then - ynh_secure_remove $final_path/data/user.php.dist +if [ "$upgrade_type" == "UPGRADE_APP" ] +then + 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" --keep="$final_path/data/config.php $final_path/data/users/. $final_path/extensions/." fi -#restore config -ynh_secure_remove $tmp_path/data/do-install.txt -cp $final_path/data/config.php $tmp_path/data/config.php -cp -r $final_path/data/users/. $tmp_path/data/users/ -cp -r $final_path/extensions/. $tmp_path/extensions/ +# #old version cleanup +# if [ -f $final_path/data/user.php.dist ]; then +# ynh_secure_remove $final_path/data/user.php.dist +# fi -# Set permissions to freshrss directory -# Clean up existing files and copy new files to the right place -ynh_secure_remove "$final_path" -cp -rp "$tmp_path" "$final_path" +# #restore config +# ynh_secure_remove $tmp_path/data/do-install.txt +# cp $final_path/data/config.php $tmp_path/data/config.php +# cp -r $final_path/data/users/. $tmp_path/data/users/ +# cp -r $final_path/extensions/. $tmp_path/extensions/ + +# # Set permissions to freshrss directory +# # Clean up existing files and copy new files to the right place +# ynh_secure_remove "$final_path" +# cp -rp "$tmp_path" "$final_path" + +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # CRON SETUP @@ -152,19 +171,8 @@ fi # SECURE FILES AND DIRECTORIES #================================================= -set_permissions - # reconfigure application with latest parameters -sudo -u $app $final_path/cli/reconfigure.php --default_user $admin --auth_type http_auth --environment production --base_url https://$domain$path_url --title FreshRSS --api_enabled --db-type mysql --db-host localhost --db-user $db_name --db-password $db_pwd --db-base $db_name - -#================================================= -# SETUP SSOWAT -#================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." - -ynh_app_setting_set --app="$app" --key=skipped_uris --value="/api/,/scripts/api.js" -ynh_app_setting_delete --app="$app" --key=unprotected_regex -ynh_app_setting_delete --app="$app" --key=unprotected_uris +ynh_exec_as $app $final_path/cli/reconfigure.php --default_user $admin --auth_type http_auth --environment production --base_url https://$domain$path_url --title FreshRSS --api_enabled --db-type mysql --db-host localhost --db-user $db_name --db-password $db_pwd --db-base $db_name #================================================= # RELOAD NGINX AND PHP-FPM