return $getUrl;
}
+// Removes http[s]://<hostname> 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
// Extract hostname and port from script
$host = extractHostnameFromUrl($baseUrl);
+ // Remove http[s]://<hostname> 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')) {
// Extract hostname and port from script
$host = extractHostnameFromUrl($baseUrl);
+ // Remove http[s]://<hostname> 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')) {
// 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')) {
// Sends a raw request to another host
function sendRawRequest ($host, $request) {
+ //* DEBUG: */ die('host='.$host.',request=<pre>'.$request.'</pre>');
// Init errno and errdesc with 'all fine' values
$errno = '0';
$errdesc = '';
$resolver = new HostnameResolver();
// Open connection
- //* DEBUG: */ die('baseUrl=' . $baseUrl);
if ($useProxy === true) {
// Resolve hostname into IP address
$ip = $resolver->resolveHostname(compileRawCode(getProxyHost()));
// 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) {
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
$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;
// 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;
// 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];
// 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:<pre>' . print_r($response, true) . '</pre>');
}