From ce004083d9c3c22cacaf059aae3cfd725fda6936 Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Tue, 18 Aug 2009 14:15:55 -0400 Subject: [PATCH] IPv4 and IPv6 addresses are picked up in URLs Added ".onion" as a possible TLD --- lib/util.php | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/util.php b/lib/util.php index c8e318efec..5ecee69156 100644 --- a/lib/util.php +++ b/lib/util.php @@ -417,11 +417,31 @@ function common_replace_urls_callback($text, $callback, $notice_id = null) { '(?:https?|ftps?|mms|rtsp|gopher|news|nntp|telnet|wais|file|prospero|webcal|irc)://'. '|'. '(?:mailto|aim|tel|xmpp):'. + ')?'. + '('. + '(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'. //IPv4 + '|(?:'. + '([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,6}|'. //IPv6 + '([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}|'. + '([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}|'. + '([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}|'. + '([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}|'. + '([0-9a-f]{1,4}:){1,6}(:[0-9a-f]{1,4}){1,1}|'. + '(([0-9a-f]{1,4}:){1,7}|:):|'. + ':(:[0-9a-f]{1,4}){1,7}|'. + '((([0-9a-f]{1,4}:){6})(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|'. + '(([0-9a-f]{1,4}:){5}[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})|'. + '([0-9a-f]{1,4}:){5}:[0-9a-f]{1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'. + '([0-9a-f]{1,4}:){1,1}(:[0-9a-f]{1,4}){1,4}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'. + '([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,3}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'. + '([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,2}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'. + '([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,1}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'. + '(([0-9a-f]{1,4}:){1,5}|:):(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|'. + ':(:[0-9a-f]{1,4}){1,5}:(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}'. + ')|'. + '(?:[^.\s/:]+\.)+'. //DNS + '(?:museum|travel|onion|[a-z]{2,4})'. ')'. - '[^.\s]+\.[^\s]+'. - '|'. - '(?:[^.\s/:]+\.)+'. - '(?:museum|travel|[a-z]{2,4})'. '(?:[:/][^\s]*)?'. ')'. '#ix';