Browse Source

Merge branch 'subscribe-idn-feed' into 'master'

Subscribe to feed with Internationalized Domain Name

Currently you cannot subscribe to feeds on hosts with internationalized domain names (IDNA) within tt-rss. You need to manually convert them to punycode to subscribe to them.

This patch adds code to detect IDNA and convert them to punycode in fix_url() if possible on the system. This requires PHP IDN functions (e.g. on Debian Jessie this needs php5-intl to be installed), so a notice is added to the installer sanity check.

See merge request !37

Andrew Dolgov 7 years ago
parent
commit
f6bcb5c606
2 changed files with 14 additions and 0 deletions
  1. 10 0
      include/functions2.php
  2. 4 0
      install/index.php

+ 10 - 0
include/functions2.php

@@ -1776,6 +1776,16 @@
 			$url .= '/';
 		}
 
+		//convert IDNA hostname to punycode if possible
+		if (function_exists("idn_to_ascii")) {
+			$parts = parse_url($url);
+			if (mb_detect_encoding($parts['host']) != 'ASCII')
+			{
+				$parts['host'] = idn_to_ascii($parts['host']);
+				$url = build_url($parts);
+			}
+		}
+
 		if ($url != "http:///")
 			return $url;
 		else

+ 4 - 0
install/index.php

@@ -309,6 +309,10 @@
 			array_push($notices, "CURL and open_basedir combination breaks support for HTTP redirects. See the FAQ for more information.");
 		}
 
+		if (!function_exists("idn_to_ascii")) {
+			array_push($notices, "PHP support for Internationalization Functions is required to handle Internationalized Domain Names.");
+		}
+
 		if (count($notices) > 0) {
 			print_notice("Configuration check succeeded with minor problems:");