#!/usr/bin/php -q getMessage(); } function Desconpacta($origem, $destino, $type = "gz") { switch ($type) { case "gz" : $cmd = "xzvf"; break; case "bz2": $cmd = "xjvf"; break; default: $cmd = "xzvf"; break; } $result = true; $cmd = sprintf("tar -%s %s -C %s 2>/dev/null", $cmd, $origem, $destino); system($cmd, $result); $arquivoPorta = "portabilidade.csv"; return file_exists($destino . $arquivoPorta); } function CarregaArquivos($pgLocal) { $db = dbConnect($pgLocal); @pg_query($db, 'begin'); /* * Deleta a tabela de dados atuais. */ echo "Apagando a tabela de portabilidade!\n"; $query = "truncate table portabilidade;"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel apagar a tabela portabilidade!")); $query = 'DROP INDEX "idxPortabilidadeTel"'; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel apagar idxtelDoadora!")); /* * Importando a tabela portabilidade. */ echo "Importando a tabela de portabilidade!\n"; $file = DIRETORIO_DOWNLOAD_CLIENTE . "portabilidade.csv"; system("chown postgres:postgres $file"); $query = "COPY portabilidade FROM '$file' WITH DELIMITER AS ',' QUOTE '\"' CSV\n"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel importar tabela portabilidade!")); $query = 'CREATE INDEX "idxPortabilidadeTel" ON portabilidade USING btree (tel_doadora);'; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel criar indice idxtelDoadora!")); /* * Importando a tabela prefixos. */ $file = DIRETORIO_DOWNLOAD_CLIENTE . "prefixos.csv"; if (file_exists($file)) { echo "Apagando a tabela de prefixos!\n"; $query = "truncate table prefixos;"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel apagar a tabela prefixos!")); echo "Importando a tabela de prefixos!\n"; $query = "COPY prefixos FROM '$file' WITH DELIMITER AS ',' QUOTE '\"' CSV\n"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel importar tabela prefixos!")); } /* * Importando a tabela municipio ; "operadoras.csv"; . */ $file = DIRETORIO_DOWNLOAD_CLIENTE . "municipios.csv"; if (file_exists($file)) { echo "Apagando a tabela de municipios!\n"; $query = "truncate table pbx_municipios;"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel apagar a tabela municipios!")); echo "Importando a tabela de municipios!\n"; $query = "COPY pbx_municipios FROM '$file' WITH DELIMITER AS ',' QUOTE '\"' CSV\n"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel importar tabela municipios!")); echo "Apagando a tabela de pbx_consulta_ddd!\n"; $query = "truncate table pbx_consulta_ddd;"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel apagar a tabela pbx_consulta_ddd!")); echo "Importando a tabela de pbx_consulta_ddd!\n"; $query = "insert into pbx_consulta_ddd (id, codigo_ddd, nome_municipio, uf, prefixo, inicial, final) select id, codigo_ddd, nome_municipio, uf, prefixo, faixa_inicial, faixa_final from pbx_municipios;"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel atualizar a tabela pbx_consulta_ddd!")); } /* * Importando a tabela operadoras. */ $file = DIRETORIO_DOWNLOAD_CLIENTE . "operadoras.csv"; if (file_exists($file)) { echo "Carregando registros de operadoras existentes!\n"; $query = "drop table if exists operadoras"; $result = @pg_query($db, $query); /* * Salvando as operadoras atuais. */ $query = "select * into operadoras from pbx_operadoras where 1=2"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel importar tabela operadoras atual!")); echo "Importando a tabela de operadoras!\n"; $query = "COPY operadoras FROM '$file' WITH DELIMITER AS ',' QUOTE '\"' CSV\n"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel importar tabela operadoras!")); /* * Recuperando as modificacoes locais. */ //$query = "update pbx_operadoras set oper_numero_saida = operadoras.oper_numero_saida from operadoras where operadoras.oper_id = pbx_operadoras.oper_id and operadoras.oper_dono = 'R'"; //$query = "insert into pbx_operadoras select * from operadoras where oper_spid not in(select oper_spid from pbx_operadoras)"; $query = "insert into pbx_operadoras( oper_nome, oper_spid, oper_licensa, oper_numero, oper_numero_saida, oper_dono ) select oper_nome, oper_spid, oper_licensa, oper_numero, oper_numero_saida, oper_dono from operadoras where oper_spid not in(select oper_spid from pbx_operadoras)"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel atualizar as informacoes locais!")); /* * Atualiza o id. */ $query = "SELECT setval('public.pbx_operadoras_oper_id_seq', (select max(oper_id) from pbx_operadoras), true)"; $result = @pg_query($db, $query); if (!$result) throw new Exception(GetExcept("Não foi possivel atualizar o id da tabela de operadoras!")); /* * Apaga operadoras remotas $query = "delete from pbx_operadoras where oper_dono = 'R'"; $result = @pg_query($db, $query); if(!$result) throw new Exception (GetExcept("Não foi possivel apagar operadoras existentes!")); */ } @pg_query($db, 'commit'); } function IniciaInstalacao() { global $cliIdExterno, $cliId, $idAtualiza, $serverApi, $loginApi, $senhaApi; echo "Obtendo informacoes sobre atualizacoes.\n"; $url = "http://$serverApi/integracao?method=PortabInstall&cliIdExterno=$cliIdExterno&login=$loginApi&senha=$senhaApi&SIPID=0&tipoRetorno=XML"; $xml = simplexml_load_string(file_get_contents($url)); $statusTran = trim($xml->status); if ($statusTran != 'OK') throw new Exception(GetExcept($xml->message)); $idAtualiza = $xml->idarquivo; $cliId = $xml->cli_id; $cliStatus = $xml->clie_status; if ($cliStatus != 2) throw new Exception(GetExcept("O cliente nao esta habilitado para instalacao!\n")); } function FinalizaInstalacao() { global $idAtualiza, $cliId, $serverApi, $loginApi, $senhaApi, $filePorta; echo "Registrando a instalacao no servidor de portabilidade"; $url = "http://$serverApi/integracao?method=PortabInstallReg&cliId=$cliId&idArquivo=$idAtualiza&login=$loginApi&senha=$senhaApi&SIPID=0&tipoRetorno=XML"; $xml = simplexml_load_string(file_get_contents($url)); $statusTran = trim($xml->status); if ($statusTran != 'OK') throw new Exception(GetExcept($xml->message)); unlink($filePorta); } /* * Funcoes deverão ser removidas em outra versao, * todas existem na unit util ou shared; foram * introduzidas aqui apenas para garantir que * funcionem em qualque versão. */ function ExecStart($fileExec) { return true; if (file_exists($fileExec)) { exit; } /* * Cria o arquivo caso ele não exista. */ $arq = fopen($fileExec, 'w'); fclose($arq); } function ExecEnd($fileExec) { return true; unlink($fileExec); exit; } function DisplayDebub($msg) { global $debug; if ($debug) { echo $msg; } } function GravaLogPorta($txt, $aux = '') { $txt = trim($txt); $txt .= trim($aux); $txt .= (stripos($txt, "Fim") !== false) ? "\n\n" : "\n"; $file = "/var/log/asterisk/portabilidade.log"; $handle = fopen($file, 'a'); fwrite($handle, $txt); fclose($handle); } function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float) $usec + (float) $sec); } function dbConnect($pg) { $conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", $pg["host"], $pg["port"], $pg["dbname"], $pg["user"], $pg["password"]); return @pg_connect($conStr); } function VerificaDirDownload($dir) { if (!file_exists($dir)) { system("mkdir -p $dir"); system("chmod 777 -R $dir"); } return file_exists($dir); } function downloadFile($url, $path) { $newfname = $path; $file = fopen($url, "rb"); $contents = stream_get_contents($file); fclose($file); $newf = fopen($newfname, "wb"); fwrite($newf, $contents); fclose($newf); if (file_exists($newfname)) { if (filesize($newfname) > 100) { return true; } } return false; $newfname = $path; $file = fopen($url, "rb"); if ($file) { $newf = fopen($newfname, "wb"); if ($newf) while (!feof($file)) { fwrite($newf, fread($file, 1024 * 8), 1024 * 8); } } if ($file) { fclose($file); } if ($newf) { fclose($newf); } if (file_exists($newfname)) { if (filesize($newfname) > 100) { return true; } } return false; } function UcompressFile($origem, $arqDestino, $destino = './') { $result = true; $cmd = sprintf("tar -xzvf %s -C %s", $origem, $destino); //$cmd = sprintf("tar -xzf %s -C %s 2>/dev/null", $origem, $destino); system($cmd, $result); return file_exists($arqDestino); /* * Certifica que o arquivo foi criado com sucesso. */ //return file_exists(destino); } function GetExcept($msg) { $ex = error_get_last(); return sprintf("%s\nErro: %s\n", trim($msg), trim($ex['message'])); } ?>