แอพ Android ที่เขียนใน C/C ++, Java และ Kotlin เพื่อเรียกใช้ OpenPyn จากระยะไกลผ่าน Juicessh ขอขอบคุณเป็นพิเศษสำหรับ Nvidiagpumonitor ปลั๊กอิน Juicessh ที่เขียนใน Kotlin โดย SDS100 ซึ่งทำหน้าที่เป็นฐานสำหรับปลั๊กอิน Juicessh นี้
หมายเหตุ : เบต้าสาธารณะแรกได้รับการปล่อยตัว
ความคิดทั้งหมดเริ่มต้นเมื่อฉันต้องการเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN ที่โฮสต์โดย NordVPN บน ASUS RT-AC86U โดยค่าเริ่มต้นสิ่งนี้เป็นไปได้ แต่เฟิร์มแวร์เริ่มต้นรวมถึงเฟิร์มแวร์บุคคลที่สาม ASUSWRT-MERLIN อนุญาตให้บันทึกไคลเอนต์ OpenVPN สูงสุด 5 รายการเท่านั้น
จากนั้นฉันก็สะดุดกับ OpenPyn เรียนรู้ Python อย่างรวดเร็วและทำคำขอดึงช่วยสนับสนุน Asuswrt-Merlin OpenPyn เป็นสคริปต์ Python3 ซึ่งสามารถเรียกใช้บน Entware-NG-3X บน ASUSWRT-MERLIN คุณลักษณะหลักของ OpenPyn คือการเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN ที่ไม่ว่างน้อยที่สุดโดยอัตโนมัติ NVRAM Write Support สำหรับ ASUSWRT-MERLIN ใน OpenPyn นั้นสามารถบันทึกเซิร์ฟเวอร์ OpenVPN ที่ไม่ว่างน้อยที่สุดที่ไม่ว่างและต่ำที่สุดไปยัง NVRAM ของเราเตอร์ ASUS ที่เปิดใช้งาน ENTWARE-NG-3X
ตอนนี้ฉันประสบความสำเร็จมากขึ้นหรือน้อยลงในสิ่งที่ฉันต้องการ แต่สิ่งนี้ทำให้ฉันต้องดิ้นรนครั้งสุดท้ายโดยต้องหันไปใช้การเชื่อมต่อ SSH กับเราเตอร์ Asus และจัดหาอาร์กิวเมนต์ที่ต้องการ OpenPyn เช่นประเทศ, load threshold, ประเภทเซิร์ฟเวอร์และจำนวน ping ที่จะส่งไปยังเซิร์ฟเวอร์แต่ละเซิร์ฟเวอร์เพื่อกำหนดคุณภาพ ฉันคิดว่าการมีความสามารถในการทำเช่นนั้นในโทรศัพท์ของฉันแทนที่จะเป็นคอมพิวเตอร์ของฉันจะทำให้เรื่องนี้ง่ายขึ้นมากและนั่นทำให้ฉันค้นพบ Juicessh
Juicessh รองรับการใช้ปลั๊กอินซึ่งทำให้ฉันสามารถสร้างแอพที่ยอดเยี่ยมนี้ได้ แอพนี้ทำงานบน Android มันจะสร้างการเชื่อมต่อกับอุปกรณ์ที่มีเซิร์ฟเวอร์ SSH ที่ทำงานอยู่และจากนั้นก็สามารถส่งคำสั่ง OpenPyn ไปยังอุปกรณ์ระยะไกลได้
หมายเหตุ : โครงการนี้เป็นโครงการ Android แรกของฉันและเช่นนี้อาจไม่เป็นไปตามแนวทางการเขียนโค้ดที่ดีที่สุดทั้งหมดโดยไม่คำนึงถึงสิ่งนี้ฉันมุ่งมั่นที่จะทำให้แอพนี้เป็นแหล่งของแรงบันดาลใจสำหรับนักพัฒนาอื่น ๆ
รองรับอาร์กิวเมนต์ส่วนใหญ่ที่มีอยู่ใน OpenPyn พร้อมการตั้งค่าที่ใช้งานง่าย
อนุญาตให้ใช้การกรองตามตำแหน่งใน OpenPyn
มุมมองแผนที่แสดงเครื่องหมายสำหรับทุกประเทศที่สนับสนุนโดย NordVPN
อนุญาตให้ซ่อนประเทศในมุมมองแผนที่
อนุญาตให้แสดงประเทศในมุมมองแผนที่
คีย์ API ที่เก็บไว้ในการตั้งค่าที่ใช้ร่วมกันถูกเข้ารหัส ("AES/GCM/Nopadding"))
ในการเริ่มแอพจะใช้สถานที่อัจฉริยะเพื่อกำหนดประเทศที่อยู่ใกล้ที่สุด
ใช้ GEOLOCATION API เพื่อกำหนดตำแหน่งปัจจุบันตามที่อยู่ IP สาธารณะปัจจุบัน
ฉันขาดคุณสมบัติที่สำคัญบางอย่างหรือไม่?
ส่วนประกอบจำนวนมากทำให้แอพนี้ใช้งานได้ฉันจะครอบคลุมพื้นฐานบางอย่างที่นี่ โดยทั่วไปในการเริ่มต้นแอปแผนที่จะถูกโหลดแบบอะซิงโครนัสไฟล์ MBTILE (ฐานข้อมูล SQLite) ที่อยู่ในโฟลเดอร์ทรัพยากรสินทรัพย์ภายใน APK จะถูกโหลดแล้วจัดเก็บและอ่านในหน่วยความจำ 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 จะถูกเรียกใช้เพื่อสอบถามประเทศที่ได้รับการสนับสนุนทั้งหมดการกรองตามการตั้งค่าเช่นประเภทเซิร์ฟเวอร์จะทำที่นี่เครื่องหมายจะถูกสร้างขึ้นอย่างเกียจคร้านสำหรับทุกประเทศ ตำแหน่งปัจจุบันถูกตรวจพบตามที่อยู่ IP สาธารณะของไคลเอนต์ แผนที่จะเคลื่อนไหวไปยังเครื่องหมายที่ใกล้กับตำแหน่งนี้มากที่สุด หลังจากแอนิเมชั่นเสร็จสมบูรณ์มีเพียงเครื่องหมาย "ขี้เกียจ" ที่มีตำแหน่งอยู่ในขอบเขตที่มองเห็นได้ของแผนที่เท่านั้นที่มองเห็นได้ (เครื่องหมายถูกวางไว้บนแผนที่เมื่อมองเห็นได้เป็นครั้งแรก)
หมายเหตุ : คุณสามารถใช้โฟลว์นี้กับอุปกรณ์ระยะไกลหลายตัวตราบใดที่อุปกรณ์ระยะไกลมีเซิร์ฟเวอร์ SSH ที่ทำงานอยู่และถูกกำหนดค่าในการเชื่อมต่อใน Juicessh และถูกเลือกในแถบเครื่องมือแอพของแอพนี้ก่อนที่จะคลิกปุ่มแอ็คชั่นลอยน้ำ (FAB)!





