From c94205d7dd3857ee1edaf2fd5fff73ceed9b3231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 11 Apr 2021 17:36:30 +0200 Subject: [PATCH 1/9] Testing (#56) * Upgrade to 0.05.13 (#55) * Fix permissions --- README.md | 4 ++-- README_fr.md | 4 ++-- check_process | 3 +-- conf/app.src | 4 ++-- manifest.json | 16 ++-------------- pull_request_template.md | 4 +--- scripts/change_url | 3 ++- scripts/install | 14 +++++++------- scripts/upgrade | 23 ++++++++++------------- 9 files changed, 29 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 6dd478c..908b417 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ The administrator of the Lufi instance you use will not be able to see what is i The encryption key part of the URL is a anchor (Cf. [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), that means this part is only processed client-side and does not reach the server. :-) -**Shipped version:** 0.05.12 +**Shipped version:** 0.05.13 ## Screenshots @@ -33,7 +33,7 @@ The encryption key part of the URL is a anchor (Cf. [Fragment Identifier](https: ## Documentation * Official documentation: https://framagit.org/luc/lufi/wikis/home - * YunoHost documentation: https://yunohost.org/#/app_lufi + * YunoHost documentation: https://yunohost.org/en/app_lufi ## YunoHost specific features diff --git a/README_fr.md b/README_fr.md index 30b3733..eea48f0 100644 --- a/README_fr.md +++ b/README_fr.md @@ -15,7 +15,7 @@ Est-ce tout ? Non. Tous les fichiers sont chiffrés par le navigateur ! L'admini La clé de déchiffrement est une ancre (voir [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), ce qui signifie que cette partie n'est traitée que par le client et n'atteint pas le serveur. :-) -**Version incluse:** 0.05.12 +**Version incluse:** 0.05.13 ## Captures d'écran @@ -32,7 +32,7 @@ La clé de déchiffrement est une ancre (voir [Fragment Identifier](https://en.w ## Documentation * Documentation officielle : https://framagit.org/luc/lufi/wikis/home - * Documentation YunoHost : https://yunohost.org/#/app_lufi_fr + * Documentation YunoHost : https://yunohost.org/fr/app_lufi ## Caractéristiques spécifiques YunoHost diff --git a/check_process b/check_process index ba56559..1986361 100644 --- a/check_process +++ b/check_process @@ -4,7 +4,7 @@ domain="domain.tld" (DOMAIN) path="/path" (PATH) max_file_size=100 - is_public="Yes" (PUBLIC|public=Yes|private=No) + is_public=1 (PUBLIC|public=1|private=0) admin="john" (USER) ; Checks pkg_linter=1 @@ -18,7 +18,6 @@ upgrade=1 from_commit=23e84578464b1fa09f79c98b6a9b5f19bbcf83f3 backup_restore=1 multi_instance=1 - port_already_use=1 (8095) change_url=1 ;;; Upgrade options ; commit=23e84578464b1fa09f79c98b6a9b5f19bbcf83f3 diff --git a/conf/app.src b/conf/app.src index 06c8bdc..f6e8c70 100644 --- a/conf/app.src +++ b/conf/app.src @@ -1,5 +1,5 @@ -SOURCE_URL=https://framagit.org/fiat-tux/hat-softwares/lufi/-/archive/0.05.12/lufi-0.05.12.tar.gz -SOURCE_SUM=e51fac06a79e4b38527a9a5c9d8caddbad75f26d7e2b95f81543065969f0679e +SOURCE_URL=https://framagit.org/fiat-tux/hat-softwares/lufi/-/archive/0.05.13/lufi-0.05.13.tar.gz +SOURCE_SUM=c43c19c9901bb4b0d103980a61c3b1d9458a54f23b0b1c2b42c9706073df4d5a SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.gz SOURCE_IN_SUBDIR=true diff --git a/manifest.json b/manifest.json index e67bcd6..f82f919 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Self hosting files and sharing anonymous application", "fr": "Application d'hébergement et de partage de fichiers anonyme" }, - "version": "0.05.12~ynh1", + "version": "0.05.13~ynh1", "url": "https://git.framasoft.org/luc/lufi", "license": "AGPL-3.0-or-later", "maintainer": { @@ -14,7 +14,7 @@ "email": "win10@tutanota.com, cyp@rouquin.me" }, "requirements": { - "yunohost": ">= 4.0.0" + "yunohost": ">= 4.1.7" }, "multi_instance": true, "services": [ @@ -25,19 +25,11 @@ { "name": "domain", "type": "domain", - "ask": { - "en": "Choose a domain name for Lufi", - "fr": "Choisissez un nom de domaine pour Lufi" - }, "example": "domain.org" }, { "name": "path", "type": "path", - "ask": { - "en": "Choose a path for Lufi", - "fr": "Choisissez un chemin pour Lufi" - }, "example": "/lufi", "default": "/lufi" }, @@ -54,10 +46,6 @@ { "name": "is_public", "type": "boolean", - "ask": { - "en": "Is it a public application?", - "fr": "Est-ce une application publique ?" - }, "default": true } ] diff --git a/pull_request_template.md b/pull_request_template.md index 93994e7..6c28fc5 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -13,6 +13,4 @@ ## Package_check results --- -*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* - -[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/lufi_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/lufi_ynh%20PR-NUM-%20(USERNAME)/) +* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"* diff --git a/scripts/change_url b/scripts/change_url index d228ada..a98a4f3 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -146,7 +146,8 @@ ynh_store_file_checksum --file="$config" #================================================= ynh_script_progression --message="Reconfigure SSOwat" -ynh_app_setting_set $app unprotected_uris "/" +ynh_permission_update --permission="main" --add="visitors" + if [ $is_public -eq 0 ] then if [ "$path_url" == "/" ]; then diff --git a/scripts/install b/scripts/install index 1400b24..b3ae194 100644 --- a/scripts/install +++ b/scripts/install @@ -44,8 +44,6 @@ if ! [[ $max_file_size =~ "^[\-0-9]+$" ]] && [ $max_file_size -lt 0 ]; then ynh_die --message="Max file must be a number positive or zero" fi -# Check web path availability -ynh_webpath_available --domain=$domain --path_url=$path_url # Register (book) web path ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url @@ -160,9 +158,10 @@ popd #================================================= ynh_script_progression --message="Setuping a cron..." -cp ../conf/cron_lufi /etc/cron.d/$app -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path/" --target_file="/etc/cron.d/$app" -ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="/etc/cron.d/$app" +# cp ../conf/cron_lufi /etc/cron.d/$app +# ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path/" --target_file="/etc/cron.d/$app" +# ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="/etc/cron.d/$app" +ynh_add_config --template="../conf/cron_lufi" --destination="/etc/cron.d/$app" chmod +x $final_path/script/lufi #================================================= @@ -209,9 +208,10 @@ ynh_systemd_action --service_name=$app --action="start" --line_match="Creating p #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." +ynh_script_progression --message="Configuring permissions..." + +ynh_permission_update --permission="main" --add="visitors" -ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" if [ $is_public -eq 0 ] then if [ "$path_url" == "/" ]; then diff --git a/scripts/upgrade b/scripts/upgrade index 69d6b20..a47faf4 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -39,15 +39,6 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= ynh_script_progression --message="Ensuring downward compatibility..." -# Fix is_public as a boolean value -if [ "$is_public" = "Yes" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=1 - is_public=1 -elif [ "$is_public" = "No" ]; then - ynh_app_setting_set --app=$app --key=is_public --value=0 - is_public=0 -fi - # If final_path doesn't exist, create it if [ -z "$final_path" ]; then final_path=/var/www/$app @@ -66,6 +57,13 @@ if [ -z "$max_file_size" ]; then ynh_app_setting_set --app=$app --key=max_file_size --value=$max_file_size 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 #================================================= @@ -201,9 +199,7 @@ popd #================================================= ynh_script_progression --message="Setuping cron..." -cp ../conf/cron_lufi /etc/cron.d/$app -ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path/" --target_file="/etc/cron.d/$app" -ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="/etc/cron.d/$app" +ynh_add_config --template="../conf/cron_lufi" --destination="/etc/cron.d/$app" chmod +x $final_path/script/lufi #================================================= @@ -244,7 +240,8 @@ chown -R $app: $final_path #================================================= ynh_script_progression --message="Upgrading SSOwat configuration..." -ynh_app_setting_set --app=$app --key=unprotected_uris --value="/" +ynh_permission_update --permission="main" --add="visitors" + if [ $is_public -eq 0 ] then if [ "$path_url" == "/" ]; then From 43e0f05fb39835b6b6efac946e04027be5f4a2ae Mon Sep 17 00:00:00 2001 From: YunoHost Bot Date: Fri, 4 Jun 2021 13:47:46 +0200 Subject: [PATCH 2/9] [autopatch] Update issue and PR templates (#62) Co-authored-by: Yunohost-Bot <> --- .../ISSUE_TEMPLATE.md | 31 ++++++++++++------- .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++ pull_request_template.md | 16 ---------- 3 files changed, 36 insertions(+), 27 deletions(-) rename issue_template.md => .github/ISSUE_TEMPLATE.md (57%) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 pull_request_template.md diff --git a/issue_template.md b/.github/ISSUE_TEMPLATE.md similarity index 57% rename from issue_template.md rename to .github/ISSUE_TEMPLATE.md index 5b839b9..2729a6b 100644 --- a/issue_template.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Create a report to help us debug, it would be nice to fill the template as much as you can to help us, help you and help us all. +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. --- @@ -8,15 +8,17 @@ about: Create a report to help us debug, it would be nice to fill the template a 1. *Read this whole template first.* 2. *Determine if you are on the right place:* - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* - - *Otherwise, the issue may be due to Lufi itself. Refer to its documentation or repository for help.* - - *If you have a doubt, post here, we will figure it out together.* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* 3. *Delete the italic comments as you write over them below, and remove this guide.* --- -**Describe the bug** +### Describe the bug + *A clear and concise description of what the bug is.* -**Versions** +### Context + - Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* - YunoHost version: x.x.x - I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* @@ -25,11 +27,11 @@ about: Create a report to help us debug, it would be nice to fill the template a - Using, or trying to install package version/branch: - If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* -**To Reproduce** -*Steps to reproduce the behavior.* +### Steps to reproduce + - *If you performed a command from the CLI, the command itself is enough. For example:* ```sh - sudo yunohost app install lufi + sudo yunohost app install the_app ``` - *If you used the webadmin, please perform the equivalent command from the CLI first.* - *If the error occurs in your browser, explain what you did:* @@ -38,9 +40,16 @@ about: Create a report to help us debug, it would be nice to fill the template a 3. *Scroll down to '...'* 4. *See error* -**Expected behavior** +### Expected behavior + *A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* -**Logs** -*After a failed command, YunoHost makes the log available to you, but also to others, thanks to `yunohost log display [log name] --share`. The actual command, with the correct log name, is displayed at the end of the failed attempt in the CLI. Execute it and copy here the share link it outputs.* +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + *If applicable and useful, add screenshots to help explain your problem.* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ef70e18 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Problem + +- *Description of why you made this PR* + +## Solution + +- *And how do you fix that problem* + +## PR Status + +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) + +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 6c28fc5..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,16 +0,0 @@ -## Problem -- *Description of why you made this PR* - -## Solution -- *And how do you fix that problem* - -## PR Status -- [ ] Code finished. -- [ ] Tested with Package_check. -- [ ] Fix or enhancement tested. -- [ ] Upgrade from last version tested. -- [ ] Can be reviewed and tested. - -## Package_check results ---- -* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"* From 95fe51b6b4291ee5a335d817121ad57789da73ef Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 4 Jun 2021 13:49:55 +0200 Subject: [PATCH 3/9] Upgrade --- check_process | 8 ++++---- manifest.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/check_process b/check_process index 1986361..e177dbf 100644 --- a/check_process +++ b/check_process @@ -1,11 +1,11 @@ ;; Nom du test auto_remove=1 ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) + domain="domain.tld" + path="/path" max_file_size=100 - is_public=1 (PUBLIC|public=1|private=0) - admin="john" (USER) + is_public=1 + admin="john" ; Checks pkg_linter=1 setup_sub_dir=1 diff --git a/manifest.json b/manifest.json index f82f919..8830c91 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Self hosting files and sharing anonymous application", "fr": "Application d'hébergement et de partage de fichiers anonyme" }, - "version": "0.05.13~ynh1", + "version": "0.05.13~ynh2", "url": "https://git.framasoft.org/luc/lufi", "license": "AGPL-3.0-or-later", "maintainer": { @@ -14,7 +14,7 @@ "email": "win10@tutanota.com, cyp@rouquin.me" }, "requirements": { - "yunohost": ">= 4.1.7" + "yunohost": ">= 4.2.0" }, "multi_instance": true, "services": [ From 81225577c024edafe65af9e68268f120f9bfef85 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Fri, 4 Jun 2021 14:00:53 +0200 Subject: [PATCH 4/9] Add templates --- doc/DISCLAIMER.md | 3 +++ doc/DISCLAIMER_fr.md | 3 +++ doc/screenshots/screenshot_lufi_1.png | Bin 0 -> 23543 bytes manifest.json | 8 ++++++++ 4 files changed, 14 insertions(+) create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md create mode 100644 doc/screenshots/screenshot_lufi_1.png diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..1dcb41b --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,3 @@ +## Configuration + +* How to configure this app: a plain file at `/var/www/lufi/lufi.conf` with SSH. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..cc1be3d --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,3 @@ +## Configuration + +* Comment configurer cette application: un fichier brut `/var/www/lufi/lufi.conf` en SSH. diff --git a/doc/screenshots/screenshot_lufi_1.png b/doc/screenshots/screenshot_lufi_1.png new file mode 100644 index 0000000000000000000000000000000000000000..07d3dc04cc9aeb8cff982231d8598d0ceb4a4c03 GIT binary patch literal 23543 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 PoSTgd%=L-7cOLx Date: Fri, 4 Jun 2021 12:01:00 +0000 Subject: [PATCH 5/9] Auto-update README --- README.md | 53 +++++++++++++++++++-------------------------------- README_fr.md | 54 ++++++++++++++++++---------------------------------- 2 files changed, 39 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 16157ee..9a41d04 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ + + # Lufi for YunoHost [![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/lufi.maintain.svg) @@ -5,55 +10,35 @@ *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Lufi quickly and simply on a YunoHost server. +> *This package allows you to install Lufi 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 -It stores files and allows you to download them. -Is that all? No. All the files are encrypted **by the browser**! It means that your files **never** leave your computer unencrypted. -The administrator of the Lufi instance you use will not be able to see what is in your file, neither will your network administrator, or your ISP. +Self hosting files and sharing anonymous application -The encryption key part of the URL is a anchor (Cf. [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), that means this part is only processed client-side and does not reach the server. :-) +**Shipped version:** 0.05.13~ynh2 -**Shipped version:** 0.05.13 +**Demo:** https://demo.lufi.io/ ## Screenshots -![](https://framalibre.org/sites/default/files/screenshot_lufi_1.png) +![](./doc/screenshots/screenshot_lufi_1.png) -## Demo - -* [Official demo](https://demo.lufi.io/) +## Disclaimers / important information ## Configuration * How to configure this app: a plain file at `/var/www/lufi/lufi.conf` with SSH. -## Documentation +## Documentation and resources - * Official documentation: https://framagit.org/luc/lufi/wikis/home - * YunoHost documentation: https://yunohost.org/en/app_lufi - -## YunoHost specific features - -#### Multi-user support - -Are LDAP and HTTP auth supported? **Yes** -Can the app be used by multiple users? **Yes** - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/) - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/lufi_ynh/issues - * Upstream app repository: https://framagit.org/fiat-tux/hat-softwares/lufi - * YunoHost website: https://yunohost.org/ - ---- +* Official app website: https://example.com +* Official user documentation: https://yunohost.org/en/app_lufi +* Official admin documentation: https://framagit.org/luc/lufi/wikis/home +* Upstream app code repository: https://framagit.org/fiat-tux/hat-softwares/lufi +* YunoHost documentation for this app: https://yunohost.org/app_lufi +* Report a bug: https://github.com/YunoHost-Apps/lufi_ynh/issues ## Developer info @@ -65,3 +50,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh/tree/testing or sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index d1ede40..6dbb47c 100644 --- a/README_fr.md +++ b/README_fr.md @@ -3,56 +3,38 @@ [![Niveau d'intégration](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/lufi.maintain.svg) [![Installer Lufi avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=lufi) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* -> *Ce package vous permet d'installer Lufi rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* +> *Ce package vous permet d'installer Lufi 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 -Il stocke vos fichiers et vous permet de les télécharger. -Est-ce tout ? Non. Tous les fichiers sont chiffrés par le navigateur ! L'administrateur de l'instance Lufi ne pourra pas voir quel est votre administrateur réseau ou votre FAI. +Application d'hébergement et de partage de fichiers anonyme -La clé de déchiffrement est une ancre (voir [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), ce qui signifie que cette partie n'est traitée que par le client et n'atteint pas le serveur. :-) +**Version incluse :** 0.05.13~ynh2 -**Version incluse:** 0.05.13 +**Démo :** https://demo.lufi.io/ ## Captures d'écran -![](https://framalibre.org/sites/default/files/screenshot_lufi_1.png) +![](./doc/screenshots/screenshot_lufi_1.png) -## Démo - -* [Démo officielle](https://demo.lufi.io/) +## Avertissements / informations importantes ## Configuration -* Comment configurer cette application: un fichier brut `/var/www/lufi/lufi.conf` en SSH. +* Comment configurer cette application: un fichier brut `/var/www/lufi/lufi.conf` en SSH. -## Documentation +## Documentations et ressources - * Documentation officielle : https://framagit.org/luc/lufi/wikis/home - * Documentation YunoHost : https://yunohost.org/fr/app_lufi - -## Caractéristiques spécifiques YunoHost - -#### Support multi-utilisateur - -* L'authentification LDAP et HTTP est-elle prise en charge ? **Oui** -* L'application peut-elle être utilisée par plusieurs utilisateurs ? **Oui** - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/) - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/lufi_ynh/issues - * Dépôt de l'application principale : https://framagit.org/fiat-tux/hat-softwares/lufi - * Site web YunoHost : https://yunohost.org/ - ---- +* Site officiel de l'app : https://example.com +* Documentation officielle utilisateur : https://yunohost.org/en/app_lufi +* Documentation officielle de l'admin : https://framagit.org/luc/lufi/wikis/home +* Dépôt de code officiel de l'app : https://framagit.org/fiat-tux/hat-softwares/lufi +* Documentation YunoHost pour cette app : https://yunohost.org/app_lufi +* Signaler un bug : https://github.com/YunoHost-Apps/lufi_ynh/issues ## Informations pour les développeurs @@ -64,3 +46,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh/tree/testing ou sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From b80a3b6062a65cdc4d8d14331ce32be20a806be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sat, 5 Jun 2021 17:46:03 +0200 Subject: [PATCH 6/9] Testing (#61) * Add templates --- .../ISSUE_TEMPLATE.md | 31 +++++--- .github/PULL_REQUEST_TEMPLATE.md | 16 ++++ README.md | 53 +++++-------- README_fr.md | 54 +++++-------- check_process | 8 +- doc/DISCLAIMER.md | 3 + doc/DISCLAIMER_fr.md | 3 + doc/screenshots/screenshot_lufi_1.png | Bin 0 -> 23543 bytes manifest.json | 12 ++- pull_request_template.md | 16 ---- scripts/change_url | 5 +- scripts/install | 22 ++--- scripts/remove | 10 --- scripts/restore | 14 ++-- scripts/upgrade | 75 +++++------------- 15 files changed, 139 insertions(+), 183 deletions(-) rename issue_template.md => .github/ISSUE_TEMPLATE.md (57%) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 doc/DISCLAIMER.md create mode 100644 doc/DISCLAIMER_fr.md create mode 100644 doc/screenshots/screenshot_lufi_1.png delete mode 100644 pull_request_template.md diff --git a/issue_template.md b/.github/ISSUE_TEMPLATE.md similarity index 57% rename from issue_template.md rename to .github/ISSUE_TEMPLATE.md index 5b839b9..2729a6b 100644 --- a/issue_template.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Create a report to help us debug, it would be nice to fill the template as much as you can to help us, help you and help us all. +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. --- @@ -8,15 +8,17 @@ about: Create a report to help us debug, it would be nice to fill the template a 1. *Read this whole template first.* 2. *Determine if you are on the right place:* - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* - - *Otherwise, the issue may be due to Lufi itself. Refer to its documentation or repository for help.* - - *If you have a doubt, post here, we will figure it out together.* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* 3. *Delete the italic comments as you write over them below, and remove this guide.* --- -**Describe the bug** +### Describe the bug + *A clear and concise description of what the bug is.* -**Versions** +### Context + - Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* - YunoHost version: x.x.x - I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* @@ -25,11 +27,11 @@ about: Create a report to help us debug, it would be nice to fill the template a - Using, or trying to install package version/branch: - If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* -**To Reproduce** -*Steps to reproduce the behavior.* +### Steps to reproduce + - *If you performed a command from the CLI, the command itself is enough. For example:* ```sh - sudo yunohost app install lufi + sudo yunohost app install the_app ``` - *If you used the webadmin, please perform the equivalent command from the CLI first.* - *If the error occurs in your browser, explain what you did:* @@ -38,9 +40,16 @@ about: Create a report to help us debug, it would be nice to fill the template a 3. *Scroll down to '...'* 4. *See error* -**Expected behavior** +### Expected behavior + *A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* -**Logs** -*After a failed command, YunoHost makes the log available to you, but also to others, thanks to `yunohost log display [log name] --share`. The actual command, with the correct log name, is displayed at the end of the failed attempt in the CLI. Execute it and copy here the share link it outputs.* +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + *If applicable and useful, add screenshots to help explain your problem.* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ef70e18 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Problem + +- *Description of why you made this PR* + +## Solution + +- *And how do you fix that problem* + +## PR Status + +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) + +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) diff --git a/README.md b/README.md index 908b417..9a41d04 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ + + # Lufi for YunoHost [![Integration level](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/lufi.maintain.svg) @@ -5,55 +10,35 @@ *[Lire ce readme en français.](./README_fr.md)* -> *This package allows you to install Lufi quickly and simply on a YunoHost server. +> *This package allows you to install Lufi 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 -It stores files and allows you to download them. -Is that all? No. All the files are encrypted **by the browser**! It means that your files **never** leave your computer unencrypted. -The administrator of the Lufi instance you use will not be able to see what is in your file, neither will your network administrator, or your ISP. +Self hosting files and sharing anonymous application -The encryption key part of the URL is a anchor (Cf. [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), that means this part is only processed client-side and does not reach the server. :-) +**Shipped version:** 0.05.13~ynh2 -**Shipped version:** 0.05.13 +**Demo:** https://demo.lufi.io/ ## Screenshots -![](https://framalibre.org/sites/default/files/screenshot_lufi_1.png) +![](./doc/screenshots/screenshot_lufi_1.png) -## Demo - -* [Official demo](https://demo.lufi.io/) +## Disclaimers / important information ## Configuration * How to configure this app: a plain file at `/var/www/lufi/lufi.conf` with SSH. -## Documentation +## Documentation and resources - * Official documentation: https://framagit.org/luc/lufi/wikis/home - * YunoHost documentation: https://yunohost.org/en/app_lufi - -## YunoHost specific features - -#### Multi-user support - -Are LDAP and HTTP auth supported? **Yes** -Can the app be used by multiple users? **Yes** - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/) - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/lufi_ynh/issues - * Upstream app repository: https://framagit.org/fiat-tux/hat-softwares/lufi - * YunoHost website: https://yunohost.org/ - ---- +* Official app website: https://example.com +* Official user documentation: https://yunohost.org/en/app_lufi +* Official admin documentation: https://framagit.org/luc/lufi/wikis/home +* Upstream app code repository: https://framagit.org/fiat-tux/hat-softwares/lufi +* YunoHost documentation for this app: https://yunohost.org/app_lufi +* Report a bug: https://github.com/YunoHost-Apps/lufi_ynh/issues ## Developer info @@ -65,3 +50,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh/tree/testing or sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index eea48f0..6dbb47c 100644 --- a/README_fr.md +++ b/README_fr.md @@ -3,56 +3,38 @@ [![Niveau d'intégration](https://dash.yunohost.org/integration/lufi.svg)](https://dash.yunohost.org/appci/app/lufi) ![](https://ci-apps.yunohost.org/ci/badges/lufi.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/lufi.maintain.svg) [![Installer Lufi avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=lufi) -*[Read this readme in english.](./README.md)* +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* -> *Ce package vous permet d'installer Lufi rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/#/install) pour apprendre comment l'installer.* +> *Ce package vous permet d'installer Lufi 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 -Il stocke vos fichiers et vous permet de les télécharger. -Est-ce tout ? Non. Tous les fichiers sont chiffrés par le navigateur ! L'administrateur de l'instance Lufi ne pourra pas voir quel est votre administrateur réseau ou votre FAI. +Application d'hébergement et de partage de fichiers anonyme -La clé de déchiffrement est une ancre (voir [Fragment Identifier](https://en.wikipedia.org/wiki/Fragment_identifier)), ce qui signifie que cette partie n'est traitée que par le client et n'atteint pas le serveur. :-) +**Version incluse :** 0.05.13~ynh2 -**Version incluse:** 0.05.13 +**Démo :** https://demo.lufi.io/ ## Captures d'écran -![](https://framalibre.org/sites/default/files/screenshot_lufi_1.png) +![](./doc/screenshots/screenshot_lufi_1.png) -## Démo - -* [Démo officielle](https://demo.lufi.io/) +## Avertissements / informations importantes ## Configuration -* Comment configurer cette application: un fichier brut `/var/www/lufi/lufi.conf` en SSH. +* Comment configurer cette application: un fichier brut `/var/www/lufi/lufi.conf` en SSH. -## Documentation +## Documentations et ressources - * Documentation officielle : https://framagit.org/luc/lufi/wikis/home - * Documentation YunoHost : https://yunohost.org/fr/app_lufi - -## Caractéristiques spécifiques YunoHost - -#### Support multi-utilisateur - -* L'authentification LDAP et HTTP est-elle prise en charge ? **Oui** -* L'application peut-elle être utilisée par plusieurs utilisateurs ? **Oui** - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps.yunohost.org/ci/apps/lufi/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/lufi%20%28Apps%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/lufi/) - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/lufi_ynh/issues - * Dépôt de l'application principale : https://framagit.org/fiat-tux/hat-softwares/lufi - * Site web YunoHost : https://yunohost.org/ - ---- +* Site officiel de l'app : https://example.com +* Documentation officielle utilisateur : https://yunohost.org/en/app_lufi +* Documentation officielle de l'admin : https://framagit.org/luc/lufi/wikis/home +* Dépôt de code officiel de l'app : https://framagit.org/fiat-tux/hat-softwares/lufi +* Documentation YunoHost pour cette app : https://yunohost.org/app_lufi +* Signaler un bug : https://github.com/YunoHost-Apps/lufi_ynh/issues ## Informations pour les développeurs @@ -64,3 +46,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/lufi_ynh/tree/testing ou sudo yunohost app upgrade lufi -u https://github.com/YunoHost-Apps/lufi_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 1986361..e177dbf 100644 --- a/check_process +++ b/check_process @@ -1,11 +1,11 @@ ;; Nom du test auto_remove=1 ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) + domain="domain.tld" + path="/path" max_file_size=100 - is_public=1 (PUBLIC|public=1|private=0) - admin="john" (USER) + is_public=1 + admin="john" ; Checks pkg_linter=1 setup_sub_dir=1 diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..1dcb41b --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,3 @@ +## Configuration + +* How to configure this app: a plain file at `/var/www/lufi/lufi.conf` with SSH. diff --git a/doc/DISCLAIMER_fr.md b/doc/DISCLAIMER_fr.md new file mode 100644 index 0000000..cc1be3d --- /dev/null +++ b/doc/DISCLAIMER_fr.md @@ -0,0 +1,3 @@ +## Configuration + +* Comment configurer cette application: un fichier brut `/var/www/lufi/lufi.conf` en SSH. diff --git a/doc/screenshots/screenshot_lufi_1.png b/doc/screenshots/screenshot_lufi_1.png new file mode 100644 index 0000000000000000000000000000000000000000..07d3dc04cc9aeb8cff982231d8598d0ceb4a4c03 GIT binary patch literal 23543 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 PoSTgd%=L-7cOLx= 4.1.7" + "yunohost": ">= 4.2.0" }, "multi_instance": true, "services": [ diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 6c28fc5..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,16 +0,0 @@ -## Problem -- *Description of why you made this PR* - -## Solution -- *And how do you fix that problem* - -## PR Status -- [ ] Code finished. -- [ ] Tested with Package_check. -- [ ] Fix or enhancement tested. -- [ ] Upgrade from last version tested. -- [ ] Can be reviewed and tested. - -## Package_check results ---- -* An automatic package_check will be launch at https://ci-apps-dev.yunohost.org/, when you add a specific comment to your Pull Request: "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!"* diff --git a/scripts/change_url b/scripts/change_url index a98a4f3..17b4b74 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -141,10 +141,13 @@ else fi ynh_store_file_checksum --file="$config" +chmod 600 $final_path/lufi.conf +chown $app:$app $final_path/lufi.conf + #================================================= # UPDATE SSOWAT #================================================= -ynh_script_progression --message="Reconfigure SSOwat" +ynh_script_progression --message="Reconfiguring permissions..." ynh_permission_update --permission="main" --add="visitors" diff --git a/scripts/install b/scripts/install index b3ae194..918714e 100644 --- a/scripts/install +++ b/scripts/install @@ -76,6 +76,14 @@ ynh_script_progression --message="Installing dependencies..." ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." + +# Create a system user +ynh_system_user_create --username=$app + #================================================= # CREATE A POSTGRESQL DATABASE #================================================= @@ -106,14 +114,6 @@ ynh_script_progression --message="Configuring NGINX web server..." # Create a dedicated NGINX config ynh_add_nginx_config max_file_size -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." - -# Create a system user -ynh_system_user_create --username=$app - #================================================= # SPECIFIC SETUP #================================================= @@ -144,6 +144,9 @@ fi ynh_store_file_checksum --file="$config" +chmod 600 $final_path/lufi.conf +chown $app:$app $final_path/lufi.conf + #================================================= # INSTALL LUFI #================================================= @@ -158,9 +161,6 @@ popd #================================================= ynh_script_progression --message="Setuping a cron..." -# cp ../conf/cron_lufi /etc/cron.d/$app -# ynh_replace_string --match_string="__FINALPATH__" --replace_string="$final_path/" --target_file="/etc/cron.d/$app" -# ynh_replace_string --match_string="__USER__" --replace_string="$app" --target_file="/etc/cron.d/$app" ynh_add_config --template="../conf/cron_lufi" --destination="/etc/cron.d/$app" chmod +x $final_path/script/lufi diff --git a/scripts/remove b/scripts/remove index 7640fa9..0cca7d3 100644 --- a/scripts/remove +++ b/scripts/remove @@ -83,16 +83,6 @@ ynh_script_progression --message="Removing logrotate configuration..." # Remove the app-specific logrotate config ynh_remove_logrotate -#================================================= -# CLOSE A PORT -#================================================= - -if yunohost firewall list | grep -q "\- $port$" -then - ynh_script_progression --message="Closing port $port..." - ynh_exec_warn_less yunohost firewall disallow TCP $port -fi - #================================================= # SPECIFIC REMOVE #================================================= diff --git a/scripts/restore b/scripts/restore index 8790bf1..a6153c4 100644 --- a/scripts/restore +++ b/scripts/restore @@ -53,13 +53,6 @@ ynh_script_progression --message="Restoring NGINX configuration..." ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# RESTORE THE APP MAIN DIR -#================================================= -ynh_script_progression --message="Restoring the app main directory..." - -ynh_restore_file --origin_path="$final_path" - #================================================= # RECREATE THE DEDICATED USER #================================================= @@ -68,6 +61,13 @@ ynh_script_progression --message="Recreating the dedicated system user..." # Create the dedicated user (if not existing) ynh_system_user_create --username=$app +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring the app main directory..." + +ynh_restore_file --origin_path="$final_path" + #================================================= # RESTORE USER RIGHTS #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index a47faf4..bea6a94 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -39,19 +39,18 @@ upgrade_type=$(ynh_check_app_version_changed) #================================================= ynh_script_progression --message="Ensuring downward compatibility..." +# 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 +fi + # 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 fi -if [ -z "$db_pwd" ]; then - # Need to install new dependencies before creating the new database - need_migration_from_sqlite_to_psql=1 -else - need_migration_from_sqlite_to_psql=0 -fi - if [ -z "$max_file_size" ]; then max_file_size=100 # 100 Mo ynh_app_setting_set --app=$app --key=max_file_size --value=$max_file_size @@ -86,7 +85,15 @@ ynh_abort_if_errors #================================================= ynh_script_progression --message="Stopping a systemd service..." -ynh_systemd_action --service_name=$app --action="stop" --log_path="$final_path/log/production.log" +ynh_systemd_action --service_name=$app --action=stop --log_path="$final_path/log/production.log" + +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -115,36 +122,10 @@ ynh_script_progression --message="Upgrading dependencies..." ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - -#================================================= -# SPECIFIC UPGRADE -#================================================= -# CREATE A POSTGRESQL DATABASE IF NEEDED -#================================================= - -if [ $need_migration_from_sqlite_to_psql -eq 1 ]; then - ynh_print_info --message="Creating a PostgreSQL database..." - # Create postgresql database - ynh_psql_test_if_first_run - db_name=$(ynh_sanitize_dbid --db_name=$app) - db_user=$db_name - ynh_app_setting_set --app=$app --key=db_name --value=$db_name - # Initialize database and store postgres password for upgrade - ynh_psql_setup_db --db_user=$db_user --db_name=$db_name - db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) # Password created in ynh_psql_setup_db function -fi - #================================================= # SETUP LUFI #================================================= -ynh_script_progression --message="Configuring lufi..." +ynh_script_progression --message="Configuring Lufi..." config=${final_path}/lufi.conf ynh_backup_if_checksum_is_different --file="$config" @@ -170,28 +151,16 @@ fi ynh_store_file_checksum --file="$config" +chmod 600 $final_path/lufi.conf +chown $app:$app $final_path/lufi.conf + #================================================= # BUILD LUFI #================================================= ynh_script_progression --message="Building Lufi..." pushd $final_path -# Migrate from SQLite to PostgreSQL -if [ $need_migration_from_sqlite_to_psql -eq 1 ]; then - # Preinstall with sqlite - carton install --deployment --without=mysql --without=htpasswd --without=test - - # if /var/log/$app/production.log is a symbolic link, then move it to $final_path/log/production.log - if [ ! -L "/var/log/$app/production.log" ] - then - mv "/var/log/$app/production.log" "$final_path/log/production.log" - chown -R $app: "$final_path/log/production.log" - fi - - carton exec script/lufi sqliteToOtherDB -fi - -carton install --deployment --without=sqlite --without=mysql --without=htpasswd --without=test + carton install --deployment --without=sqlite --without=mysql --without=htpasswd --without=test popd #================================================= @@ -233,12 +202,12 @@ ynh_add_systemd_config ynh_script_progression --message="Securing files and directories..." # Set permissions on app files -chown -R $app: $final_path +chown -R $app:$app $final_path #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Upgrading SSOwat configuration..." +ynh_script_progression --message="Upgrading permissions..." ynh_permission_update --permission="main" --add="visitors" From b0f764015a5cd994b7d1fb7b1d2a78a7bb31125b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Gaspar?= <46165813+ericgaspar@users.noreply.github.com> Date: Sun, 6 Jun 2021 19:02:01 +0200 Subject: [PATCH 7/9] Set rights (#63) --- scripts/install | 16 +++++----------- scripts/restore | 12 ++++-------- scripts/upgrade | 16 +++++----------- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/scripts/install b/scripts/install index 918714e..c186fdf 100644 --- a/scripts/install +++ b/scripts/install @@ -82,7 +82,7 @@ ynh_exec_warn_less 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 POSTGRESQL DATABASE @@ -106,6 +106,10 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # NGINX CONFIGURATION #================================================= @@ -172,16 +176,6 @@ ynh_script_progression --message="Configuring a systemd service..." # Create a dedicated systemd config ynh_add_systemd_config -#================================================= -# GENERIC FINALIZATION -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= -ynh_script_progression --message="Securing files and directories..." - -# Set permissions to app files -chown -R $app:$app $final_path - #================================================= # SETUP LOGROTATE #================================================= diff --git a/scripts/restore b/scripts/restore index a6153c4..73c8b8a 100644 --- a/scripts/restore +++ b/scripts/restore @@ -59,7 +59,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" #================================================= # RESTORE THE APP MAIN DIR @@ -68,13 +68,9 @@ ynh_script_progression --message="Restoring the app main directory..." ynh_restore_file --origin_path="$final_path" -#================================================= -# RESTORE USER RIGHTS -#================================================= -ynh_script_progression --message="Restoring user rights..." - -# Restore permissions on app files -chown -R $app:$app $final_path +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" #================================================= # SPECIFIC RESTORATION diff --git a/scripts/upgrade b/scripts/upgrade index bea6a94..764a299 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -93,7 +93,7 @@ ynh_systemd_action --service_name=$app --action=stop --log_path="$final_path/log 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" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -107,6 +107,10 @@ then ynh_setup_source --dest_dir="$final_path" fi +chmod 750 "$final_path" +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" + #================================================= # NGINX CONFIGURATION #================================================= @@ -194,16 +198,6 @@ ynh_script_progression --message="Upgrading systemd configuration..." # Create a dedicated systemd config ynh_add_systemd_config -#================================================= -# GENERIC FINALIZATION -#================================================= -# SECURING FILES AND DIRECTORIES -#================================================= -ynh_script_progression --message="Securing files and directories..." - -# Set permissions on app files -chown -R $app:$app $final_path - #================================================= # SETUP SSOWAT #================================================= From 9f4122d5b836bad032dccf2df2f47235fedc61e7 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 19 Jun 2021 16:46:59 +0200 Subject: [PATCH 8/9] Update manifest.json --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index df8db82..01406dd 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Self hosting files and sharing anonymous application", "fr": "Application d'hébergement et de partage de fichiers anonyme" }, - "version": "0.05.13~ynh2", + "version": "0.05.13~ynh3", "url": "https://git.framasoft.org/luc/lufi", "upstream": { "license": "AGPL-3.0-or-later", From 539714e1efd01ffc6a024617dd1bf96e60e2eb5a Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sat, 19 Jun 2021 14:47:07 +0000 Subject: [PATCH 9/9] Auto-update README --- README.md | 2 +- README_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9a41d04..ab9a3cb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in Self hosting files and sharing anonymous application -**Shipped version:** 0.05.13~ynh2 +**Shipped version:** 0.05.13~ynh3 **Demo:** https://demo.lufi.io/ diff --git a/README_fr.md b/README_fr.md index 6dbb47c..6830132 100644 --- a/README_fr.md +++ b/README_fr.md @@ -13,7 +13,7 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour Application d'hébergement et de partage de fichiers anonyme -**Version incluse :** 0.05.13~ynh2 +**Version incluse :** 0.05.13~ynh3 **Démo :** https://demo.lufi.io/