From: Roland Häder Date: Wed, 10 Aug 2011 21:06:29 +0000 (+0000) Subject: Fixes for ext-yoomedia to be compatible with Interface 2.0 X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=abdd5c798caaa56be3962dd28e6bc25a7a5cc0ba;p=mailer.git Fixes for ext-yoomedia to be compatible with Interface 2.0 --- diff --git a/inc/http-functions.php b/inc/http-functions.php index 8ba4d80654..d049a7b75d 100644 --- a/inc/http-functions.php +++ b/inc/http-functions.php @@ -90,6 +90,22 @@ function generateGetUrlFromBaseUrlData ($baseUrl, $requestData = array()) { return $getUrl; } +// Removes http[s]:// from given url +function removeHttpHostNameFromUrl ($url) { + // Remove http[s]:// + $remove = explode(':', $url); + $remove = explode('/', substr($remove[1], 3)); + + // Remove the first element (should be the hostname) + unset($remove[0]); + + // implode() back all other elements and prepend a slash + $url = '/' . implode('/', $remove); + + // Return prepared URL + return $url; +} + // Send a HEAD request function sendHeadRequest ($baseUrl, $requestData = array()) { // Generate full GET URL @@ -98,8 +114,11 @@ function sendHeadRequest ($baseUrl, $requestData = array()) { // Extract hostname and port from script $host = extractHostnameFromUrl($baseUrl); + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + // Generate HEAD request header - $request = 'HEAD /' . trim($getUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); + $request = 'HEAD ' . trim($getUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL'); if (isConfigEntrySet('FULL_VERSION')) { @@ -128,8 +147,11 @@ function sendGetRequest ($baseUrl, $requestData = array(), $removeHeader = false // Extract hostname and port from script $host = extractHostnameFromUrl($baseUrl); + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + // Generate GET request header - $request = 'GET /' . trim($getUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); + $request = 'GET ' . trim($getUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL'); $request .= 'Host: ' . $host . getConfig('HTTP_EOL'); $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL'); if (isConfigEntrySet('FULL_VERSION')) { @@ -164,8 +186,11 @@ function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) { // Construct request body $body = http_build_query($requestData, '', '&'); + // Remove http(s)://$host from base URL + $baseUrl = removeHttpHostNameFromUrl($baseUrl); + // Generate POST request header - $request = 'POST /' . trim($baseUrl) . ' 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'); if (isConfigEntrySet('FULL_VERSION')) { @@ -199,6 +224,7 @@ function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) { // Sends a raw request to another host function sendRawRequest ($host, $request) { + //* DEBUG: */ die('host='.$host.',request=
'.$request.'
'); // Init errno and errdesc with 'all fine' values $errno = '0'; $errdesc = ''; @@ -239,7 +265,6 @@ function sendRawRequest ($host, $request) { $resolver = new HostnameResolver(); // Open connection - //* DEBUG: */ die('baseUrl=' . $baseUrl); if ($useProxy === true) { // Resolve hostname into IP address $ip = $resolver->resolveHostname(compileRawCode(getProxyHost())); diff --git a/inc/libs/yoomedia_functions.php b/inc/libs/yoomedia_functions.php index d1912a5243..b153bd6f50 100644 --- a/inc/libs/yoomedia_functions.php +++ b/inc/libs/yoomedia_functions.php @@ -47,21 +47,20 @@ function YOOMEDIA_QUERY_API ($script, $countQuery = true) { // Enougth queries left? if ((getConfig('yoomedia_requests_remain') > 0) || ($countQuery === false)) { - // Prepare the low-level request - $requestString = sprintf("http://www.yoomedia.de/interface_2.0/%s?id=%s&sid=%s&pw=%s&reload=%s&ma=%s&uebrig=%s&verguetung=%s&erotik=%s", - $script, - getConfig('yoomedia_id'), - getConfig('yoomedia_sid'), - getConfig('yoomedia_passwd'), - getConfig('yoomedia_tm_max_reload'), - getConfig('yoomedia_tm_min_wait'), - getConfig('yoomedia_tm_clicks_remain'), - getConfig('yoomedia_tm_min_pay'), - getConfig('yoomedia_erotic_allowed') + // Prepare request array + $requestData = array( + 'id' => getConfig('yoomedia_id'), + 'sid' => getConfig('yoomedia_sid'), + 'pw' => getConfig('yoomedia_passwd'), + 'reload' => getConfig('yoomedia_tm_max_reload'), + 'ma' => getConfig('yoomedia_tm_min_wait'), + 'uebrig' => getConfig('yoomedia_tm_clicks_remain'), + 'verguetung' => getConfig('yoomedia_tm_min_pay'), + 'erotik' => getConfig('yoomedia_erotic_allowed') ); // Run the query - $response = sendGetRequest($requestString); + $response = sendGetRequest('http://www.yoomedia.de/interface_2.0/' . $script, $requestData, true); // Convert from ISO to UTF-8 only if count is > 3 because <= 3 means timeout if (count($response) > 3) { @@ -69,14 +68,6 @@ function YOOMEDIA_QUERY_API ($script, $countQuery = true) { foreach ($response as $k => $v) { // Convert the line $response[$k] = iconv('windows-1252', 'UTF-8//TRANSLIT', $v); - /* - // iconv()-less ISO-8859-1 -> UTF-8 - $response[$k] = preg_replace( - "/([\x80-\xFF])/e", - "chr(0xC0|ord('\\1')>>6).chr(0x80|ord('\\1')&0x3F)", - $v - ); - */ } // END - foreach } // END - if @@ -117,18 +108,14 @@ function YOOMEDIA_TEST_CONFIG ($data) { $errorCode = YOOMEDIA_GET_ERRORCODE_FROM_RESULT($response); // Log the response if failed - if (count($response) == 0) { + if ((count($response) == 0) && ($errorCode > 0)) { // Queries depleted (as we count here!) logDebugMessage(__FUNCTION__, __LINE__, 'Requested depleted. Maxmimum was: ' . getConfig('yoomedia_requests_total')); $errorCode = -1; - } elseif (!isset($response[8])) { - // Invalid response - logDebugMessage(__FUNCTION__, __LINE__, 'Missing response line [8]. Raw response=' . base64_encode(serialize($response))); - $errorCode = -1; } elseif ((($errorCode <= 4) && ($errorCode > 0)) || ($errorCode >= 8)) { // An error has returned from the account logDebugMessage(__FUNCTION__, __LINE__, 'Unexpected error code ' . $errorCode . ' received.'); - } elseif (count($response) < 9) { + } elseif ((count($response) > 0) && ($errorCode != 0)) { // Log serialized raw response logDebugMessage(__FUNCTION__, __LINE__, 'Raw response=' . base64_encode(serialize($response))); $errorCode = -1; @@ -384,6 +371,9 @@ function YOOMEDIA_CONVERT_MODE ($mode) { // Extract code from response function YOOMEDIA_GET_ERRORCODE_FROM_RESULT ($response) { + // The response must be an array + assert(is_array($response)); + // Bad code as default $code = -999; @@ -394,7 +384,7 @@ function YOOMEDIA_GET_ERRORCODE_FROM_RESULT ($response) { // Use only the first element $code = bigintval($codeArray[0]); - } elseif ((is_array($response[0])) && (isset($response[0]['id']))) { + } elseif (!empty($response[0])) { // Begin with extraction $codeArray = explode(' ', $response[0]['id']); $code = $codeArray[0]; @@ -409,8 +399,10 @@ function YOOMEDIA_GET_ERRORCODE_FROM_RESULT ($response) { // Remove carrige-return $code = str_replace("\n", '', $code); - - } elseif (count($response) < 9) { + } elseif (count($response) == 0) { + // All fine, but empty result + $code = 0; + } else { // Should not happen! debug_report_bug(__FUNCTION__, __LINE__, 'Cannot parse response. Raw response:
' . print_r($response, true) . '
'); }