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.
202 lines
5.1 KiB
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 = explode(": ", $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; |
|
?>
|
|
|