Eine Android -App, die in C/C ++, Java und Kotlin geschrieben wurde, um OpenPyn aus der Ferne durch Juicessh auszuführen. Besonderer Dank geht an Nvidiagpumonitor, ein Juicessh -Plugin, das von SDS100 in Kotlin geschrieben wurde und als Basis für dieses Juicessh -Plugin diente.
Hinweis : Die erste öffentliche Beta wurde veröffentlicht.
Die Idee begann alles, als ich eine Verbindung zu OpenVPN-Servern herstellen wollte, die von NordVPN auf einem ASUS RT-AC86U gehostet wurden. Standardmäßig ist dies möglich, aber die Standardfirmware, einschließlich der Firmware von Drittanbietern Asuswrt-Merlin, ermöglicht nur maximal 5 OpenVPN-Clients.
Ich stolperte dann auf OpenPyn, lernte schnell Python und stellte eine Pull-Anfrage vor, um Unterstützung für Asuswrt-Merlin zu ermöglichen. OpenPyn ist ein Python3-Skript, das auf Entware-NG-3x auf Asuswrt-Merlin ausgeführt werden kann. Die Hauptfunktion von OpenPyn ist, dass es automatisch eine Verbindung zum am wenigsten geschäftigen und niedrigsten Latenz -OpenVPN -Server herstellt. NVRAM-Schreibunterstützung für Asuswrt-Merlin in OpenPyn kann dann den am wenigsten geschäftigen OpenVPN-Server mit der niedrigsten Latenz auf dem NVRAM eines Entware-NG-3x-Aktivierungs-Asus-Routers speichern.
Jetzt hatte ich mehr oder weniger das erreicht, was ich gewünscht hatte, aber dies ließ mich mit einem letzten Kampf zurück, musste eine SSH -Verbindung zum ASUS -Router eröffnen und OpenPyn mit den gewünschten Argumenten, z. Ich dachte, dass die Fähigkeit, das auf meinem Telefon anstelle meines Computers zu tun, dies viel einfacher machen würde, und das führte mich dazu, Juicessh zu entdecken.
Juicessh unterstützt die Verwendung von Plugins, mit denen ich diese fantastische App erstellen konnte. Diese App läuft auf Android, sie stellt eine Verbindung zu einem Gerät her, auf dem ein SSH -Server ausgeführt wird, und es kann dann einen OpenPyn -Befehl an das Remote -Gerät senden.
Hinweis : Dieses Projekt ist mein erstes Android -Projekt, und als solche kann es nicht alle besten Codierungspraktiken folgen. Unabhängig davon bin ich verpflichtet, diese App zu einer Inspirationsquelle für andere Entwickler, die an ähnlichen Android -Apps arbeiten, insbesondere von Google Maps -basierten Android -Apps, zu einer Inspirationsquelle machen.
Unterstützt die meisten in OpenPyn verfügbaren Argumente mit einfach zu verwendenden Einstellungen
Ermöglicht die Verwendung der standortbasierten Filterung in OpenPyn
Die Kartenansicht zeigt Markierungen für jedes von NordVPN unterstützte Land an
Ermöglicht, Länder in der Kartenansicht zu verbergen
Ermöglicht es, ein Land in der Kartenansicht zu spielen
API -Schlüssel, die in gemeinsamen Präferenzen gespeichert sind, werden verschlüsselt ("AES/GCM/Nopadding")
Bei App Start wird es einen intelligenten Ort verwenden, um das nächste Land zu bestimmen
Verwendet Geolocation -APIs, um den aktuellen Ort basierend auf der aktuellen öffentlichen IP -Adresse zu bestimmen
Fehlt mir ein wesentliches Feature?
Viele Komponenten lassen diese App funktionieren. Ich werde hier einige der Grundlagen abdecken. Grundsätzlich ist die Karte asynchron geladen, eine MBTILE -Datei (SQLite -Datenbank), die sich im Assets -Ressourcenordner innerhalb der APK befindet, geladen und dann im Speicher gespeichert und gelesen wird. The World.Mbtiles wurde mit einem benutzerdefinierten Python -Skript generate_tiles_multiprocess.py erzeugt.
rm ./app/src/main/assets/world.mbtiles
python3 ./generate_tiles_multiprocess.py ./mapfile.xml ./app/src/main/assets/world.mbtiles 4 4 --format webp
Nach dem Laden der Karte wird die NORDVPN-API aufgerufen, um alle unterstützten Länder abzufragen, und filtern Sie hier auf den Vorlieben wie Servertypen. Hier werden Marker generiert. Für alle Länder (Marker werden nicht auf der Karte platziert) sind alle Kacheln (512x512-Webbilder) vorgeladen, die für die minimale Zoom-Skala vorlädt wurden, die mit der MBEL-Datei mit der MBTile-Datei angegeben sind. Der aktuelle Standort wird auf der Grundlage der öffentlichen IP -Adresse des Kunden erkannt. Die Karte animiert dann den Marker, der diesem Ort am nächsten liegt. Nach Abschluss der Animation werden nur die "faulen" Markierungen, deren Standort innerhalb der sichtbaren Grenzen der Karte liegt, sichtbar (Markierungen werden auf der Karte platziert, sobald sie zum ersten Mal sichtbar gemacht werden).
Hinweis : Sie können diesen Fluss mit mehreren Remote -Geräten verwenden, solange dieses Remote -Gerät über einen SSH -Server läuft und in Verbindungen in Juicessh konfiguriert ist und in der App -Symbolleiste dieser App ausgewählt ist, bevor die farbige Gleitaktionen (FAB) geklickt wird!





Die öffentliche Beta steht jedem offen.
Bitte verwenden Sie meinen test von OpenPyn.
git clone --branch 2.2.1 [email protected]:1951FDG/openpyn-nordvpn.git
cd openpyn-nordvpn
pip3 install --upgrade .
Um das Projekt zu kompilieren und auszuführen, das Sie benötigen:
Android Studio 3.5 oder höher
10 (API level 29)29.0.2v3.10.2Karten SDK für Android
Mystorage.kt inspiriert von Blog -Posts, Speichern und abrufen ArrayList von Objekt in SharedPreference: Android von Ready Android.
PrintArray.kt inspiriert von Github Repo, PrintArray von Tobibur Rahman.
SecurityManager.java inspiriert vom Blog -Beitrag, der gesicherte Version von EditTextPreference von Nikita Ogorodnikov erstellt.
Senden Sie uns gerne Feedback, indem Sie ein Problem einreichen. Fehlerberichte, Feature-Anfragen, Patches und Wohlwollungen sind immer willkommen.
Hinweis : Zugangsanfragen sind willkommen. Für wichtige Änderungen senden Sie bitte zunächst ein Problem, um zu besprechen, was Sie ändern möchten.
Diese App verwendet (geänderter) Code aus mehreren Open -Source -Projekten.
Über Box
Sqlite-Ndk
Android -Kartenverlängerungen
Karte utils
Android Google Maps API V2 Add-Ons
Google Maps Android API Utility Library
Überprüfbarer schwimmender Knopf
Hinweis : Besonderer Dank geht an Yesy, Autor der SQLite -Datenbank von Android Asset Resource
Vielen Dank an Sonelli, der dieses Projekt möglich und schmerzlos gemacht hat. Besonderer Dank geht an Krystian Bigaj, Autor von SQLite-NDK.