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.
 
 
 
 
 
 

106 lines
4.0 KiB

#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
ini_set('display_errors', 0);
require_once __DIR__ . "/Backup.php";
require_once __DIR__ . '/BackupSend.php';
require_once __DIR__ . '/BackupFile.php';
require_once 'util/Conexao.php';
include 'configBd.php';
/**
* Pasta de gravacao dos audios do Asterisk;
*/
$folder = '/var/spool/asterisk/monitor/';
/**
* Renomeia o nome do arquivo para ser gerado;
*/
$dateNow = date('Y-m-d');
$name = date('Y-m-d', strtotime($dateNow . '-1 days'));
/**
* Formato do arquivo
*/
$formatCompact = ".tar.gz";
$postgresql = new Conexao($dbHost, $dbUser, $dbPassword, $dbPort, $dbName);
try {
$file = new BackupFile($folder, $name);
$ftp = GetFTP($postgresql);
$data = GetQuery($postgresql, $ftp[0]['dst_clas_audio']);
foreach ($data as $files) {
$file->setFiles($files['userfield'], "{$files['protocolo']}_{$files['calldate']}.WAV");
}
$file->targz();
$resp = $file->generate();
if (!$resp) {
throw new Exception("Nao foi possivel gerar o arquivo de backup.");
}
foreach ($ftp as $server) {
$backup = new BackupSend($server['dst_host'], $server['dst_user'], $server['dst_senha'], $server['dst_porta']);
$backup->directorys($server['dst_diretorio_remoto'], ($name . $formatCompact), ('/tmp/' . $name . $formatCompact));
if (!$backup->ftp()) {
throw new Exception("Nao foi possivel realizar a conexao com FTP.");
}
if (!$backup->ftp_folder_bydate()) {
throw new Exception("Nao foi possivel criar a arvore de pastas.");
}
if (!$backup->ftp_finish()) {
throw new Exception("Nao foi possivel enviar o arquivo para o FTP.");
}
}
} catch (Exception $ex) {
$file->log()->error($ex->getMessage(), debug_backtrace());
} finally {
$file->remove_compact();
}
############################################################################
#### CONEXAO DE BANCO DE DADOS ####
############################################################################
function GetQuery($postgresql, $clas_id = null) {
$query = "SELECT clas_descricao, clit_descricao, userfield,calldate::date,protocolo
FROM pbx_bilhetes a
INNER JOIN pbx_eventos_dacs b ON a.uniqueid = b.uid2
INNER JOIN pbx_usuarios c ON c.matricula = substring(b.agente, 7, 4)
INNER JOIN pbx_protocolo_reg d ON d.uniqueid = a.uniqueid
LEFT JOIN pbx_classifica_reg e ON a.uniqueid = e.id_bilhetes
LEFT JOIN pbx_classifica_atendimento f ON f.clas_id = e.clas_id
LEFT JOIN pbx_classifica_item g ON g.clit_id = e.clit_id
WHERE a.data_bilhete = (now()::date - 1)
AND a.lastapp <> 'Transferred Call'
AND b.evento in('COMPLETEAGENT','COMPLETECALLER', 'TRANSFER','COMPLETEAGENTRAMAL','COMPLETECALLERRAMAL', 'COMPLETAAGENT','COMPLETACALLER', 'TRANSFERORIG','BUSYS','NOANSWERS')
AND userfield IS NOT NULL";
$query .= $clas_id ? " AND f.clas_id = {$clas_id}" : '';
$resp = $postgresql->pg_execute($query);
if (!$resp) {
throw new Exception("Nao foi encontrado nenhum registro.");
}
return $resp;
}
function GetFTP($postgresql) {
$query = "SELECT dst_host,dst_porta,dst_user,dst_senha,dst_diretorio_remoto,prt_descricao,dst_clas_audio
FROM pbx_backup_destino a
INNER JOIN pbx_backup_protocolo b ON b.prt_id = a.prt_id
WHERE prt_descricao ilike 'FTP'";
$resp = $postgresql->pg_execute($query);
if (!$resp) {
throw new Exception("Nenhum servidor FTP cadastrado.");
}
return $resp;
}