C/C ++, Java 및 Kotlin으로 작성된 Android 앱은 Juicessh를 통해 OpenPyn을 원격으로 실행합니다. 이 Juicessh 플러그인의 기반으로 사용되는 SDS100에 의해 Kotlin에서 작성한 Juicessh 플러그인 Nvidiagpumonitor에게 특별한 감사를드립니다.
참고 : 최초의 공개 베타가 출시되었습니다.
이 아이디어는 모두 ASUS RT-AC86U에서 NordVPN이 호스팅하는 OpenVPN 서버에 연결하고 싶을 때 시작되었습니다. 기본적으로 이것은 가능하지만 타사 펌웨어 ASUSWRT-MERLIN을 포함한 기본 펌웨어는 최대 5 개의 OpenVPN 클라이언트 만 저장할 수 있습니다.
그런 다음 OpenPyn을 우연히 발견하고 빠르게 Python을 배웠고 풀 요청을하여 AsusWrt-Merlin을 지원할 수있었습니다. OpenPyn은 AsusWrt-Merlin의 Entware-NG-3X에서 실행할 수있는 Python3 스크립트입니다. OpenPyn의 주요 기능은 가장 바쁘고 가장 낮은 대기 시간 OpenVPN 서버에 자동으로 연결된다는 것입니다. OpenPyn의 AsusWrt-Merlin에 대한 NVRAM 쓰기 지원은 ASUS 라우터의 ENTWARN-NG-3X 활성화 NVRAM에 가장 바쁘고 가장 낮은 대기 시간 OpenVPN 서버를 저장할 수 있습니다.
이제, 나는 내가 원하는 것을 다소 달성했지만, 이로 인해 한 번의 마지막 투쟁으로 인해 ASUS 라우터에 대한 SSH 연결을 열고 OpenPyn에 원하는 논증을 공급하기 위해 OpenPyn에 공급하여 각 서버로 전송하여 품질을 결정했습니다. 나는 컴퓨터 대신 내 휴대 전화에서 그렇게 할 수있는 능력이 있으면 이것을 훨씬 쉬워서 Juicessh를 발견하게 될 것이라고 생각했습니다.
Juicessh는 플러그인 사용을 지원 하여이 환상적인 앱을 만들 수있었습니다. 이 앱은 Android에서 실행되며 SSH 서버가 실행중인 장치에 연결되어 OpenPyn 명령을 원격 장치로 보낼 수 있습니다.
참고 :이 프로젝트는 저의 첫 번째 Android 프로젝트이며, 따라서 모든 최고의 코딩 관행을 따르지 않을 수 있습니다. 이에 관계 없이이 앱을 유사한 Android 앱, 특히 Google지도 기반 Android 앱에서 작업하는 다른 개발자에게 영감을주는 소스를 만들겠다고 약속합니다.
사용하기 쉬운 환경 설정으로 OpenPyn에서 사용할 수있는 대부분의 인수를 지원합니다.
OpenPyn에서 위치 기반 필터링을 사용할 수 있습니다
Nordvpn이 지원하는 모든 국가의 맵보기 표시 마커 표시
지도보기에서 국가를 숨길 수 있습니다
지도보기에 국가를 출연시킬 수 있습니다
공유 환경 설정에 저장된 API 키는 암호화됩니다 ( "AES/GCM/NOPADDING")
앱 시작시 가장 가까운 국가를 결정하기 위해 스마트 위치를 사용합니다.
지리적 위치 API를 사용하여 현재 공개 IP 주소를 기반으로 현재 위치를 결정합니다.
필수 기능이 누락 되었습니까?
많은 구성 요소 가이 앱을 작동시킵니다. 여기에서 일부 기본 사항을 다룰 것입니다. 기본적으로 앱 시작시 맵은 비동기로로드되며 APK 내 자산 자원 폴더에있는 MBTILE 파일 (SQLITE 데이터베이스)이로드 된 다음 메모리에 저장되어 읽습니다. World.mbtiles는 사용자 정의 Python 스크립트 인 Generate_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
지도가로드 된 후, NordVPN API는 모든 지원 국가를 쿼리하도록 호출되며 서버 유형과 같은 기본 설정에 따라 필터링은 여기에서 수행되며, 마커는 모든 국가에 대해 게으르게 생성됩니다 (마커는 맵에 배치되지 않음), MBTILE 파일에 의해 지정된 최소 Zoom 스케일에 미리로드됩니다. 현재 위치는 클라이언트의 공개 IP 주소에 따라 감지됩니다. 그런 다음 맵은이 위치에 가장 가까운 마커에 애니메이션됩니다. 애니메이션이 완료된 후, 위치가 표시된 "게으른"마커 만지도의 가시 범위 내에 표시됩니다 (처음으로 표시되면 마커는지도에 배치됩니다).
참고 : 원격 장치가 SSH 서버가 실행 중이며 Juicessh의 연결로 구성되어 있으며 Colored Floating Action Button (FAB)이 클릭되기 전에이 앱의 앱 도구 모음에서 선택되어있는 한 여러 원격 장치와 함께이 흐름을 사용할 수 있습니다!





공개 베타는 누구에게나 열려 있습니다.
OpenPyn의 test 브랜치를 사용하십시오.
git clone --branch 2.2.1 [email protected]:1951FDG/openpyn-nordvpn.git
cd openpyn-nordvpn
pip3 install --upgrade .
프로젝트를 컴파일하고 실행하려면 필요합니다.
Android Studio 3.5 이상
10 (API level 29)29.0.2v3.10.2Android 용 SDK를지도합니다
Mystorage.kt 블로그 게시물에서 영감을 얻은, SharedPreference : Android에서 객체의 배열 목록을 저장하고 검색합니다.
Github Repo에서 영감을 얻은 printarray.kt Tobibur Rahman의 StrintArray.
SecurityManager.java 블로그 게시물에서 영감을 얻은 Nikita Ogorodnikov의 EditTextPreference 보안 버전을 만들었습니다.
문제를 제출하여 피드백을 보내 주시기 바랍니다. 버그 보고서, 기능 요청, 패치 및 웰링은 항상 환영합니다.
참고 : 풀 요청을 환영합니다. 주요 변경 사항은 먼저 문제를 제출하여 변경하려는 내용에 대해 논의하십시오.
이 앱은 여러 오픈 소스 프로젝트에서 코드를 사용합니다.
상자에 대해
sqlite-ndk
안드로이드지도 확장
맵 utils
Android Google 매핑 API V2 애드온
Google Maps Android API 유틸리티 라이브러리
확인 가능한 플로팅 버튼
참고 : Android Asset Resource의 Read Sqlite Database의 저자 인 Yesy에게 특별 감사합니다.
이 프로젝트를 가능하고 고통스럽게 만든 Sonelli에게 감사드립니다. Sqlite-NDK의 저자 인 Krystian Bigaj에게 특별한 감사를드립니다.