X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fhttp-functions.php;h=5e7aefa5718f0ed991119f0004c3d8820576f9aa;hb=34b1f5b69205b08c760d6dcc87ef6a2d1c291261;hp=b0cbca319d79501193253058fab94b37f113ff3e;hpb=7360c219f5623e5689deba8805b49dbba6c3bc2a;p=mailer.git diff --git a/inc/http-functions.php b/inc/http-functions.php index b0cbca319d..5e7aefa571 100644 --- a/inc/http-functions.php +++ b/inc/http-functions.php @@ -59,17 +59,17 @@ function sendHttpHeaders () { } // Send a GET request -function sendGetRequest ($script, $data = array(), $removeHeader = false) { +function sendGetRequest ($baseUrl, $data = array(), $removeHeader = false) { // Extract hostname and port from script - $host = extractHostnameFromUrl($script); + $host = extractHostnameFromUrl($baseUrl); // Add data $body = http_build_query($data, '', '&'); - // There should be data, else we don't need to extend $script with $body + // There should be data, else we don't need to extend $baseUrl with $body if (!empty($body)) { // Do we have a question-mark in the script? - if (strpos($script, '?') === false) { + if (strpos($baseUrl, '?') === false) { // No, so first char must be question mark $body = '?' . $body; } else { @@ -78,16 +78,16 @@ function sendGetRequest ($script, $data = array(), $removeHeader = false) { } // Add script data - $script .= $body; + $baseUrl .= $body; // Remove trailed & to make it more conform - if (substr($script, -1, 1) == '&') { - $script = substr($script, 0, -1); + if (substr($baseUrl, -1, 1) == '&') { + $baseUrl = substr($baseUrl, 0, -1); } // END - if } // END - if // Generate GET request header - $request = 'GET /' . trim($script) . ' HTTP/1.1' . getConfig('HTTP_EOL'); + $request = 'GET /' . trim($baseUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL'); if (isConfigEntrySet('FULL_VERSION')) { @@ -115,15 +115,15 @@ function sendGetRequest ($script, $data = array(), $removeHeader = false) { } // Send a POST request -function sendPostRequest ($script, array $postData, $removeHeader = false) { +function sendPostRequest ($baseUrl, array $postData, $removeHeader = false) { // Extract host name from script - $host = extractHostnameFromUrl($script); + $host = extractHostnameFromUrl($baseUrl); // Construct request body $body = http_build_query($postData, '', '&'); // Generate POST request header - $request = 'POST /' . trim($script) . ' HTTP/1.0' . getConfig('HTTP_EOL'); + $request = 'POST /' . trim($baseUrl) . ' HTTP/1.0' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL'); $request .= 'User-Agent: ' . getTitle() . '/' . getFullVersion() . getConfig('HTTP_EOL'); @@ -193,7 +193,7 @@ function sendRawRequest ($host, $request) { $resolver = new HostnameResolver(); // Open connection - //* DEBUG: */ die('SCRIPT=' . $script); + //* DEBUG: */ die('baseUrl=' . $baseUrl); if ($useProxy === true) { // Resolve hostname into IP address $ip = $resolver->resolveHostname(compileRawCode(getProxyHost())); @@ -267,7 +267,7 @@ function sendRawRequest ($host, $request) { // Check for broken HTTP implementations if (substr(strtolower($line), 0, 7) == 'server:') { // Anomic (see http://anomic.de, http://yacy.net) is currently broken - $GLOBALS['is_http_server_broken'] = in_array(trim(substr(strtolower($line), 7)), array('anomichttpd')); + $GLOBALS['is_http_server_broken'] = (count(getArrayKeysFromSubStrArray(strtolower($line), array('anomichttpd'))) > 0); } // END - if // Add it to response @@ -467,7 +467,7 @@ if (!function_exists('http_build_query')) { if (is_array($v) || is_object($v)) { array_push($ret, http_build_query($v, '', $sep, $k)); } else { - array_push($ret, $k.'='.urlencode($v)); + array_push($ret, $k . '=' . urlencode($v)); } } // END - foreach @@ -485,7 +485,8 @@ if (!function_exists('http_chunked_decode')) { * * @param $chunk The encoded message * @return $dechunk The decoded message. If $chunk wasn't encoded properly debug_report_bug() is being called - * @author Marques Johansson + * @author Marques Johansson (initial author) + * @author Roland Haeder (heavy modifications and simplification) * @link http://php.net/manual/en/function.http-chunked-decode.php#89786 */ function http_chunked_decode ($chunk) { @@ -543,8 +544,9 @@ offset['.__LINE__.']='.$offset.'
'; /* * Hack for e.g. YaCy HTTPDaemon (Anomic Server), this HTTP server - * is currently (revision 7567) broken and does not include the \r\n - * characters when it does sent "chunked" messages. + * is currently (revision 7567 and maybe earlier) broken and does + * not include the \r\n characters when it sents a "chunked" HTTP + * message. */ $count = 0; if (isBrokenHttpServerImplentation()) { @@ -552,7 +554,11 @@ offset['.__LINE__.']='.$offset.'
'; $count = call_user_func_array($mbPrefix . 'substr_count', array($next, getConfig('HTTP_EOL'))); } // END - if - // Correct it because we need to subtract occurrences of \r\n + /* + * Correct chunk length because some broken HTTP server + * implementation subtract occurrences of \r\n in their chunk + * lengths. + */ $chunkLen = hexdec(rtrim($chunkLenHex, getConfig('HTTP_EOL'))) - ($count * strlen(getConfig('HTTP_EOL'))); // Add next chunk to $dechunk @@ -575,7 +581,7 @@ chunk=
'.replaceReturnNewLine(htmlentities($chunk)).'
'); break; } // END - if - // Calculate next offset of chunk + // Calculate offset of next chunk $offset = call_user_func_array($mbPrefix . 'strpos', array($chunk, getConfig('HTTP_EOL'), $offset + $chunkLen)) + 2; /* DEBUG: *