/**
  * Procedimiento para obtener el listado los puertos con la descripcion de la tarjeta 
  *
  * @return array    Listado de los puertos
  */
 function getPorts($pDB)
 {
     $pconfEcho = new paloSantoConfEcho($pDB);
     $pconfEcho->deleteEchoCanceller();
     $pconfEcho->deleteCardParameter();
     //$this->deleteCardManufacturer($pDB);
     //$data = array();
     global $arrLang;
     $tarjetas = array();
     $data = array();
     $data2 = array();
     $data3 = array();
     $exist_data = "no";
     unset($respuesta);
     exec('/usr/sbin/lsdahdi', $respuesta, $retorno);
     if ($retorno == 0 && $respuesta != null && count($respuesta) > 0 && is_array($respuesta)) {
         $idTarjeta = 0;
         $count = 0;
         foreach ($respuesta as $key => $linea) {
             $estado_asterisk = _tr('Unknown');
             $estado_asterisk_color = "gray";
             $estado_dahdi_image = "conn_unkown.png";
             if (preg_match("/^### Span[[:space:]]+([[:digit:]]{1,}): ([[:alnum:]| |-|\\/]+)(.*)\$/", $linea, $regs)) {
                 $idTarjeta = $regs[1];
                 $dataCardParam = $this->getCardManufacturerById($pDB, $idTarjeta);
                 if (empty($dataCardParam)) {
                     $dataCardParam['manufacturer'] = " ";
                     $dataCardParam['num_serie'] = " ";
                     $dataCardParam['id_card'] = " ";
                 } else {
                     $dataCardParam['id_card'] = $idTarjeta;
                 }
                 if ($dataCardParam['manufacturer'] != " ") {
                     $exist_data = "yes";
                     $data3['manufacturer'] = $pDB->DBCAMPO($dataCardParam['manufacturer']);
                 } else {
                     $data3['manufacturer'] = $pDB->DBCAMPO(" ");
                     $exist_data = "no";
                 }
                 if ($dataCardParam['num_serie'] != " ") {
                     $exist_data = "yes";
                     $data3['num_serie'] = $pDB->DBCAMPO($dataCardParam['num_serie']);
                 } else {
                     $data3['num_serie'] = $pDB->DBCAMPO(" ");
                     $exist_data = "no";
                 }
                 if ($dataCardParam['manufacturer'] == " " && $dataCardParam['num_serie'] == " " && $dataCardParam['id_card'] == " ") {
                     $data3['id_card'] = $pDB->DBCAMPO($regs[1]);
                     $this->addCardManufacturer($pDB, $data3);
                 } else {
                     $this->updateCardParameter($pDB, $data3, array("id_card" => $regs[1]));
                 }
                 $tarjetas["TARJETA{$idTarjeta}"]['DESC'] = array('ID' => $regs[1], 'TIPO' => $regs[2], 'ADICIONAL' => $regs[3], 'MANUFACTURER' => $exist_data, 'MEDIA' => NULL, 'MEDIA_SWITCHABLE' => file_exists("/etc/wanpipe/wanpipe{$idTarjeta}.conf"));
                 $count++;
                 $data2['id_card'] = $pDB->DBCAMPO($regs[1]);
                 $data2['type'] = $pDB->DBCAMPO($regs[2]);
                 $data2['additonal'] = $pDB->DBCAMPO($regs[3]);
                 $pconfEcho->addCardParameter($data2);
             } else {
                 if (preg_match("/[[:space:]]*([[:digit:]]+) ([[:alnum:]_]+)[[:space:]]+([[:alnum:]-]+)[[:space:]]*(.*)/", $linea, $regs1)) {
                     //Estados de las lineas
                     if (preg_match("/Hardware-assisted/i", $regs1[3] . $regs1[4]) || preg_match("/HDLC(FCS)?/i", $regs1[3])) {
                         if (preg_match("/In use.*RED/i", $regs1[4])) {
                             $estado_asterisk = _tr('Detected by Asterisk');
                             $estado_asterisk_color = "green";
                             $estado_dahdi_image = "conn_alarm_HC.png";
                         } else {
                             if (preg_match("/In use/i", $regs1[4])) {
                                 $estado_asterisk = _tr('Detected by Asterisk');
                                 $estado_asterisk_color = "green";
                                 $estado_dahdi_image = "conn_ok_HC.png";
                             } else {
                                 if (preg_match("/RED/i", $regs1[4])) {
                                     $estado_asterisk = _tr('Not detected by Asterisk');
                                     $estado_asterisk_color = "#FF7D7D";
                                     $estado_dahdi_image = "conn_alarm_HC.png";
                                 } else {
                                     $estado_asterisk = _tr('Not detected by Asterisk');
                                     $estado_asterisk_color = "#FF7D7D";
                                     $estado_dahdi_image = "conn_ok_HC.png";
                                 }
                             }
                         }
                     } else {
                         if (preg_match("/In use.*RED/i", $regs1[4])) {
                             $estado_asterisk = _tr('Detected by Asterisk');
                             $estado_asterisk_color = "green";
                             $estado_dahdi_image = "conn_alarm.png";
                         } else {
                             if (preg_match("/In use/i", $regs1[4])) {
                                 $estado_asterisk = _tr('Detected by Asterisk');
                                 $estado_asterisk_color = "green";
                                 $estado_dahdi_image = "conn_ok.png";
                             } else {
                                 if (preg_match("/RED/i", $regs1[4])) {
                                     $estado_asterisk = _tr('Not detected by Asterisk');
                                     $estado_asterisk_color = "#FF7D7D";
                                     $estado_dahdi_image = "conn_alarm.png";
                                 } else {
                                     $estado_asterisk = _tr('Not detected by Asterisk');
                                     $estado_asterisk_color = "#FF7D7D";
                                     $estado_dahdi_image = "conn_ok.png";
                                 }
                             }
                         }
                     }
                     //Tipo de las lineas
                     $tipo = $regs1[2];
                     $tarjetas["TARJETA{$idTarjeta}"]['DESC']['MEDIA'] = $tipo;
                     $dataType = preg_split('/[:]/', $regs1[4], 2);
                     if (count($dataType) > 1) {
                         $arrEcho = preg_split('/[^\\w]/', trim($dataType[1]), 2);
                         $data['num_port'] = $pDB->DBCAMPO($regs1[1]);
                         $data['name_port'] = $pDB->DBCAMPO($regs1[2]);
                         $data['echocanceller'] = $pDB->DBCAMPO(trim($arrEcho[0]));
                         $data['id_card'] = $pDB->DBCAMPO($count);
                         $pconfEcho->addEchoCanceller($data);
                     } else {
                         if ($regs1[3] != "HDLCFCS" && $regs1[3] != 'Hardware-assisted') {
                             $data['num_port'] = $pDB->DBCAMPO($regs1[1]);
                             $data['name_port'] = $pDB->DBCAMPO($regs1[2]);
                             $data['echocanceller'] = $pDB->DBCAMPO("none");
                             $data['id_card'] = $pDB->DBCAMPO($count);
                             $pconfEcho->addEchoCanceller($data);
                         }
                     }
                     $tarjetas["TARJETA{$idTarjeta}"]['PUERTOS']["PUERTO{$regs1['1']}"] = array('LOCALIDAD' => $regs1[1], 'TIPO' => $tipo, 'ADICIONAL' => "{$regs1['2']} - {$regs1['3']}", 'ESTADO_ASTERISK' => $estado_asterisk, 'ESTADO_ASTERISK_COLOR' => $estado_asterisk_color, 'ESTADO_DAHDI' => $estado_dahdi_image);
                 } else {
                     if (preg_match("/[[:space:]]*([[:digit:]]+) ([[:alnum:]]+)/", $linea, $regs1)) {
                         if ($regs1[2] == 'unknown') {
                             $estado_asterisk = _tr('Unknown');
                             $estado_asterisk_color = 'gray';
                             $estado_dahdi_image = 'conn_unkown.png';
                         } else {
                             if (preg_match("/EMPTY/i", $regs1[2])) {
                                 $estado_asterisk = _tr('Channel Empty');
                                 $estado_asterisk_color = 'gray';
                                 $estado_dahdi_image = 'conn_empty.png';
                             }
                         }
                         $tarjetas["TARJETA{$idTarjeta}"]['PUERTOS']["PUERTO{$regs1['1']}"] = array('LOCALIDAD' => $regs1[1], 'TIPO' => " ", 'ADICIONAL' => $regs1[2], 'ESTADO_ASTERISK' => $estado_asterisk, 'ESTADO_ASTERISK_COLOR' => $estado_asterisk_color, 'ESTADO_DAHDI' => $estado_dahdi_image);
                     }
                 }
             }
         }
     }
     if (count($tarjetas) <= 0) {
         //si no hay tarjetas instaladas
         $this->errMsg = _tr("Cards undetected on your system, press for detecting hardware detection.");
         $tarjetas = array();
     }
     if (count($tarjetas) == 1) {
         //si aparace la tarjeta por default ZTDUMMY
         $valor = $tarjetas["TARJETA1"]['DESC']['TIPO'];
         if (preg_match("/^DAHDI_DUMMY\\/1/i", $valor)) {
             $this->errMsg = _tr("Cards undetected on your system, press for detecting hardware detection.");
             $tarjetas = array();
         }
     }
     return $tarjetas;
 }
Exemplo n.º 2
0
function hardwareDetect($smarty, $module_name, $local_templates_dir, &$pDB, $arrConf)
{
    $chk_dahdi_replace = getParameter("chk_dahdi_replace");
    $there_is_sangoma_card = getParameter("there_is_sangoma_card");
    $there_is_misdn_card = getParameter("there_is_misdn_card");
    // Anular la configuración anterior de cancelador. Se refrescará en listPorts()
    $pconfEcho = new paloSantoConfEcho($pDB);
    $pconfEcho->deleteEchoCanceller();
    $oHardwareDetect = new PaloSantoHardwareDetection();
    $resultado = $oHardwareDetect->hardwareDetection($chk_dahdi_replace, "/etc/asterisk", $there_is_sangoma_card, $there_is_misdn_card);
    $jsonObject = new PaloSantoJSON();
    $msgResponse['msg'] = $resultado;
    $jsonObject->set_message($msgResponse);
    return $jsonObject->createJSON();
}