X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fhttp-functions.php;h=36f0296eab2ae6045f84da8abc0f529ab6ad98c7;hb=b4042713447d2eb3777a49f24523511dbba8970f;hp=d049a7b75d4323b43c0cae0566063ef6b1e7dcd5;hpb=abdd5c798caaa56be3962dd28e6bc25a7a5cc0ba;p=mailer.git diff --git a/inc/http-functions.php b/inc/http-functions.php index d049a7b75d..36f0296eab 100644 --- a/inc/http-functions.php +++ b/inc/http-functions.php @@ -58,11 +58,35 @@ function sendHttpHeaders () { sendHeader('Content-Language: ' . getLanguage()); } +// Checks wether the URL is full-qualified (http[s]:// + hostname [+ request data]) +function isFullQualifiedUrl ($url) { + // Do we have cache? + if (!isset($GLOBALS[__FUNCTION__][$url])) { + // Determine it + $GLOBALS[__FUNCTION__][$url] = ((substr($url, 0, 7) == 'http://') || (substr($url, 0, 8) == 'https://')); + } // END - if + + // Return cache + return $GLOBALS[__FUNCTION__][$url]; +} + // Generates the full GET URL from given base URL and data array function generateGetUrlFromBaseUrlData ($baseUrl, $requestData = array()) { // Init URL $getUrl = $baseUrl; + // Is it full-qualified? + if (!isFullQualifiedUrl($getUrl)) { + // Need to prepend a slash? + if (substr($getUrl, 0, 1) != '/') { + // Prepend it + $getUrl = '/' . $getUrl; + } // END - if + + // Prepend http://hostname from mxchange.org server + $getUrl = getServerUrl() . $getUrl; + } // END - if + // Add data $body = http_build_query($requestData, '', '&'); @@ -111,12 +135,18 @@ function sendHeadRequest ($baseUrl, $requestData = array()) { // Generate full GET URL $getUrl = generateGetUrlFromBaseUrlData($baseUrl, $requestData); + // Do we have http[s]:// in front of the URL? + if (isFullQualifiedUrl($getUrl)) { + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + } elseif (substr($getUrl, 0, 1) != '/') { + // Prepend a slash + $getUrl = '/' . $getUrl; + } + // 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 .= 'Host: ' . $host . getConfig('HTTP_EOL'); @@ -144,12 +174,18 @@ function sendGetRequest ($baseUrl, $requestData = array(), $removeHeader = false // Generate full GET URL $getUrl = generateGetUrlFromBaseUrlData($baseUrl, $requestData); + // Do we have http[s]:// in front of the URL? + if (isFullQualifiedUrl($getUrl)) { + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + } elseif (substr($getUrl, 0, 1) != '/') { + // Prepend a slash + $getUrl = '/' . $getUrl; + } + // 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 .= 'Host: ' . $host . getConfig('HTTP_EOL'); @@ -180,15 +216,24 @@ function sendGetRequest ($baseUrl, $requestData = array(), $removeHeader = false // Send a POST request function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) { + // Copy baseUrl to getUrl + $getUrl = $baseUrl; + + // Do we have http[s]:// in front of the URL? + if (isFullQualifiedUrl($getUrl)) { + // Remove http[s]:// from url + $getUrl = removeHttpHostNameFromUrl($getUrl); + } elseif (substr($getUrl, 0, 1) != '/') { + // Prepend a slash + $getUrl = '/' . $getUrl; + } + // Extract host name from script $host = extractHostnameFromUrl($baseUrl); // 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 .= 'Host: ' . $host . getConfig('HTTP_EOL'); @@ -222,7 +267,7 @@ function sendPostRequest ($baseUrl, $requestData, $removeHeader = false) { return $response; } -// Sends a raw request to another host +// Sends a raw request (string) to given host (hostnames will be solved) function sendRawRequest ($host, $request) { //* DEBUG: */ die('host='.$host.',request=
'.$request.'
'); // Init errno and errdesc with 'all fine' values @@ -342,6 +387,7 @@ function sendRawRequest ($host, $request) { } // END - if // Add it to response + //* DEBUG: */ print 'line='.$line.'
'; $response[] = $line; } // END - while @@ -668,5 +714,44 @@ next[100]=
'.replaceReturnNewLine(htmlentities(call_user_func_array($mbPrefi
 	}
 } // END - if
 
+// Extract host from script name
+function extractHostnameFromUrl (&$script) {
+	// Use default SERVER_URL by default... ;) So?
+	$url = getServerUrl();
+
+	// Is this URL valid?
+	if (substr($script, 0, 7) == 'http://') {
+		// Use the hostname from script URL as new hostname
+		$url = substr($script, 7);
+		$extract = explode('/', $url);
+		$url = $extract[0];
+		// Done extracting the URL :)
+	} // END - if
+
+	// Extract host name
+	$host = str_replace('http://', '', $url);
+	if (isInString('/', $host)) {
+		$host = substr($host, 0, strpos($host, '/'));
+	} // END - if
+
+	// Generate relative URL
+	//* DEBUG: */ debugOutput('SCRIPT=' . $script);
+	if (substr(strtolower($script), 0, 7) == 'http://') {
+		// But only if http:// is in front!
+		$script = substr($script, (strlen($url) + 7));
+	} elseif (substr(strtolower($script), 0, 8) == 'https://') {
+		// Does this work?!
+		$script = substr($script, (strlen($url) + 8));
+	}
+
+	//* DEBUG: */ debugOutput('SCRIPT=' . $script);
+	if (substr($script, 0, 1) == '/') {
+		$script = substr($script, 1);
+	} // END - if
+
+	// Return host name
+	return $host;
+}
+
 // [EOF]
 ?>