#📖 Visão Geral
Este projeto fornece um aplicativo de VPN utilizando a biblioteca de comunicação TLS para dispositivos Android.
#🚀 Como utilizar
Para utilizar o aplicativo, é necessário realizar a instalação de um certificado GSurf.
O usuário deverá fornecer o nome de usuário e a senha da Central de Parceiros, juntamente com uma chave OTP (One Time Password), para gerar um certificado que será utilizado na autenticação com nossa estrutura.
Após a instalação, caso o app solicite, o usuário deverá conceder permissões para que o aplicativo exiba notificações.
Se as permissões não forem concedidas, o serviço de VPN não poderá ser executado em segundo plano.
#📋 Descrição do funcionamento
O aplicativo escuta conexões no endereço IP de loopback, nas portas definidas pelo flavor gerado.
Quando uma aplicação estabelece conexão em uma dessas portas, uma nova conexão é aberta com o servidor.
A escrita e a leitura são realizadas de forma assíncrona:
Dados recebidos do servidor são enviados ao socket do cliente.
Dados recebidos do cliente são encaminhados ao servidor de forma criptografada.

Cada flavor deve conter o arquivo ports.xml, que define a relação de porta=serviço.
Exemplo:
<resources>
<string name="port_map">8480=scopena;2046=scopelegado</string>
</resources>
#📱 Versões suportadas
Este aplicativo é compatível com:
Versões Android: 5.0 até 14.
Arquiteturas:
arm64-v8aarmeabi-v7ax86x86_64
#Telas
#📱 Tela principal
Descrição dos elementos em tela:
- Azul: lista de portas abertas e seu status.
- Vermelho: botão liga/desliga da VPN, caso o certificado não tenha sido instalado ou o app não tenha permissão para mostrar notificações, uma nova tela será aberta para instalação ou solicitação das permissões.
- Marrom: tela de ajuda e configuração.
- Verde: versão da aplicação.

#📱 Relação de portas e status
Transparente: Aguardando conexão no socket local.
Amarelo: Recebeu conexão no socket local e está se conectando no servidor.
Vermelho: Aconteceu algum erro no socket local ou ao se conectar no servidor.
Azul: Conexão estabelecida com o servidor.

Caso aconteça algum erro, é possível clicar na porta com erro para uma descrição mais detalhada.

#📱 Tela de ajuda e configuração
Nessa tela é possível configurar os níveis de log, tamanho do log e fazer testes de conexão.
#Níveis de Log
Define a quantidade e o tipo de informações registradas no log:
Baixo: registra apenas mensagens de erro.
Médio: registra mensagens de erro e informações gerais.
Alto: registra todos os tipos de mensagens, incluindo erro, informação e depuração (debug).
#Tamanho Máximo do Log
Especifica o tamanho limite do arquivo de log. Quando esse tamanho é alcançado, o arquivo é automaticamente reiniciado (sobrescrito).
#Download dos Logs
Permite baixar o conteúdo do log para um diretório local do equipamento.

#📱 Tela de teste de conexão
Nessa tela que o usuário poderá testar a conexão.
Ícone de sucesso: Sucesso no teste de conexão.
Ícone de erro: Informa que um erro ocorreu no teste. É possível clicar para visualizar o código de erro.

#📱 Tela de instalação do certificado
Nessa tela que o usuário irá realizar a instalação do certificado.
- Usuário: Usuário válido do Sig ou Central de Parceiros.
- Senha: Senha válida do Sig ou Central de Parceiros.
- OTP: Chave de ativação de uso único obtido no Sig ou Central de Parceiros.

