| <?php␍␊ | 
| // Copied from PHP manual comment section:␍␊ | 
| // http://php.net/manual/en/book.curl.php#90821␍␊ | 
| // Modified to fit Inefero's needs␍␊ | 
| class ccurl {␍␊ | 
|     protected $_useragent = 'Indefero Hook Sender (http://www.indefero.net); https://srchub.org Fork';␍␊ | 
|     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;␍␊ | 
|     }␍␊ | 
| }␍␊ | 
| ?> |