* @package AgileBill * @version 1.4.93 */ # Debug if(empty($VAR) && empty($VAR['do']) && !defined("PATH_AGILE")) { include_once('../../config.inc.php'); $test = new CORE_ssl; $test->test(); } class CORE_ssl { function CORE_ssl ($type=false) { $disabled_functions = ini_get('disable_functions'); if ( defined("PATH_CURL") && is_file(PATH_CURL) ) $this->connect_curl_binary = true; if ( function_exists('curl_init') && $curl_version = curl_version()) { if ( phpversion() >= 5 ) { if (eregi('openssl', @$curl_version['ssl_version'] )) $this->connect_curl_module = true; } else { if (eregi('openssl', curl_version())) $this->connect_curl_module = true; } } if (phpversion() >= '4.3.0') if (function_exists("fsockopen") ) if (function_exists("openssl_public_decrypt")) $this->connect_fsockopen = true; } # debuging... function test() { echo '"; } # type: 1=post 2=get function connect($host, $url, $vars, $ssl, $type) { if ( @$this->connect_curl_binary ) return $this->connect_curl_binary ($host, $url, $vars, $ssl, $type); elseif ( @$this->connect_curl_module ) return $this->connect_curl_module ($host, $url, $vars, $ssl, $type); elseif ( @$this->connect_fsockopen ) return $this->connect_fsockopen ($host, $url, $vars, $ssl, $type); else return false; } # SSL connection with Curl Binary function connect_curl_binary($host, $url, $vars, $ssl, $type) { if($ssl) $urli = 'https://'.$host .''. $url; else $urli = 'http://'.$host .''. $url; $params = ""; if(is_array($vars)) { for($i=0; $i 0) { $params .= '&'; } $params .= $vars[$i][0].'='.urlencode($vars[$i][1]); } } elseif (!empty($vars)) { $params = $vars; } $curl = PATH_CURL; # connect if(!empty($params)) { //echo $curl ."-d -k \"$params\"". $urli; //echo $urli.'?'.$params; //exit; return `$curl -k -d "$params" $urli`; } else { //echo "$curl -k $urli"; return `$curl -k $urli`; } } # SSL connection with Curl Module function connect_curl_module($host, $url, $vars, $ssl, $type) { if($ssl) $url = 'https://'.$host .''. $url; else $url = 'http://'.$host .''. $url; $params = ''; if(is_array($vars)) { for($i=0; $i 0) { $params .= '&'; } @$params .= $vars[$i][0].'='.urlencode($vars[$i][1]); } } elseif (!empty($vars)) { $params = $vars; } $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result = curl_exec ($ch); curl_close ($ch); return $result; } # SSL connection with fsockopen() function connect_fsockopen($host, $url, $vars, $ssl, $type) { if($ssl) { $host = 'ssl://'. $host; $port = 443; } else { $port = 80; } $fp = @fsockopen ($host, $port, $errno, $errstr, 120); $ret = ""; @$req = substr ($url, $p); if ($fp) { fputs ($fp, "POST $req HTTP/1.1\n"); fputs ($fp, "Accept: */*\n"); fputs ($fp, "Accept-Language: en\n"); fputs ($fp, "Connection: Keep-Alive\n"); fputs ($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\n"); fputs ($fp, "Content-type: application/x-www-form-urlencoded\n"); $out = ""; for($i=0; $i0 && !empty($vars[$i][0])) $out .= '&'; $out .= rawurlencode($vars[$i][0]) .'='. $out .= rawurlencode($vars[$i][1]); } $out = trim ($out); fputs ($fp, "Content-length: ".strlen($out)."\n\n"); fputs ($fp, "$out"); fputs ($fp, "\n"); while(!feof($fp)) $ret .= fgets($fp,128); fclose ($fp); } else { return false; } return $ret; } } ?>