diff -Nur oldurfaphp/URFAClient_Connection.php newurfaphp/URFAClient_Connection.php
--- oldurfaphp/URFAClient_Connection.php	2010-07-12 00:57:52.563618902 +0600
+++ newurfaphp/URFAClient_Connection.php	2010-07-12 01:11:22.798994237 +0600
@@ -2,17 +2,20 @@
 class URFAClient_Connection
 {
     private $socket = null;
+    private $admin = false;
 
     public $error = ''; // Для возврата ошибки
 
-    function __construct($address, $port, $login, $pass, $ssl = true)
+    function __construct($address, $port, $login, $pass, $ssl=true, $admin=false)
     {
+
+	$this->admin=$admin;
 	if ($address && $port && $login) {
 	    if (!$this->open($address, $port)) {
 	        $this->error = 'connect error';
 	        return false;
 	    }
-	    if (!$this->login($login, $pass, $ssl)) {
+	    if (!$this->login($login, $pass, true)) {
 	        $this->error = 'login error';
 	    }
 	}
@@ -20,7 +23,15 @@
 
     function open($address, $port)
     {
-        $context = stream_context_create(array('ssl' => array('ciphers'=> "ADH-RC4-MD5",)));
+        if ($this->admin) {
+            $context = stream_context_create();
+            stream_context_set_option($context, 'ssl', 'capture_peer_cert', true);
+            stream_context_set_option($context, 'ssl', 'local_cert', 'admin.crt');
+            stream_context_set_option($context, 'ssl', 'passphrase', 'netup');
+        } else {
+            $context = stream_context_create(array('ssl' => array('ciphers'=> "ADH-RC4-MD5",)));
+        }
+
         $address = gethostbyname($address);
         $this->socket = stream_socket_client("tcp://$address:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
         return !empty($this->socket); // Для возврата ошибки
@@ -64,7 +75,7 @@
 
     function ssl_connect($ssl)
     {
-//	    stream_socket_enable_crypto($this->socket, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT);
+	    stream_socket_enable_crypto($this->socket, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT);
     }
 
 
@@ -93,8 +104,11 @@
 
     function urfa_auth(&$packet, $uname, $upass, $ssl)
     {
-        if ($ssl == true)
-	$ssl = 2;
+        if ($this->admin)
+	    $ssl = 4;
+	else
+	    $ssl = 2;
+	
         $digest = $packet->attr[6]['data'];
     //    print "Received ".bin2hex($digest)." digest\n";
         $ctx = hash_init('md5');
@@ -118,6 +132,7 @@
      * @return URFAClient_Packet
      */
     // Старая версия (множественные вызовы urfa_get_data)
+/*
     function urfa_get_data($data = false)
     {
         if (!$data) {
@@ -136,7 +151,9 @@
 	    }
         }
     }
-    /* Новая версия (единственный вызов urfa_get_data)
+*/
+//     Новая версия (единственный вызов urfa_get_data)
+
     function urfa_get_data() { 
         $packet = $this->getPacket(); 
         $packet->clean(); 
@@ -151,7 +168,7 @@
               return FALSE; 
         return $packet; 
     } 	
-    */
+    
 
     function urfa_send_param(URFAClient_Packet $packet)
     {
diff -Nur oldurfaphp/URFAClient.php newurfaphp/URFAClient.php
--- oldurfaphp/URFAClient.php	2010-07-12 00:57:02.849872844 +0600
+++ newurfaphp/URFAClient.php	2010-07-12 01:16:54.565746125 +0600
@@ -14,11 +14,11 @@
     protected $address;
     protected $port;
 //	public $error = '';
-    public function __construct($login, $pass, $address = "127.0.0.1", $port = "11758", $ssl = false)
+    public function __construct($login, $pass, $address = "127.0.0.1", $port = "11758", $ssl = true, $admin)
     {
 	$this->address = $address;
 	$this->port = $port;
-	$this->connection = new URFAClient_Connection($address, $port, $login, $pass, $ssl);
+	$this->connection = new URFAClient_Connection($address, $port, $login, $pass, $ssl, $admin);
 	$this->error = $this->connection->error;
     }
 }
 
/home/u18456/wiki.flintnet.ru/www/data/pages/urfaphp.diff.txt · Последние изменения: 2010/07/12 12:16 От 217.76.176.6
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki