149 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace phpoauthlib2;
 | 
						|
 | 
						|
// Copied from PHP manual comment section:
 | 
						|
// http://php.net/manual/en/book.curl.php#90821
 | 
						|
// Modified to fit Inefero's/srchub needs
 | 
						|
// Now used for oauth lib
 | 
						|
class ccurl {
 | 
						|
    protected $_useragent = 'phpoauthlib2 (http://www.srchub.org); https://srchub.org/p/phpoauthlib2 PHPOAuthLib';
 | 
						|
    protected $_url;
 | 
						|
    protected $_followlocation;
 | 
						|
    protected $_timeout;
 | 
						|
    protected $_maxRedirects;
 | 
						|
    protected $_cookieFileLocation = './cookie.txt';
 | 
						|
    protected $_post;
 | 
						|
    protected $_postFields;
 | 
						|
    protected $_referer ="";
 | 
						|
 | 
						|
    // Get around some broken webservers *cough*IIS*cough*?
 | 
						|
    // http://stackoverflow.com/questions/14459704/does-empty-expect-header-mean-anything
 | 
						|
    protected $_header = array('Expect:');
 | 
						|
 | 
						|
    protected $_session;
 | 
						|
    protected $_webpage;
 | 
						|
    protected $_includeHeader;
 | 
						|
    protected $_noBody;
 | 
						|
    protected $_status;
 | 
						|
    protected $_binaryTransfer;
 | 
						|
    public    $authentication = 0;
 | 
						|
    public    $auth_name      = '';
 | 
						|
    public    $auth_pass      = '';
 | 
						|
 | 
						|
    public function useAuth($use){
 | 
						|
        $this->authentication = 0;
 | 
						|
        if($use == true) $this->authentication = 1;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setName($name){
 | 
						|
        $this->auth_name = $name;
 | 
						|
    }
 | 
						|
    public function setPass($pass){
 | 
						|
        $this->auth_pass = $pass;
 | 
						|
    }
 | 
						|
 | 
						|
    public function addHeader($head)
 | 
						|
    {
 | 
						|
        $this->_header[] = $head;
 | 
						|
    }
 | 
						|
 | 
						|
    public function __construct($url,$followlocation = true,$timeOut = 30,$maxRedirecs = 4,$binaryTransfer = false,$includeHeader = false,$noBody = false)
 | 
						|
    {
 | 
						|
        $this->_url = $url;
 | 
						|
        $this->_followlocation = $followlocation;
 | 
						|
        $this->_timeout = $timeOut;
 | 
						|
        $this->_maxRedirects = $maxRedirecs;
 | 
						|
        $this->_noBody = $noBody;
 | 
						|
        $this->_includeHeader = $includeHeader;
 | 
						|
        $this->_binaryTransfer = $binaryTransfer;
 | 
						|
 | 
						|
        $this->_cookieFileLocation = dirname(__FILE__).'/cookie.txt';
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public function setReferer($referer){
 | 
						|
        $this->_referer = $referer;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setCookiFileLocation($path)
 | 
						|
    {
 | 
						|
        $this->_cookieFileLocation = $path;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setPost ($postFields)
 | 
						|
    {
 | 
						|
        $this->_post = true;
 | 
						|
        $this->_postFields = $postFields;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setUserAgent($userAgent)
 | 
						|
    {
 | 
						|
        $this->_useragent = $userAgent;
 | 
						|
    }
 | 
						|
 | 
						|
    public function createCurl($url = 'nul')
 | 
						|
    {
 | 
						|
        if($url != 'nul'){
 | 
						|
            $this->_url = $url;
 | 
						|
        }
 | 
						|
 | 
						|
        $s = curl_init();
 | 
						|
 | 
						|
        curl_setopt($s,CURLOPT_URL,$this->_url);
 | 
						|
 | 
						|
        // I understand the implications here - but this isn't a client application
 | 
						|
        // if my ISP is performing MITM sniffing I have bigger fish to fry
 | 
						|
        // also the security of a CA signed certificate is questionable at best
 | 
						|
        // https://www.schneier.com/blog/archives/2012/02/verisign_hacked.html
 | 
						|
        // Email me if you want to discus this adamsna@datanethost.net
 | 
						|
        // NA - 12/10/2014
 | 
						|
        curl_setopt($s, CURLOPT_SSL_VERIFYPEER, false);
 | 
						|
 | 
						|
        curl_setopt($s,CURLOPT_HTTPHEADER,$this->_header);
 | 
						|
        curl_setopt($s,CURLOPT_TIMEOUT,$this->_timeout);
 | 
						|
        curl_setopt($s,CURLOPT_MAXREDIRS,$this->_maxRedirects);
 | 
						|
        curl_setopt($s,CURLOPT_RETURNTRANSFER,true);
 | 
						|
        curl_setopt($s,CURLOPT_FOLLOWLOCATION,$this->_followlocation);
 | 
						|
        curl_setopt($s,CURLOPT_COOKIEJAR,$this->_cookieFileLocation);
 | 
						|
        curl_setopt($s,CURLOPT_COOKIEFILE,$this->_cookieFileLocation);
 | 
						|
 | 
						|
        if($this->authentication == 1){
 | 
						|
            curl_setopt($s, CURLOPT_USERPWD, $this->auth_name.':'.$this->auth_pass);
 | 
						|
        }
 | 
						|
        if($this->_post)
 | 
						|
        {
 | 
						|
            //curl_setopt($s,CURLOPT_POST,true);
 | 
						|
            curl_setopt($s, CURLOPT_CUSTOMREQUEST, "POST");
 | 
						|
            curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields);
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
        if($this->_includeHeader)
 | 
						|
        {
 | 
						|
            curl_setopt($s,CURLOPT_HEADER,true);
 | 
						|
        }
 | 
						|
 | 
						|
        if($this->_noBody)
 | 
						|
        {
 | 
						|
            curl_setopt($s,CURLOPT_NOBODY,true);
 | 
						|
        }
 | 
						|
 | 
						|
        curl_setopt($s,CURLOPT_USERAGENT,$this->_useragent);
 | 
						|
        curl_setopt($s,CURLOPT_REFERER,$this->_referer);
 | 
						|
 | 
						|
        $this->_webpage = curl_exec($s);
 | 
						|
        $this->_status = curl_getinfo($s,CURLINFO_HTTP_CODE);
 | 
						|
        curl_close($s);
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public function getHttpStatus()
 | 
						|
    {
 | 
						|
        return $this->_status;
 | 
						|
    }
 | 
						|
 | 
						|
    public function __tostring(){
 | 
						|
        return $this->_webpage;
 | 
						|
    }
 | 
						|
} |