39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
# 概要
|
|
アプリ名: DummyVPN
|
|
ターゲットAPIレベル: 33 (Android 13)
|
|
言語: Kotlin
|
|
UIフレームワーク: Jetpack Compose
|
|
|
|
DummyVPNは、実際にリモートのVPNサーバーと接続するのではなく、アプリで受けたパケットをただインターネットに中継するVPNアプリである。
|
|
そのためWi-Fiやモバイルネットワークへのパケット転送のみを行う。
|
|
|
|
# 画面一覧
|
|
## メイン画面
|
|
シンプルかつモダンなデザインにする。まぶしい色は使わない(白は例外)。
|
|
|
|
### VPNのオンオフボタン
|
|
ボタンのサイズはなるべく大きく分かりやすいようにする。
|
|
VPNが有効の場合は「ON」、無効の場合は「OFF」と表示する。
|
|
ONの場合はボタンの色を変えて、視覚的に分かりやすくする。
|
|
|
|
# 機能一覧
|
|
## VPN機能
|
|
メインの機能。概要の通り、すべてのパケットを通常のネットワークに転送する。何も制御しない。
|
|
VPNはすべてのアプリに適用する。
|
|
|
|
## 通知での操作機能
|
|
VPNが有効の場合は、OSに通知を表示して動作している旨を表示する。
|
|
また、「停止」ボタンを設け、通知から本アプリのVPN機能を停止できるようにする。
|
|
|
|
# 動作
|
|
バックグラウンドサービスを使用して、アプリを離れても動作できるようにする。
|
|
|
|
# コーディングの注意事項
|
|
- 権限が必要な機能は、requestPermissionを使用してアプリの起動時にユーザーに権限付与のリクエストをする。
|
|
- テストは作成しない。
|
|
|
|
# 技術的な事項
|
|
- パケットのパススルーはtun2socksを使用する。
|
|
そのためローカルにSocksプロキシを作成する。
|
|
VPN開始時にSocksプロキシも起動し、停止時にプロキシも停止する。
|