Subversion Repositories HomeAutomation

Rev

Rev 1151 | Rev 1159 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. <?php
  2.  
  3. require(dirname(__FILE__)."/config.php");
  4.  
  5.  
  6.  
  7.  
  8. stream_wrapper_unregister('https');
  9. stream_wrapper_register('https', 'ExchangeNTLMStream') or die("Failed to register protocol");
  10.  
  11. //$wsdl = "/var/www/exchange/Services.wsdl";
  12. $wsdl = $server.$basedir."/Services.wsdl.php";
  13. $client = new ExchangeNTLMSoapClient($wsdl);
  14.  
  15. //print_array($client->__getFunctions());
  16. echo "test<br>";
  17.  
  18. $FindItem->Traversal = "Shallow";
  19. $FindItem->ItemShape->BaseShape = "AllProperties";
  20. $FindItem->ParentFolderIds->DistinguishedFolderId->Id = "calendar";
  21. $FindItem->CalendarView->StartDate = "2009-04-07T00:00:00Z";
  22. $FindItem->CalendarView->EndDate = "2009-04-08T00:00:00Z";
  23.  
  24. $result = $client->FindItem($FindItem);
  25. if ($result)
  26. {
  27.   //echo "<br>result:<br>";
  28.   //print_array($result);
  29.   $calendaritems = $result->ResponseMessages->FindItemResponseMessage->RootFolder->Items->CalendarItem;
  30.   print_array($calendaritems);
  31.   foreach($calendaritems as $item)
  32.   {
  33.     echo "Organizer: ".$item->Organizer->Mailbox->Name." Start: ".$item->Start." End: ".$item->End."<br>";
  34.   }
  35. }
  36.  
  37. echo "<br>OBS tidszon+sommartid?? nu sommartid, ett möte som ovan gav start 13:00 var egentligen 15:00<br>OBS utf? teckenkodning<br>";
  38.  
  39.  
  40. echo "<br><br>slut test<br>";
  41.  
  42. stream_wrapper_restore('https');
  43.  
  44.  
  45.  
  46. function print_array($var)
  47. {
  48.     echo "<pre>\n";
  49.     print_r($var);
  50.     echo "</pre>\n";
  51. }
  52.  
  53. class NTLMSoapClient extends SoapClient {
  54.   function __doRequest($request, $location, $action, $version)
  55.   {
  56.     $headers = array( 'Method: POST', 'Connection: Keep-Alive', 'User-Agent: PHP-SOAP-CURL', 'Content-Type: text/xml; charset=utf-8', 'SOAPAction: "'.$action.'"', );
  57.     $this->__last_request_headers = $headers;
  58.     $ch = curl_init($location);
  59.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  60.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  61.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  62.     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  63.     curl_setopt($ch, CURLOPT_POST, true );
  64.     curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
  65.     curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
  66.     curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
  67.     curl_setopt($ch, CURLOPT_USERPWD, $this->user.':'.$this->password);
  68.     $response = curl_exec($ch);
  69.     return $response;
  70.   }
  71.  
  72.   function __getLastRequestHeaders()
  73.   {
  74.     return implode("\n", $this->__last_request_headers)."\n";
  75.   }
  76. }
  77.  
  78. class ExchangeNTLMSoapClient extends NTLMSoapClient
  79. {
  80.   protected $user = 'xyz';
  81.   protected $password = 'xyz';
  82. }
  83.  
  84. class NTLMStream
  85. {
  86.   private $path;
  87.   private $mode;
  88.   private $options;
  89.   private $opened_path;
  90.   private $buffer;
  91.   private $pos;
  92.  
  93.   public function stream_open($path, $mode, $options, $opened_path)
  94.   {
  95.     echo "[NTLMStream::stream_open] $path , mode=$mode <br>";
  96.     $this->path = $path;
  97.     $this->mode = $mode;
  98.     $this->options = $options;
  99.     $this->opened_path = $opened_path;
  100.     $this->createBuffer($path);
  101.     return true;
  102.   }
  103.  
  104.   public function stream_close()
  105.   {
  106.     echo "[NTLMStream::stream_close] <br>";
  107.     curl_close($this->ch);
  108.   }
  109.  
  110.   public function stream_read($count)
  111.   {
  112.     echo "[NTLMStream::stream_read] $count <br>";
  113.     if(strlen($this->buffer) == 0)
  114.     {
  115.       return false;
  116.     }
  117.     $read = substr($this->buffer,$this->pos, $count);
  118.     $this->pos += $count; return $read;
  119.   }
  120.  
  121.   public function stream_write($data)
  122.   {
  123.     echo "[NTLMStream::stream_write] <br>";
  124.     if(strlen($this->buffer) == 0)
  125.     {
  126.       return false;
  127.     }
  128.     return true;
  129.   }
  130.  
  131.   public function stream_eof()
  132.   {
  133.     echo "[NTLMStream::stream_eof] ";
  134.     if($this->pos > strlen($this->buffer))
  135.     {
  136.       echo "true <br>";
  137.       return true;
  138.     }
  139.     echo "false <br>";
  140.     return false;
  141.   }
  142.  
  143.   /* return the position of the current read pointer */
  144.   public function stream_tell()
  145.   {
  146.     echo "[NTLMStream::stream_tell] <br>";
  147.     return $this->pos;
  148.   }
  149.  
  150.   public function stream_flush()
  151.   {
  152.     echo "[NTLMStream::stream_flush] <br>";
  153.     $this->buffer = null;
  154.     $this->pos = null;
  155.   }
  156.  
  157.   public function stream_stat()
  158.   {
  159.     echo "[NTLMStream::stream_stat] <br>";
  160.     $this->createBuffer($this->path);
  161.     $stat = array( 'size' => strlen($this->buffer), );
  162.     return $stat;
  163.   }
  164.  
  165.   public function url_stat($path, $flags)
  166.   {
  167.     echo "[NTLMStream::url_stat] <br>";
  168.     $this->createBuffer($path);
  169.     $stat = array( 'size' => strlen($this->buffer), );
  170.     return $stat;
  171.   }
  172.  
  173.   /* Create the buffer by requesting the url through cURL */
  174.   private function createBuffer($path)
  175.   {
  176.     if($this->buffer)
  177.     {
  178.       return;
  179.     }
  180.     echo "[NTLMStream::createBuffer] create buffer from : $path <br>";
  181.     $this->ch = curl_init($path);
  182.     curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
  183.     curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, false);
  184.     curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
  185.     curl_setopt($this->ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
  186.     curl_setopt($this->ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
  187.     curl_setopt($this->ch, CURLOPT_USERPWD,
  188.     $this->user.':'.$this->password);
  189.     echo $this->buffer = curl_exec($this->ch);
  190.     echo "[NTLMStream::createBuffer] buffer size : ".strlen($this->buffer)."bytes <br>";
  191.     $this->pos = 0;
  192.   }
  193. }
  194.  
  195. class ExchangeNTLMStream extends NTLMStream
  196. {
  197.   protected $user = 'xyz';
  198.   protected $password = 'xyz';
  199. }
  200.  
  201.  
  202.  
  203. ?>
  204.