Browse Source

Merge pull request 'amarildo' (#7) from amarildo into dev

Reviewed-on: amarildo.pereira/pabx-app#7
master
AMARILDO PEREIRA 2 years ago
parent
commit
987334fbc0
  1. 5
      .gitignore
  2. 233
      doc/lgpd/TERMO DE USO E PRIVACIDADE APLICAÇÃO SIMPLES V_FINAL.txt
  3. BIN
      imgSite/Coração.png
  4. 49
      include/configBd.php~
  5. 453
      include/util/funcoesLicenca.php
  6. 0
      nbproject/private/config.properties
  7. 8
      nbproject/private/private.properties
  8. 18
      nbproject/private/private.xml
  9. 7
      nbproject/project.properties
  10. 9
      nbproject/project.xml
  11. 43
      projeto/base/sql/versao-1.7.12.sql
  12. 114
      templates/configLicenca.tpl

5
.gitignore vendored

@ -1,4 +1,7 @@
compara
templates_c
integracao/arquivoCampanha
cadastro/licenca/*.lca
cadastro/licenca/tmp/*.lca
nbproject
audios

233
doc/lgpd/TERMO DE USO E PRIVACIDADE APLICAÇÃO SIMPLES V_FINAL.txt

@ -1,233 +0,0 @@
TERMOS DE USO E PRIVACIDADE APLICAÇÃO SIMPLES IP
Última Atualização: 12 de julho de 2021
Esta aplicação e seu conteúdo ("SIMPLES IP") são controlados e operados pelo próprio
SIMPLES IP. Todos os direitos reservados.
De acordo com a disposição do artigo 41 da Lei Geral de Proteção de Dados, o SIMPLES
IP indica Gardemann & Vidotti Advogados Associados, como encarregado pelo
tratamento de dados, sendo possível o contato através o seguinte e-mail:
encarregado.simplesip@gev.adv.br e WhatsApp (43) 3373-9394.
Este Termo de Uso e Privacidade, pelas cláusulas adiante descritas, regulamentam o uso
da aplicação SIMPLES IP, e de seus conteúdos, adiante denominados como
CONTEÚDOS, sem prejuízo da aplicação da legislação vigente.
AO UTILIZAR O SIMPLES IP, VOCÊ AUTOMATICAMENTE CONCORDA COM ESTES
TERMOS DE USO E PRIVACIDADE, RESPONSABILIZANDO-SE INTEGRALMENTE POR
TODOS E QUAISQUER ATOS PRATICADOS POR VOCÊ NO SIMPLES IP OU EM SERVIÇOS A
ELE RELACIONADOS. CASO VOCÊ NÃO CONCORDE COM QUALQUER DOS TERMOS E
CONDIÇÕES ABAIXO ESTABELECIDOS, VOCÊ NÃO DEVE UTILIZAR O SIMPLES IP.
Integram os presentes TERMOS DE USO todos os avisos, regulamentos de uso e
instruções levados ao conhecimento do USUÁRIO pelo SIMPLES IP.
GLOSSÁRIO
Para fins destes Termos de Uso, devem-se considerar as seguintes definições e
descrições para melhor entendimento:
Conta de Acesso: Credencial de um usuário cadastrado que permite o acesso à área
restrita e às funcionalidades exclusivas, que é definida por nome de usuário (login) e
senha.
Dados Cadastrais: Conjunto de informações pessoais de um usuário, quando aplicável,
de modo que o identifique, diferenciando-o dos demais, a exemplo do número do
documento de identidade (RG), cadastro de pessoa física (CPF) ou jurídica (CNPJ),
endereço residencial ou comercial, sede, nome completo, "apelido" (login), entre
outros.
Layout: Conjunto compreendido entre aparência, design e fluxos da aplicação.
Login: Nome de Usuário escolhido pelo usuário quando preenche o cadastro para
acesso a funcionalidades exclusivas da aplicação.
Logon: Ato de o usuário cadastrado ingressar na área restrita da aplicação
utilizando login e senha.
Logs: Registros de atividades do usuário efetuadas na aplicação.
Senha: Conjunto de caracteres que serve como prova de identidade digital do usuário,
cujo conhecimento deve ser exclusivo e único.
Usuário: Indivíduo/pessoa jurídica que acessa a área restrita da aplicação mediante
login e senha.
1. O QUE É SIMPLES IP?
1.1. Serviços. O SIMPLES IP é uma aplicação que oferece os seguintes serviços:
gestão e provimento de comunicação por voz feita através da plataforma.
1.2. Suspensão. Nós nos reservamos o direito de suspender ou cancelar, a qualquer
momento, o seu acesso à aplicação em caso de suspeita de fraude, obtenção de
benefício ou vantagem de forma ilícita, ou pelo não cumprimento de quaisquer
condições previstas nestes Termo de Uso e Privacidade, ou legislação aplicável. Nesses
casos, não será devida qualquer indenização a você e o SIMPLES IP poderá promover a
competente ação de regresso, se necessário, bem como tomar quaisquer outras
medidas necessárias para perseguir e resguardar seus interesses.
2. COMO ACESSO O SIMPLES IP?
2.1. Acesso. Para acessar a plataforma SIMPLES IP e utilizar funcionalidades
exclusivas, o usuário deverá obter uma conta de acesso, por meio de procedimento de
cadastro, mais detalhado em seção própria.
Vale lembrar que não é permitido aos usuários acessar as áreas de programação da
plataforma, seu banco de dados ou qualquer conjunto de informações que faça parte
da atividade de webmastering, ficando sujeito quem o fizer à legislação penal brasileira
e obrigado a reparar os danos que causar.
Também não é autorizado realizar ou permitir engenharia reversa, nem traduzir,
decompilar, copiar, modificar, reproduzir, alugar, sublicenciar, publicar, divulgar,
transmitir, emprestar, distribuir ou, de outra maneira, dispor das ferramentas de
consulta desta plataforma e de suas funcionalidades.
Destaca-se que nessa plataforma é proibida a utilização de aplicativo spider, ou de
mineração de dados, de qualquer tipo ou espécie, além de outro aqui não tipificado,
mas que atue como um robô, tanto para realizar operações massificadas ou para
quaisquer outras finalidades, sob aplicação da legislação penal brasileira e de reparar os
danos que decorrerem desta utilização.
Ressalta-se, também, que é ônus dos visitantes e usuários arcar com os meios
necessários para utilizar esta plataforma.
2.2. Titularidade. A partir do cadastro, você será titular de uma conta que somente
poderá ser acessada por você.
3. A RELAÇÃO CONTRATUAL ENTRE O SIMPLES IP E O USUÁRIO
3.1. Relação Contratual. Os serviços e o conteúdo oferecidos pela plataforma são de
propriedade do SIMPLES IP. Ao estabelecer o contrato que permite ao usuário o gozo
das funcionalidades do sistema, o SIMPLES IP está oferecendo licença de uso de
plataforma de gestão e provimento de comunicação por voz, cuja a propriedade e
direitos de propriedade intelectual continuam sendo da SIMPLES IP.
4. DIREITOS AUTORAIS E PROPRIEDADE INTELECTUAL DO SIMPLES IP
4.1. Nossos Direitos. O uso comercial das expressões do SIMPLES IP, como marca,
nome empresarial ou nome de domínio, além dos conteúdos das telas da plataforma,
bancos de dados, redes, arquivos que permitem que o usuário acesse sua conta são de
propriedade do SIMPLES IP e estão protegidos pelas leis e tratados internacionais de
direito autoral, marcas e patentes, modelos e desenhos industriais.
4.2. Não concessão de Licença. O SIMPLES IP não concede nenhuma licença ou
autorização de uso de nenhum tipo sobre seus direitos de propriedade industrial e
intelectual, segredos empresariais ou sobre qualquer outra propriedade ou direito
relacionado com a plataforma e seus conteúdos.
4.3. Proibição de Reprodução. A reprodução dos conteúdos descritos anteriormente
está proibida, salvo com prévia autorização por escrito do SIMPLES IP ou se destinarem
a uso exclusivamente pessoal e sem que em nenhuma circunstância os visitantes e
usuários adquiram qualquer direito sobre os mesmos.
5. UTILIZAÇÃO DA APLICAÇÃO E DE SEUS CONTEÚDOS SOB A EXCLUSIVA
RESPONSABILIDADE DO USUÁRIO
5.1. Responsabilidade pelo Uso. O USUÁRIO reconhece e aceita voluntariamente que
o uso do SIMPLES IP e do CONTEÚDO seja feito, em qualquer caso, sob sua única e
exclusiva responsabilidade.
5.2. Responsabilização por Eventuais Danos. O SIMPLES IP não será, em hipótese
alguma, responsabilizado por danos diretos ou indiretos que resultem de, ou tenham
relação com o acesso, uso ou a incapacidade de acessar ou utilizar o SIMPLES IP.
6. UTILIZAÇÃO DA APLICAÇÃO E DOS SEUS CONTEÚDOS
6.1. Compromisso de Correta Utilização. Você se compromete a utilizar a plataforma
do SIMPLES IP e os seus conteúdos em conformidade com a lei, com o disposto neste
Termo de Uso e Privacidade, com a moral, os bons costumes e com a ordem pública,
assim como se obriga a não utilizar o SIMPLES IP e seus CONTEÚDOS de forma nociva
aos direitos e interesses de terceiros, ou de qualquer forma que possa vir a causar
dano, sobrecarregar, inutilizar ou impedir a normal utilização do SIMPLES IP e dos seus
CONTEÚDOS.
Ainda, você deve abster-se de obter informações, gráficos, mensagens, arquivos de
som, gravações, programas e/ou qualquer outro tipo de material acessível através do
SIMPLES IP ou dos CONTEÚDOS, inclusive de marca, empregando meios ou
procedimentos diversos daqueles que disponibilizados ou indicados com este propósito
na aplicação SIMPLES IP.
Bem como, você obriga-se a utilizar os CONTEÚDOS de forma lícita e, além disso:
- Se abstém de eliminar ou manipular o copyright ou outros dados que identifiquem os
direitos do SIMPLES IP ou ainda direitos incorporados ao SIMPLES IP e seus CONTEÚDOS
de propriedade de terceiros, bem como os dispositivos de proteção, as marcas ou
quaisquer mecanismos de informação.
6.2. Titularidade do Conteúdo. Qualquer conteúdo de usuário fornecido por você
permanece de sua propriedade quando a aplicação SIMPLES IP foi por você contratada,
ou de propriedade da pessoa jurídica que contratou o SIMPLES IP a qual você possui
ligação que justificou seu cadastro, como por exemplo, necessidade de que você possua
um ramal desta empresa.
6.3. Níveis de acesso. A SIMPLES IP informa que existem diferentes níveis de acesso,
sendo que a depender do tipo de acesso algumas funcionalidades não são disponíveis
ao usuário. A CONTRATANTE da aplicação SIMPLES IP é única e exclusiva responsável
por determinar os níveis de acesso dos usuários a serem cadastrados na aplicação.
6.4. Acesso ao conteúdo da comunicação por voz pela SIMPLES IP. A SIMPLES IP
declara que não acessa o conteúdo das comunicações por voz realizada através de sua
aplicação através de usuários da CONTRATANTE.
6.5. Acesso ao conteúdo da comunicação por voz pela CONTRATANTE. A depender
do nível de acesso os usuários da CONTRATANTE poderão ter acesso ao conteúdo e
gravação da comunicação por voz realizada através da plataforma SIMPLES IP, podendo
ter acesso ao conteúdo relacionado ao seu ramal ou a outros usuários. A permissão de
acesso ao conteúdo de outros usuários é relacionada ao nível de acesso à aplicação
SIMPLES IP, cuja determinação é de responsabilidade exclusiva da CONTRATANTE,
cabendo a CONTRATANTE limitar ou não tal funcionalidade ao usuário ou grupo de
usuários.
7. PRIVACIDADE E SEGURANÇA DA PLATAFORMA E DOS SEUS CONTEÚDOS
7.1. Compromisso com a Privacidade. O SIMPLES IP tem o compromisso com a
privacidade e a segurança de seus USUÁRIOS durante todo o processo de utilização da
aplicação. Os dados cadastrais dos usuários não são vendidos, trocados ou divulgados
para terceiros, exceto quando essas informações são necessárias para cumprimento de
obrigações legais ou determinações judiciais. Seus dados pessoais são peça
fundamental para que seu cadastro seja feito.
7.2. Recomendações quanto à Senha. Para que estes dados permaneçam intactos,
nós desaconselhamos expressamente a divulgação de sua senha a terceiros, mesmo a
amigos, colegas de trabalho ou supervisores. O SIMPLES IP exime-se de
responsabilidade pelos danos, prejuízos e/ou lucros cessantes de qualquer natureza que
possam advir do conhecimento que possam ter terceiros não autorizados a respeito de
condições, características e circunstâncias de uso que os usuários fazem do SIMPLES IP
ou de seus CONTEÚDOS.
8. OBTENÇÃO DOS DADOS E INFORMAÇÕES
8.1. Obtenção de Dados. Os dados e informações serão obtidos quando a
CONTRATANTE:
- Fornecer seus dados e de seus usuários para cadastros com preenchimento das
informações necessárias; ou
- Os usuários interagirem com as diversas funcionalidades existentes na aplicação,
fornecendo as informações voluntariamente, como nas funcionalidades de pausa, por
exemplo;
- Cadastrar e configurar o sistema, inclusive abertura de ramais, a depender do nível de
acesso da CONTRATANTE;
9. INFORMAÇÕES COLETADAS - FINALIDADE, ATUALIZAÇÃO OU MUDANÇA DE PERFIL
E FORMA DE UTILIZAÇÃO
9.1. Armazenamento. As informações cadastrais do usuário serão armazenadas em
um servidor seguro e têm o intuito exclusivo de fornecer acesso à área restrita que
permite a utilização das funcionalidades.
9.2. Exclusão de Responsabilidade. Contudo, considerando que nenhum sistema de
segurança é absolutamente seguro, o SIMPLES IP se exime de quaisquer
responsabilidades por eventuais danos e/ou prejuízos decorrentes de falhas, vírus ou
invasores do banco de dados da plataforma, salvo no caso de dolo ou culpa da mesma.
9.3. Precisão das Informações. A CONTRATANTE se responsabiliza pela precisão e
veracidade dos dados informados.
9.4. Exclusão dos Dados. A CONTRATANTE poderá, a qualquer momento, excluir a
conta de determinado usuário no SIMPLES IP sem necessitar solicitar à SIMPLES IP,
ficando ressalvada a guarda pelo SIMPLES IP das informações e/ou dados cuja
manutenção seja a eles imposta em razão de obrigações legais e/ou regulatórias ou,
ainda, cuja a manutenção seja necessária para cumprimento de ordem judicial, no
âmbito de processos judiciais e/ou administrativos e questionamento de terceiros
decorrentes das atividades desempenhadas pelo usuário no SIMPLES IP.
9.5. Do Não Compartilhamento com Terceiros. Os dados pessoais dos usuários não
serão compartilhados com terceiros, sendo que os dados adquiridos somente poderão
ser acessados por profissionais devidamente autorizados, respeitando a necessidade a
que serão submetidos. A SIMPLES IP se compromete em estabelecer com estes
profissionais termos de confidencialidade e sigilo.
10. DO REGISTRO DE ATIVIDADES
10.1. Consentimento do Registro. Você consente que o SIMPLES IP poderá registrar as
atividades efetuadas na plataforma, por meio de logs, incluindo: Ações efetuadas; Datas
e horários de cada acesso; e Session ID. Os referidos registros são realizados para o
estrito cumprimento legal, sendo que poderão ser utilizados pelo SIMPLES IP em casos
de investigação de fraudes ou de alterações indevidas em seus sistemas e cadastros,
bem como, em determinados casos, disponibilizados à CONTRATANTE em relação aos
seus usuários, inclusive podem a CONTRATANTE realizar consulta a determinados
registros.
11. ACEITE
11.1. Aceite Expresso. Ao acessar o SIMPLES IP e clicar no campo "Li e aceito os
Termos e Condições de Uso e Política de Privacidade" os usuários, expressamente e
sem ressalvas concordam com todos os referidos termos e condições.
12. LEI APLICÁVEL E FORO
Estes TERMOS DE USO E PRIVACIDADE são regidos pelas leis brasileiras. O SIMPLES IP e
USUÁRIOS, com renúncia expressa a qualquer outro foro, se submetem ao Foro de
Cuiabá/MT.

BIN
imgSite/Coração.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 745 B

49
include/configBd.php~

@ -1,49 +0,0 @@
<?php
/*
* Configuração para acesso ao banco de dados principal da aplicação.
*/
$dbPort = getenv('DB_PORT') ? getenv('DB_PORT') : '5432';
$dbHost = getenv('DB_HOST') ? getenv('DB_HOST') : 'algar.simplesip.com.br';
$dbName = getenv('DB_BASE') ? getenv('DB_BASE') : 'pbx';
$dbUser = getenv('DB_USER') ? getenv('DB_USER') : 'contacte';
$dbPassword = getenv('DB_PASSWD') ? getenv('DB_PASSWD') : 'ctepgSQL';
/*
* Esta configuração define se o servidor será Master
* e se havera sincronização da conta/senha entre os multiplos sites.
* Obs.: Quando não utilizar sincronização de conta/senha o valor de
* master deve ser 1.
*/
$master = 1;
$sincContaSenha = 0;
/*
* Quando o arquivo for configurado para slave(master=0) no parametro hostMaster deve ser
* informado o Ip do servidor master.
*/
$hostMaster = '127.0.0.1';
/*
*Informe uma identificação para o servidor
*/
$serverName = 'MASTER_SERVER';
/*
* Configurações para acesso a api.
*
*/
$hostApi = '127.0.0.1';
$portaApi = '';
/*
* Acesso ao mysql para real-time.
*
*/
$myParams = array('myPort' => '3306',
'myHost' => '127.0.0.1',
'myDatabase' => 'pabx',
'myUser' => 'root',
'myPassword' => 'SimpleS_root'
);
?>

453
include/util/funcoesLicenca.php

@ -0,0 +1,453 @@
<?php
include "util/Crypt.php";
define("CONF_KEY_LICENCA", md5("S1MPL3S_IP"));
define("CONF_FILE_PATH", "/var/www/html/aplicativo/cadastros/licenca/");
define("CONF_FILE_UUID", 'uuid.lca');
/**
* COLETA AS INFORMAÇÕES DO VENDA MAIS E GERA O TOTAL DE LICENCA EM UM ARQUIVO CRIPTOGRAFADO
* @param type $licenca
* @param type $perfil
*/
function GerarArquivo($licenca, $perfil) {
$company = [
"perfil_aplicacao_id" => $perfil,
];
/** ARRAY PARA GUARDAR INFORMACOES DOS CONTRATOS * */
$info = [
'licenca_pa' => 0,
'licenca_ramal' => 0,
'licenca_supervisor' => 0,
'licenca_discador_preview' => 0,
'licenca_discador_powerdial' => 0,
'licenca_discador_predictive' => 0,
'licenca_pesquisa' => 0,
'licenca_tarifador' => 0,
'licenca_whatsapp' => 0,
'licenca_workflow' => 0,
'licenca_mesaoperadora' => 0,
'licenca_mult_channel' => 0,
'licenca_helpdesk' => 0,
'licenca_crm' => 0,
'licenca_manager_one' => 0,
'licenca_help_custom' => 0,
'data_registro' => date('Y-m-d'),
'user_registro' => 0,
'server_registro' => 0,
'confirma_registro' => date('Y-m-d')
];
$clto_data = ["contrato_assinatura", "contrato_inicio", "contrato_fim"];
$data = [];
$prefix = "clto_";
foreach ($licenca as $clto) {
foreach ($clto as $k => $v) {
$data[$prefix . $k] = $v;
if (array_key_exists($k, $company)) {
$data[$prefix . $k] = $company[$k];
}
if (array_key_exists($k, $info) && is_int($v)) {
$data[$prefix . $k] += $v;
}
if (in_array($k, $clto_data)) {
$data[$prefix . $k] = date('Y-d-m', strtotime($v));
}
}
}
$fileName = $data['clto_razao_social'] . $data['clto_cnpj'];
$file = criarArquivo($fileName, $data);
DownloadArquivo($file);
}
/**
* GERA UM ARQUIVO COM AS INFORMACOES DA MAQUINA
* >> CASO PASSE $tmp GERA UM ARQUIVO TEMPORARIO PARA A CONSULTA DO UUID EM TEMPO REAL
* @param type $tmp
* @return string
*/
function GerarUUID($tmp = false) {
$file = CONF_FILE_PATH . ($tmp ? '/tmp/' . md5(date('Y-m-d') . CONF_KEY_LICENCA) . "_" : '') . CONF_FILE_UUID;
if (!file_exists($file) && $tmp) {
foreach (glob('*_' . CONF_FILE_UUID) as $f) {
unlink($f);
}
}
if (file_exists($file) && $tmp) {
return $file;
}
CnvrtFileExec('dmidecode -t system | grep UUID: > ' . $file);
CnvrtFileExec('chown pbx:pbx ' . $file);
$contents = __readFile($file, false);
$uid = explode(':', trim($contents));
__writeFile($file, ['uuid' => trim($uid[1]), 'genereted' => date('Y-m-d H:i:s'), 'contract' => md5(trim($uid[1]))], false);
return $tmp ? $file : trim($uid[1]);
}
/**
* CRIA O ARQUIVO DE LICENCA COM O NOME E DOCUMENTO EM MD5 JUNTAMENTE COM AS INFORMACOES GERADAS DA FUNCAO GERAARQUIVO
* @param type $filename
* @param array $data
* @return string
*/
function criarArquivo($filename, $data) {
$file = CONF_FILE_PATH . md5($filename) . ".lca";
$data['clto_data_log'] = $file;
__createFile($file, preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $data));
return $file;
}
/**
* INFORMA OS DADOS DE CONTRATO E UUID PARA O ARQUIVO DE LICENCA QUANDO FIZER O UPLOAD NO SITE
* @param type $file
* @return boolean
*/
function validarArquivo($file) {
$file_lca = CONF_FILE_PATH . $file['conf']['name'];
$tmpFileLocal = $file['conf']['tmp_name'];
$tmpFileName = $file['conf']['name'];
move_uploaded_file($tmpFileLocal, $file_lca);
$content = __readFile($file_lca);
if (explode('.', $tmpFileName)[1] == 'lca') {
$uuid = GerarUUID();
__writeFile($file_lca, ['clto_server_registro' => $uuid, 'clto_contrato_numero' => md5($uuid)]);
$content = __readFile($file_lca);
return $content;
}
return false;
}
/**
* DOWNLOAD DO ARQUIVO REGISTRADO NO VENDAMAIS
* @param type $nomeArquivo
* @return type
*/
function DownloadArquivo($nomeArquivo) {
try {
ob_clean();
$nome = basename($nomeArquivo);
$linhas = file_get_contents($nomeArquivo);
header("Pragma: public");
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Accept-Ranges: bytes');
header('Content-Type: ' . GetMimeContentType($nome));
header('Content-Disposition: attachment; filename="' . $nome . '";');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
echo $linhas;
ob_flush();
unlink($nomeArquivo);
exit;
} catch (Exception $ex) {
return $ex->getMessage();
}
}
/**
* VALIDA A LICENCA DURANTE O PRIMEIRO LOGIN COM AS INFORMACOES DO ARQUIVO TEMPORARIO| BANCO SIMPLES E ARQUIVO DE LICENCA
* @param type $dbcon
* @return boolean
*/
function validarLicenca($dbcon) {
$db = __getLicencaPBX($dbcon);
if (!$db) {
return false;
}
$f = GerarUUID(true);
if ($f) {
$uid = __readFile($f);
}
$content = __readFile($db['clto_data_log']);
$uuid = __readFile(CONF_FILE_PATH . CONF_FILE_UUID);
if ($content['clto_server_registro'] != $uid['uuid'] || $db['clto_server_registro'] != $uid['uuid']) {
return false;
}
if ($uuid['contract'] != $db['clto_contrato_numero']) {
return false;
}
return true;
}
########################################
#### FUNCOES ESCRITA/LEITURA ####
########################################
function __createFile($file, $dados) {
$crypt = new Crypt(CONF_KEY_LICENCA);
file_put_contents($file, $crypt->encrypt(json_encode($dados, true)));
}
function __readFile($file, $encrypeted = true) {
$crypt = new Crypt(CONF_KEY_LICENCA);
$content = file_get_contents($file);
if ($encrypeted) {
$content = $crypt->decrypt($content);
}
$json = json_decode($content, true);
if ($json) {
return $json;
}
return $content;
}
function __writeFile($file, $dados = null, $append = true) {
$crypt = new Crypt(CONF_KEY_LICENCA);
$content = __readFile($file);
if ($dados) {
if (!$append) {
file_put_contents($file, $crypt->encrypt(json_encode($dados, true)));
return;
}
foreach ($dados as $k => $v) {
$content[$k] = $v;
}
file_put_contents($file, $crypt->encrypt(json_encode($content, true)));
return;
}
file_put_contents($file, $crypt->encrypt(json_encode($content, true)));
}
########################################
#### BANCO DE DADOS ####
########################################
function __getLicencaPBX($dbcon) {
$query = sprintf("SELECT clto_cnpj, clto_data_log, clto_server_registro, clto_contrato_numero FROM pbx_controle_licenciamento;");
$result = pg_query($dbcon, $query);
$res = pg_fetch_assoc($result);
return $res;
}
function __getLicencaVMais($document) {
$query = sprintf("SELECT clto_cnpj, clto_data_log, clto_server_registro, clto_contrato_numero FROM sip_controle_licenciamento WHERE clto_cnpj = '$document';");
$resp = __execSQLServer($query);
return $resp;
}
/**
* INSERE AS INFORMACOES PASSADAS NO ARQUIVO DE LICENCA PARA O BANCO DO SIMPLESIP E VENDA MAIS
* @param type $dbcon
* @param type $data
* @return boolean
* @throws Exception
*/
function __validLicenca($dbcon, $data) {
if (!$data['clto_cnpj']) {
throw new Exception("As informações do arquivo está corrompido!");
}
$respbx = __getLicencaPBX($dbcon);
$resVmais = __getLicencaVMais($data['clto_cnpj']);
$vendamais = $resVmais['clto_cnpj'] == $data['clto_cnpj'] ? 'vendamais' : '';
if ($respbx['clto_cnpj'] == $data['clto_cnpj'] || $vendamais) {
__updateLicenca($dbcon, $data, $vendamais);
return true;
}
if (__sendLicenca($dbcon, $data)) {
return true;
}
return false;
}
function __updateLicenca($dbcon, $data, $t = null) {
$msql = ConectaMssql();
$info = "";
foreach ($data as $k => $v) {
$info .= "$k = '$v',";
}
$set = substr($info, 0, -1);
$table = ["pbx" => 'pbx_controle_licenciamento', "vendamais" => 'sip_controle_licenciamento'];
foreach ($table as $k => $v) {
$query = sprintf("UPDATE $v SET %s WHERE clto_cnpj = '%s';", $set, $data['clto_cnpj']);
if ($k == 'pbx' && (empty($t) || $t == $k)) {
$result = pg_query($dbcon, $query);
if (!$result) {
throw new Exception("Não foi possível atualizar as informações da licença!");
}
}
if ($k == 'vendamais' && (empty($t) || $t == $k)) {
__execSQLServer($query, false);
}
}
return true;
}
function __sendLicenca($dbcon, $data) {
$column = array_keys($data);
$values = array_values($data);
$table = ["pbx" => 'pbx_controle_licenciamento', "vendamais" => 'sip_controle_licenciamento'];
foreach ($table as $k => $v) {
$query = sprintf("INSERT INTO {$v} (%s) VALUES('%s');", implode(',', $column), implode("','", $values));
if ($k == 'pbx') {
if (!pg_query($dbcon, $query)) {
throw new Exception("Não foi possível inserir as informações da licença no [Simples IP]!");
}
} else {
__execSQLServer($query, false);
}
}
return true;
}
function GetPerfilApl() {
$query = "SELECT * FROM sip_perfil_aplicacao";
$resp = __execSQLServer($query);
return $resp;
}
function __dadosLicenca($document, $contracts = []) {
$ctact = implode("','", $contracts);
$data = date('Y-m-d');
$query = "select a.CGC_CPF as cnpj,
d.Numero as contrato_numero,
upper(dbo.sip_remove_acentos(RazaoSocial)) razao_social,
upper(dbo.sip_remove_acentos(Fantasia)) nome_fantasia,
c.Descricao as atividade_empresa,
f.Cidade as cidade_empresa,
f.Uf as uf_empresa,
b.ContatoId as contato_id,
upper( dbo.sip_remove_acentos(b.PrimeiroNome)) as contato_nome,
lower( dbo.sip_remove_acentos(coalesce(b.Email1, b.Email2, Email))) as contato_email,
coalesce(b.Celular, b.TelefoneComercial, b.TelefoneResidencial, a.Telefone) as contato_fone,
0 as perfil_aplicacao_id,
dbo.FormataData(d.DataAssinatura) as contrato_assinatura,
dbo.FormataData(d.DataInicio) as contrato_inicio,
dbo.FormataData(d.DataFim) as contrato_fim,
isnull((
select sum( ContratosItens.Quantidade)
from ContratosItens
inner join Produtos on Produtos.ProdutoId = ContratosItens.ProdutoId
inner join Linhas on Linhas.LinhaId = Produtos.LinhaId and Linhas.LinhaId = 32
inner join Divisoes on Divisoes.DivisaoId = Linhas.DivisaoId and Divisoes.DivisaoId = 11
where ContratosItens.ContratoId = d.ContratoId
and Produtos.Referencia like '%AG-P%(%PA)%' OR Produtos.Referencia like '%ISP-P%(%PA)%' OR Produtos.Referencia like '%SX-P%(%PA)%' OR Produtos.Referencia like '%SMT-P%(%PA)%'
),0) as licenca_pa,
isnull((
select sum( ContratosItens.Quantidade)
from ContratosItens
inner join Produtos on Produtos.ProdutoId = ContratosItens.ProdutoId
inner join Linhas on Linhas.LinhaId = Produtos.LinhaId and Linhas.LinhaId = 32
inner join Divisoes on Divisoes.DivisaoId = Linhas.DivisaoId and Divisoes.DivisaoId = 11
where ContratosItens.ContratoId = d.ContratoId
and Produtos.Referencia like '%AG-R%(%RAMAL)%' OR Produtos.Referencia like '%ISP-R%(%RAMAL)%' OR Produtos.Referencia like '%SX-R%(%RAMAL)%' OR Produtos.Referencia like '%SMT-R%(%RAMAL)%'), 0) as licenca_ramal,
isnull ((select sum( ContratosItens.Quantidade)
from ContratosItens
inner join Produtos on Produtos.ProdutoId = ContratosItens.ProdutoId
inner join Linhas on Linhas.LinhaId = Produtos.LinhaId and Linhas.LinhaId = 32
inner join Divisoes on Divisoes.DivisaoId = Linhas.DivisaoId and Divisoes.DivisaoId = 11
where ContratosItens.ContratoId = d.ContratoId
and Produtos.Referencia like '%LICENCA DE SUPERVISOR%'), 0) as licenca_supervisor,
0 as licenca_discador_preview,
0 as licenca_discador_powerdial,
0 as licenca_discador_predictive,
0 as licenca_pesquisa,
0 as licenca_tarifador,
0 as licenca_whatsapp,
0 as licenca_workflow,
0 as licenca_mesaoperadora,
0 as mult_channel,
0 as licenca_helpdesk,
0 as licenca_crm,
0 as licenca_manager_one,
0 as licenca_help_custom,
'$data' as data_registro,
0 as user_registro,
0 as server_registro,
'$data' as confirma_registro
from Clientes a
inner join Contatos b on b.ClienteId = a.ClienteId
inner join RamosDeAtividade c on c.RamoDeAtividadeId = a.RamoDeAtividadeId
inner join Contratos d on d.ClienteId = a.ClienteId
inner join ClientesEnderecos f on f.ClienteId = a.ClienteId and f.TipoDeEnderecoId = (select min(TipoDeEnderecoId) from ClientesEnderecos where ClienteId = a.ClienteId)
where a.AtivoCliente = 1
and b.ContatoPrincipal = 1
and d.status = 1
and a.CGC_CPF = '$document'
and d.Numero in('$ctact')
group by a.ClienteId,
d.ContratoId,
d.Numero,
b.ContatoId,
a.CGC_CPF,
upper(dbo.sip_remove_acentos(a.RazaoSocial)),
upper(dbo.sip_remove_acentos(a.Fantasia)),
c.Descricao,
dbo.FormataData(d.DataAssinatura),
dbo.FormataData(d.DataInicio),
dbo.FormataData(d.DataFim),
f.Cidade,
f.Uf,
dbo.NumToText(isnull(d.ValorMensal,0)),
upper( dbo.sip_remove_acentos(b.PrimeiroNome)),
coalesce(b.Celular,
b.TelefoneComercial,
b.TelefoneResidencial, a.Telefone),
lower(dbo.sip_remove_acentos(coalesce(b.Email1, b.Email2, Email)));";
$resp = __execSQLServer($query);
return $resp;
}
########################################
#### CONEXÃO VENDA+ ####
########################################
/**
* Realiza conexao com o banco do venda+
* @return type
*/
function ConectaMssql() {
$dbhost = "vendas.simplesip.com.br";
$dbname = "VendaMaisDB_simplesip";
$user = "sa";
$passwd = "SimpleS_root";
$conn = mssql_connect($dbhost, $user, $passwd);
mssql_select_db($dbname);
return $conn;
}
function __execSQLServer($query, $return = true) {
$msql = ConectaMssql();
$result = mssql_query($query, $msql);
if ($return) {
$resp = [];
while ($data = mssql_fetch_array($result)) {
$resp[] = $data;
}
}
mssql_close($msql);
return $resp ? $resp : $result;
}

