Advertisement
akai

page_start.php

Nov 15th, 2011
1,364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.91 KB | None | 0 0
  1. <?php
  2. $mdb = "paging";
  3. $mhost = "localhost";
  4. $mlog = "pageuser";
  5. $mpass = "123456";
  6. header("Content-type: text/xml");
  7. @mysql_connect($mhost, $mlog, $mpass) or die("Could not connect to MySQL server");
  8. @mysql_select_db($mdb) or die("Could not select DB mysql");
  9.  
  10. //читаем из бд адреса телефонов в массив $ip. флагом ex отмечены телефоны, участвующие в пейджинге
  11. $query = "SELECT * FROM phoneip WHERE ex=1";
  12. $res = mysql_query($query) or die(mysql_error());
  13. $i = 0;
  14. $ip = array();
  15. while ($row=mysql_fetch_array($res)) {
  16.   $ip[$i++] = $row['ip'];
  17.   }
  18.  
  19. //читаем из бд $log, $pass, $mcastIP, $mcastPort
  20. $query = "SELECT * FROM conf";
  21. $res = mysql_query($query) or die(mysql_error());
  22. $log = mysql_result($res, 0, 'login');
  23. $pass = mysql_result($res, 0, 'pass');
  24. $mcastIP = mysql_result($res, 0, 'mcastip');
  25. $mcastPort = mysql_result($res, 0, 'mcastport');
  26.  
  27. $auth = base64_encode($log.":".$pass);
  28. //формируем URI для приема RTP потока
  29. $uri = "RTPMRx:$mcastIP:$mcastPort:90";
  30. $uri = "<CiscoIPPhoneExecute><ExecuteItem Priority=\"0\" URL=\"".$uri."\"/></CiscoIPPhoneExecute>";
  31. $uri  = "XML=".urlencode($uri);
  32.  
  33. //заголовки запроса
  34. $post  = "POST /CGI/Execute HTTP/1.0\r\n";
  35. $post .= "Host: $ip\r\n";
  36. $post .= "Authorization: Basic $auth\r\n";
  37. $post .= "Connection: close\r\n";
  38. $post .= "Content-Type: application/x-www-form-urlencoded\r\n";
  39. $post .= "Content-Length: ".strlen($uri)."\r\n\r\n";
  40.  
  41. $timeout = 2;
  42. $sockets = array();
  43. foreach ($ip as $id => $host) {
  44.     $s = stream_socket_client("$host:80", $errno, $errstr, $timeout,
  45.         STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT);
  46.     if ($s) {
  47.         $sockets[$id] = $s;
  48.     } else {
  49.         $res = mysql_query($query) or die(mysql_error());
  50.     }
  51. }
  52. while (count($sockets)) {
  53.     $read = $write = $sockets;
  54.     $n = stream_select($read, $write, $e = null, $timeout);
  55.     if ($n > 0) {
  56.         foreach ($read as $r) {
  57.             $id = array_search($r, $sockets);
  58.             $data = fread($r, 8192);
  59.             if (strlen($data) == 0) {
  60.                 fclose($r);
  61.                 unset($sockets[$id]);
  62.             }
  63.         }
  64.         foreach ($write as $w) {
  65.             $id = array_search($w, $sockets);
  66.             fwrite($w, $post.$uri);
  67.         }
  68.     } else {
  69.         break;
  70.     }
  71. }
  72. mysql_close();
  73. echo "
  74. <CiscoIPPhoneText>
  75.  <Title>Оповещение</Title>
  76.  <Prompt>Нажмите кнопку Начать</Prompt>
  77.  <Text>$message</Text>
  78.  <SoftKeyItem>
  79.    <Name>Начать</Name>
  80.    <URL>RTPTx:Stop</URL>
  81.    <URLDown>RTPMTx:$mcastIP:$mcastPort</URLDown>
  82.    <Position>1</Position>
  83.  </SoftKeyItem>
  84.  <SoftKeyItem>
  85.    <Name>Выход</Name>
  86.    <URL>SoftKey:Exit</URL>
  87.    <URLDown>http://10.1.1.65/page_stop.php</URLDown>
  88.    <Position>4</Position>
  89.  </SoftKeyItem>
  90. </CiscoIPPhoneText>
  91. ";
  92. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement