Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/php -q
- <?php
- // ESCOPO: script chamado com número a ser consultado no formato 55XXYYYYYYYYY como parâmetro, sendo XX=DDD e YYYYYYYYY=NÚMERO
- // Retorna operadora no formato 55XXX, onde XXX=codigo operadora, ou 55999 se desconhecida.
- // Checa se número já existe localmente. Se existir, verifica se o threshold de refresh foi atingido.
- // --> Caso positivo, atualiza operadora consultando no servidor remoto.
- // --> Caso negativo, retorna a operadora do cache local e incrementa o threshold.
- // Se número não existe localmente, consulta no servidor remoto e armazena no cache local.
- // --> Se server remoto offline, script não trava (timeout de 1 segundo), e retorna o valor do cache local. Se não existir, retorna 55999
- // Script adaptado do exemplo para consulta via AGI em portabilidadecelular.com (serviço que eu recomendo).
- //
- // SQL: crie um database chamado "portabilidade" e use o script anexo para criar a tabela "portabilidade".
- // Lembre-se de configurar o arquivo de logins ou comentar as linhas dele e deixar users e senhas direto aqui nesse arquivo (não recomendado).
- // Dúvidas: mmazon @ gmail . com
- if (function_exists('pcntl_signal'))
- {
- pcntl_signal(SIGHUP, SIG_IGN);
- }
- require_once ('phpagi.php');
- $agi = new AGI();
- // Usaremos autenticação por conf file ao invés de user e senha no agi
- // formato do arquivo de config
- //#begin of mzdbphp.conf
- //[total_trunk.php]
- //AMPDBUSER = freepbxuser
- //AMPDBPASS = freepbxpwd
- //
- //[portabilidadecelular]
- //PCUSER = user
- //PCPASS = password
- //#end of mzdbphp.conf
- // Caso prefira, comente as duas linhas abaixo e cofigure seus users e senhas nesse proprio script
- $configFile = '/etc/mzdbphp.conf';
- $array = parse_ini_file($configFile);
- $usuario_mysql = $array['AMPDBUSER'];
- $senha_mysql = $array['AMPDBPASS'];
- //$usuario_mysql = '---';
- //$senha_mysql = '---';
- $banco_mysql = 'portabilidade';
- //$usuario = "---";
- //$senha = "---";
- $usuario = $array['PCUSER'];
- $senha = $array['PCPASS'];
- // razão de consultas: a cada 10 consultas, atualiza 1 vez no servidor remoto.
- $threshold = 10;
- $id = mysql_connect('localhost',$usuario_mysql, $senha_mysql);
- $con=mysql_select_db($banco_mysql ,$id);
- $destination = $argv[1];
- $ctx=stream_context_create(array('http'=>
- array(
- 'timeout' => 1 // 1 sec
- )
- ));
- //numero enviado no formato 55+DDD+NÚMERO
- $sql = "SELECT company, counter FROM portabilidade WHERE number = '$destination' LIMIT 1";
- $result = mysql_query($sql);
- $row = mysql_fetch_array($result);
- if(is_array($row)){
- if($row['counter'] < $threshold){
- $operadora = $row['company'];
- $sql = "UPDATE portabilidade SET counter = counter + 1, lifetime_counter = lifetime_counter + 1, last_access = NOW() WHERE number = '$destination'";
- $result = mysql_query($sql);
- $cost = "(from local cache)";
- } else
- {
- //numero enviado para o webservidor no formato 55 ddd nº
- $url = "https://www.portabilidadecelular.com/painel/consulta_numero.php?user=".$usuario."&pass=".$senha."&seache_number=".$destination;
- if( ($operadora = file_get_contents($url,false,$ctx)) === false )
- {
- // FAIL
- $operadora = $row['company'];
- $company = substr($operadora, 0, 5);
- // $company = 55999;
- $sql = "UPDATE portabilidade SET last_access = NOW(), company = $company WHERE number = '$destination'";
- $result = mysql_query($sql);
- $cost = "(offline - not updated !)";
- }
- else
- {
- // SUCCESS
- // $operadora = file_get_contents($url);
- $company = substr($operadora, 0, 5);
- $sql = "UPDATE portabilidade SET counter = 1, lifetime_counter = lifetime_counter + 1, last_refresh = NOW(), last_access = NOW(), company = $company WHERE number = '$destination'";
- $result = mysql_query($sql);
- $cost = "(from server - updated local cache)";
- }
- }
- }else{
- //numero enviado para o webservidor no formato 55 ddd nº
- $url = "https://www.portabilidadecelular.com/painel/consulta_numero.php?user=".$usuario."&pass=".$senha."&seache_number=".$destination;
- if( ($operadora = file_get_contents($url,false,$ctx)) === false )
- {
- // FAIL
- $operadora = 55999;
- $company = 55999;
- $sql = "INSERT INTO portabilidade (number, company, counter, insert_date, last_access, lifetime_counter, last_refresh) VALUES ('$destination','$company',10, NOW(), NOW(), 0, NOW())";
- $result = mysql_query($sql);
- $cost = "(offline ! - new record in local cache as unknow 55999)";
- }
- else
- {
- // SUCCESS
- $company = substr($operadora, 0, 5);
- $sql = "INSERT INTO portabilidade (number, company, counter, insert_date, last_access, lifetime_counter, last_refresh) VALUES ('$destination','$company',0, NOW(), NOW(), 0, NOW())";
- $result = mysql_query($sql);
- $cost = "(from server - new record in local cache)";
- }
- }
- mysql_close();
- $agi->verbose("Operadora " . $operadora . $cost);
- $agi->set_variable("OPERADORA", $operadora);
- exit();
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement