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

<?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&central=$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);
}