From b240fe493a53a4d90468652242d9d7da6b855af9 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Thu, 13 May 2021 17:52:12 +0200 Subject: [PATCH 1/9] [autopatch] Update issue and PR templates --- .github/ISSUE_TEMPLATE.md | 55 ++++++++++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++ 2 files changed, 71 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..2729a6b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +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 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 + +*A clear and concise description of what the bug is.* + +### 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 | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install 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:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### 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 + +*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) From 46d246f44ea7301b3bfb627ab82df850064352d5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 27 Jun 2021 20:02:50 +0200 Subject: [PATCH 2/9] set rights --- check_process | 5 ++--- manifest.json | 2 +- scripts/install | 30 ++++++++++++------------------ scripts/restore | 26 +++++++++++--------------- scripts/upgrade | 28 ++++++++++++---------------- 5 files changed, 38 insertions(+), 53 deletions(-) diff --git a/check_process b/check_process index 0658fdd..65abecf 100644 --- a/check_process +++ b/check_process @@ -1,7 +1,7 @@ ;; Complete test ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) + domain="domain.tld" + path="/path" ; Checks pkg_linter=1 setup_sub_dir=1 @@ -13,7 +13,6 @@ upgrade=1 from_commit=7a99e018f12d91876c84efd04e0a4e7f178fdd80 backup_restore=1 multi_instance=1 - port_already_use=0 change_url=1 ;;; Upgrade options ; commit=7a99e018f12d91876c84efd04e0a4e7f178fdd80 diff --git a/manifest.json b/manifest.json index a71c616..6c3a738 100644 --- a/manifest.json +++ b/manifest.json @@ -15,7 +15,7 @@ }, "multi_instance": true, "requirements": { - "yunohost": ">= 4.1.0" + "yunohost": ">= 4.2.0" }, "services": [ "nginx", diff --git a/scripts/install b/scripts/install index 841d8eb..c1d7f7f 100644 --- a/scripts/install +++ b/scripts/install @@ -49,6 +49,14 @@ ynh_script_progression --message="Storing installation settings..." --weight=1 ynh_app_setting_set --app=$app --key=domain --value=$domain ynh_app_setting_set --app=$app --key=path --value=$path_url +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Configuring system user..." --weight=2 + +# Create a system user +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -58,6 +66,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 #================================================= @@ -68,14 +80,6 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=1 # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Configuring system user..." --weight=2 - -# Create a system user -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -95,16 +99,6 @@ for i in $final_path/bridges/*.php ; do echo $(basename $i) | sed "s|Bridge.php$||g" | tee -a $final_path/whitelist.txt done -#================================================= -# GENERIC FINALIZATION -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions to app files -chown -R root: $final_path -chown -R $app: $final_path/cache - #================================================= # SETUP SSOWAT #================================================= diff --git a/scripts/restore b/scripts/restore index 5ae68b5..c3b6500 100644 --- a/scripts/restore +++ b/scripts/restore @@ -51,6 +51,14 @@ test ! -d $final_path \ ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" +#================================================= +# RECREATE THE DEDICATED USER +#================================================= +ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 + +# Create the dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # RESTORE THE APP MAIN DIR #================================================= @@ -58,21 +66,9 @@ ynh_script_progression --message="Restoring RSS-Bridge main directory..." --weig ynh_restore_file --origin_path="$final_path" -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 - -# Create the dedicated user (if not existing) -ynh_system_user_create --username=$app - -#================================================= -# RESTORE USER RIGHTS -#================================================= - -# Restore permissions on app files -chown -R root: $final_path -chown -R $app: $final_path/cache +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 43f4d3e..55d2ce9 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -53,6 +53,14 @@ ynh_clean_setup () { # Exit if an error occurs during the execution of the script ynh_abort_if_errors +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= @@ -65,6 +73,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 #================================================= @@ -73,14 +85,6 @@ ynh_script_progression --message="Upgrading NGINX web server configuration..." - # Create a dedicated NGINX config ynh_add_nginx_config -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - #================================================= # PHP-FPM CONFIGURATION #================================================= @@ -99,14 +103,6 @@ for i in $final_path/bridges/*.php ; do echo $(basename $i) | sed "s|Bridge.php$||g" | tee -a $final_path/whitelist.txt done -#================================================= -# SECURE FILES AND DIRECTORIES -#================================================= - -# Set permissions on app files -chown -R root: $final_path -chown -R $app: $final_path/cache - #================================================= # RELOAD NGINX #================================================= From 57b2f4e7a03147fff356be0327bf45809be30b75 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 18 Aug 2021 23:42:32 +0200 Subject: [PATCH 3/9] Add templates --- check_process | 6 +++--- .../screenshot_rss-bridge_welcome.png | Bin 0 -> 73267 bytes manifest.json | 7 +++++++ scripts/install | 2 -- 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 doc/screenshots/screenshot_rss-bridge_welcome.png diff --git a/check_process b/check_process index 65abecf..8692564 100644 --- a/check_process +++ b/check_process @@ -10,11 +10,11 @@ setup_private=0 setup_public=0 upgrade=1 - upgrade=1 from_commit=7a99e018f12d91876c84efd04e0a4e7f178fdd80 + upgrade=1 from_commit=3fbb92322907780bcda40792d6ddc652b1c9ff5c backup_restore=1 multi_instance=1 change_url=1 ;;; Upgrade options - ; commit=7a99e018f12d91876c84efd04e0a4e7f178fdd80 - name=Upgrade to upstream version 2018-04-06 + ; commit=3fbb92322907780bcda40792d6ddc652b1c9ff5c + name=Merge pull request #35 manifest_arg=domain=DOMAIN&path=PATH& diff --git a/doc/screenshots/screenshot_rss-bridge_welcome.png b/doc/screenshots/screenshot_rss-bridge_welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..3ceb432ee2b4048be7da4643723ae5e90affcc87 GIT binary patch literal 73267 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 n88X~$9psE(2!!kV{pEiHZ_@(= literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json index 6c3a738..98493c4 100644 --- a/manifest.json +++ b/manifest.json @@ -8,6 +8,13 @@ }, "version": "2021-04-25~ynh1", "url": "https://github.com/RSS-Bridge/rss-bridge", + "upstream": { + "license": "Unlicense", + "website": "https://github.com/RSS-Bridge/rss-bridge", + "demo": "https://wtf.roflcopter.fr/rss-bridge/", + "admindoc": "https://github.com/RSS-Bridge/rss-bridge/wiki", + "code": "https://github.com/RSS-Bridge/rss-bridge" + }, "license": "Unlicense", "maintainer": { "name": "JimboJoe", diff --git a/scripts/install b/scripts/install index c1d7f7f..816cfdf 100644 --- a/scripts/install +++ b/scripts/install @@ -75,8 +75,6 @@ chown -R $app:www-data "$final_path" #================================================= ynh_script_progression --message="Configuring NGINX web server..." --weight=1 -### `ynh_add_nginx_config` will use the file conf/nginx.conf - # Create a dedicated NGINX config ynh_add_nginx_config From 996ffc390863cdfa5d6ff316a95dfef9aa2f0e52 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Wed, 18 Aug 2021 21:42:38 +0000 Subject: [PATCH 4/9] Auto-update README --- README.md | 113 +++++++++++---------------------------------------- README_fr.md | 43 ++++++++++++++++++++ 2 files changed, 67 insertions(+), 89 deletions(-) create mode 100644 README_fr.md diff --git a/README.md b/README.md index bae5338..6dfab1c 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,41 @@ + + # RSS-Bridge for YunoHost [![Integration level](https://dash.yunohost.org/integration/rss-bridge.svg)](https://dash.yunohost.org/appci/app/rss-bridge) ![](https://ci-apps.yunohost.org/ci/badges/rss-bridge.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/rss-bridge.maintain.svg) -[![Install RSS-Bridge with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=rss-bridge) +[![Install RSS-Bridge with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=rss-bridge) -> *This package allow you to install RSS-Bridge 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 RSS-Bridge 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 -[RSS-Bridge](https://github.com/RSS-Bridge/rss-bridge) is a PHP project capable of generating ATOM feeds for websites which don't have one. -**Shipped version:** 2021-04-25 +RSS and Atom feed generator for websites that don't have one. -### Supported sites/pages (main) +**Shipped version:** 2021-04-25~ynh1 - * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr - * `GoogleSearch` : Most recent results from Google Search - * `GooglePlus` : Most recent posts of user timeline - * `Twitter` : Return keyword/hashtag search or user timeline - * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) - * `YouTube` : YouTube user channel, playlist or search - * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) - * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) - * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) - * `Instagram`: Most recent photos from an Instagram user - * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) - * `Pinterest`: Most recent photos from user or search - * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) - * `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto - * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag - * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords - * `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) - -Plus [many other bridges](bridges/) to enable, thanks to the community - -### Output format - -Output format can take several forms: - - * `Atom` : ATOM Feed, for use in RSS/Feed readers - * `Mrss` : MRSS Feed, for use in RSS/Feed readers - * `Json` : Json, for consumption by other applications. - * `Html` : Simple html page. - * `Plaintext` : raw text (php object, as returned by print_r) +**Demo:** https://wtf.roflcopter.fr/rss-bridge/ ## Screenshots -![image](https://github.com/RSS-Bridge/rss-bridge/wiki/images/screenshot_rss-bridge_welcome.png) +![](./doc/screenshots/screenshot_rss-bridge_welcome.png) -RSS-Bridge hashtag (#rss-bridge) search on Twitter, in ATOM format (as displayed by Firefox): +## Documentation and resources -![image](https://github.com/RSS-Bridge/rss-bridge/wiki/images/screenshot_twitterbridge_atom.png) +* Official app website: https://github.com/RSS-Bridge/rss-bridge +* Official admin documentation: https://github.com/RSS-Bridge/rss-bridge/wiki +* Upstream app code repository: https://github.com/RSS-Bridge/rss-bridge +* YunoHost documentation for this app: https://yunohost.org/app_rss-bridge +* Report a bug: https://github.com/YunoHost-Apps/rss-bridge_ynh/issues -## Demo +## Developer info -* [Official demo](https://wtf.roflcopter.fr/rss-bridge/) - -## Configuration - -### Enabling/Disabling bridges - -By default, the script creates `whitelist.txt` and adds the main bridges (see above). you can edit it: - - * to enable extra bridges (one bridge per line) - * to disable main bridges (remove the line) - * to enable all bridges (just one wildcard `*` as file content) - -As a matter of simplicity, this YunoHost package enables every bridge by default. - -## Documentation - - * Official documentation: https://github.com/RSS-Bridge/rss-bridge/wiki - * YunoHost documentation: If specific documentation is needed, feel free to contribute. - -## YunoHost specific features - -#### Multi-users support - -This is application is public and there's no notion of user. - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/rss-bridge.svg)](https://ci-apps.yunohost.org/ci/apps/rss-bridge/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/rss-bridge.svg)](https://ci-apps-arm.yunohost.org/ci/apps/rss-bridge/) - -## Limitations - -* Any known limitations. - -## Additional information - -* Other information you would add about this application - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/rss-bridge_ynh/issues - * App website: https://github.com/RSS-Bridge/rss-bridge - * Upstream app repository: https://github.com/RSS-Bridge/rss-bridge - * YunoHost website: https://yunohost.org/ - ---- - -## Developers info - -Please do your pull request to the [testing branch](https://github.com/YunoHost-Apps/rss-bridge_ynh/tree/testing). +Please send your pull request to the [testing branch](https://github.com/YunoHost-Apps/rss-bridge_ynh/tree/testing). To try the testing branch, please proceed like that. ``` @@ -110,3 +43,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/rss-bridge_ynh/tree/t or sudo yunohost app upgrade rss-bridge -u https://github.com/YunoHost-Apps/rss-bridge_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..a8b5dbb --- /dev/null +++ b/README_fr.md @@ -0,0 +1,43 @@ +# RSS-Bridge pour YunoHost + +[![Niveau d'intégration](https://dash.yunohost.org/integration/rss-bridge.svg)](https://dash.yunohost.org/appci/app/rss-bridge) ![](https://ci-apps.yunohost.org/ci/badges/rss-bridge.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/rss-bridge.maintain.svg) +[![Installer RSS-Bridge avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=rss-bridge) + +*[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* + +> *Ce package vous permet d'installer RSS-Bridge 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 + +Générateur de flux RSS et Atom pour les sites Web qui n'en ont pas. + +**Version incluse :** 2021-04-25~ynh1 + +**Démo :** https://wtf.roflcopter.fr/rss-bridge/ + +## Captures d'écran + +![](./doc/screenshots/screenshot_rss-bridge_welcome.png) + +## Documentations et ressources + +* Site officiel de l'app : https://github.com/RSS-Bridge/rss-bridge +* Documentation officielle de l'admin : https://github.com/RSS-Bridge/rss-bridge/wiki +* Dépôt de code officiel de l'app : https://github.com/RSS-Bridge/rss-bridge +* Documentation YunoHost pour cette app : https://yunohost.org/app_rss-bridge +* Signaler un bug : https://github.com/YunoHost-Apps/rss-bridge_ynh/issues + +## Informations pour les développeurs + +Merci de faire vos pull request sur la [branche testing](https://github.com/YunoHost-Apps/rss-bridge_ynh/tree/testing). + +Pour essayer la branche testing, procédez comme suit. +``` +sudo yunohost app install https://github.com/YunoHost-Apps/rss-bridge_ynh/tree/testing --debug +ou +sudo yunohost app upgrade rss-bridge -u https://github.com/YunoHost-Apps/rss-bridge_ynh/tree/testing --debug +``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From f5c04738a643ce56bc9caf4e1aba681532cfc7dd Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Wed, 18 Aug 2021 23:44:09 +0200 Subject: [PATCH 5/9] Create DISCLAIMER.md --- doc/DISCLAIMER.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 doc/DISCLAIMER.md diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..ff79e14 --- /dev/null +++ b/doc/DISCLAIMER.md @@ -0,0 +1,47 @@ +### Supported sites/pages (main) + + * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr + * `GoogleSearch` : Most recent results from Google Search + * `GooglePlus` : Most recent posts of user timeline + * `Twitter` : Return keyword/hashtag search or user timeline + * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) + * `YouTube` : YouTube user channel, playlist or search + * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) + * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) + * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) + * `Instagram`: Most recent photos from an Instagram user + * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) + * `Pinterest`: Most recent photos from user or search + * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) + * `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto + * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag + * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords + * `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) + +Plus [many other bridges](bridges/) to enable, thanks to the community + +### Output format + +Output format can take several forms: + + * `Atom` : ATOM Feed, for use in RSS/Feed readers + * `Mrss` : MRSS Feed, for use in RSS/Feed readers + * `Json` : Json, for consumption by other applications. + * `Html` : Simple html page. + * `Plaintext` : raw text (php object, as returned by print_r) + +## Configuration + +### Enabling/Disabling bridges + +By default, the script creates `whitelist.txt` and adds the main bridges (see above). you can edit it: + + * to enable extra bridges (one bridge per line) + * to disable main bridges (remove the line) + * to enable all bridges (just one wildcard `*` as file content) + +As a matter of simplicity, this YunoHost package enables every bridge by default. + +#### Multi-users support + +This is application is public and there's no notion of user. From 39d9b9261fb4ee50d079bde33b65599468c4d5a8 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Wed, 18 Aug 2021 21:44:45 +0000 Subject: [PATCH 6/9] Auto-update README --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ README_fr.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) diff --git a/README.md b/README.md index 6dfab1c..6d9af74 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,56 @@ RSS and Atom feed generator for websites that don't have one. ![](./doc/screenshots/screenshot_rss-bridge_welcome.png) +## Disclaimers / important information + +### Supported sites/pages (main) + + * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr + * `GoogleSearch` : Most recent results from Google Search + * `GooglePlus` : Most recent posts of user timeline + * `Twitter` : Return keyword/hashtag search or user timeline + * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) + * `YouTube` : YouTube user channel, playlist or search + * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) + * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) + * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) + * `Instagram`: Most recent photos from an Instagram user + * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) + * `Pinterest`: Most recent photos from user or search + * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) + * `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto + * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag + * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords + * `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) + +Plus [many other bridges](bridges/) to enable, thanks to the community + +### Output format + +Output format can take several forms: + + * `Atom` : ATOM Feed, for use in RSS/Feed readers + * `Mrss` : MRSS Feed, for use in RSS/Feed readers + * `Json` : Json, for consumption by other applications. + * `Html` : Simple html page. + * `Plaintext` : raw text (php object, as returned by print_r) + +## Configuration + +### Enabling/Disabling bridges + +By default, the script creates `whitelist.txt` and adds the main bridges (see above). you can edit it: + + * to enable extra bridges (one bridge per line) + * to disable main bridges (remove the line) + * to enable all bridges (just one wildcard `*` as file content) + +As a matter of simplicity, this YunoHost package enables every bridge by default. + +#### Multi-users support + +This is application is public and there's no notion of user. + ## Documentation and resources * Official app website: https://github.com/RSS-Bridge/rss-bridge diff --git a/README_fr.md b/README_fr.md index a8b5dbb..5105672 100644 --- a/README_fr.md +++ b/README_fr.md @@ -21,6 +21,56 @@ Générateur de flux RSS et Atom pour les sites Web qui n'en ont pas. ![](./doc/screenshots/screenshot_rss-bridge_welcome.png) +## Avertissements / informations importantes + +### Supported sites/pages (main) + + * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr + * `GoogleSearch` : Most recent results from Google Search + * `GooglePlus` : Most recent posts of user timeline + * `Twitter` : Return keyword/hashtag search or user timeline + * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) + * `YouTube` : YouTube user channel, playlist or search + * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) + * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) + * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) + * `Instagram`: Most recent photos from an Instagram user + * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) + * `Pinterest`: Most recent photos from user or search + * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) + * `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto + * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag + * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords + * `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) + +Plus [many other bridges](bridges/) to enable, thanks to the community + +### Output format + +Output format can take several forms: + + * `Atom` : ATOM Feed, for use in RSS/Feed readers + * `Mrss` : MRSS Feed, for use in RSS/Feed readers + * `Json` : Json, for consumption by other applications. + * `Html` : Simple html page. + * `Plaintext` : raw text (php object, as returned by print_r) + +## Configuration + +### Enabling/Disabling bridges + +By default, the script creates `whitelist.txt` and adds the main bridges (see above). you can edit it: + + * to enable extra bridges (one bridge per line) + * to disable main bridges (remove the line) + * to enable all bridges (just one wildcard `*` as file content) + +As a matter of simplicity, this YunoHost package enables every bridge by default. + +#### Multi-users support + +This is application is public and there's no notion of user. + ## Documentations et ressources * Site officiel de l'app : https://github.com/RSS-Bridge/rss-bridge From 01e44911e784cec4dba99beb34d76077431f1868 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 3 Oct 2021 19:08:32 +0200 Subject: [PATCH 7/9] Add description --- doc/DESCRIPTION.md | 36 ++++++++++++++++++++++++++++++++++++ doc/DISCLAIMER.md | 32 -------------------------------- 2 files changed, 36 insertions(+), 32 deletions(-) create mode 100644 doc/DESCRIPTION.md diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..5976e8c --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1,36 @@ +RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one. It can be used on webservers or as a stand-alone application in CLI mode. + +Important: RSS-Bridge is not a feed reader or feed aggregator, but a tool to generate feeds that are consumed by feed readers and feed aggregators. Find a list of feed aggregators on Wikipedia. + +### Supported sites/pages (main) + + * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr + * `GoogleSearch` : Most recent results from Google Search + * `GooglePlus` : Most recent posts of user timeline + * `Twitter` : Return keyword/hashtag search or user timeline + * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) + * `YouTube` : YouTube user channel, playlist or search + * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) + * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) + * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) + * `Instagram`: Most recent photos from an Instagram user + * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) + * `Pinterest`: Most recent photos from user or search + * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) + * `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto + * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag + * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords + * `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) + +Plus [many other bridges](bridges/) to enable, thanks to the community + +### Output format + +Output format can take several forms: + + * `Atom` : ATOM Feed, for use in RSS/Feed readers + * `Mrss` : MRSS Feed, for use in RSS/Feed readers + * `Json` : Json, for consumption by other applications. + * `Html` : Simple html page. + * `Plaintext` : raw text (php object, as returned by print_r) + \ No newline at end of file diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md index ff79e14..396f454 100644 --- a/doc/DISCLAIMER.md +++ b/doc/DISCLAIMER.md @@ -1,35 +1,3 @@ -### Supported sites/pages (main) - - * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr - * `GoogleSearch` : Most recent results from Google Search - * `GooglePlus` : Most recent posts of user timeline - * `Twitter` : Return keyword/hashtag search or user timeline - * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) - * `YouTube` : YouTube user channel, playlist or search - * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) - * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) - * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) - * `Instagram`: Most recent photos from an Instagram user - * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) - * `Pinterest`: Most recent photos from user or search - * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) - * `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto - * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag - * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords - * `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) - -Plus [many other bridges](bridges/) to enable, thanks to the community - -### Output format - -Output format can take several forms: - - * `Atom` : ATOM Feed, for use in RSS/Feed readers - * `Mrss` : MRSS Feed, for use in RSS/Feed readers - * `Json` : Json, for consumption by other applications. - * `Html` : Simple html page. - * `Plaintext` : raw text (php object, as returned by print_r) - ## Configuration ### Enabling/Disabling bridges From fe2eed3970b3eda3e761a70b963f312cdc8def67 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sun, 3 Oct 2021 17:08:41 +0000 Subject: [PATCH 8/9] Auto-update README --- README.md | 23 +++++++++++++---------- README_fr.md | 23 +++++++++++++---------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 6d9af74..f305c8d 100644 --- a/README.md +++ b/README.md @@ -15,17 +15,9 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview -RSS and Atom feed generator for websites that don't have one. +RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one. It can be used on webservers or as a stand-alone application in CLI mode. -**Shipped version:** 2021-04-25~ynh1 - -**Demo:** https://wtf.roflcopter.fr/rss-bridge/ - -## Screenshots - -![](./doc/screenshots/screenshot_rss-bridge_welcome.png) - -## Disclaimers / important information +Important: RSS-Bridge is not a feed reader or feed aggregator, but a tool to generate feeds that are consumed by feed readers and feed aggregators. Find a list of feed aggregators on Wikipedia. ### Supported sites/pages (main) @@ -58,6 +50,17 @@ Output format can take several forms: * `Json` : Json, for consumption by other applications. * `Html` : Simple html page. * `Plaintext` : raw text (php object, as returned by print_r) + + +**Shipped version:** 2021-04-25~ynh1 + +**Demo:** https://wtf.roflcopter.fr/rss-bridge/ + +## Screenshots + +![](./doc/screenshots/screenshot_rss-bridge_welcome.png) + +## Disclaimers / important information ## Configuration diff --git a/README_fr.md b/README_fr.md index 5105672..66c41b4 100644 --- a/README_fr.md +++ b/README_fr.md @@ -11,17 +11,9 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour ## Vue d'ensemble -Générateur de flux RSS et Atom pour les sites Web qui n'en ont pas. +RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one. It can be used on webservers or as a stand-alone application in CLI mode. -**Version incluse :** 2021-04-25~ynh1 - -**Démo :** https://wtf.roflcopter.fr/rss-bridge/ - -## Captures d'écran - -![](./doc/screenshots/screenshot_rss-bridge_welcome.png) - -## Avertissements / informations importantes +Important: RSS-Bridge is not a feed reader or feed aggregator, but a tool to generate feeds that are consumed by feed readers and feed aggregators. Find a list of feed aggregators on Wikipedia. ### Supported sites/pages (main) @@ -54,6 +46,17 @@ Output format can take several forms: * `Json` : Json, for consumption by other applications. * `Html` : Simple html page. * `Plaintext` : raw text (php object, as returned by print_r) + + +**Version incluse :** 2021-04-25~ynh1 + +**Démo :** https://wtf.roflcopter.fr/rss-bridge/ + +## Captures d'écran + +![](./doc/screenshots/screenshot_rss-bridge_welcome.png) + +## Avertissements / informations importantes ## Configuration From f06ed63a43bfd0987490f10f022cecb37fc55c99 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 3 Oct 2021 19:10:33 +0200 Subject: [PATCH 9/9] Cleaning up --- manifest.json | 9 ++++----- scripts/restore | 2 -- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/manifest.json b/manifest.json index 98493c4..c221b34 100644 --- a/manifest.json +++ b/manifest.json @@ -3,8 +3,8 @@ "id": "rss-bridge", "packaging_format": 1, "description": { - "en": "RSS and Atom feed generator for websites that don't have one.", - "fr": "Générateur de flux RSS et Atom pour les sites Web qui n'en ont pas." + "en": "RSS and Atom feed generator for websites that don't have one", + "fr": "Générateur de flux RSS et Atom pour les sites Web qui n'en ont pas" }, "version": "2021-04-25~ynh1", "url": "https://github.com/RSS-Bridge/rss-bridge", @@ -22,7 +22,7 @@ }, "multi_instance": true, "requirements": { - "yunohost": ">= 4.2.0" + "yunohost": ">= 4.2.4" }, "services": [ "nginx", @@ -33,8 +33,7 @@ "install" : [ { "name": "domain", - "type": "domain", - "example": "domain.org" + "type": "domain" }, { "name": "path", diff --git a/scripts/restore b/scripts/restore index c3b6500..ac003b7 100644 --- a/scripts/restore +++ b/scripts/restore @@ -38,8 +38,6 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= ynh_script_progression --message="Validating restoration parameters..." --weight=1 -ynh_webpath_available --domain=$domain --path_url=$path_url \ - || ynh_die --message="Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die --message="There is already a directory: $final_path "