Une application Android écrite en C / C ++, Java et Kotlin pour exécuter OpenPyn à distance via Juicessh. Un merci spécial à Nvidiagpumonitor, un plugin Juicessh écrit en Kotlin par SDS100 qui a servi de base pour ce plugin Juicessh.
Remarque : la première version bêta publique a été publiée.
L'idée a commencé quand je voulais me connecter aux serveurs OpenVPN hébergés par NORDVPN sur un ASUS RT-AC86U. Par défaut, cela est possible, mais le micrologiciel par défaut, y compris le firmware tiers ASUSWRT-MERLIN, ne permet que un maximum de 5 clients OpenVPN à enregistrer.
Je suis ensuite tombé sur OpenPyn, j'ai rapidement appris Python et j'ai fait une demande de traction, permettant une prise en charge d'AsusWrt-Merlin. OpenPyn est un script Python3 qui peut être exécuté sur Entware-NG-3x sur ASUSWRT-MERLIN. La principale caractéristique d'OpenPyn est qu'elle se connecte automatiquement au serveur OpenVPN de latence le moins chargé et le moins bas. La prise en charge de NVRAM WRITE pour ASUSWRT-MERLIN dans OpenPyn est ensuite en mesure d'enregistrer le serveur OpenVPN la latence le moins occupé et le moins bas sur le NVRAM d'un routeur ASUS compatible Entware-NG-3X.
Maintenant, j'avais réalisé plus ou moins ce que je souhaitais, mais cela m'a laissé une dernière lutte, devant ouvrir une connexion SSH au routeur ASUS et fournir à OpenPyn les arguments souhaités, par exemple, pays, seuil de chargement, type de serveur et nombre de pings à envoyer à chaque serveur pour déterminer la qualité. Je pensais qu'avoir la possibilité de le faire sur mon téléphone au lieu de mon ordinateur rendrait cela beaucoup plus facile, et cela m'a amené à découvrir Juissh.
Juicessh prend en charge l'utilisation de plugins, ce qui m'a permis de créer cette application fantastique. Cette application s'exécute sur Android, il établit une connexion à un périphérique qui a un serveur SSH exécuté dessus, et il est ensuite capable d'envoyer une commande OpenPyn à l'appareil distant.
Remarque : Ce projet est mon tout premier projet Android, et en tant que tel, il peut ne pas encore suivre toutes les meilleures pratiques de codage, quelle que soit cela, je me suis engagé à faire de cette application une source d'inspiration pour d'autres développeurs travaillant sur des applications Android similaires, en particulier les applications Android basées sur Google Maps.
Prend en charge la plupart des arguments disponibles dans OpenPyn avec des préférences faciles à utiliser
Permet d'utiliser le filtrage basé sur la localisation dans OpenPyn
La vue de la carte affiche les marqueurs pour chaque pays pris en charge par Nordvpn
Permet de cacher les pays dans la vue de la carte
Permet de jouer un pays dans la vue de la carte
Les clés API stockées dans les préférences partagées sont chiffrées ("AES / GCM / NOPADDING")
Au début de l'application, il utilisera un emplacement intelligent pour déterminer le pays le plus proche
Utilise des API de géolocalisation pour déterminer l'emplacement actuel en fonction de l'adresse IP publique actuelle
Est-ce que je manque une fonctionnalité essentielle?
Beaucoup de composants font fonctionner cette application, je couvrirai certaines des bases ici. Fondamentalement, sur le démarrage de l'application, la carte est chargée de manière asynchrone, un fichier MBTILE (base de données SQLite) situé dans le dossier de ressources Assets dans l'APK est chargé puis stocké et lu en mémoire. Le monde.mbbtiles a été généré à l'aide d'un script Python personnalisé, généreuse_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
Une fois la carte terminée le chargement, l'API NORDVPN est invoquée pour interroger tous les pays pris en charge, le filtrage basé sur des préférences telles que le type de serveur est effectué ici, les marqueurs sont générés paresseusement pour tous les pays (les marqueurs ne sont pas placés sur la carte), toutes les carreaux (512x512 Webp Images) sont pré-chargés pour l'échelle de zoom minimum spécifiée par le fichier MBTILE. L'emplacement actuel est détecté en fonction de l'adresse IP publique du client. La carte anime ensuite le marqueur le plus proche de cet emplacement. Une fois l'animation terminée, seuls les marqueurs "paresseux" dont l'emplacement se trouvent dans les limites visibles de la carte est rendue visible (les marqueurs sont placés sur la carte une fois qu'ils sont rendus visibles pour la première fois).
Remarque : Vous pouvez utiliser ce flux avec plusieurs périphériques distants, tant que ce périphérique distant a un serveur SSH exécuté dessus et est configuré dans des connexions dans Juicessh et est sélectionné dans la barre d'outils de l'application de cette application avant que le bouton d'action flottante (FAB) coloré (FAB) ne soit cliqué!





La version bêta publique est ouverte à tous.
Veuillez utiliser ma branche test d'OpenPyn.
git clone --branch 2.2.1 [email protected]:1951FDG/openpyn-nordvpn.git
cd openpyn-nordvpn
pip3 install --upgrade .
Pour compiler et exécuter le projet dont vous aurez besoin:
Android Studio 3,5 ou plus
10 (API level 29)29.0.2v3.10.2Cartes SDK pour Android
MyStorage.kt inspiré par l'article de blog, Enregistrer et récupérer ArrayList de l'objet dans SharedPreference: Android d'Android Ready.
Printarray.kt inspiré par GitHub Repo, PrintArray par Tobibur Rahman.
SecurityManager.java inspiré par un article de blog, faisant une version sécurisée de EditTextPreference par Nikita Ogorodnikov.
N'hésitez pas à nous envoyer des commentaires en soumettant un problème. Les rapports de bogues, les demandes de fonctionnalités, les correctifs et les biens sont toujours les bienvenus.
Remarque : les demandes de traction sont les bienvenues. Pour les modifications majeures, veuillez d'abord soumettre un problème pour discuter de ce que vous aimeriez changer.
Cette application utilise le code (modifié) de plusieurs projets open source.
À propos de Box
Sqlite-ndk
Extensions de cartes Android
Map Utils
Android Google Maps API V2 compléments
Bibliothèque utilitaire de l'API Android Maps Maps
Bouton flottant enregistrable
Remarque : Un merci spécial à Yesy, auteur de la base de données de lecture SQLite de Android Asset Resource
Un grand merci à Sonelli qui a rendu ce projet possible et indolore. Un merci spécial à Krystian Bigaj, auteur de Sqlite-NDK.