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.
 
 
 
 
 
 

112 lines
3.1 KiB

#!/usr/bin/php -q
<?php
include('util/util.php');
include('bd.php');
ob_implicit_flush(true);
set_time_limit(6);
error_reporting(0);
$in = fopen("php://stdin", "r");
$stdlog = fopen("/var/log/asterisk/verifica_rota.log", "w");
// Habilita modo debugging (mais verbose)
$debug = true;
// Do function definitions before we start the main loop
function read()
{
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug)
fputs($stdlog, "read: $input\n");
return $input;
}
function write($line)
{
global $debug, $stdlog;
if ($debug)
fputs($stdlog, "write: $line\n");
echo $line . "\n";
}
// Colocamos headers AGI dentro de um array
while ($env = read()) {
$s = explode(": ", $env);
$agi[str_replace("agi_", "", $s[0])] = trim($s[1]);
if (($env == "") || ($env == "\n")) {
break;
}
}
//parametro vindo do dialplan
$ramal = $argv[1];
$destino = $argv[2];
$query = "SELECT a.id_rota, a.tipo_acesso, a.ramal,b.modelo,c.recorte, c.acrescenta, c.org_id,
CASE WHEN (substring(modelo FROM '.$') <> '.') THEN length(replace(replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]'))
WHEN (substring(modelo FROM '.$') = '.') THEN length(replace(replace(replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]'),'.',REPEAT('[0-9]', 100))) END AS prioridade
FROM pbx_rotas_saida_ramais a
INNER JOIN pbx_rotas_saida_modelos b ON a.id_rota = b.id_rota
INNER JOIN pbx_rotas_saida c ON a.id_rota = c.id
WHERE ramal = '$ramal'
AND '$destino' ~ CASE WHEN (substring(modelo FROM '.$') <> '.') THEN replace('^'||replace(replace(modelo||'$','X','[0-9]'),'Z','[1-9]'),'N','[2-9]')
WHEN (substring(modelo FROM '.$') = '.') THEN replace('^'||replace(replace(modelo,'X','[0-9]'),'Z','[1-9]'),'N','[2-9]') END
AND tipo_acesso <> '0'
ORDER BY prioridade LIMIT 1";
WriteLog($query, '/var/log/asterisk/rotas_saida.log');
$result = pg_query($conexao, $query);
$row = pg_fetch_array($result);
$id_rota = $row['id_rota'];
$tipo_acesso = $row['tipo_acesso'];
$ramal = $row['ramal'];
$modelo = $row['modelo'];
$recorte = $row['recorte'];
$acrescenta = $row['acrescenta'];
$org_id = $row['org_id'];
if (!$tipo_acesso) {
$tipo_acesso = 0;
} else if ($tipo_acesso == '3') {
//Libera ligacao caso tenha agente logado no ramal
$query = "select count(*) from pbx_supervisor_agentes where ramal = '$ramal'";
$result = pg_query($conexao, $query);
$row = pg_fetch_array($result);
$resultado = $row['0'];
if (!$resultado) {
$tipo_acesso = 0;
}
}
write("SET VARIABLE ID_ROTA $id_rota");
read();
write("SET VARIABLE TIPO_ACESSO $tipo_acesso");
read();
write("SET VARIABLE NUMERO-RAMAL $ramal");
read();
write("SET VARIABLE MODELO $modelo");
read();
write("SET VARIABLE ID_EMPRESA $org_id");
read();
if ($recorte) {
write("SET VARIABLE RECORTAROTA $recorte");
read();
}
if ($acrescenta) {
write("SET VARIABLE ACRESCENTAROTA $acrescenta");
read();
}
pg_close();
fclose($in);
fclose($stdlog);
exit;
?>