用C/C ++,Java和Kotlin編寫的Android應用程序通過Juicessh遠程運行OpenPyn。特別感謝Nvidiagpumonitor,這是由SDS100編寫的Juicessh插件,它是此Juicessh插件的基礎。
注意:第一個公共測試版已發布。
當我想連接到由NORDVPN在ASUS RT-AC86U上託管的OpenVPN服務器時,這個想法就開始了。默認情況下,這是可能的,但是默認固件在內,包括第三方固件ASUSWRT-MERLIN僅允許保存最多5個OpenVPN客戶端。
然後,我偶然發現了OpenPyn,很快就學會了Python,並提出了拉動請求,從而支持Asuswrt-Merlin。 OpenPyn是一個Python3腳本,可以在Asuswrt-Merlin上的Entware-NG-3X上運行。 OpenPyn的主要功能是它會自動連接到最繁忙,最低的延遲openVPN服務器。 NVRAM在OpenPyn中為Asuswrt-Merlin的NVRAM寫支持可以將最小繁忙,最低的延遲OpenVPN服務器保存到啟用Entware-NG-3X的NVRAM中。
現在,我或多或少取得了所需的成就,但是這使我進行了最後的鬥爭,不得不訴諸於與華碩路由器的SSH連接,並為OpenPyn提供所需的參數,例如,鄉村,負載閾值,服務器類型和發送到每個服務器的pings數量以確定質量。我認為有能力在手機上做到這一點,而不是我的計算機會變得容易得多,這使我發現了Juicessh。
Juicessh支持使用插件,這使我能夠創建這個出色的應用程序。該應用程序在Android上運行,它建立了與具有SSH服務器在其上運行的設備的連接,然後可以將OpenPyn命令發送到遠程設備。
注意:這個項目是我的第一個Android項目,因此,它可能還沒有遵循所有最佳的編碼實踐,無論如何,我致力於使該應用程序成為其他從事類似基於Google Maps Android Appss的開發人員的靈感來源。
支持大多數在OpenPyn中可用的參數,並易於使用首選項
允許在OpenPYN中使用基於位置的過濾
地圖視圖顯示由NORDVPN支持的每個國家 /地區的標記
允許在地圖視圖中隱藏國家
允許在地圖視圖中飾演一個國家
存儲在共享首選項中的API鍵已加密(“ AES/GCM/NOPADDING”)
在應用程序開始時,它將使用智能位置來確定最接近的國家
使用地理位置API根據當前的公共IP地址來確定當前位置
我是否缺少一些基本功能?
許多組件使此應用程序起作用,我將在這裡介紹一些基本知識。基本上,在App啟動時,該地圖是異步加載的,位於APK中資產資源文件夾中的MBTile文件(SQLITE數據庫)被加載,然後存儲並在內存中讀取並讀取。使用自定義python腳本生成world.mbtiles,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查詢所有受支持的國家,根據此處完成的偏好(例如服務器類型)的過濾,在此處完成了標記,為所有國家 /地區生成標記(並非將標記放置在地圖上),所有圖塊(512x512 WebP圖像)均由Minimim Zoom temimim the Mimimim Zoom abos temimim the Mbbtile file file the mbbtile for。根據客戶端的公共IP地址檢測到當前位置。然後,地圖動畫到最接近此位置的標記。動畫完成後,只有在地圖的可見範圍內的“懶惰”標記可見(首次使標記可見後將標記放在地圖上)。
注意:您可以將此流與多個遠程設備一起使用,只要該遠程設備在其上運行SSH服務器,並且在Juicessh的連接中配置並在此應用程序的App工具欄中選擇,然後才能單擊“彩色浮動動作”按鈕(FAB)!





公共Beta對任何人開放。
請使用我的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靈感來自博客文章,保存和檢索obsearpreference中的對象的ArrayList:Ready Android的Android。
printArray.kt受Tobibur Rahman的Github Repo的啟發。
SecurityManager.java受博客文章的啟發,由Nikita Ogorodnikov製作了Secuted EdittextPreference。
隨時通過提交問題向我們發送反饋。總是歡迎錯誤報告,功能請求,補丁和祝福。
注意:歡迎拉動請求。有關重大更改,請先提交問題,以討論您想更改的內容。
該應用程序使用(修改)代碼來自幾個開源項目。
關於盒子
sqlite-ndk
Android地圖擴展
地圖utils
Android Google地圖API V2附加組件
Google Maps Android API公用事業庫
可檢查的浮動按鈕
注意:特別感謝Android資產資源的Read SQLite數據庫的作者是
非常感謝Sonelli使該項目成為可能,無痛。特別感謝Sqlite-NDK的作者Krystian Bigaj。