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.
229 lines
8.6 KiB
229 lines
8.6 KiB
<?php |
|
|
|
/* |
|
* REQUISIÇÃO DE PESQUISA |
|
*/ |
|
$dataAtualiza = isset($_POST['dataAtualiza']) ? $_POST['dataAtualiza'] : ''; |
|
$versao = isset($_POST['versao']) ? $_POST['versao'] : ''; |
|
$vpn = isset($_POST['ip_vpn']) ? $_POST['ip_vpn'] : ''; |
|
|
|
/* |
|
* REQUISIÇÃO DE ATUALIZAÇÃO DO SISTEMA |
|
*/ |
|
$vpnAtualizar = isset($_POST['atualizar']) ? $_POST['atualizar'] : ''; |
|
$versaoAtualizar = isset($_POST['versaoAtualizacao']) ? $_POST['versaoAtualizacao'] : ''; |
|
|
|
$rows = ""; |
|
$mensagem1 = ""; |
|
$totalVersao = array(); |
|
$qtdCentrais = 0; |
|
$qtdCentraisAtv = 0; |
|
|
|
try { |
|
|
|
$ctPg = ___GetPGConnect(); |
|
|
|
if (isset($_POST['btSalva'])) { |
|
___SetAtualizacao($vpnAtualizar, $versaoAtualizar); |
|
} else if (isset($_POST['btAtualizarAgora'])) { |
|
___SetAtualizacao($vpnAtualizar, $versaoAtualizar); |
|
shell_exec('/var/lib/asterisk/scripts/atualizacao/central_atualizacao.php &'); |
|
} |
|
|
|
$res = ___GetServidores($ctPg, $versao, $vpn, $dataAtualiza); |
|
|
|
foreach ($res as $server) { |
|
$qtdCentrais ++; |
|
!empty(trim($server['disco_central'])) ? $qtdCentraisAtv++ : ''; |
|
|
|
$checked = $server['atualizar_central'] == 1 ? 'checked' : ''; |
|
$ckbox = "<input type=\"checkbox\" name=\"atualizar[]\" value=\"{$server['id_central']}\" $checked>"; |
|
|
|
$coleta = date('d/m/Y', strtotime($server['data_reg'])); |
|
$atualizacao = $server['data_atualizacao'] ? date('d/m/Y', strtotime($server['data_atualizacao'])) : 'NÃO ATUALIZADA'; |
|
___VerificaAtualizacao($server['versao_central'], $server['disco_central'], $server['status_central'], $atualizacao, $ckbox); |
|
|
|
$rows .= "<tr>"; |
|
$rows .= "<td>{$server['nome_central']}</td>"; |
|
$rows .= "<td align=\"center\"><a target=\"_blank\" href=\"http://{$server['ip_central']}\">{$server['ip_central']}</a></td>"; |
|
$rows .= "<td>{$server['versao_central']}</td>"; |
|
$rows .= "<td>" . trim($server['disco_central']) . "</td>"; |
|
$rows .= "<td>" . trim($server['sistema_central']) . "</td>"; |
|
$rows .= "<td>" . trim($server['sizedb_central']) . "</td>"; |
|
$rows .= "<td align=\"center\">{$server['status_central']}</td>"; |
|
$rows .= "<td align=\"center\">$atualizacao</td>"; |
|
$rows .= "<td align=\"center\">$ckbox</td>"; |
|
$rows .= ___iconGrid($server['sizedb_central'], $server['versao_central'], $server['versao_central'], $server['id_central'], $server['ip_central'], $server['nome_central'],$server['status_central'],$atualizacao); |
|
$rows .= "</tr>"; |
|
} |
|
$rows .= "<tr><th align='left'>Centrais: $qtdCentrais</th><th align='left'>Centrais Ativadas: $qtdCentraisAtv</th><th colspan='9'></th></tr>"; |
|
|
|
$option = ___GetVersao(); |
|
} catch (Exception $ex) { |
|
$mensagem1 = $ex->getMessage(); |
|
} |
|
|
|
$smarty->assign('dataAtu', $dataAtualiza); |
|
$smarty->assign('coleta', $coleta); |
|
$smarty->assign('opt', $option); |
|
$smarty->assign('mensagem', $mensagem1); |
|
$smarty->assign('rows', $rows); |
|
$smarty->assign('select', ___GetSelectVersoes()); |
|
$smarty->assign('lastVersao', ___GetLastVersion()); |
|
GetTemplate($smarty, 'admin/centrais/centrais.tpl'); |
|
|
|
/* |
|
* CONEXÃO COM A BASE DAS CENTRAIS CADASTRADA |
|
*/ |
|
function ___GetPGConnect() { |
|
$ctPg = pg_connect(sprintf("host=%s port=%s dbname=%s user=%s password=%s",IP_CENTRAL_ATUALIZACAO,'5432','atualizacoes','contacte','ctepgSQL')); |
|
___ErrorPG($ctPg, 1, 'Não foi possível conectar no servidor desejado!'); |
|
return $ctPg; |
|
} |
|
|
|
/* |
|
* BUSCA A ULTIMA VERSÃO DO SISTEMA |
|
*/ |
|
function ___GetLastVersion() { |
|
global $ctPg; |
|
$query = "SELECT versao_atualizacao FROM aplicativo_atualizacao ORDER BY 1 DESC"; |
|
$result = pg_query($ctPg, $query); |
|
$res = pg_fetch_assoc($result); |
|
return $res['versao_atualizacao']; |
|
} |
|
|
|
/* |
|
* FUNÇÃO PARA ATUALIZAR A BASE DE ACORDO COM ATUALIZAÇÕES PROPOSTAS |
|
*/ |
|
function ___SetAtualizacao($servers, $versaoAtualizar) { |
|
global $ctPg; |
|
|
|
/* |
|
* SE A OPERAÇÃO FOR DESMARCADA OS REGISTRO SÃO ALTERADOS NO BANCO CANCELANDO A ATUALIZAÇÃO. |
|
*/ |
|
$ser = pg_fetch_all(pg_query($ctPg, "SELECT id_central FROM central_atualizacao WHERE atualizar_central = 1")); |
|
if ($ser) { |
|
foreach ($ser as $val) { |
|
if (!in_array($val['id_central'], $servers)) { |
|
pg_query($ctPg, "UPDATE central_atualizacao SET atualizar_central = 0, atualizar_versao_central = '' WHERE id_central = {$val['id_central']};"); |
|
} |
|
} |
|
} |
|
|
|
foreach ($servers as $id) { |
|
pg_query($ctPg, "UPDATE central_atualizacao SET atualizar_central = 1, atualizar_versao_central = '$versaoAtualizar' WHERE id_central = $id;"); |
|
} |
|
} |
|
|
|
/* |
|
* SISTEMA DE PESQUISA DOS SERVIDORES CADASTRADOS NA BASE |
|
*/ |
|
function ___GetServidores($conexao, $versao = '', $vpn = '', $dataAtualizacao = '') { |
|
$query = "SELECT * FROM central_atualizacao WHERE nome_central IS NOT NULL "; |
|
|
|
if ($versao) { |
|
$query .= " AND versao_central = '$versao'"; |
|
} else if ($vpn) { |
|
$query .= " AND ip_central = '$vpn' OR nome_central ILIKE '%$vpn%' " |
|
. "OR nome_central ILIKE '%$vpn%' " |
|
. "OR sistema_central ILIKE '%$vpn%'"; |
|
} else if ($dataAtualizacao) { |
|
$query .= sprintf(" AND data_atualizacao = '%s'", FormatDtMssql($dataAtualizacao)); |
|
} |
|
$query .= " ORDER BY 1"; |
|
|
|
$result = pg_query($conexao, $query); |
|
$return = pg_fetch_all($result); |
|
___ErrorPG($conexao, $return, 'Não foi possível listar os servidores, verifique a conexão!'); |
|
return $return; |
|
} |
|
|
|
/* |
|
* COLETA ERROS COM CONSULTAS NO POSTGRESQL |
|
*/ |
|
function ___ErrorPG($conexao, $return, $msg) { |
|
|
|
if (pg_last_error($conexao)) { |
|
throw new Exception($msg); |
|
} |
|
|
|
if (!$return) { |
|
throw new Exception("Não foi encontrado nenhum registro!"); |
|
} |
|
} |
|
|
|
/* |
|
* VERIFICA SE A VPN POSSUI TODAS A INFORMAÇÕES |
|
*/ |
|
function ___VerificaAtualizacao($versao, $disco, &$status, &$atualizacao, &$checkbox) { |
|
if (!trim($versao) || !trim($disco)) { |
|
$status = "-"; |
|
$atualizacao = "-"; |
|
$checkbox = "-"; |
|
} |
|
} |
|
|
|
/* |
|
* CRIA COMBO COM AS VERSÕES DAS CENTRAIS |
|
*/ |
|
function ___GetVersao() { |
|
global $totalVersao, $ctPg; |
|
|
|
$arrayVer = ___GetServidores($ctPg); |
|
$opt = "<option value=\"\">Todas</option>"; |
|
|
|
foreach ($arrayVer as $versao) { |
|
if (!in_array($versao['versao_central'], $totalVersao) && $versao['versao_central']) { |
|
$totalVersao[] = $versao['versao_central']; |
|
} |
|
} |
|
|
|
sort($totalVersao); |
|
|
|
foreach ($totalVersao as $value) { |
|
$opt .= "<option value=\"$value\">$value</option>"; |
|
} |
|
|
|
return $opt; |
|
} |
|
|
|
/* |
|
* CRIA A ICONE PARA MODIFICAR A VPN |
|
*/ |
|
function ___iconGrid($sizedb, $disco, $versao, $id, $ip, $central, $status, $atualizacao) { |
|
$rows = ''; |
|
$myIP = $_SERVER[HTTP_HOST]; |
|
$uri = $_SERVER["REQUEST_URI"]; |
|
if ($sizedb && $versao || $disco) { |
|
$rows .= "<td align=\"center\"><a href='#' onclick=\"NovaJanela('index.php?idProg=319&pbxRequest=1&id=$id&ip=$ip¢ral=$central&sts=$status&atualiza=$atualizacao', 'CadCentrais', '400', '230', 'resizable=YES,scrollbars=YES');\"><img width='16px' title='Editar' src='imgSite/edit-solid.png'/></a></td>"; |
|
} else { |
|
$rows .= "<td align=\"center\" colspan='2'><img width='16px' title='Servidor não conectado' src='imgSite/exclamation-circle.png'/></td>"; |
|
} |
|
return $rows; |
|
} |
|
|
|
/* |
|
* CRIA O COMBO PARA MOSTRAR OS SERVIDORES |
|
*/ |
|
function ___GetSelectVersoes() { |
|
global $ctPg; |
|
$rows = ''; |
|
|
|
$result = pg_query($ctPg, "SELECT versao_atualizacao FROM aplicativo_atualizacao ORDER BY versao_atualizacao DESC"); |
|
$res = pg_fetch_all($result); |
|
|
|
foreach ($res as $ver) { |
|
$rows .= "<option value='{$ver['versao_atualizacao']}'>{$ver['versao_atualizacao']}</option>"; |
|
} |
|
return $rows; |
|
} |
|
|
|
/* |
|
* CONEXÃO COM O SERVIDOR QUE RODA O SCRIPT central_atualizacao |
|
*/ |
|
function ___ConnectSSH($comando) { |
|
$connection = ssh2_connect("127.0.0.1", 2223); |
|
ssh2_auth_password($connection, 'root', 'SimpleS_root'); |
|
ssh2_exec($comando); |
|
} |
|
|