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.
106 lines
4.0 KiB
106 lines
4.0 KiB
2 years ago
|
#!/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;
|
||
|
}
|
||
|
|