| <?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;␍␊ |
| }␍␊ |
| <?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;␊ |
| }␊ |
| } |