0
nbproject/private/config.properties

8
nbproject/private/private.properties

@ -1,8 +0,0 @@
browser.id=SL[/Browsers/FirefoxBrowser
copy.src.files=false
copy.src.on.open=false
copy.src.target=/var/www/aplicativo
include.path.private=
index.file=index.php
run.as=LOCAL
url=http://localhost/

18
nbproject/private/private.xml

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="5"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/var/www/html/aplicativo/supervisor.php</file>
<file>file:/var/www/html/aplicativo/projeto/base/sql/versao-1.7.11.5.sql</file>
<file>file:/var/www/html/aplicativo/include/util/funcoesAmi.php</file>
<file>file:/var/www/html/aplicativo/include/util/display_errors.php</file>
<file>file:/var/www/html/aplicativo/asterisk/etc_asterisk/editado_manual/extensions_padrao.conf</file>
<file>file:/var/www/html/aplicativo/include/util/funcoesLgpd.php</file>
<file>file:/var/www/html/aplicativo/agente/agenteChamadasAbandon.php</file>
<file>file:/var/www/html/aplicativo/contacteFunc.php</file>
<file>file:/var/www/html/aplicativo/asterisk/var_lib_asterisk/scripts/abandonadas/retornoAbandonada.php</file>
<file>file:/var/www/html/aplicativo/include/util/funcoesApl.php</file>
</group>
</open-files>
</project-private>

7
nbproject/project.properties

@ -1,7 +0,0 @@
include.path=
php.version=PHP_56
source.encoding=ISO-8859-1
src.dir=.
tags.asp=false
tags.short=false
web.root=.

9
nbproject/project.xml

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.php.project</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/php-project/1">
<name>aplicativo</name>
</data>
</configuration>
</project>

43
projeto/base/sql/versao-1.7.12.sql

@ -0,0 +1,43 @@
ALTER TABLE pbx_queues_grupos ADD COLUMN libera_pausa VARCHAR(255) DEFAULT(0);
ALTER TABLE pbx_usuarios ADD COLUMN perm_licenca INT DEFAULT(0);
CREATE TABLE pbx_controle_licenciamento(
clto_cnpj varchar(14) not null,
clto_contrato_numero varchar(32) not null,
clto_razao_social varchar(128) not null,
clto_nome_fantasia varchar(128),
clto_atividade_empresa varchar(64),
clto_cidade_empresa varchar(64),
clto_uf_empresa varchar(2),
clto_contato_id varchar(64),
clto_contato_nome varchar(64),
clto_contato_email varchar(64),
clto_contato_fone varchar(32),
clto_perfil_aplicacao_id int not null,
clto_contrato_assinatura date,
clto_contrato_inicio date,
clto_contrato_fim date,
clto_licenca_pa int not null default 0,
clto_licenca_ramal int not null default 0,
clto_licenca_supervisor int not null default 0,
clto_licenca_discador_preview int not null default 0,
clto_licenca_discador_powerdial int not null default 0,
clto_licenca_discador_predictive int not null default 0,
clto_licenca_pesquisa int not null default 0,
clto_licenca_tarifador int not null default 0,
clto_licenca_whatsapp int not null default 0,
clto_licenca_workflow int not null default 0,
clto_licenca_mesaoperadora int not null default 0,
clto_mult_channel int not null default 0,
clto_licenca_helpdesk int not null default 0,
clto_licenca_crm int not null default 0,
clto_licenca_manager_one int not null default 0,
clto_licenca_help_custom int not null default 0,
clto_licenca_chat int not null default 0,
clto_data_registro date not null,
clto_user_registro varchar(64),
clto_server_registro varchar(255),
clto_confirma_registro date,
clto_data_log varchar(1024),
constraint "pkPbxControleLicenciamento" primary key(clto_cnpj, clto_contrato_numero)
);

114
templates/configLicenca.tpl

@ -0,0 +1,114 @@
{capture name="subDisplay"}
{if !$perm}
<table align="center" width="70%" class="formCad" style="margin-top: 10px">
<tr>
<th colspan="2">
Insira o arquivo de Licença
</th>
</tr>
<tr>
<th>
Arquivo de Licença
</th>
<td>
<input name="conf" type="file" value="conflicence" >
</td>
</tr>
<tr>
<td colspan="2">
<b>* Informe o arquivo .lca para registrar as configurações da Central!</b>
</td>
</tr>
<tr>
<td>
<table width="100%" class="formCad" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<input name="btValidar" type="submit" id="btValidar" value="Validar">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
{else}
<table width="100%" class="formCad" id="configlicence" border="0" cellspacing="0" cellpadding="2">
<tr>
<td>
<table width="80%" class="formCad" border="0" cellspacing="0" cellpadding="2" id="tablelca">
<tbody>
<tr>
<th align="left">Documento CNPJ:</th>
<td>
<input name="document" type="text" id="lca_document" value="{$document}" size="50" maxlength="255">
</td>
</tr>
<tr>
<th align="left">Perfil Central:</th>
<td>
<select name="lcnca_perfil" style="width:400px;">
{$select_perfil}
</select>
</td>
</tr>
<tr>
<th align="left">Nº Contrato 1:</th>
<td>
<input name="lcnca_contato1" type="text" id="contrato1" value="{$lcnca_contato1}" size="50" maxlength="255" title="">
<a id="addcontract" href="#" title="Adicionar mais um campo para informar o contrato">
<img src="images/novo.gif" width="20" height="20" border="0" align="absmiddle" title="">
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table width="100%" class="formCad" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td>
<input name="btGerar" type="submit" id="btGerar" value="Gerar">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
{/if}
{if $mensagem}
<table align="center" width="70%" class="formCad" style="margin-top: 10px">
<tr>
<td colspan="2">
<div class="alert alert-{$mensagem.type}">{$mensagem.msg}</div>
</td>
</tr>
</table>
{/if}
{literal}
<script>
$(function () {
let cont = 2;
$("#addcontract").on('click', function () {
$("#tablelca").append(`
<tr>
<th align="left">Nº Contrato ${cont}:</th>
<td>
<input name="lcnca_contato${cont}" type="text" id="lcnca_contato${cont}" size="50" maxlength="255" title="">
</td>
</tr>`);
cont++;
})
})
</script>
{/literal}
{/capture}
Loading…
Cancel
Save