เบต้าสาธารณะเปิดให้ทุกคน
โปรดใช้สาขา test ของฉันของ OpenPyn
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.2แผนที่ SDK สำหรับ Android
mystorage.kt ได้รับแรงบันดาลใจจากบล็อกโพสต์บันทึกและดึงอาร์เรย์ลิสต์ของวัตถุในการแชร์ preference: Android จาก Ready Android
PrintArray.kt ได้รับแรงบันดาลใจจาก GitHub Repo, PrintArray โดย Tobibur Rahman
SecurityManager.java ได้รับแรงบันดาลใจจากบล็อกโพสต์สร้าง EditTextPreference เวอร์ชันที่ปลอดภัยโดย Nikita Ogorodnikov
อย่าลังเลที่จะส่งข้อเสนอแนะให้เราโดยส่งปัญหา รายงานข้อผิดพลาดคำขอคุณสมบัติแพตช์และความปรารถนาดียินดีต้อนรับเสมอ
หมายเหตุ : ยินดีต้อนรับคำขอดึง สำหรับการเปลี่ยนแปลงที่สำคัญโปรดส่งปัญหาก่อนเพื่อหารือเกี่ยวกับสิ่งที่คุณต้องการเปลี่ยนแปลง
แอพนี้ใช้รหัส (แก้ไข) จากหลายโครงการโอเพ่นซอร์ส
เกี่ยวกับกล่อง
Sqlite-ndk
ส่วนขยาย Android Maps
แผนที่ Utils
Android Google Maps API V2 Add-Ons
Google Maps Android API Utility Library
ปุ่มลอยได้
หมายเหตุ : ขอขอบคุณเป็นพิเศษกับ Yesy ผู้แต่งฐานข้อมูล SQLite จาก Resource Android Asset Resource
ขอบคุณมากสำหรับ Sonelli ที่ทำให้โครงการนี้เป็นไปได้และไม่เจ็บปวด ขอขอบคุณเป็นพิเศษสำหรับ Krystian Bigaj ผู้แต่ง Sqlite-NDK