[geeklog-cvs] Geeklog-1.x/plugins/spamx/magpierss/extlib Snoopy.class.inc, 1.3, 1.3.2.1
Dirk Haun
dhaun at qs1489.pair.com
Tue Jun 5 16:22:09 EDT 2007
Update of /cvsroot/geeklog/Geeklog-1.x/plugins/spamx/magpierss/extlib
In directory qs1489.pair.com:/tmp/cvs-serv38871/plugins/spamx/magpierss/extlib
Modified Files:
Tag: geeklog_1_4_1_1
Snoopy.class.inc
Log Message:
Copied the updated Snoopy class over from the trunk
Index: Snoopy.class.inc
===================================================================
RCS file: /cvsroot/geeklog/Geeklog-1.x/plugins/spamx/magpierss/extlib/Snoopy.class.inc,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -C2 -d -r1.3 -r1.3.2.1
*** Snoopy.class.inc 25 Jun 2006 08:15:43 -0000 1.3
--- Snoopy.class.inc 5 Jun 2007 20:22:07 -0000 1.3.2.1
***************
*** 6,10 ****
Author: Monte Ohrt <monte at ispi.net>
Copyright (c): 1999-2000 ispi, all rights reserved
! Version: 1.0
* This library is free software; you can redistribute it and/or
--- 6,10 ----
Author: Monte Ohrt <monte at ispi.net>
Copyright (c): 1999-2000 ispi, all rights reserved
! Version: 1.01
* This library is free software; you can redistribute it and/or
***************
*** 32,36 ****
The latest version of Snoopy can be obtained from:
! http://snoopy.sourceforge.com
*************************************************/
--- 32,36 ----
The latest version of Snoopy can be obtained from:
! http://snoopy.sourceforge.net/
*************************************************/
***************
*** 46,50 ****
var $proxy_host = ""; // proxy host to use
var $proxy_port = ""; // proxy port to use
! var $agent = "Snoopy v1.0"; // agent we masquerade as
var $referer = ""; // referer info to pass
var $cookies = array(); // array of cookies to pass
--- 46,53 ----
var $proxy_host = ""; // proxy host to use
var $proxy_port = ""; // proxy port to use
! var $proxy_user = ""; // proxy user to use
! var $proxy_pass = ""; // proxy password to use
!
! var $agent = "Snoopy v1.2.3"; // agent we masquerade as
var $referer = ""; // referer info to pass
var $cookies = array(); // array of cookies to pass
***************
*** 59,63 ****
var $expandlinks = true; // expand links to fully qualified URLs.
// this only applies to fetchlinks()
! // or submitlinks()
var $passcookies = true; // pass set cookies back through redirects
// NOTE: this currently does not respect
--- 62,66 ----
var $expandlinks = true; // expand links to fully qualified URLs.
// this only applies to fetchlinks()
! // submitlinks(), and submittext()
var $passcookies = true; // pass set cookies back through redirects
// NOTE: this currently does not respect
***************
*** 81,86 ****
var $timed_out = false; // if a read operation timed out
var $status = 0; // http request status
!
! var $curl_path = "/usr/bin/curl";
// Snoopy will use cURL for fetching
// SSL content if a full system path to
--- 84,93 ----
var $timed_out = false; // if a read operation timed out
var $status = 0; // http request status
!
! var $temp_dir = "/tmp"; // temporary directory that the webserver
! // has permission to write to.
! // under Windows, this should be C:\temp
!
! var $curl_path = "/usr/local/bin/curl";
// Snoopy will use cURL for fetching
// SSL content if a full system path to
***************
*** 94,100 ****
// as of this Snoopy release.
- // send Accept-encoding: gzip?
- var $use_gzip = true;
-
/**** Private variables ****/
--- 101,104 ----
***************
*** 132,137 ****
if (!empty($URI_PARTS["pass"]))
$this->pass = $URI_PARTS["pass"];
! switch($URI_PARTS["scheme"])
{
case "http":
--- 136,145 ----
if (!empty($URI_PARTS["pass"]))
$this->pass = $URI_PARTS["pass"];
+ if (empty($URI_PARTS["query"]))
+ $URI_PARTS["query"] = '';
+ if (empty($URI_PARTS["path"]))
+ $URI_PARTS["path"] = '';
! switch(strtolower($URI_PARTS["scheme"]))
{
case "http":
***************
*** 148,152 ****
else
{
! $path = $URI_PARTS["path"].(isset($URI_PARTS["query"]) ? "?".$URI_PARTS["query"] : "");
// no proxy, send only the path
$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
--- 156,160 ----
else
{
! $path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
// no proxy, send only the path
$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
***************
*** 195,202 ****
break;
case "https":
! if(!$this->curl_path || (!is_executable($this->curl_path))) {
! $this->error = "Bad curl ($this->curl_path), can't fetch HTTPS \n";
return false;
! }
$this->host = $URI_PARTS["host"];
if(!empty($URI_PARTS["port"]))
--- 203,211 ----
break;
case "https":
! if(!$this->curl_path)
return false;
! if(function_exists("is_executable"))
! if (!is_executable($this->curl_path))
! return false;
$this->host = $URI_PARTS["host"];
if(!empty($URI_PARTS["port"]))
***************
*** 257,261 ****
--- 266,609 ----
}
+ /*======================================================================*\
+ Function: submit
+ Purpose: submit an http form
+ Input: $URI the location to post the data
+ $formvars the formvars to use.
+ format: $formvars["var"] = "val";
+ $formfiles an array of files to submit
+ format: $formfiles["var"] = "/dir/filename.ext";
+ Output: $this->results the text output from the post
+ \*======================================================================*/
+
+ function submit($URI, $formvars="", $formfiles="")
+ {
+ unset($postdata);
+
+ $postdata = $this->_prepare_post_body($formvars, $formfiles);
+
+ $URI_PARTS = parse_url($URI);
+ if (!empty($URI_PARTS["user"]))
+ $this->user = $URI_PARTS["user"];
+ if (!empty($URI_PARTS["pass"]))
+ $this->pass = $URI_PARTS["pass"];
+ if (empty($URI_PARTS["query"]))
+ $URI_PARTS["query"] = '';
+ if (empty($URI_PARTS["path"]))
+ $URI_PARTS["path"] = '';
+
+ switch(strtolower($URI_PARTS["scheme"]))
+ {
+ case "http":
+ $this->host = $URI_PARTS["host"];
+ if(!empty($URI_PARTS["port"]))
+ $this->port = $URI_PARTS["port"];
+ if($this->_connect($fp))
+ {
+ if($this->_isproxy)
+ {
+ // using proxy, send entire URI
+ $this->_httprequest($URI,$fp,$URI,$this->_submit_method,$this->_submit_type,$postdata);
+ }
+ else
+ {
+ $path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+ // no proxy, send only the path
+ $this->_httprequest($path, $fp, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+ }
+
+ $this->_disconnect($fp);
+
+ if($this->_redirectaddr)
+ {
+ /* url was redirected, check if we've hit the max depth */
+ if($this->maxredirs > $this->_redirectdepth)
+ {
+ if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
+ $this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);
+
+ // only follow redirect if it's on this site, or offsiteok is true
+ if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+ {
+ /* follow the redirect */
+ $this->_redirectdepth++;
+ $this->lastredirectaddr=$this->_redirectaddr;
+ if( strpos( $this->_redirectaddr, "?" ) > 0 )
+ $this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
+ else
+ $this->submit($this->_redirectaddr,$formvars, $formfiles);
+ }
+ }
+ }
+
+ if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+ {
+ $frameurls = $this->_frameurls;
+ $this->_frameurls = array();
+
+ while(list(,$frameurl) = each($frameurls))
+ {
+ if($this->_framedepth < $this->maxframes)
+ {
+ $this->fetch($frameurl);
+ $this->_framedepth++;
+ }
+ else
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ return false;
+ }
+ return true;
+ break;
+ case "https":
+ if(!$this->curl_path)
+ return false;
+ if(function_exists("is_executable"))
+ if (!is_executable($this->curl_path))
+ return false;
+ $this->host = $URI_PARTS["host"];
+ if(!empty($URI_PARTS["port"]))
+ $this->port = $URI_PARTS["port"];
+ if($this->_isproxy)
+ {
+ // using proxy, send entire URI
+ $this->_httpsrequest($URI, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+ }
+ else
+ {
+ $path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
+ // no proxy, send only the path
+ $this->_httpsrequest($path, $URI, $this->_submit_method, $this->_submit_type, $postdata);
+ }
+
+ if($this->_redirectaddr)
+ {
+ /* url was redirected, check if we've hit the max depth */
+ if($this->maxredirs > $this->_redirectdepth)
+ {
+ if(!preg_match("|^".$URI_PARTS["scheme"]."://|", $this->_redirectaddr))
+ $this->_redirectaddr = $this->_expandlinks($this->_redirectaddr,$URI_PARTS["scheme"]."://".$URI_PARTS["host"]);
+
+ // only follow redirect if it's on this site, or offsiteok is true
+ if(preg_match("|^http://".preg_quote($this->host)."|i",$this->_redirectaddr) || $this->offsiteok)
+ {
+ /* follow the redirect */
+ $this->_redirectdepth++;
+ $this->lastredirectaddr=$this->_redirectaddr;
+ if( strpos( $this->_redirectaddr, "?" ) > 0 )
+ $this->fetch($this->_redirectaddr); // the redirect has changed the request method from post to get
+ else
+ $this->submit($this->_redirectaddr,$formvars, $formfiles);
+ }
+ }
+ }
+
+ if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
+ {
+ $frameurls = $this->_frameurls;
+ $this->_frameurls = array();
+
+ while(list(,$frameurl) = each($frameurls))
+ {
+ if($this->_framedepth < $this->maxframes)
+ {
+ $this->fetch($frameurl);
+ $this->_framedepth++;
+ }
+ else
+ break;
+ }
+ }
+ return true;
+ break;
+
+ default:
+ // not a valid protocol
+ $this->error = 'Invalid protocol "'.$URI_PARTS["scheme"].'"\n';
+ return false;
+ break;
+ }
+ return true;
+ }
+
+ /*======================================================================*\
+ Function: fetchlinks
+ Purpose: fetch the links from a web page
+ Input: $URI where you are fetching from
+ Output: $this->results an array of the URLs
+ \*======================================================================*/
+
+ function fetchlinks($URI)
+ {
+ if ($this->fetch($URI))
+ {
+ if($this->lastredirectaddr)
+ $URI = $this->lastredirectaddr;
+ if(is_array($this->results))
+ {
+ for($x=0;$x<count($this->results);$x++)
+ $this->results[$x] = $this->_striplinks($this->results[$x]);
+ }
+ else
+ $this->results = $this->_striplinks($this->results);
+
+ if($this->expandlinks)
+ $this->results = $this->_expandlinks($this->results, $URI);
+ return true;
+ }
+ else
+ return false;
+ }
+
+ /*======================================================================*\
+ Function: fetchform
+ Purpose: fetch the form elements from a web page
+ Input: $URI where you are fetching from
+ Output: $this->results the resulting html form
+ \*======================================================================*/
+ function fetchform($URI)
+ {
+
+ if ($this->fetch($URI))
+ {
+
+ if(is_array($this->results))
+ {
+ for($x=0;$x<count($this->results);$x++)
+ $this->results[$x] = $this->_stripform($this->results[$x]);
+ }
+ else
+ $this->results = $this->_stripform($this->results);
+
+ return true;
+ }
+ else
+ return false;
+ }
+
+
+ /*======================================================================*\
+ Function: fetchtext
+ Purpose: fetch the text from a web page, stripping the links
+ Input: $URI where you are fetching from
+ Output: $this->results the text from the web page
+ \*======================================================================*/
+
+ function fetchtext($URI)
+ {
+ if($this->fetch($URI))
+ {
+ if(is_array($this->results))
+ {
+ for($x=0;$x<count($this->results);$x++)
+ $this->results[$x] = $this->_striptext($this->results[$x]);
+ }
+ else
+ $this->results = $this->_striptext($this->results);
+ return true;
+ }
+ else
+ return false;
+ }
+
+ /*======================================================================*\
+ Function: submitlinks
+ Purpose: grab links from a form submission
+ Input: $URI where you are submitting from
+ Output: $this->results an array of the links from the post
+ \*======================================================================*/
+
+ function submitlinks($URI, $formvars="", $formfiles="")
+ {
+ if($this->submit($URI,$formvars, $formfiles))
+ {
+ if($this->lastredirectaddr)
+ $URI = $this->lastredirectaddr;
+ if(is_array($this->results))
+ {
+ for($x=0;$x<count($this->results);$x++)
+ {
+ $this->results[$x] = $this->_striplinks($this->results[$x]);
+ if($this->expandlinks)
+ $this->results[$x] = $this->_expandlinks($this->results[$x],$URI);
+ }
+ }
+ else
+ {
+ $this->results = $this->_striplinks($this->results);
+ if($this->expandlinks)
+ $this->results = $this->_expandlinks($this->results,$URI);
+ }
+ return true;
+ }
+ else
+ return false;
+ }
+
+ /*======================================================================*\
+ Function: submittext
+ Purpose: grab text from a form submission
+ Input: $URI where you are submitting from
+ Output: $this->results the text from the web page
+ \*======================================================================*/
+
+ function submittext($URI, $formvars = "", $formfiles = "")
+ {
+ if($this->submit($URI,$formvars, $formfiles))
+ {
+ if($this->lastredirectaddr)
+ $URI = $this->lastredirectaddr;
+ if(is_array($this->results))
+ {
+ for($x=0;$x<count($this->results);$x++)
+ {
+ $this->results[$x] = $this->_striptext($this->results[$x]);
+ if($this->expandlinks)
+ $this->results[$x] = $this->_expandlinks($this->results[$x],$URI);
+ }
+ }
+ else
+ {
+ $this->results = $this->_striptext($this->results);
+ if($this->expandlinks)
+ $this->results = $this->_expandlinks($this->results,$URI);
+ }
+ return true;
+ }
+ else
+ return false;
+ }
+
+
+
+ /*======================================================================*\
+ Function: set_submit_multipart
+ Purpose: Set the form submission content type to
+ multipart/form-data
+ \*======================================================================*/
+ function set_submit_multipart()
+ {
+ $this->_submit_type = "multipart/form-data";
+ }
+
+
+ /*======================================================================*\
+ Function: set_submit_normal
+ Purpose: Set the form submission content type to
+ application/x-www-form-urlencoded
+ \*======================================================================*/
+ function set_submit_normal()
+ {
+ $this->_submit_type = "application/x-www-form-urlencoded";
+ }
+
+
+
/*======================================================================*\
***************
*** 273,277 ****
function _striplinks($document)
{
! preg_match_all("'<\s*a\s+.*href\s*=\s* # find <a href=
([\"\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\s\>]+)) # if quote found, match up to next matching
--- 621,625 ----
function _striplinks($document)
{
! preg_match_all("'<\s*a\s.*?href\s*=\s* # find <a href=
([\"\'])? # find single or double quote
(?(1) (.*?)\\1 | ([^\s\>]+)) # if quote found, match up to next matching
***************
*** 335,348 ****
"'<[\/\!]*?[^<>]*?>'si", // strip out html tags
"'([\r\n])[\s]+'", // strip out white space
! "'&(quote|#34);'i", // replace html entities
! "'&(amp|#38);'i",
! "'&(lt|#60);'i",
! "'&(gt|#62);'i",
! "'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
! "'&(copy|#169);'i"
! );
$replace = array( "",
"",
--- 683,707 ----
"'<[\/\!]*?[^<>]*?>'si", // strip out html tags
"'([\r\n])[\s]+'", // strip out white space
! "'&(quot|#34|#034|#x22);'i", // replace html entities
! "'&(amp|#38|#038|#x26);'i", // added hexadecimal values
! "'&(lt|#60|#060|#x3c);'i",
! "'&(gt|#62|#062|#x3e);'i",
! "'&(nbsp|#160|#xa0);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
! "'&(copy|#169);'i",
! "'&(reg|#174);'i",
! "'&(deg|#176);'i",
! "'&(#39|#039|#x27);'",
! "'&(euro|#8364);'i", // europe
! "'&a(uml|UML);'", // german
! "'&o(uml|UML);'",
! "'&u(uml|UML);'",
! "'&A(uml|UML);'",
! "'&O(uml|UML);'",
! "'&U(uml|UML);'",
! "'ß'i",
! );
$replace = array( "",
"",
***************
*** 356,360 ****
chr(162),
chr(163),
! chr(169));
$text = preg_replace($search,$replace,$document);
--- 715,731 ----
chr(162),
chr(163),
! chr(169),
! chr(174),
! chr(176),
! chr(39),
! chr(128),
! "ä",
! "ö",
! "ü",
! "Ä",
! "Ö",
! "Ü",
! "ß",
! );
$text = preg_replace($search,$replace,$document);
***************
*** 377,383 ****
$match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
$search = array( "|^http://".preg_quote($this->host)."|i",
! "|^(?!http://)(\/)?(?!mailto:)|i",
"|/\./|",
"|/[^\/]+/\.\./|"
--- 748,759 ----
$match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
+ $match = preg_replace("|/$|","",$match);
+ $match_part = parse_url($match);
+ $match_root =
+ $match_part["scheme"]."://".$match_part["host"];
$search = array( "|^http://".preg_quote($this->host)."|i",
! "|^(\/)|i",
! "|^(?!http://)(?!mailto:)|i",
"|/\./|",
"|/[^\/]+/\.\./|"
***************
*** 385,388 ****
--- 761,765 ----
$replace = array( "",
+ $match_root."/",
$match."/",
"/",
***************
*** 407,410 ****
--- 784,788 ----
function _httprequest($url,$fp,$URI,$http_method,$content_type="",$body="")
{
+ $cookie_headers = '';
if($this->passcookies && $this->_redirectaddr)
$this->setcookies();
***************
*** 416,438 ****
if(!empty($this->agent))
$headers .= "User-Agent: ".$this->agent."\r\n";
! if(!empty($this->host) && !isset($this->rawheaders['Host']))
! $headers .= "Host: ".$this->host."\r\n";
if(!empty($this->accept))
$headers .= "Accept: ".$this->accept."\r\n";
-
- if($this->use_gzip) {
- // make sure PHP was built with --with-zlib
- // and we can handle gzipp'ed data
- if ( function_exists(gzinflate) ) {
- $headers .= "Accept-encoding: gzip\r\n";
- }
- else {
- trigger_error(
- "use_gzip is on, but PHP was built without zlib support.".
- " Requesting file(s) without gzip encoding.",
- E_USER_NOTICE);
- }
- }
-
if(!empty($this->referer))
$headers .= "Referer: ".$this->referer."\r\n";
--- 794,805 ----
if(!empty($this->agent))
$headers .= "User-Agent: ".$this->agent."\r\n";
! if(!empty($this->host) && !isset($this->rawheaders['Host'])) {
! $headers .= "Host: ".$this->host;
! if(!empty($this->port))
! $headers .= ":".$this->port;
! $headers .= "\r\n";
! }
if(!empty($this->accept))
$headers .= "Accept: ".$this->accept."\r\n";
if(!empty($this->referer))
$headers .= "Referer: ".$this->referer."\r\n";
***************
*** 467,471 ****
$headers .= "Content-length: ".strlen($body)."\r\n";
if(!empty($this->user) || !empty($this->pass))
! $headers .= "Authorization: BASIC ".base64_encode($this->user.":".$this->pass)."\r\n";
$headers .= "\r\n";
--- 834,843 ----
$headers .= "Content-length: ".strlen($body)."\r\n";
if(!empty($this->user) || !empty($this->pass))
! $headers .= "Authorization: Basic ".base64_encode($this->user.":".$this->pass)."\r\n";
!
! //add proxy auth headers
! if(!empty($this->proxy_user))
! $headers .= 'Proxy-Authorization: ' . 'Basic ' . base64_encode($this->proxy_user . ':' . $this->proxy_pass)."\r\n";
!
$headers .= "\r\n";
***************
*** 480,486 ****
$this->_redirectaddr = false;
unset($this->headers);
-
- // content was returned gzip encoded?
- $is_gzipped = false;
while($currentHeader = fgets($fp,$this->_maxlinelen))
--- 852,855 ----
***************
*** 492,498 ****
}
! // if($currentHeader == "\r\n")
! if(preg_match("/^\r?\n$/", $currentHeader) )
! break;
// if a header begins with Location: or URI:, set the redirect
--- 861,866 ----
}
! if($currentHeader == "\r\n")
! break;
// if a header begins with Location: or URI:, set the redirect
***************
*** 500,504 ****
{
// get URL portion of the redirect
! preg_match("/^(Location:|URI:)\s+(.*)/",chop($currentHeader),$matches);
// look for :// in the Location header to see if hostname is included
if(!preg_match("|\:\/\/|",$matches[2]))
--- 868,872 ----
{
// get URL portion of the redirect
! preg_match("/^(Location:|URI:)[ ]+(.*)/i",chop($currentHeader),$matches);
// look for :// in the Location header to see if hostname is included
if(!preg_match("|\:\/\/|",$matches[2]))
***************
*** 524,552 ****
$this->response_code = $currentHeader;
}
!
! if (preg_match("/Content-Encoding: gzip/", $currentHeader) ) {
! $is_gzipped = true;
! }
!
$this->headers[] = $currentHeader;
}
! # $results = fread($fp, $this->maxlength);
! $results = "";
! while ( $data = fread($fp, $this->maxlength) ) {
! $results .= $data;
! if (
! strlen($results) > $this->maxlength ) {
! break;
! }
! }
!
! // gunzip
! if ( $is_gzipped ) {
! // per http://www.php.net/manual/en/function.gzencode.php
! $results = substr($results, 10);
! $results = gzinflate($results);
! }
!
if ($this->read_timeout > 0 && $this->_check_timeout($fp))
{
--- 892,908 ----
$this->response_code = $currentHeader;
}
!
$this->headers[] = $currentHeader;
}
! $results = '';
! do {
! $_data = fread($fp, $this->maxlength);
! if (strlen($_data) == 0) {
! break;
! }
! $results .= $_data;
! } while(true);
!
if ($this->read_timeout > 0 && $this->_check_timeout($fp))
{
***************
*** 557,561 ****
// check if there is a a redirect meta tag
! if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]+URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
{
$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
--- 913,918 ----
// check if there is a a redirect meta tag
! if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
!
{
$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
***************
*** 603,607 ****
$headers[] = "User-Agent: ".$this->agent;
if(!empty($this->host))
! $headers[] = "Host: ".$this->host;
if(!empty($this->accept))
$headers[] = "Accept: ".$this->accept;
--- 960,967 ----
$headers[] = "User-Agent: ".$this->agent;
if(!empty($this->host))
! if(!empty($this->port))
! $headers[] = "Host: ".$this->host.":".$this->port;
! else
! $headers[] = "Host: ".$this->host;
if(!empty($this->accept))
$headers[] = "Accept: ".$this->accept;
***************
*** 641,647 ****
for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
! $cmdline_params .= " -H \"".$headers[$curr_header]."\"";
}
!
if(!empty($body))
$cmdline_params .= " -d \"$body\"";
--- 1001,1008 ----
for($curr_header = 0; $curr_header < count($headers); $curr_header++) {
! $safer_header = strtr( $headers[$curr_header], "\"", " " );
! $cmdline_params .= " -H \"".$safer_header."\"";
}
!
if(!empty($body))
$cmdline_params .= " -d \"$body\"";
***************
*** 650,658 ****
$cmdline_params .= " -m ".$this->read_timeout;
! $headerfile = uniqid(time());
!
! # accept self-signed certs
! $cmdline_params .= " -k";
! exec($this->curl_path." -D \"/tmp/$headerfile\"".escapeshellcmd($cmdline_params)." ".escapeshellcmd($URI),$results,$return);
if($return)
--- 1011,1018 ----
$cmdline_params .= " -m ".$this->read_timeout;
! $headerfile = tempnam($temp_dir, "sno");
!
! $safer_URI = strtr( $URI, "\"", " " ); // strip quotes from the URI to avoid shell access
! exec($this->curl_path." -D \"$headerfile\"".$cmdline_params." \"".$safer_URI."\"",$results,$return);
if($return)
***************
*** 665,669 ****
$results = implode("\r\n",$results);
! $result_headers = file("/tmp/$headerfile");
$this->_redirectaddr = false;
--- 1025,1029 ----
$results = implode("\r\n",$results);
! $result_headers = file("$headerfile");
$this->_redirectaddr = false;
***************
*** 677,681 ****
{
// get URL portion of the redirect
! preg_match("/^(Location: |URI:)(.*)/",chop($result_headers[$currentHeader]),$matches);
// look for :// in the Location header to see if hostname is included
if(!preg_match("|\:\/\/|",$matches[2]))
--- 1037,1041 ----
{
// get URL portion of the redirect
! preg_match("/^(Location: |URI:)\s+(.*)/",chop($result_headers[$currentHeader]),$matches);
// look for :// in the Location header to see if hostname is included
if(!preg_match("|\:\/\/|",$matches[2]))
***************
*** 694,704 ****
if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
! {
! $this->response_code = $result_headers[$currentHeader];
! if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$this->response_code, $match))
! {
! $this->status= $match[1];
! }
! }
$this->headers[] = $result_headers[$currentHeader];
}
--- 1054,1059 ----
if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
! $this->response_code = $result_headers[$currentHeader];
!
$this->headers[] = $result_headers[$currentHeader];
}
***************
*** 706,710 ****
// check if there is a a redirect meta tag
! if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]+URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
{
$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
--- 1061,1065 ----
// check if there is a a redirect meta tag
! if(preg_match("'<meta[\s]*http-equiv[^>]*?content[\s]*=[\s]*[\"\']?\d+;[\s]*URL[\s]*=[\s]*([^\"\']*?)[\"\']?>'i",$results,$match))
{
$this->_redirectaddr = $this->_expandlinks($match[1],$URI);
***************
*** 725,729 ****
$this->results = $results;
! unlink("/tmp/$headerfile");
return true;
--- 1080,1084 ----
$this->results = $results;
! unlink("$headerfile");
return true;
***************
*** 739,744 ****
for($x=0; $x<count($this->headers); $x++)
{
! if(preg_match("/^set-cookie:[\s]+([^=]+)=([^;]+)/i", $this->headers[$x],$match))
! $this->cookies[$match[1]] = $match[2];
}
}
--- 1094,1099 ----
for($x=0; $x<count($this->headers); $x++)
{
! if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $this->headers[$x],$match))
! $this->cookies[$match[1]] = urldecode($match[2]);
}
}
***************
*** 774,777 ****
--- 1129,1133 ----
{
$this->_isproxy = true;
+
$host = $this->proxy_host;
$port = $this->proxy_port;
***************
*** 839,842 ****
--- 1195,1199 ----
settype($formvars, "array");
settype($formfiles, "array");
+ $postdata = '';
if (count($formvars) == 0 && count($formfiles) == 0)
More information about the geeklog-cvs
mailing list