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
#!/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; |
|
} |
|
|