function cw_https_request_httpscli($method, $url, $data = "", $join = "&", $cookie = "", $conttype = "application/x-www-form-urlencoded", $referer = "", $cert = "", $kcert = "", $headers = "") { if ($method != "POST" && $method != "GET") { return array("0", "HTTPS: Invalid method"); } if (!preg_match("/^(https?:\\/\\/)(.*\\@)?([a-z0-9_\\.\\-]+):(\\d+)(\\/.*)\$/Ui", $url, $m)) { return array("0", "HTTPS: Invalid URL"); } $ui = parse_url($url); $binary = cw_find_executable("https_cli"); if (!$binary) { return array("0", "HTTPS: https_cli executable is not found"); } if (!CW_IS_OS_WINDOWS) { putenv("LD_LIBRARY_PATH=" . getenv("LD_LIBRARY_PATH") . ":" . dirname($binary)); } $request = cw_https_prepare_request($method, $ui, $data, $join, $cookie, $conttype, $referer, $headers); $tmpfile = cw_temp_store($request); if (empty($tmpfile)) { return array(0, "HTTPS: cannot create temporaly file"); } $cmdline = cw_shellquote($binary) . " {$ui['host']} {$ui['port']} " . cw_shellquote($cert) . " " . cw_shellquote($kcert) . " < " . cw_shellquote($tmpfile); // make pipe $fp = popen($cmdline, "r"); if (!$fp) { return array(0, "HTTPS: https_cli execution failed"); } $res = cw_https_receive_result($fp); pclose($fp); @unlink($tmpfile); return $res; }
function cw_https_request_ssleay($method, $url, $data = "", $join = "&", $cookie = "", $conttype = "application/x-www-form-urlencoded", $referer = "", $cert = "", $kcert = "", $headers = "") { global $config; global $app_main_dir; if ($method != "POST" && $method != "GET") { return array("0", "HTTPS: Invalid method"); } if (!preg_match("/^(https?:\\/\\/)(.*\\@)?([a-z0-9_\\.\\-]+):(\\d+)(\\/.*)\$/Ui", $url, $m)) { return array("0", "HTTPS: Invalid URL"); } $perl_exe = cw_find_executable("perl", $config['General']['perl_binary']); if ($perl_exec === false) { return array("0", "HTTPS: perl is not found"); } $includes = " -I" . cw_shellquote($app_main_dir . '/payment'); $includes .= " -I" . cw_shellquote($app_main_dir . '/payment/Net'); $execline = cw_shellquote($perl_exe) . ' ' . $includes . ' ' . cw_shellquote($app_main_dir . "/payment/netssleay.pl"); $ui = parse_url($url); if (empty($ui['port'])) { $ui['port'] = 443; } $request = cw_https_prepare_request($method, $ui, $data, $join, $cookie, $conttype, $referer, $headers); $tmpfile = cw_temp_store($request); if (empty($tmpfile)) { return array(0, "HTTPS: cannot create temporaly file"); } $ignorefile = cw_temp_store(""); $execline .= " {$ui['host']} {$ui['port']} " . cw_shellquote($cert) . ' ' . cw_shellquote($kcert) . ' < ' . cw_shellquote($tmpfile) . ' 2>' . cw_shellquote($ignorefile); $fp = popen($execline, "r"); if (!$fp) { return array(0, "HTTPS: Net::SSLeay execution failed"); } $res = cw_https_receive_result($fp); pclose($fp); @unlink($tmpfile); @unlink($ignorefile); return $res; }
function cw_https_tunnel_request($connection, $method, $parsed_url, $data = "", $join = "&", $cookie = "", $conttype = "application/x-www-form-urlencoded", $referer = "", $headers = "") { $request = cw_https_prepare_request($method, $parsed_url, $data, $join, $cookie, $conttype, $referer, $headers); fputs($connection, $request); return cw_https_receive_result($connection); }