Aplikasi Android yang ditulis dalam C/C ++, Java, dan Kotlin untuk menjalankan OpenPyn dari jarak jauh melalui Juicessh. Terima kasih khusus kepada Nvidiagpumonitor, plugin juicessh yang ditulis di Kotlin oleh SDS100 yang berfungsi sebagai basis untuk plugin juicessh ini.
Catatan : Beta publik pertama telah dirilis.
Gagasan itu semua dimulai ketika saya ingin terhubung ke server OpenVPN yang diselenggarakan oleh NordVPN pada Asus RT-AC86U. Secara default ini dimungkinkan, tetapi firmware default termasuk firmware pihak ketiga ASUSWRT-Merlin hanya memungkinkan maksimum 5 klien OpenVPN untuk disimpan.
Saya kemudian tersandung di OpenPyn, dengan cepat belajar Python, dan membuat permintaan tarik, memungkinkan dukungan untuk AsUSWRT-Merlin. OpenPyn adalah skrip Python3 yang dapat dijalankan di Entware-NG-3X di AsUSWRT-Merlin. Fitur utama OpenPyn, adalah secara otomatis terhubung ke server OpenVPN latensi terendah yang paling sibuk. NVRAM menulis dukungan untuk AsUSWRT-Merlin di OpenPyn kemudian dapat menyimpan server OpenVPN latensi terendah yang paling tidak sibuk ke NVRAM dari router Asus yang diaktifkan oleh Entware-NG-3X.
Sekarang, saya telah mencapai lebih atau kurang dari apa yang saya inginkan, tetapi ini meninggalkan saya dengan satu perjuangan terakhir, harus menggunakan koneksi SSH ke router Asus dan memasok OpenPyn dengan argumen yang diinginkan misalnya, negara, ambang batas beban, jenis server, dan jumlah ping untuk dikirim ke setiap server untuk menentukan kualitas. Saya berpikir bahwa memiliki kemampuan untuk melakukan itu di ponsel saya alih -alih komputer saya akan membuat ini jauh lebih mudah, dan itu membuat saya menemukan juicessh.
Juicessh mendukung penggunaan plugin, yang memungkinkan saya untuk membuat aplikasi yang fantastis ini. Aplikasi ini berjalan di Android, ia membuat koneksi ke perangkat yang memiliki server SSH yang berjalan di atasnya, dan kemudian dapat mengirim perintah OpenPyn ke perangkat jarak jauh.
Catatan : Proyek ini adalah proyek Android pertama saya, dan dengan demikian, mungkin belum mengikuti semua praktik pengkodean terbaik, terlepas dari ini, saya berkomitmen untuk menjadikan aplikasi ini sumber inspirasi bagi pengembang lain yang bekerja pada aplikasi Android berbasis serupa, terutama aplikasi Android berbasis Google Maps.
Mendukung sebagian besar argumen yang tersedia di OpenPyn dengan preferensi yang mudah digunakan
Memungkinkan untuk menggunakan pemfilteran berbasis lokasi di openpyn
Tampilan peta menampilkan penanda untuk setiap negara yang didukung oleh NordVPN
Memungkinkan untuk menyembunyikan negara dalam tampilan peta
Memungkinkan untuk membintangi suatu negara di tampilan peta
Kunci API yang disimpan dalam preferensi bersama dienkripsi ("AES/GCM/NOPADDING")
Pada aplikasi mulai, itu akan menggunakan lokasi yang cerdas, untuk menentukan negara terdekat
Menggunakan API Geolokasi untuk menentukan lokasi saat ini berdasarkan alamat IP publik saat ini
Apakah saya kehilangan beberapa fitur penting?
Banyak komponen membuat aplikasi ini berfungsi, saya akan membahas beberapa dasar di sini. Pada dasarnya pada startup aplikasi, peta dimuat secara asinkron, file mbtile (basis data SQLite) yang terletak di folder sumber daya aset dalam APK dimuat dan kemudian disimpan dan dibaca dalam memori. Dunia.MBtiles dihasilkan menggunakan skrip Python khusus, menghasilkan_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
Setelah peta selesai memuat, API NordVPN dipanggil untuk menanyakan semua negara yang didukung, penyaringan berdasarkan preferensi seperti jenis server dilakukan di sini, penanda dihasilkan dengan malas untuk semua negara (penanda tidak ditempatkan pada peta), semua ubin (512x512 gambar webp) adalah pra-life-life untuk minimum skala zoom minimum zoom skala zoom minimum. Lokasi saat ini terdeteksi berdasarkan alamat IP publik klien. Peta kemudian menjiwai dengan penanda yang paling dekat dengan lokasi ini. Setelah animasi selesai, hanya penanda "malas" yang lokasinya berada dalam batas -batas peta yang terlihat terlihat (penanda ditempatkan di peta setelah dibuat terlihat untuk pertama kalinya).
Catatan : Anda dapat menggunakan aliran ini dengan beberapa perangkat jarak jauh, selama perangkat jarak jauh itu memiliki server SSH yang berjalan di atasnya dan dikonfigurasi dalam koneksi di Juicessh dan dipilih dalam alat aplikasi aplikasi ini sebelum tombol aksi mengambang berwarna (FAB) diklik!





Beta publik terbuka untuk siapa saja.
Harap gunakan cabang test OpenPyn saya.
git clone --branch 2.2.1 [email protected]:1951FDG/openpyn-nordvpn.git
cd openpyn-nordvpn
pip3 install --upgrade .
Untuk mengkompilasi dan menjalankan proyek yang Anda perlukan:
Android Studio 3.5 atau lebih tinggi
10 (API level 29)29.0.2v3.10.2Peta SDK untuk Android
Mystorage.kt terinspirasi oleh posting blog, simpan dan ambil arraylist objek di sharedpreference: android dari ready android.
Printarray.kt terinspirasi oleh github repo, printarray oleh Tobibur Rahman.
SecurityManager.java terinspirasi oleh posting blog, membuat versi aman dari EditTextPreference oleh Nikita Ogorodnikov.
Jangan ragu untuk mengirimi kami umpan balik dengan mengirimkan masalah. Laporan Bug, Permintaan Fitur, Patch, dan Nuansa Sumur selalu diterima.
Catatan : Permintaan tarik dipersilakan. Untuk perubahan besar, silakan kirimkan masalah terlebih dahulu untuk membahas apa yang ingin Anda ubah.
Aplikasi ini menggunakan kode (dimodifikasi) dari beberapa proyek open source.
Tentang kotak
Sqlite-ndk
Ekstensi peta android
Peta utils
Android Google Maps API V2 Add-On
Google Maps Android API Utility Library
Tombol mengambang yang bisa diperiksa
Catatan : Terima kasih khusus kepada Yesy, penulis database Read SQLite dari Android Asset Resource
Terima kasih banyak kepada Sonelli yang membuat proyek ini menjadi mungkin dan tidak menyakitkan. Terima kasih khusus kepada Krystian Bigaj, penulis Sqlite-NDK.