From 3560c8d8e14e5ddc8a619844d9ab86d3b9d8d52e Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Wed, 06 Jul 2016 10:29:10 -0400
Subject: [PATCH] Fixed issue in SQL lib.

---
 interface/lib/classes/ispconfig_request.inc.php |  443 +++++++++++++++++++++++++++---------------------------
 1 files changed, 222 insertions(+), 221 deletions(-)

diff --git a/interface/lib/classes/ispconfig_request.inc.php b/interface/lib/classes/ispconfig_request.inc.php
index 75e06ee..479c11b 100644
--- a/interface/lib/classes/ispconfig_request.inc.php
+++ b/interface/lib/classes/ispconfig_request.inc.php
@@ -32,229 +32,230 @@
 //* This class is loaded automatically by the ispconfig framework.
 
 abstract class ISPConfigRequest {
-    /**
-     * Get header data and contents from an url
-     *
-     * Calls an url and returns an array containing the http header and the page content
-     *
-     * @access public
-     * @param string $url the url to call
-     * @param string $store_in the file to store the data in instead of returning them
-     * @return array The array with header data at index 0 and page content at index 1, returns boolean false on error. If $store_in is set only the headers are returned
-     */
-    public static function get_with_headers($url, $store_in = null, $follow_redirects = false, $user_agent = false) {
-        if($follow_redirects === true) $follow_redirects = 5;
-        elseif($follow_redirects !== false) $follow_redirects--;
-        
-        if(!$user_agent) $user_agent = 'pxFW GET proxy';
-        
-        $url_info = parse_url($url);
-        if(isset($url_info['scheme']) && $url_info['scheme'] == 'https') {
-            $port = isset($url_info['port']) ? $url_info['port'] : 443;
-            //@$fp = stream_socket_client('ssl://' . $url_info['host'] . ':' . $port, $errno, $errstr, 10, STREAM_CLIENT_CONNECT, stream_context_create(array('ssl' => array('ciphers' => 'ALL:!AES:!3DES:!RC4:@STRENGTH'))));
-            @$fp = fsockopen('sslv3://' . $url_info['host'], $port, $errno, $errstr, 10);
-        } else {
-            $port = isset($url_info['port']) ? $url_info['port'] : 80;
-            @$fp = fsockopen($url_info['host'], $port, $errno, $errstr, 10);
-        }
-        
-        if($store_in) {
-            $outfp = fopen($store_in, 'w');
-            if(!$outfp) return false;
-        }
-        if($fp) {
-            stream_set_timeout($fp, 10);
-            $head = 'GET ' . (isset($url_info['path']) ? $url_info['path'] : '/') . (isset($url_info['query']) ? '?' . $url_info['query'] : '');
-            $head .= " HTTP/1.0\r\nHost: " . (isset($url_info['host']) ? $url_info['host'] : '') . "\r\n";
-            $head .= "User-Agent: " . $user_agent . "\r\n";
-            if(isset($url_info['user'])) {
-                if(!array_key_exists('pass', $url_info)) $url_info['pass'] = '';
-                $head .= "Authorization: basic " . base64_encode($url_info['user'] . ':' . $url_info['pass']) . "\r\n"; 
-            }
-            $head .= "Connection: Close\r\n";
-            $head .= "Accept: */*\r\n\r\n";
-            
-            $data = '';
-            $eoheader = false;
-            fputs($fp, $head);
-            while(!feof($fp)) {
-                if($header = fgets($fp, 1024)) {
-                    if($eoheader == true) {
-                        if($store_in) fputs($outfp, $header);
-                        else $data .= $header;
-                        continue;
-                    }
-                
-                    if ($header == "\r\n") {
-                        $eoheader = true;
-                        continue;
-                    } else {
-                        $header = trim($header);
-                    }
-                    $sc_pos = strpos($header, ':');
-                    if($sc_pos === false) {
-                        $headers['status'] = $header;
-                        $headers['http_code'] = intval(preg_replace('/^HTTP\/\d+\.\d+\s+(\d+)\s+.*$/', '$1', $header));
-                    } else {
-                        $label = substr($header, 0, $sc_pos);
-                        $value = substr($header, $sc_pos + 1);
-                        $headers[strtolower($label)] = trim($value);
-                    }
-                }
-            }
-            fclose($fp);
-            if(isset($headers['http_code']) && isset($headers['location']) && ($headers['http_code'] == 301 || $headers['http_code'] == 302) && $follow_redirects > 0) {
-                if($store_in) fclose($outfp);
-                return $self::get_with_headers($headers['location'], $store_in, $follow_redirects);
-            }
-            if($store_in) {
-                fclose($outfp);
-                
-                $code = intval(preg_replace('/^HTTP\/\d+\.\d+\s+(\d+)\s+.*$/', '$1', $headers['status']));
-                if($code != 200) {
-                    return false;
-                }
-                return $headers;
-            } else {
-                return array($headers, $data);
-            }
-        } else {
-            if($store_in) {
-                fclose($outfp);
-                @unlink($store_in);
-            }
-            return false;
-        }
-    }
-
-    /**
-     * Gets the content of an url
-     *
-     * Checks for the php function file_get_contents and uses an alternative if not found
-     *
-     * @access public
-     * @param string $url url to get
-     * @return string url data including headers
-     * @see file_get_contents
-     */
-    public static function get($url) {
-        if(function_exists('file_get_contents')) return file_get_contents($url);
-        
-        $fp = fopen($url, 'r');
-        $data = '';
-        while(!feof($fp)) {
-            $data .= fgets($fp, 8192);
-        }
-        fclose($fp);
-        
-        return $data;
-    }
+	/**
+	 * Get header data and contents from an url
+	 *
+	 * Calls an url and returns an array containing the http header and the page content
+	 *
+	 * @access public
+	 * @param string $url the url to call
+	 * @param string $store_in the file to store the data in instead of returning them
+	 * @return array The array with header data at index 0 and page content at index 1, returns boolean false on error. If $store_in is set only the headers are returned
+	 */
 
 
-    /**
-     * Make a post request and get data
-     *
-     * Calls an url with a post request and returns the data - and optionally the header content
-     *
-     * @access public
-     * @param string $url the url to call
-     * @param string $data the post data to send
-     * @param bool $get_headers if true, the function will return an array like PXUrl::get_with_headers(), otherwise the content is returned as a string
-     * @return mixed Content data as string or - if get_headers is true - the array with header data at index 0 and page content at index 1
-     * @see get_url_and_headers
-     */
-    public static function post($url, $data, $get_headers = false, $user_agent = false) {
-        $url_info = parse_url($url);
-        if((isset($url_info['scheme']) && $url_info['scheme'] == 'https') || $url_info['port'] == 443) {
-            $port = (!isset($url_info['port']) || !$url_info['port'] || $url_info['port'] == 443 || $url_info['port'] == 80) ? 443 : $url_info['port'];
-            //@$fp = stream_socket_client('ssl://' . $url_info['host'] . ':' . $port, $errno, $errstr, 10, STREAM_CLIENT_CONNECT, stream_context_create(array('ssl' => array('ciphers' => 'ALL:!AES:!3DES:!RC4:@STRENGTH'))));
-            @$fp = fsockopen('sslv3://' . $url_info['host'], $port, $errno, $errstr, 10);
-        } else {
-            $port = isset($url_info['port']) ? $url_info['port'] : 80;
-            @$fp = fsockopen($url_info['host'], $port, $errno, $errstr, 10);
-        }
-        
-        if(!$fp) return '';
-        
-        if(!$user_agent) $user_agent = 'pxFW GET proxy';
-                
-        $header = 'POST ' . (isset($url_info['path']) ? $url_info['path'] : '/') . (isset($url_info['query']) ? '?' . @$url_info['query'] : '') . " HTTP/1.1\r\n";
-        $header .= "Host: " . @$url_info['host'] . "\r\n";
-        $header .= "User-Agent: " . $user_agent . "\r\n";
-        if(isset($url_info['user'])) {
-            if(!array_key_exists('pass', $url_info)) $url_info['pass'] = '';
-            $header .= "Authorization: basic " . base64_encode($url_info['user'] . ':' . $url_info['pass']) . "\r\n"; 
-        }
-        $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
-        $header .= "Content-Length: " . strlen($data) . "\r\n";
-        $header .= "Connection: close\r\n\r\n";
-        $header .= $data . "\r\n\r\n";
-        
-        fwrite($fp, $header);
-        
-        $response = '';
-        $eoheader = false;
-        $header = '';
-        $tmpdata = '';
-        $chunked = false;
-        $chunklen = 0;
-        
-        while(!feof($fp)) {
-            if($header = @fgets($fp, 1024)) {
-                if($eoheader == true) {
-                    $response .= $header;
-                    continue;
-                }
-            
-                if ($header == "\r\n") {
-                    $eoheader = true;
-                    continue;
-                } else {
-                    $tmpdata .= $header;
-                    if(preg_match('/Transfer-Encoding:\s+chunked/i', $tmpdata)) $chunked = true;
-                }
-            }
-        }
-        //var_dump($response, $chunked, $header);
-        if($chunked == true) {
-            $lines = explode("\n", $response);
-            $response = '';
-            $chunklen = 0;
-            foreach($lines as $line) {
-                $line .= "\n";
-                if($chunklen <= 0) {
-                    if(preg_match('/^([0-9a-f]+)\s*$/is', $line, $matches)) {
-                        $chunklen = hexdec($matches[1]);
-                    }
-                    continue;
-                }
-                
-                if(strlen($line) > $chunklen) {
-                    //echo "Warnung: " . strlen($line) . " > " . $chunklen . "\n";
-                    $line = substr($line, 0, $chunklen);
-                }
-                $response .= $line;
-                $chunklen -= strlen($line);
-            }
-            
-            $start = strpos($response,'<?xml');
-            $end = strrpos($response,'>');
-            if($start !== false && $end !== false) $response = substr($response, $start, $end - $start + 1);
-        }
-        
-        fclose($fp);
-        
-        if($get_headers == true) {
-            $tmpheaders = explode("\n", $tmpdata);
-            $headers = array();
-            foreach($tmpheaders as $cur) {
-                if(preg_match('/^(\w+)\:\s*(.*)$/is', $cur, $matches)) {
-                    $headers["$matches[1]"] = trim($matches[2]);
-                }
-            }
-            return array($headers, $response);
-        } else return $response;
-    }
+	public static function get_with_headers($url, $store_in = null, $follow_redirects = false, $user_agent = false) {
+		if($follow_redirects === true) $follow_redirects = 5;
+		elseif($follow_redirects !== false) $follow_redirects--;
+
+		if(!$user_agent) $user_agent = 'pxFW GET proxy';
+
+		$url_info = parse_url($url);
+		if(isset($url_info['scheme']) && $url_info['scheme'] == 'https') {
+			$port = isset($url_info['port']) ? $url_info['port'] : 443;
+			@$fp = fsockopen('tls://' . $url_info['host'], $port, $errno, $errstr, 10);
+		} else {
+			$port = isset($url_info['port']) ? $url_info['port'] : 80;
+			@$fp = fsockopen($url_info['host'], $port, $errno, $errstr, 10);
+		}
+
+		if($store_in) {
+			$outfp = fopen($store_in, 'w');
+			if(!$outfp) return false;
+		}
+		if($fp) {
+			stream_set_timeout($fp, 10);
+			$head = 'GET ' . (isset($url_info['path']) ? $url_info['path'] : '/') . (isset($url_info['query']) ? '?' . $url_info['query'] : '');
+			$head .= " HTTP/1.0\r\nHost: " . (isset($url_info['host']) ? $url_info['host'] : '') . "\r\n";
+			$head .= "User-Agent: " . $user_agent . "\r\n";
+			if(isset($url_info['user'])) {
+				if(!array_key_exists('pass', $url_info)) $url_info['pass'] = '';
+				$head .= "Authorization: basic " . base64_encode($url_info['user'] . ':' . $url_info['pass']) . "\r\n";
+			}
+			$head .= "Connection: Close\r\n";
+			$head .= "Accept: */*\r\n\r\n";
+
+			$data = '';
+			$eoheader = false;
+			fputs($fp, $head);
+			while(!feof($fp)) {
+				if($header = fgets($fp, 1024)) {
+					if($eoheader == true) {
+						if($store_in) fputs($outfp, $header);
+						else $data .= $header;
+						continue;
+					}
+
+					if ($header == "\r\n") {
+						$eoheader = true;
+						continue;
+					} else {
+						$header = trim($header);
+					}
+					$sc_pos = strpos($header, ':');
+					if($sc_pos === false) {
+						$headers['status'] = $header;
+						$headers['http_code'] = intval(preg_replace('/^HTTP\/\d+\.\d+\s+(\d+)\s+.*$/', '$1', $header));
+					} else {
+						$label = substr($header, 0, $sc_pos);
+						$value = substr($header, $sc_pos + 1);
+						$headers[strtolower($label)] = trim($value);
+					}
+				}
+			}
+			fclose($fp);
+			if(isset($headers['http_code']) && isset($headers['location']) && ($headers['http_code'] == 301 || $headers['http_code'] == 302) && $follow_redirects > 0) {
+				if($store_in) fclose($outfp);
+				return $self::get_with_headers($headers['location'], $store_in, $follow_redirects);
+			}
+			if($store_in) {
+				fclose($outfp);
+
+				$code = intval(preg_replace('/^HTTP\/\d+\.\d+\s+(\d+)\s+.*$/', '$1', $headers['status']));
+				if($code != 200) {
+					return false;
+				}
+				return $headers;
+			} else {
+				return array($headers, $data);
+			}
+		} else {
+			if($store_in) {
+				fclose($outfp);
+				@unlink($store_in);
+			}
+			return false;
+		}
+	}
+
+	/**
+	 * Gets the content of an url
+	 *
+	 * Checks for the php function file_get_contents and uses an alternative if not found
+	 *
+	 * @access public
+	 * @param string $url url to get
+	 * @return string url data including headers
+	 * @see file_get_contents
+	 */
+	public static function get($url) {
+		if(function_exists('file_get_contents')) return file_get_contents($url);
+
+		$fp = fopen($url, 'r');
+		$data = '';
+		while(!feof($fp)) {
+			$data .= fgets($fp, 8192);
+		}
+		fclose($fp);
+
+		return $data;
+	}
+
+
+	/**
+	 * Make a post request and get data
+	 *
+	 * Calls an url with a post request and returns the data - and optionally the header content
+	 *
+	 * @access public
+	 * @param string $url the url to call
+	 * @param string $data the post data to send
+	 * @param bool $get_headers if true, the function will return an array like PXUrl::get_with_headers(), otherwise the content is returned as a string
+	 * @return mixed Content data as string or - if get_headers is true - the array with header data at index 0 and page content at index 1
+	 * @see get_url_and_headers
+	 */
+	public static function post($url, $data, $get_headers = false, $user_agent = false) {
+		$url_info = parse_url($url);
+		if((isset($url_info['scheme']) && $url_info['scheme'] == 'https') || $url_info['port'] == 443) {
+			$port = (!isset($url_info['port']) || !$url_info['port'] || $url_info['port'] == 443 || $url_info['port'] == 80) ? 443 : $url_info['port'];
+			@$fp = fsockopen('tls://' . $url_info['host'], $port, $errno, $errstr, 10);
+		} else {
+			$port = isset($url_info['port']) ? $url_info['port'] : 80;
+			@$fp = fsockopen($url_info['host'], $port, $errno, $errstr, 10);
+		}
+
+		if(!$fp) return '';
+
+		if(!$user_agent) $user_agent = 'pxFW GET proxy';
+
+		$header = 'POST ' . (isset($url_info['path']) ? $url_info['path'] : '/') . (isset($url_info['query']) ? '?' . @$url_info['query'] : '') . " HTTP/1.1\r\n";
+		$header .= "Host: " . @$url_info['host'] . "\r\n";
+		$header .= "User-Agent: " . $user_agent . "\r\n";
+		if(isset($url_info['user'])) {
+			if(!array_key_exists('pass', $url_info)) $url_info['pass'] = '';
+			$header .= "Authorization: basic " . base64_encode($url_info['user'] . ':' . $url_info['pass']) . "\r\n";
+		}
+		$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
+		$header .= "Content-Length: " . strlen($data) . "\r\n";
+		$header .= "Connection: close\r\n\r\n";
+		$header .= $data . "\r\n\r\n";
+
+		fwrite($fp, $header);
+
+		$response = '';
+		$eoheader = false;
+		$header = '';
+		$tmpdata = '';
+		$chunked = false;
+		$chunklen = 0;
+
+		while(!feof($fp)) {
+			if($header = @fgets($fp, 1024)) {
+				if($eoheader == true) {
+					$response .= $header;
+					continue;
+				}
+
+				if ($header == "\r\n") {
+					$eoheader = true;
+					continue;
+				} else {
+					$tmpdata .= $header;
+					if(preg_match('/Transfer-Encoding:\s+chunked/i', $tmpdata)) $chunked = true;
+				}
+			}
+		}
+		//var_dump($response, $chunked, $header);
+		if($chunked == true) {
+			$lines = explode("\n", $response);
+			$response = '';
+			$chunklen = 0;
+			foreach($lines as $line) {
+				$line .= "\n";
+				if($chunklen <= 0) {
+					if(preg_match('/^([0-9a-f]+)\s*$/is', $line, $matches)) {
+						$chunklen = hexdec($matches[1]);
+					}
+					continue;
+				}
+
+				if(strlen($line) > $chunklen) {
+					//echo "Warnung: " . strlen($line) . " > " . $chunklen . "\n";
+					$line = substr($line, 0, $chunklen);
+				}
+				$response .= $line;
+				$chunklen -= strlen($line);
+			}
+
+			$start = strpos($response, '<?xml');
+			$end = strrpos($response, '>');
+			if($start !== false && $end !== false) $response = substr($response, $start, $end - $start + 1);
+		}
+
+		fclose($fp);
+
+		if($get_headers == true) {
+			$tmpheaders = explode("\n", $tmpdata);
+			$headers = array();
+			foreach($tmpheaders as $cur) {
+				if(preg_match('/^(\w+)\:\s*(.*)$/is', $cur, $matches)) {
+					$headers["$matches[1]"] = trim($matches[2]);
+				}
+			}
+			return array($headers, $response);
+		} else return $response;
+	}
+
 }
 
 ?>

--
Gitblit v1.9.1