aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Nordfeldth <mmn@hethane.se>2017-04-22 11:07:38 +0200
committerMikael Nordfeldth <mmn@hethane.se>2017-04-22 11:26:13 +0200
commit5e7a7701b94ee63927750064a39b188d9e17164a (patch)
tree387c7f4f57f6eed22229e5ee40db3b9a2c58d338
parenteefbfe746f7b4be7cc27cff868f9d1158b1c8dfd (diff)
downloadgnu-social-5e7a7701b94ee63927750064a39b188d9e17164a.tar
gnu-social-5e7a7701b94ee63927750064a39b188d9e17164a.zip
Domain name regular expression into lib/framework.php
cherry-pick-merge
-rw-r--r--lib/framework.php11
-rw-r--r--plugins/OStatus/OStatusPlugin.php4
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/framework.php b/lib/framework.php
index 620730370f..29f1d694d4 100644
--- a/lib/framework.php
+++ b/lib/framework.php
@@ -57,6 +57,17 @@ define('NOTICE_INBOX_SOURCE_FORWARD', 4);
define('NOTICE_INBOX_SOURCE_PROFILE_TAG', 5);
define('NOTICE_INBOX_SOURCE_GATEWAY', -1);
+/**
+ * StatusNet had this string as valid path characters: '\pN\pL\,\!\(\)\.\:\-\_\+\/\=\&\;\%\~\*\$\'\@'
+ * Some of those characters can be troublesome when auto-linking plain text. Such as "http://some.com/)"
+ * URL encoding should be used whenever a weird character is used, the following strings are not definitive.
+ */
+define('URL_REGEX_VALID_PATH_CHARS', '\pN\pL\,\!\.\:\-\_\+\/\@\=\;\%\~\*');
+define('URL_REGEX_VALID_QSTRING_CHARS', URL_REGEX_VALID_PATH_CHARS . '\&');
+define('URL_REGEX_VALID_FRAGMENT_CHARS', URL_REGEX_VALID_QSTRING_CHARS . '\?\#');
+define('URL_REGEX_EXCLUDED_END_CHARS', '\?\.\,\!\#\:\''); // don't include these if they are directly after a URL
+define('URL_REGEX_DOMAIN_NAME', '(?:(?!-)[A-Za-z0-9\-]{1,63}(?<!-)\.)+[A-Za-z]{2,10}');
+
// append our extlib dir as the last-resort place to find libs
set_include_path(get_include_path() . PATH_SEPARATOR . INSTALLDIR . '/extlib/');
diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php
index ddee3e9f9c..8a99620aef 100644
--- a/plugins/OStatus/OStatusPlugin.php
+++ b/plugins/OStatus/OStatusPlugin.php
@@ -280,7 +280,7 @@ class OStatusPlugin extends Plugin
static function extractWebfingerIds($text)
{
$wmatches = array();
- $result = preg_match_all('/(?:^|\s+)@((?:\w+[\w\-\_\.]?)*(?:[\w\-\_\.]*\w+)@(?:(?!-)[A-Za-z0-9\-]{1,63}(?<!-)\.)+[A-Za-z]{2,10})/',
+ $result = preg_match_all('/(?:^|\s+)@((?:\w+[\w\-\_\.]?)*(?:[\w\-\_\.]*\w+)@'.URL_REGEX_DOMAIN_NAME.')/',
$text,
$wmatches,
PREG_OFFSET_CAPTURE);
@@ -300,7 +300,7 @@ class OStatusPlugin extends Plugin
static function extractUrlMentions($text)
{
$wmatches = array();
- $result = preg_match_all('!(?:^|\s+)@((?:\w+\.)*\w+(?:\w+\-\w+)*\.\w+(?:/\w+)*)!',
+ $result = preg_match_all('!(?:^|\s+)@'.URL_REGEX_DOMAIN_NAME.'(?:/\w+)*)!',
$text,
$wmatches,
PREG_OFFSET_CAPTURE);