تطبيق Android مكتوب في C/C ++ و Java و Kotlin لتشغيل OpenPyn عن بعد من خلال Juicessh. شكر خاص لـ Nvidiagpumonitor ، وهو مكون إضافي Juicessh الذي كتب في Kotlin بواسطة SDS100 والذي كان بمثابة قاعدة لهذا البرنامج المساعد Juicessh.
ملاحظة : تم إصدار أول نسخة تجريبية عامة.
بدأت الفكرة كلها عندما أردت الاتصال بخوادم OpenVPN التي استضافتها NordVPN على ASUS RT-AC86U. بشكل افتراضي ، يكون هذا ممكنًا ، لكن البرامج الثابتة الافتراضية بما في ذلك البرامج الثابتة من طرف ثالث ASUSWRT-MERLIN تسمح فقط بحد أقصى 5 عملاء OpenVPN.
ثم تعثرت على OpenPyn ، وسرعان ما تعلمت Python ، وقدمت طلب سحب ، مما يتيح الدعم لـ Asuswrt-Merlin. OpenPyn هو برنامج نصي Python3 يمكن تشغيله على Entware-NG-3x على Asuswrt-Merlin. الميزة الرئيسية لـ OpenPyn ، هي أنه يتصل تلقائيًا بخادم OpenVPN الأقل انشغالًا والقلق. NVRAM اكتب دعم ASUSWRT-MERLIN في OpenPyn بعد ذلك قادر على توفير خادم OpenVPN الأقل انشغالًا والأقل من زمن الوصول إلى NVRAM من جهاز التوجيه ASUS الممكّن من entware-NG-3X.
الآن ، لقد حققت أكثر أو أقل ما أرغب فيه ، لكن هذا تركني مع صراع أخيرة ، واضطررت إلى اللجوء إلى اتصال SSH بجهاز التوجيه ASUS وتزويد OpenPyn بالحجج المطلوبة على سبيل المثال ، والبلد ، وعتبة التحميل ، ونوع الخادم ، وعدد الأصوات التي سيتم إرسالها إلى كل خادم لتحديد الجودة. اعتقدت أن وجود القدرة على القيام بذلك على هاتفي بدلاً من جهاز الكمبيوتر الخاص بي سيجعل هذا الأمر أسهل كثيرًا ، مما دفعني إلى اكتشاف Juicessh.
يدعم Juicesh استخدام الإضافات ، مما سمح لي بإنشاء هذا التطبيق الرائع. يعمل هذا التطبيق على Android ، ويقوم بإنشاء اتصال بجهاز يحتوي على خادم SSH يعمل عليه ، ثم يمكنه إرسال أمر OpenPyn إلى الجهاز البعيد.
ملاحظة : هذا المشروع هو أول مشروع Android الخاص بي ، وعلى هذا النحو ، قد لا يتبع جميع أفضل ممارسات الترميز حتى الآن ، بغض النظر عن هذا ، أنا ملتزم بجعل هذا التطبيق مصدرًا للإلهام للمطورين الآخرين الذين يعملون على تطبيقات Android القائمة ، وخاصة تطبيقات Android المستندة إلى خرائط Google.
يدعم معظم الحجج المتاحة في OpenPyn مع تفضيلات سهلة الاستخدام
يسمح باستخدام التصفية القائمة على الموقع في OpenPyn
يعرض عرض الخريطة علامات لكل بلد يدعمه NordVPN
يسمح بإخفاء البلدان في عرض الخريطة
يسمح بدور بلد في عرض الخريطة
يتم تشفير مفاتيح API المخزنة في التفضيلات المشتركة ("AES/GCM/Nopadding")
في بداية التطبيق ، سيستخدم موقع ذكي ، لتحديد أقرب بلد
يستخدم واجهات برمجة تطبيقات تحديد الموقع الجغرافي لتحديد الموقع الحالي بناءً على عنوان IP العام الحالي
هل أفتقد بعض الميزات الأساسية؟
الكثير من المكونات تجعل هذا التطبيق يعمل ، سأغطي بعض الأساسيات هنا. بشكل أساسي في بدء التشغيل ، يتم تحميل الخريطة بشكل غير متزامن ، يتم تحميل ملف mbtile (قاعدة بيانات SQLite) الموجودة في مجلد موارد الأصول داخل APK ثم تخزينها وقراءتها في الذاكرة. تم إنشاء World.mbtiles باستخدام برنامج نصي Python مخصص ، internate_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
بعد انتهاء الخريطة ، يتم استدعاء API NordVPN للاستعلام عن جميع البلدان المدعومة ، والتصفية بناءً على تفضيلات مثل نوع الخادم هنا ، يتم إنشاء علامات بتكاسل لجميع البلدان (لا يتم وضع العلامات على المقياس المحدد من خلال ملف MBT. تم اكتشاف الموقع الحالي بناءً على عنوان IP العام للعميل. الخريطة ثم تحوّل إلى العلامة الأقرب إلى هذا الموقع. بعد اكتمال الرسوم المتحركة ، يتم تشغيل علامات "Lazy" فقط التي يكون موقعها ضمن الحدود المرئية للخريطة (يتم وضع علامات على الخريطة بمجرد أن تكون مرئية لأول مرة).
ملاحظة : يمكنك استخدام هذا التدفق مع أجهزة بعيدة متعددة ، طالما أن هذا الجهاز البعيد يحتوي على خادم 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 مستوحاة من منشور المدونة ، حفظ واسترداد ArrayList من الكائن في المشاركة: Android من Ready Android.
printarray.kt مستوحاة من Github repo ، printarray من قبل Tebibur Rahman.
SecurityManager.java مستوحى من منشور المدونة ، مما يجعل النسخة المضمونة من EditTextPreference بواسطة Nikita Ogorodnikov.
لا تتردد في إرسال ملاحظات لنا عن طريق تقديم مشكلة. تقارير الأخطاء وطلبات الميزات والتصحيحات والآفاق نرحب دائمًا.
ملاحظة : ترحيب طلبات السحب. للتغييرات الرئيسية ، يرجى تقديم مشكلة أولاً لمناقشة ما ترغب في تغييره.
يستخدم هذا التطبيق الرمز (المعدل) من عدة مشاريع مفتوحة المصدر.
حول المربع
SQLITE-NDK
أندرويد خرائط ملحقات
خريطة utils
Android Google Maps API V2 الوظائف الإضافية
يقوم Google Maps Android API Library
زر عائم يمكن فحصه
ملاحظة : شكر خاص لـ Yesy ، مؤلف Read Sqlite Database من Android Asset Resource
شكرًا جزيلاً لـ Sonelli الذي جعل هذا المشروع ممكنًا وغير مؤلم. شكر خاص لكريستيان بيجاج ، مؤلف كتاب SQLITE-NDK.