X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FNetwork.php;h=d25b799242e052bc4b3406c2b873bca97a166ee8;hb=318de2f59066361db3acd2664a26d13d5069b4ea;hp=ab1d44625c92a14aa3680b4162c85f06bc82b44b;hpb=9b8599b6198972538685fcc9723861e96b5112d0;p=friendica.git diff --git a/src/Util/Network.php b/src/Util/Network.php index ab1d44625c..d25b799242 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -12,8 +12,8 @@ use Friendica\Core\Config; use Friendica\Network\Probe; use Friendica\Object\Image; use Friendica\Util\XML; - -require_once 'library/slinky.php'; +use DOMDocument; +use DomXPath; class Network { @@ -80,7 +80,7 @@ class Network $a = get_app(); if (self::isUrlBlocked($url)) { - logger('z_fetch_url: domain of ' . $url . ' is blocked', LOGGER_DATA); + logger('domain of ' . $url . ' is blocked', LOGGER_DATA); return $ret; } @@ -185,7 +185,7 @@ class Network } if (curl_errno($ch) !== CURLE_OK) { - logger('fetch_url error fetching ' . $url . ': ' . curl_error($ch), LOGGER_NORMAL); + logger('error fetching ' . $url . ': ' . curl_error($ch), LOGGER_NORMAL); } $ret['errno'] = curl_errno($ch); @@ -195,7 +195,7 @@ class Network $http_code = $curl_info['http_code']; - logger('fetch_url ' . $url . ': ' . $http_code . " " . $s, LOGGER_DATA); + logger($url . ': ' . $http_code . " " . $s, LOGGER_DATA); $header = ''; // Pull out multiple headers, e.g. proxy and continuation headers @@ -217,7 +217,7 @@ class Network $newurl = $curl_info['redirect_url']; - if (($new_location_info['path'] == '') && ( $new_location_info['host'] != '')) { + if (($new_location_info['path'] == '') && ($new_location_info['host'] != '')) { $newurl = $new_location_info['scheme'] . '://' . $new_location_info['host'] . $old_location_info['path']; } @@ -229,11 +229,16 @@ class Network if (strpos($newurl, '/') === 0) { $newurl = $old_location_info["scheme"]."://".$old_location_info["host"].$newurl; } + $old_location_query = @parse_url($url, PHP_URL_QUERY); + + if ($old_location_query != '') { + $newurl .= '?' . $old_location_query; + } if (filter_var($newurl, FILTER_VALIDATE_URL)) { $redirects++; @curl_close($ch); - return self::zFetchURL($newurl, $binary, $redirects, $opts); + return self::curl($newurl, $binary, $redirects, $opts); } } @@ -248,8 +253,8 @@ class Network if (!$ret['success']) { $ret['error'] = curl_error($ch); $ret['debug'] = $curl_info; - logger('z_fetch_url: error: '.$url.': '.$ret['return_code'].' - '.$ret['error'], LOGGER_DEBUG); - logger('z_fetch_url: debug: '.print_r($curl_info, true), LOGGER_DATA); + logger('error: '.$url.': '.$ret['return_code'].' - '.$ret['error'], LOGGER_DEBUG); + logger('debug: '.print_r($curl_info, true), LOGGER_DATA); } $ret['body'] = substr($s, strlen($header)); @@ -370,6 +375,9 @@ class Network if ($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) { $matches = []; + $new_location_info = @parse_url($curl_info['redirect_url']); + $old_location_info = @parse_url($curl_info['url']); + preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); $newurl = trim(array_pop($matches)); @@ -771,29 +779,6 @@ class Network return $url; } - public static function shortenUrl($url) - { - $slinky = new Slinky($url); - $yourls_url = Config::get('yourls', 'url1'); - if ($yourls_url) { - $yourls_username = Config::get('yourls', 'username1'); - $yourls_password = Config::get('yourls', 'password1'); - $yourls_ssl = Config::get('yourls', 'ssl1'); - $yourls = new Slinky_YourLS(); - $yourls->set('username', $yourls_username); - $yourls->set('password', $yourls_password); - $yourls->set('ssl', $yourls_ssl); - $yourls->set('yourls-url', $yourls_url); - $slinky->set_cascade([$yourls, new Slinky_Ur1ca(), new Slinky_TinyURL()]); - } else { - // setup a cascade of shortening services - // try to get a short link from these services - // in the order ur1.ca, tinyurl - $slinky->set_cascade([new Slinky_Ur1ca(), new Slinky_TinyURL()]); - } - return $slinky->short(); - } - /** * @brief Find the matching part between two url *