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.
 
 
 
 
 
 

202 lines
5.1 KiB

#!/usr/bin/php -q
<?php
include('bd.php');
include_once('util/util.php');
ob_implicit_flush(true);
set_time_limit(6);
error_reporting(0);
$in = fopen("php://stdin", "r");
$stdlog = fopen("/var/log/asterisk/verifica_operadora.log", "w");
// Habilita modo debugging (mais verbose)
$debug = false;
// 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, $logOnly = false) {
global $debug, $stdlog;
if ($logOnly) {
fputs($stdlog, "$line\n");
} else if ($debug) {
fputs($stdlog, "write: $line\n");
}
if (!$logOnly) {
echo $line . "\n";
}
}
function __log($log, $label = '') {
$line = $label ? sprintf("%s: %s", $label, $log) : $log;
write($line, true);
}
// Colocamos headers AGI dentro de um array
while ($env = read()) {
$s = split(": ", $env);
$agi[str_replace("agi_", "", $s[0])] = trim($s[1]);
if (($env == "") || ($env == "\n")) {
break;
}
}
//parametro vindo do dialplan
$string_discagem = $argv[1];
$id_tronco = $argv[2];
$destino = RmPadraoInternacional($argv[3]);
__log("Inicio");
__log($string_discagem, 'string_discagem');
__log($id_tronco, 'id_tronco');
__log($destino, 'destino');
__log("");
__log("Verifica Emergencia");
//Verifca se eh 0300,0303,0500,0800,0900
$numero = substr(ltrim($destino, "0"), 0, 3);
__log($numero, "Numero: copia 3 primeiros caracteres do destino");
switch ($numero) {
case 300:
exit;
break;
case 303:
exit;
break;
case 500:
exit;
break;
case 800:
exit;
break;
case 900:
exit;
break;
}
__log("O Numero nao eh emergencia");
/*
* Sai se for ligacao internacional.
*/
if (substr(trim($destino), 0, 2) == '00') {
exit;
}
__log("O destino nao eh internacional");
//
//$numero = $destino;
$tamanho = strlen($destino);
if ($tamanho <= '9') {
exit;
}
__log("O destino tem mais de 9 caracteres");
__log("Comando switch recebe tamanho e alimenta a var $numero");
switch ($tamanho) {
//6599893984
case 10:
$inicio = substr($destino, 0, 1);
if ($inicio == '0') {
exit;
}
$numero = substr(ltrim($destino, "0"), -10);
__log($numero, "Tamanho: 10");
break;
//06599893984
//65999893984 - Nono digito
case 11:
$inicio = substr($destino, 0, 1);
if ($inicio == '0') {
$numero = substr(ltrim($destino, "0"), -10);
} else {
$numero = substr(ltrim($destino, "0"), -11);
}
__log($numero, "Tamanho: 11");
break;
//065999893984 - Nono digito
case 12:
$numero = substr(ltrim($destino, "0"), -11);
__log($numero, "Tamanho: 12");
break;
//0146599893984
case 13:
$numero = substr(ltrim($destino, "0"), -10);
__log($numero, "Tamanho: 13");
break;
//01465999893984 - Nono digito
case 14:
$numero = substr(ltrim($destino, "0"), -11);
__log($numero, "Tamanho: 14");
break;
}
__log($numero, "Numero Copiado do destino");
__log("Inicia a area conurbada");
//coalesce(a.oper_numero_saida, a.oper_numero) as oper_numero_saida from pbx_operadoras
$query = "select areacornubada('$numero') as areacornubada,coalesce(b.oper_numero_saida, b.oper_numero) as oper_numero from pbx_tarif_contrato a inner join pbx_operadoras b on a.oper_id = b.oper_id inner join pbx_troncos c on c.contrato = a.contr_id where c.id = '$id_tronco'";
$result = pg_query($conexao, $query);
$row = pg_fetch_array($result);
$operadora = $row['oper_numero'];
$areacornubada = $row['areacornubada'];
__log($operadora, "Operadora area conurbada");
__log($areacornubada, "Area conurbada pelo numero");
write("SET VARIABLE numero $numero");
read();
write("SET VARIABLE areacornubada $areacornubada");
read();
__log("Verifica se area cornubada = numero");
if ($areacornubada == $numero) {
if ($operadora) {
__log("Area cornubada = numero e possui operadora add operadora a numero");
$destino_novo = $operadora . $numero;
__log($destino_novo, "Numero/Operadora");
$string_nova = str_replace($destino, $destino_novo, $string_discagem);
__log($string_nova, "Modifica str discagem");
write("SET VARIABLE ARG1 $string_nova");
read();
write("SET VARIABLE ARG10 $destino_novo");
read();
}
} else {
__log('Area cornubada <> numero se var $areacornubada eh vazia sai do script');
if (!$areacornubada) {
exit;
}
$destino_novo = $areacornubada;
__log($destino_novo, "Destino novo = areacornubada retornada da consulta");
$string_nova = str_replace($destino, $destino_novo, $string_discagem);
__log($string_nova, "Modifica a str de discagem = areacornubada");
write("SET VARIABLE ARG1 $string_nova");
read();
write("SET VARIABLE ARG10 $destino_novo");
read();
}
pg_close();
fclose($in);
fclose($stdlog);
exit;
?>