C/C ++、Java、およびKotlinで書かれたAndroidアプリがJuicesshを介してOpenPynをリモートで実行します。 Nvidiagpumonitorに感謝します。Nvidiagpumonitorは、このJuicesshプラグインのベースとして機能したSDS100によってKotlinで書かれたJuicesshプラグインです。
注:最初のパブリックベータがリリースされました。
アイデアはすべて、ASUS RT-AC86UでNORDVPNがホストするOpenVPNサーバーに接続したいときに始まりました。デフォルトではこれは可能ですが、サードパーティのファームウェアAsusWrt-Merlinを含むデフォルトのファームウェアでは、最大5つのOpenVPNクライアントのみを保存できます。
その後、OpenPynに出くわし、すぐにPythonを学び、AsusWrt-Merlinのサポートを可能にしました。 OpenPynは、AsusWrt-MerlinでENTWARE-NG-3Xで実行できるPython3スクリプトです。 OpenPynの主な機能は、それが最も忙しく、最も低いレイテンシーOpenVPNサーバーに自動的に接続することです。 NVRAM OpenPynのAsusWrt-Merlinのサポートの書き込みは、Entware-NG-3X対応のASUSルーターのNVRAMに、最も忙しくて最低レイテンシーOpenVPNサーバーを保存することができます。
今、私は多かれ少なかれ自分が望んだことを達成していましたが、これは私に最後の闘争を残し、ASUSルーターへのSSH接続を開き、国、荷重のしきい値、サーバータイプ、および各サーバーに送信されるPingの数などの目的の引数をOpenPynに供給しなければなりませんでした。私のコンピューターの代わりに携帯電話でそれを行う能力があると、これがずっと簡単になり、それがJuicesshを発見することにつながると思いました。
Juicesshはプラグインの使用をサポートしているため、この素晴らしいアプリを作成できました。このアプリはAndroidで実行され、SSHサーバーが実行されているデバイスへの接続を確立し、その後、OpenPynコマンドをリモートデバイスに送信できます。
注:このプロジェクトは私の最初のAndroidプロジェクトです。そのため、これに関係なく、すべての最高のコーディングプラクティスに従うことはない場合があります。これに関係なく、このアプリを同様のベースのAndroidアプリ、特にGoogleマップベースのAndroidアプリに取り組む他の開発者にとってインスピレーションのソースにすることをお約束します。
使いやすい設定でOpenPynで利用可能なほとんどの議論をサポートしています
OpenPynでロケーションベースのフィルタリングを使用できます
マップビューは、nordvpnによってサポートされているすべての国のマーカーを表示します
マップビュー内の国を隠すことができます
マップビューで国を主演させることができます
共有設定に保存されているAPIキーは暗号化されています( "AES/GCM/NOPADDING")
アプリの開始時には、最も近い国を決定するためにスマートロケーションを使用します
ジオロケーションAPIを使用して、現在のパブリックIPアドレスに基づいて現在の場所を決定します
いくつかの重要な機能がありませんか?
多くのコンポーネントがこのアプリを機能させます。ここでは基本のいくつかをカバーします。基本的にアプリの起動時に、マップは非同期にロードされ、APK内のアセットリソースフォルダーにあるMBTILEファイル(SQLiteデータベース)がロードされ、メモリに保存されて読み取られます。 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はサポートされているすべての国を照会するために呼び出され、サーバータイプなどの設定に基づいてフィルタリングがここで行われます。マーカーはすべての国(マーカーはマップ上に配置されていません)が生成されます(すべてのタイル(512x512 WebP画像)は、MBTILEファイルによって最小ZOOMスケールのために事前にロードされます。現在の場所は、クライアントのパブリックIPアドレスに基づいて検出されます。マップは、この場所に最も近いマーカーにアニメーション化されます。アニメーションが完了した後、位置がマップの可視境界内にある「怠zy」マーカーのみが表示されます(マーカーが初めて表示されるとマップに配置されます)。
注:このリモートデバイスにSSHサーバーが実行され、Juicesshで接続されて構成され、色付きのフローティングアクションボタン(FAB)がクリックされる前にこのアプリのアプリツールバーで選択されている限り、複数のリモートデバイスでこのフローを使用できます。





パブリックベータは誰にでも開かれています。
OpenPynの私のtestブランチを使用してください。
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.2Android用のSDKをマッピングします
Mystorage.ktブログ投稿に触発され、SharedPreference:AndroidのAndroidのArrayListの保存と取得。
PrintArray.ktは、Github Repo、PrintArrayに触発され、Tobibur Rahman。
SecurityManager.javaは、ブログ投稿に触発され、Nikita OgorodnikovによるEdittextPreferenceの安全なバージョンを作成しました。
問題を提出して、フィードバックをお気軽に送ってください。バグレポート、機能リクエスト、パッチ、およびウェルウィッシュはいつでも大歓迎です。
注:プルリクエストは大歓迎です。大きな変更については、最初に問題を提出して、変更したいことを議論してください。
このアプリは、いくつかのオープンソースプロジェクトから(変更された)コードを使用します。
箱について
sqlite-ndk
Androidマップ拡張機能
マップutils
Android GoogleマップAPI V2アドオン
GoogleはAndroid APIユーティリティライブラリをマッピングします
チェック可能なフローティングボタン
注:Android Asset ResourceのRead SQLiteデータベースの著者であるYesyに感謝します
このプロジェクトを可能にし、痛みを伴わなかったSonelliに感謝します。 SQLite-NDKの著者であるKrystian Bigajに感謝します。