Um aplicativo Android escrito em C/C ++, Java e Kotlin para executar o Openpyn remotamente através de Juicessh. Agradecimentos especiais ao Nvidiagpumonitor, um plug -in de suco escrito em Kotlin pela SDS100, que serviu de base para este plug -in Juicessh.
Nota : a primeira versão beta pública foi lançada.
A ideia começou quando eu queria me conectar aos servidores OpenVPN hospedados pelo NordVPN em um ASUS RT-AC86U. Por padrão, isso é possível, mas o firmware padrão, incluindo o firmware de terceiros, asuswrt-merlin, permite apenas um máximo de 5 clientes OpenVPN.
Em seguida, tropecei no OpenPyn, aprendi rapidamente Python e fiz uma solicitação de tração, permitindo suporte para asuswrt-mestrin. Openpyn é um script python3 que pode ser executado no ENTRO-NG-3X no asuswrt-merlin. O principal recurso do OpenPyn é que ele se conecta automaticamente ao servidor OpenVPN menos ocupado e mais baixo de latência. O suporte de gravação da NVRAM para asuswrt-merlin no OpenPyn pode salvar o servidor OpenVPN de latência mais ocupado e mais baixo no NVRAM de um roteador Asus habilitado para ENTRO-NG-3X.
Agora, eu havia conseguido mais ou menos o que eu desejava, mas isso me deixou com uma última luta, tendo que recorrer para abrir uma conexão SSH com o roteador Asus e fornecer ao Openpyn os argumentos desejados, por exemplo, país, limiar de carga, tipo de servidor e número de pings a serem enviados para cada servidor para determinar a qualidade. Eu pensei que ter a capacidade de fazer isso no meu telefone, em vez de meu computador, tornaria isso muito mais fácil, e isso me levou a descobrir Juicessh.
A JuicessH suporta o uso de plugins, o que me permitiu criar este aplicativo fantástico. Este aplicativo é executado no Android, estabelece uma conexão com um dispositivo que possui um servidor SSH em execução e é capaz de enviar um comando openpyn para o dispositivo remoto.
Nota : Este projeto é o meu primeiro projeto Android e, como tal, pode não seguir todas as melhores práticas de codificação ainda, independentemente disso, estou comprometido em tornar este aplicativo uma fonte de inspiração para outros desenvolvedores que trabalham em aplicativos Android semelhantes, especialmente os aplicativos Android baseados no Google Maps.
Suporta a maioria dos argumentos disponíveis no OpenPyn com preferências fáceis de usar
Permite usar a filtragem baseada em localização no OpenPyn
Vista de mapa exibe marcadores para todos os países apoiados por NordVPN
Permite ocultar países na visão do mapa
Permite estrelar um país na visão do mapa
As chaves da API armazenadas em preferências compartilhadas são criptografadas ("AES/GCM/Nopadding")
No início do aplicativo, ele usará um local inteligente, para determinar o país mais próximo
Usa APIs de geolocalização para determinar o local atual com base no endereço IP público atual
Estou perdendo algum recurso essencial?
Muitos componentes fazem com que este aplicativo funcione, abordarei alguns dos princípios básicos aqui. Basicamente, na inicialização do aplicativo, o mapa é carregado de forma assíncrona, um arquivo mbtile (banco de dados SQLite) localizado na pasta de recursos de ativos dentro do APK é carregado e depois armazenado e lido na memória. O World.MBTILES foi gerado usando um script Python personalizado, GERETE_TILES_MULTIPROCESS.PY.
rm ./app/src/main/assets/world.mbtiles
python3 ./generate_tiles_multiprocess.py ./mapfile.xml ./app/src/main/assets/world.mbtiles 4 4 --format webp
Depois que o mapa é feito com o carregamento, a API NordVPN é invocada para consultar todos os países suportados, filtrando com base em preferências como o tipo de servidor é feita aqui, os marcadores são gerados preguiçosamente para todos os países (os marcadores não são colocados no mapa), todos os ladrilhos (512x512 imagens da Web) são carregados para o zoom mínimo O local atual é detectado com base no endereço IP público do cliente. O mapa então anima o marcador mais próximo a este local. Após a conclusão da animação, apenas os marcadores "preguiçosos" cuja localização estão dentro dos limites visíveis do mapa são tornados visíveis (os marcadores são colocados no mapa depois de serem visíveis pela primeira vez).
NOTA : Você pode usar esse fluxo com vários dispositivos remotos, desde que o dispositivo remoto tenha um servidor SSH em execução e esteja configurado em conexões em Juicessh e seja selecionado na barra de ferramentas do aplicativo deste aplicativo antes que o botão de ação flutuante colorido (FAB) seja clicado!





A versão beta pública está aberta a qualquer pessoa.
Por favor, use minha filial test do OpenPyn.
git clone --branch 2.2.1 [email protected]:1951FDG/openpyn-nordvpn.git
cd openpyn-nordvpn
pip3 install --upgrade .
Para compilar e executar o projeto, você precisará:
Android Studio 3.5 ou superior
10 (API level 29)29.0.2v3.10.2Mapas SDK para Android
MyStorage.kt inspirado na postagem do blog, salvar e recuperar o ArrayList of Object in sharedPreference: Android do Ready Android.
PrintArray.kt inspirado no Github Repo, PrintArray por Tobibur Rahman.
SecurityManager.java inspirado na postagem do blog, tornando a versão segura do EdittExtPreference por Nikita Ogorodnikov.
Sinta -se à vontade para nos enviar feedback enviando um problema. Relatórios de bugs, solicitações de recursos, patches e pecuários bem-vindos são sempre bem-vindos.
NOTA : Os pedidos de tração são bem -vindos. Para grandes mudanças, envie um problema primeiro para discutir o que você gostaria de mudar.
Este aplicativo usa o código (modificado) de vários projetos de código aberto.
Sobre caixa
SQLITE-NDK
Extensões de mapas do Android
Mapear utils
Android Google Maps API V2 complementos
Google Maps Android API UTILLY BIBLIOTECA
Botão flutuante verificado
NOTA : Agradecimentos especiais ao Yesy, autor do banco de dados SQLITE do SQLite do Android Asset Resource
Muito obrigado a Sonelli, que tornou esse projeto possível e indolor. Agradecimentos especiais a Krystian Bigaj, autor de Sqlite-ndk.