From 46d246f44ea7301b3bfb627ab82df850064352d5 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 27 Jun 2021 20:02:50 +0200 Subject: [PATCH 1/5] 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 2/5] 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 3/5] 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 4/5] 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 5/5] 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