forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
6.6 KiB
175 lines
6.6 KiB
<?php |
|
/******************************************************************************* |
|
* IMPORTA AGENDA * |
|
* * |
|
* Data: 17/04/2019 * |
|
* Autor: Jose Henrique Joanoni * |
|
* * |
|
* Script criado para replicação da agenda entre unidades de uma mesma empresa* |
|
* * |
|
******************************************************************************/ |
|
|
|
$acao = isset($_GET['acao']) ? trim($_GET['acao']) : ''; |
|
$id = isset($_REQUEST['id_servidor']) ? trim($_REQUEST['id_servidor']) : 0; |
|
$valorInicial = ['server_address','server_port']; |
|
$server_address = isset($_POST['server_address']) ? $_POST['server_address'] : ''; |
|
$server_port = isset($_POST['server_port']) ? $_POST['server_port'] : ''; |
|
$paramInsert = ValorInicio($valorInicial); |
|
$tpLayout = 1; |
|
|
|
if (isset($_POST['btTestar'])) { |
|
|
|
$arServidores = strripos($_POST['server_address'], ",") == true ? $_POST['server_address'] : str_replace(" ", ",", $_POST['server_address']); |
|
$arPortas = strripos($_POST['server_port'], ",") == true ? $_POST['server_port'] : str_replace(" ", ",", $_POST['server_port']); |
|
$testResult = TestaConexao($arServidores, $arPortas); |
|
|
|
if ($testResult != "Servidores OK!") { |
|
$jsStartup[] = "alert('{$testResult}');"; |
|
|
|
foreach ($_POST as $key => $valor) { |
|
$paramInsert[$key] = $valor; |
|
} |
|
} else { |
|
$jsStartup[] = "alert('Servidores OK!');"; |
|
|
|
foreach ($_POST as $key => $valor) { |
|
$paramInsert[$key] = $valor; |
|
} |
|
} |
|
} |
|
|
|
if (isset($_POST['btGravar'])) { |
|
|
|
$servers = strripos($_POST['server_address'], " ") ? explode(" ", $_POST['server_address']) : str_replace(","," ",explode(",", $_POST['server_address'])); |
|
|
|
foreach ($servers as $valor) { |
|
$query = "INSERT INTO pbx_agenda_servidores (ip_servidores, porta) " |
|
. "VALUES ('{$valor}','{$_POST['server_port']}')"; |
|
$sql = pg_query($dbcon, $query); |
|
|
|
if (!$sql) { |
|
$jsStartup[] = "alert('Erro ao salvar a operação no banco de dados local!');"; |
|
foreach ($_POST as $key => $valor) { |
|
$paramInsert[$key] = $valor; |
|
} |
|
break; |
|
} |
|
} |
|
$jsStartup[] = "alert('Servidores Cadastrados com Sucesso!');"; |
|
} |
|
|
|
if($acao == 'deleta'){ |
|
$result = pg_query($dbcon, "DELETE FROM pbx_agenda_servidores WHERE id_servidor = '$id' "); |
|
|
|
if(!$result){ |
|
$jsStartup[] = "alert('Erro ao excluir o registro!');"; |
|
}else{ |
|
$jsStartup[] = "alert('Registro Excluído com Sucesso!');"; |
|
} |
|
} |
|
|
|
if($acao == 'edita'){ |
|
$sql = "SELECT id_servidor, ip_servidores, porta FROM pbx_agenda_servidores WHERE id_servidor = {$id}"; |
|
$result = pg_query($dbcon, $sql); |
|
$server = pg_fetch_array($result, null, PGSQL_ASSOC); |
|
|
|
$server_address = $server['ip_servidores']; |
|
$server_port = $server['porta']; |
|
} |
|
|
|
if (isset($_POST['btEditar'])) { |
|
|
|
$sql = "UPDATE pbx_agenda_servidores SET ip_servidores = '{$_POST['server_address']}', porta = '{$_POST['server_port']}' " |
|
. "WHERE id_servidor = {$id}"; |
|
|
|
$result = pg_query($dbcon, $sql); |
|
|
|
if (!$result) { |
|
$jsStartup[] = "alert('Erro ao editar o registro!');"; |
|
} else { |
|
$jsStartup[] = "alert('Registro Alterado com Sucesso!');"; |
|
} |
|
} |
|
|
|
$result = pg_query($dbcon, "SELECT id_servidor, ip_servidores, porta FROM pbx_agenda_servidores WHERE 1=1"); |
|
$linhas = ''; |
|
while($row = pg_fetch_array($result, null ,PGSQL_ASSOC)){ |
|
|
|
$editar = sprintf('<a href="index.php?idProg=322&pbxRequest=1&acao=edita&id_servidor=%s" title="Editar servidor">' |
|
. '<img src="../images/edit.gif" width="16" height="16" border="0" alt="Editar Servidor %s"/></a>', |
|
$row['id_servidor'], $row['ip_servidores']); |
|
|
|
$excluir = sprintf('<a href="#" onclick="excluir(\'\', \'ImportaAgenda.php\', ' |
|
. '\'Deseja excluir o Servidor: %s ?\', \'index.php?idProg=322&pbxRequest=1&acao=deleta&id_servidor=%s\', \'\');">' |
|
. '<img src="../images/delete.gif" width="16" height="16" border="0" /></a>', |
|
$row['ip_servidores'], $row['id_servidor']); |
|
|
|
$linhas .= sprintf("<tr><td>%s</td><td>%s</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", |
|
$row['ip_servidores'], $row['porta'], $editar, $excluir); |
|
} |
|
|
|
$smarty->assign('server_address', $server_address); |
|
$smarty->assign('server_port', $server_port); |
|
$smarty->assign('linhas',$linhas); |
|
$smarty->assign('id_servidor', $_REQUEST['id_servidor']); |
|
$smarty->assign('edita', $_GET['acao']); |
|
GetTemplate($smarty, 'importaAgenda.tpl'); |
|
|
|
function TestaConexao($host, $ports) { |
|
|
|
try { |
|
if(empty($ports)){throw new Exception("Informe a porta de conexão!");} |
|
if(empty($host)){throw new Exception("Informe o servidor para conexão!");} |
|
|
|
$host = explode(",", $host); |
|
$ports = explode(",", $ports); |
|
|
|
$res = false; |
|
foreach ($host as $numeroip) { |
|
$pingando = shell_exec("ping -c 4 $numeroip"); |
|
$p = explode(",", $pingando); |
|
$res_ping = substr($p[1], 1, 2); |
|
|
|
if ($res_ping >= 2) { |
|
$res = true; |
|
}else{ |
|
throw new Exception("IP {$numeroip} Não responde ao ping!"); |
|
} |
|
} |
|
|
|
foreach ($host as $server) { |
|
foreach ($ports as $port) { |
|
$connection = @fsockopen($server, $port); |
|
|
|
if (is_resource($connection)) { |
|
$result[] = $server . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') aberta.' . "\n"; |
|
|
|
fclose($connection); |
|
} else { |
|
$result[] = 'Error! - ' . $server . ':' . $port . ' sem resposta.' . "\n"; |
|
} |
|
} |
|
} |
|
|
|
foreach ($result as $resultado) { |
|
if (substr($resultado, 0, 5) == "Error") { |
|
$prob = explode(":", $resultado); |
|
$res = "IP {$prob[0]} não possui liberacao na porta ". substr($prob[1], 0,4); |
|
} else { |
|
$res = "Servidores OK!"; |
|
} |
|
} |
|
|
|
return $res; |
|
} catch (Exception $ex) { |
|
return $ex->getMessage(); |
|
} |
|
} |
|
|
|
function ValorInicio($arFields) { |
|
$arInput = array(); |
|
foreach ($arFields as $campo) { |
|
$arInput[$campo] = ""; |
|
} |
|
return $arInput; |
|
}
|
|
|