/** * 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; }
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(); }