From a90f6ad8407d5bfda66b7299124cf82f54153736 Mon Sep 17 00:00:00 2001 From: Jaussoin Timothée Date: Thu, 5 Nov 2015 19:49:08 +0100 Subject: Update the Movim share URL I've changed the Movim urls recently, just fixing FreshRSS to make it work again with Movim --- data/shares.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'data') diff --git a/data/shares.php b/data/shares.php index ed060074e..55ef08ec4 100644 --- a/data/shares.php +++ b/data/shares.php @@ -45,7 +45,7 @@ return array( 'form' => 'advanced', ), 'movim' => array( - 'url' => '~URL~/index.php/share/~LINK~', + 'url' => '~URL~/?share/~LINK~', 'transform' => array('rawurlencode', 'urlencode'), 'help' => 'https://github.com/edhelas/movim', 'form' => 'advanced', -- cgit v1.2.3 From 9b842f9909807fb615e5fb52149903272d9ae101 Mon Sep 17 00:00:00 2001 From: danc Date: Tue, 19 Jan 2016 19:46:40 +0100 Subject: Update shares.php --- data/shares.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'data') diff --git a/data/shares.php b/data/shares.php index 55ef08ec4..264c8fed7 100644 --- a/data/shares.php +++ b/data/shares.php @@ -75,4 +75,9 @@ return array( 'transform' => array(), 'form' => 'simple', ), + 'jdh' => array( + 'url' => 'https://www.journalduhacker.net/stories/new?url=~LINK~&title=~TITLE~', + 'transform' => array('rawurlencode'), + 'form' => 'simple', + ), ); -- cgit v1.2.3 From 9d4a4457587d04030118447847a5c99d9095b937 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 24 Feb 2016 21:08:24 +0100 Subject: Work in progress HTTPS --- data/force-https.txt | 3 +++ lib/SimplePie/SimplePie/Misc.php | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 data/force-https.txt (limited to 'data') diff --git a/data/force-https.txt b/data/force-https.txt new file mode 100644 index 000000000..3da802d01 --- /dev/null +++ b/data/force-https.txt @@ -0,0 +1,3 @@ +dailymotion.com +tumblr.com +youtube.com diff --git a/lib/SimplePie/SimplePie/Misc.php b/lib/SimplePie/SimplePie/Misc.php index 4c9f8cff6..b9d74f894 100644 --- a/lib/SimplePie/SimplePie/Misc.php +++ b/lib/SimplePie/SimplePie/Misc.php @@ -83,7 +83,13 @@ class SimplePie_Misc */ public static function https_url($url) { - return preg_replace('%^http://((?:[^/]*?\.)?(?:youtube|dailymotion|tumblr)\.com/)%i', 'https://$1', $url); + if (strtolower(substr($url, 0, 7)) === 'http://') + { + $domain = parse_url($url, PHP_URL_HOST); + return preg_replace('%^http://((?:[^/]*?\.)?(?:youtube|dailymotion|tumblr)\.com/)%i', 'https://$1', $url); + return substr_replace($url, 's', 4, 0); //Add the 's' to HTTPS + } + return $url; } public static function absolutize_url($relative, $base) -- cgit v1.2.3 From 9711f02db75006d622d75142d46c3c8d714c957f Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sun, 28 Feb 2016 21:34:54 +0100 Subject: SimplePie Force HTTPS custom list domains Load from data/force-https.default.txt and data/force-https.txt Efficient tree structure to search the domains https://github.com/FreshRSS/FreshRSS/pull/1087 --- data/.gitignore | 1 + data/force-https.default.txt | 4 ++ data/force-https.txt | 3 -- lib/SimplePie/SimplePie.php | 14 ++++++ lib/SimplePie/SimplePie/Misc.php | 15 ------- lib/SimplePie/SimplePie/Sanitize.php | 85 +++++++++++++++++++++++++++++++++++- lib/lib_rss.php | 10 +++++ 7 files changed, 113 insertions(+), 19 deletions(-) create mode 100644 data/force-https.default.txt delete mode 100644 data/force-https.txt (limited to 'data') diff --git a/data/.gitignore b/data/.gitignore index 20364e266..c2ed350a6 100644 --- a/data/.gitignore +++ b/data/.gitignore @@ -7,3 +7,4 @@ no-cache.txt *.lock.txt last_update.txt update.php +force-https.txt diff --git a/data/force-https.default.txt b/data/force-https.default.txt new file mode 100644 index 000000000..a1bddd549 --- /dev/null +++ b/data/force-https.default.txt @@ -0,0 +1,4 @@ +dailymotion.com +feedburner.com +tumblr.com +youtube.com diff --git a/data/force-https.txt b/data/force-https.txt deleted file mode 100644 index 3da802d01..000000000 --- a/data/force-https.txt +++ /dev/null @@ -1,3 +0,0 @@ -dailymotion.com -tumblr.com -youtube.com diff --git a/lib/SimplePie/SimplePie.php b/lib/SimplePie/SimplePie.php index 6c0962a9f..61bad4e9d 100644 --- a/lib/SimplePie/SimplePie.php +++ b/lib/SimplePie/SimplePie.php @@ -1123,6 +1123,7 @@ class SimplePie $this->strip_attributes(false); $this->add_attributes(false); $this->set_image_handler(false); + $this->set_https_domains(array()); } } @@ -1233,6 +1234,19 @@ class SimplePie $this->sanitize->set_url_replacements($element_attribute); } + /** + * Set the list of domains for which force HTTPS. + * @see SimplePie_Misc::https_url() + * FreshRSS + */ + public function set_https_domains($domains = array()) + { + if (is_array($domains)) + { + $this->sanitize->set_https_domains($domains); + } + } + /** * Set the handler to enable the display of cached images. * diff --git a/lib/SimplePie/SimplePie/Misc.php b/lib/SimplePie/SimplePie/Misc.php index b9d74f894..2d154cbcb 100644 --- a/lib/SimplePie/SimplePie/Misc.php +++ b/lib/SimplePie/SimplePie/Misc.php @@ -77,21 +77,6 @@ class SimplePie_Misc return $time; } - /** - * Force HTTPS for selected Web sites - * FreshRSS - */ - public static function https_url($url) - { - if (strtolower(substr($url, 0, 7)) === 'http://') - { - $domain = parse_url($url, PHP_URL_HOST); - return preg_replace('%^http://((?:[^/]*?\.)?(?:youtube|dailymotion|tumblr)\.com/)%i', 'https://$1', $url); - return substr_replace($url, 's', 4, 0); //Add the 's' to HTTPS - } - return $url; - } - public static function absolutize_url($relative, $base) { if (substr($relative, 0, 2) === '//') diff --git a/lib/SimplePie/SimplePie/Sanitize.php b/lib/SimplePie/SimplePie/Sanitize.php index fc916a259..b37aeec3d 100644 --- a/lib/SimplePie/SimplePie/Sanitize.php +++ b/lib/SimplePie/SimplePie/Sanitize.php @@ -73,6 +73,14 @@ class SimplePie_Sanitize var $force_fsockopen = false; var $replace_url_attributes = null; + /** + * List of domains for which force HTTPS. + * @see SimplePie_Misc::https_url() + * Array is tree split at DNS levels. Example array('biz' => true, 'com' => array('example' => true), 'example' => array('test') => array('www' => true)); + * FreshRSS + */ + var $https_domains = array('com' => array('youtube' => true)); + public function __construct() { // Set defaults @@ -242,6 +250,81 @@ class SimplePie_Sanitize $this->replace_url_attributes = (array) $element_attribute; } + /** + * Set the list of domains for which force HTTPS. + * @see SimplePie_Misc::https_url() + * Example array('biz', 'example.com', 'example.org', 'www.example.net'); + * FreshRSS + */ + public function set_https_domains($domains) + { + $this->https_domains = array(); + foreach ($domains as $domain) + { + $domain = trim($domain, ". \t\n\r\0\x0B"); + $segments = array_reverse(explode('.', $domain)); + if (count($segments) > 0) + { + $node =& $this->https_domains; + foreach ($segments as $segment) + {//Build a tree + if ($node === true) + { + break; + } + if (!isset($node[$segment])) + { + $node[$segment] = array(); + } + $node =& $node[$segment]; + } + $node = true; + } + } + } + + /** + * Check if the domain is in the list of forced HTTPS + * FreshRSS + */ + protected function is_https_domain($domain) + { + $domain = trim($domain, '. '); + $segments = array_reverse(explode('.', $domain)); + if (count($segments) > 0) + { + $node =& $this->https_domains; + foreach ($segments as $segment) + {//Explore the tree + if ($node === true) + { + return true; + } + if (isset($node[$segment])) + { + $node =& $node[$segment]; + } + else + { + break; + } + } + } + return false; + } + + /** + * Force HTTPS for selected Web sites + * FreshRSS + */ + protected function https_url($url) + { + return (strtolower(substr($url, 0, 7)) === 'http://') && + $this->is_https_domain(parse_url($url, PHP_URL_HOST)) ? + substr_replace($url, 's', 4, 0) : //Add the 's' to HTTPS + $url; + } + public function sanitize($data, $type, $base = '') { $data = trim($data); @@ -451,7 +534,7 @@ class SimplePie_Sanitize if ($element->hasAttribute($attribute)) { $value = $this->registry->call('Misc', 'absolutize_url', array($element->getAttribute($attribute), $this->base)); - $value = SimplePie_Misc::https_url($value); //FreshRSS + $value = $this->https_url($value); //FreshRSS if ($value) { $element->setAttribute($attribute, $value); diff --git a/lib/lib_rss.php b/lib/lib_rss.php index b0189c162..5092982aa 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -238,6 +238,16 @@ function customSimplePie() { 'src', ), )); + $https_domains = array(); + $force = @file(DATA_PATH . '/force-https.default.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + if (is_array($force)) { + $https_domains = array_merge($https_domains, $force); + } + $force = @file(DATA_PATH . '/force-https.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + if (is_array($force)) { + $https_domains = array_merge($https_domains, $force); + } + $simplePie->set_https_domains($https_domains); return $simplePie; } -- cgit v1.2.3 From d344da59fdd2f818f53c6b4aab4ded4a9336851c Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 29 Feb 2016 17:09:44 +0100 Subject: HTTPS search tree: simplify code https://github.com/FreshRSS/FreshRSS/issues/1083 --- data/force-https.default.txt | 2 ++ lib/SimplePie/SimplePie/Sanitize.php | 58 ++++++++++++++++-------------------- 2 files changed, 28 insertions(+), 32 deletions(-) (limited to 'data') diff --git a/data/force-https.default.txt b/data/force-https.default.txt index a1bddd549..668a7c0e8 100644 --- a/data/force-https.default.txt +++ b/data/force-https.default.txt @@ -1,4 +1,6 @@ dailymotion.com feedburner.com +gstatic.com tumblr.com +wordpress.com youtube.com diff --git a/lib/SimplePie/SimplePie/Sanitize.php b/lib/SimplePie/SimplePie/Sanitize.php index b37aeec3d..f656909a0 100644 --- a/lib/SimplePie/SimplePie/Sanitize.php +++ b/lib/SimplePie/SimplePie/Sanitize.php @@ -263,23 +263,20 @@ class SimplePie_Sanitize { $domain = trim($domain, ". \t\n\r\0\x0B"); $segments = array_reverse(explode('.', $domain)); - if (count($segments) > 0) - { - $node =& $this->https_domains; - foreach ($segments as $segment) - {//Build a tree - if ($node === true) - { - break; - } - if (!isset($node[$segment])) - { - $node[$segment] = array(); - } - $node =& $node[$segment]; + $node =& $this->https_domains; + foreach ($segments as $segment) + {//Build a tree + if ($node === true) + { + break; + } + if (!isset($node[$segment])) + { + $node[$segment] = array(); } - $node = true; + $node =& $node[$segment]; } + $node = true; } } @@ -291,23 +288,20 @@ class SimplePie_Sanitize { $domain = trim($domain, '. '); $segments = array_reverse(explode('.', $domain)); - if (count($segments) > 0) - { - $node =& $this->https_domains; - foreach ($segments as $segment) - {//Explore the tree - if ($node === true) - { - return true; - } - if (isset($node[$segment])) - { - $node =& $node[$segment]; - } - else - { - break; - } + $node =& $this->https_domains; + foreach ($segments as $segment) + {//Explore the tree + if ($node === true) + { + return true; + } + if (isset($node[$segment])) + { + $node =& $node[$segment]; + } + else + { + break; } } return false; -- cgit v1.2.3 From eee3a90a5077ee894836c81a98b78263a8c8976f Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 29 Feb 2016 18:41:58 +0100 Subject: Readme force HTTPS https://github.com/FreshRSS/FreshRSS/issues/1083 --- CHANGELOG.md | 4 +++- data/force-https.default.txt | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'data') diff --git a/CHANGELOG.md b/CHANGELOG.md index 7efb05aae..096c930d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,9 @@ * Security * Added CSP `Content-Security-Policy: default-src 'self'; child-src *; img-src * data:; media-src *` [#1075](https://github.com/FreshRSS/FreshRSS/pull/1075) * Features - * Add sharing with "Journal du Hacker" [#1056](https://github.com/FreshRSS/FreshRSS/pull/1056) + * New list of domains for which to force HTTPS (for images, videos, iframes…) defined in `./data/force-https.default.txt` and `./data/force-https.txt` [#1083](https://github.com/FreshRSS/FreshRSS/issues/1083) + * In particular useful for privacy and to avoid mixed content errors, e.g. to see YouTube videos when FreshRSS is in HTTPS + * Add sharing with “Journal du Hacker” [#1056](https://github.com/FreshRSS/FreshRSS/pull/1056) * UI * Updated to jQuery 2.2.1 and changed code for auto-load on scroll [#1050](https://github.com/FreshRSS/FreshRSS/pull/1050), [#1091](https://github.com/FreshRSS/FreshRSS/pull/1091) * I18n diff --git a/data/force-https.default.txt b/data/force-https.default.txt index 668a7c0e8..044620098 100644 --- a/data/force-https.default.txt +++ b/data/force-https.default.txt @@ -1,5 +1,6 @@ dailymotion.com feedburner.com +gravatar.com gstatic.com tumblr.com wordpress.com -- cgit v1.2.3 From ef70782b381231b96d9bc11b44fca9d900ce65be Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sun, 1 May 2016 10:18:55 +0200 Subject: Change default feed timeout https://github.com/FreshRSS/FreshRSS/issues/1141 --- data/config.default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'data') diff --git a/data/config.default.php b/data/config.default.php index 174592a21..cae15330f 100644 --- a/data/config.default.php +++ b/data/config.default.php @@ -75,7 +75,7 @@ return array( 'cache_duration' => 800, # SimplePie HTTP request timeout in seconds. - 'timeout' => 10, + 'timeout' => 15, # If a user has not used FreshRSS for more than x seconds, # then its feeds are not refreshed anymore. -- cgit v1.2.3 From 138bbedac6a21b74b289c0b7f9d396f9e4f0f6b2 Mon Sep 17 00:00:00 2001 From: Amaury Carrade Date: Tue, 3 May 2016 14:42:16 +0200 Subject: Added a share for Wallabag v2 The new version of Wallabag (2) was rewrote completly, and the sharer changed. This keeps the old Wallabag v1 sharer, for people still using it, and adds a new one for Wallabag v2. The old sharer for wallabag v1 is renamed to 'wallabag v1' (instead of 'wallabag'). --- app/i18n/de/gen.php | 3 ++- app/i18n/en/gen.php | 3 ++- app/i18n/fr/gen.php | 3 ++- app/i18n/it/gen.php | 3 ++- app/i18n/nl/gen.php | 3 ++- app/i18n/tr/gen.php | 3 ++- data/shares.php | 9 +++++++++ 7 files changed, 21 insertions(+), 6 deletions(-) (limited to 'data') diff --git a/app/i18n/de/gen.php b/app/i18n/de/gen.php index bd0ba08cc..9b460d08d 100644 --- a/app/i18n/de/gen.php +++ b/app/i18n/de/gen.php @@ -164,7 +164,8 @@ return array( 'print' => 'Drucken', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', - 'wallabag' => 'wallabag', + 'wallabag' => 'wallabag v1', + 'wallabagv2' => 'wallabag v2', 'jdh' => 'Journal du hacker', ), 'short' => array( diff --git a/app/i18n/en/gen.php b/app/i18n/en/gen.php index 6fb33a4db..685a7d1a9 100644 --- a/app/i18n/en/gen.php +++ b/app/i18n/en/gen.php @@ -164,7 +164,8 @@ return array( 'print' => 'Print', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', - 'wallabag' => 'wallabag', + 'wallabag' => 'wallabag v1', + 'wallabagv2' => 'wallabag v2', 'jdh' => 'Journal du hacker', ), 'short' => array( diff --git a/app/i18n/fr/gen.php b/app/i18n/fr/gen.php index 6b7056f92..f6695d887 100644 --- a/app/i18n/fr/gen.php +++ b/app/i18n/fr/gen.php @@ -164,7 +164,8 @@ return array( 'print' => 'Imprimer', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', - 'wallabag' => 'wallabag', + 'wallabag' => 'wallabag v1', + 'wallabagv2' => 'wallabag v2', 'jdh' => 'Journal du hacker', ), 'short' => array( diff --git a/app/i18n/it/gen.php b/app/i18n/it/gen.php index 2efbef167..b3b4bd78e 100644 --- a/app/i18n/it/gen.php +++ b/app/i18n/it/gen.php @@ -163,7 +163,8 @@ return array( 'print' => 'Stampa', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', - 'wallabag' => 'wallabag', + 'wallabag' => 'wallabag v1', + 'wallabagv2' => 'wallabag v2', 'jdh' => 'Journal du hacker', ), 'short' => array( diff --git a/app/i18n/nl/gen.php b/app/i18n/nl/gen.php index 1cafaf82a..7bd8bbb09 100644 --- a/app/i18n/nl/gen.php +++ b/app/i18n/nl/gen.php @@ -164,7 +164,8 @@ return array( 'print' => 'Print', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', - 'wallabag' => 'wallabag', + 'wallabag' => 'wallabag v1', + 'wallabagv2' => 'wallabag v2', 'jdh' => 'Journal du hacker', ), 'short' => array( diff --git a/app/i18n/tr/gen.php b/app/i18n/tr/gen.php index f987a8e6c..092c19752 100644 --- a/app/i18n/tr/gen.php +++ b/app/i18n/tr/gen.php @@ -164,7 +164,8 @@ return array( 'print' => 'Print', 'shaarli' => 'Shaarli', 'twitter' => 'Twitter', - 'wallabag' => 'wallabag', + 'wallabag' => 'wallabag v1', + 'wallabagv2' => 'wallabag v2', 'jdh' => 'Journal du hacker', ), 'short' => array( diff --git a/data/shares.php b/data/shares.php index 264c8fed7..1295a26ac 100644 --- a/data/shares.php +++ b/data/shares.php @@ -38,6 +38,15 @@ return array( 'help' => 'http://www.wallabag.org/', 'form' => 'advanced', ), + 'wallabagv2' => array( + 'url' => '~URL~/bookmarklet?url=~LINK~', + 'transform' => array( + 'link' => array('rawurlencode'), + 'title' => array(), + ), + 'help' => 'http://www.wallabag.org/', + 'form' => 'advanced', + ), 'diaspora' => array( 'url' => '~URL~/bookmarklet?url=~LINK~&title=~TITLE~', 'transform' => array('rawurlencode'), -- cgit v1.2.3