Beispiel #1
0
 public function Sign()
 {
     global $APPLICATION;
     if ($this->secret_id === false) {
         $dbr_member = CControllerMember::GetByGuid($this->member_id);
         $ar_member = $dbr_member->Fetch();
         if (!$ar_member) {
             $e = new CApplicationException("Bad member_id: " . $this->member_id . "");
             $APPLICATION->ThrowException($e);
             return false;
         }
         $this->secret_id = $ar_member["SECRET_ID"];
     }
     return parent::Sign();
 }
 function Send($url, $page)
 {
     $server_port = 80;
     $server_name = strtolower(trim($url, "/ \r\n\t"));
     if (substr($server_name, 0, 7) == 'http://') {
         $server_name = substr($server_name, 7);
     } elseif (substr($server_name, 0, 8) == 'https://') {
         $server_name = substr($server_name, 8);
         $server_port = 443;
     }
     if (preg_match('/.+:([0-9]+)$/', $server_name, $matches)) {
         $server_port = $matches[1];
         $server_name = substr($server_name, 0, 0 - strlen($server_port) - 1);
     }
     $proxy_url = COption::GetOptionString("main", "controller_proxy_url", "");
     $proxy_port = COption::GetOptionString("main", "controller_proxy_port", "");
     $proxy_user = COption::GetOptionString("main", "controller_proxy_user", "");
     $proxy_password = COption::GetOptionString("main", "controller_proxy_password", "");
     // соединяемся с удаленным сервером
     $bUseProxy = strlen($proxy_url) > 0 && strlen($proxy_port) > 0;
     if ($bUseProxy) {
         $proxy_port = intval($proxy_port);
         if ($proxy_port <= 0) {
             $proxy_port = 80;
         }
         $requestIP = $proxy_url;
         $requestPort = $proxy_port;
     } else {
         $requestIP = $server_name;
         $requestPort = $server_port;
     }
     $conn = @fsockopen(($requestPort == 443 ? 'ssl://' : '') . $requestIP, $requestPort, $errno, $errstr, 30);
     if (!$conn) {
         $this->Debug("We can't send request to the {$server_name}:{$server_port} from member#" . $this->member_id . "(" . $this->secret_id . "):\r\n" . $strError);
         $strError = GetMessage("MAIN_CMEMBER_ERR5") . $server_name . ":" . $server_port . " (" . $errstr . ")";
         if (is_object($GLOBALS["APPLICATION"])) {
             $e = new CApplicationException(htmlspecialcharsex($strError));
             $GLOBALS["APPLICATION"]->ThrowException($e);
         }
         return false;
     }
     $strVars = $this->MakeRequestString();
     // запускаем, получаем результат
     if ($bUseProxy) {
         $strRequest = "POST http://" . $server_name . ":" . $server_port . $page . " HTTP/1.0\r\n";
         if (strlen($proxy_user) > 0) {
             $strRequest .= "Proxy-Authorization: Basic " . base64_encode($proxy_user . ":" . $proxy_password) . "\r\n";
         }
     } else {
         $strRequest = "POST " . $page . " HTTP/1.0\r\n";
     }
     $strRequest .= "User-Agent: BitrixControllerMember\r\n";
     $strRequest .= "Accept: */*\r\n";
     $strRequest .= "Host: " . $server_name . "\r\n";
     $strRequest .= "Accept-Language: en\r\n";
     $strRequest .= "Content-type: application/x-www-form-urlencoded\r\n";
     $strRequest .= "Content-length: " . strlen($strVars) . "\r\n\r\n";
     $strRequest .= $strVars . "\r\n";
     $this->Debug("We send request to the {$server_name}:{$server_port} from member#" . $this->member_id . "(" . $this->secret_id . "):\r\n" . "Packet:" . print_r($this, true) . "\r\n" . "{$strVars}\r\n");
     fputs($conn, $strRequest);
     $header = '';
     while (($line = fgets($conn, 4096)) && $line != "\r\n") {
         $header .= $line;
     }
     $result = '';
     while ($line = fread($conn, 4096)) {
         $result .= $line;
     }
     fclose($conn);
     $ar_result = array();
     $packet_result = new __CControllerPacketResponse();
     $packet_result->secret_id = $this->secret_id;
     $packet_result->ParseResult($result);
     $this->Debug("We get response from {$server_name}:{$server_port} to member#" . $packet_result->member_id . "(" . $this->secret_id . "):\r\n" . "Packet (security check " . ($packet_result->Check() ? "passed" : "failed") . "): " . print_r($packet_result, true) . "\r\n" . $result . "\r\n");
     return $packet_result;
 }
Beispiel #3
0
	public static function Send()
	{
		//AddMessage2Log(print_r($this, true));
		parent::Send();
	}