MCPcopy Index your code
hub / github.com/Hidden-Node/GooseRelayVPN-AndroidClient

github.com/Hidden-Node/GooseRelayVPN-AndroidClient @v1.0.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.6 ↗ · + Follow
655 symbols 1,909 edges 85 files 161 documented · 25%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

کلاینت اندروید GooseRelayVPN

این مخزن، کلاینت اندروید GooseRelayVPN است که هسته GooseRelay را از طریق Go mobile اجرا می‌کند و رابط کاربری کامل برای مدیریت VPN، پروفایل‌ها، لاگ‌ها و تنظیمات ارائه می‌دهد.

  • پروژه اصلی (هسته): https://github.com/kianmhz/GooseRelayVPN
  • این مخزن: پیاده‌سازی کلاینت اندروید

این اپ چه کاری انجام می‌دهد؟

این اپ یک SOCKS5 محلی روی اندروید ایجاد می‌کند و ترافیک TCP را از معماری GooseRelay عبور می‌دهد:

  1. ترافیک برنامه/مرورگر -> SOCKS5
  2. فریم‌بندی رمزنگاری‌شده GooseRelay (با کلید AES)
  3. عبور HTTPS از مسیر endpointهای گوگل (Apps Script)
  4. سرور VPS شما خروجی واقعی را برقرار می‌کند

این مسیر با VpnService اندروید یکپارچه شده تا ترافیک کامل یا انتخابی از تونل عبور کند.

امکانات اصلی

  • یکپارچه‌سازی VPN اندروید (VpnService + tun2socks)
  • پیکربندی مبتنی بر پروفایل
  • وضعیت و تله‌متری در صفحه Home
  • تب Logs برای عیب‌یابی Android/Core
  • Split Tunneling و Internet Sharing

مدل پیکربندی پروفایل

فیلدهای پروفایل با مدل کلاینت GooseRelay هماهنگ است:

{
  "debug_timing": false,
  "socks_host": "127.0.0.1",
  "socks_port": 1080,
  "google_host": "216.239.38.120",
  "sni": ["www.google.com", "mail.google.com", "accounts.google.com"],
  "script_keys": [
    "REPLACE_WITH_DEPLOYMENT_ID",
    "OPTIONAL_SECOND_DEPLOYMENT_ID"
  ],
  "tunnel_key": "REPLACE_WITH_OUTPUT_OF_scripts_gen-key.sh"
}

نکات: - در UI، script_keys باید خط‌به‌خط وارد شود. - tunnel_key باید با سمت سرور یکی باشد. - فرمت Import/Export در اپ: JSON

جریان راه‌اندازی اصلی (الزامی)

قبل از استفاده از کلاینت اندروید، زیرساخت پروژه اصلی باید آماده باشد:

  1. آماده‌سازی VPS و اجرای goose-server
  2. Deploy کردن apps_script/Code.gs و گرفتن Deployment ID
  3. ساخت کلید با scripts/gen-key.sh
  4. وارد کردن script_keys و tunnel_key در پروفایل اندروید
  5. اتصال در اپ و تنظیم پراکسی برای برنامه/مرورگر (در صورت نیاز)

راهنمای کامل زیرساخت در پروژه اصلی: - https://github.com/kianmhz/GooseRelayVPN

ساخت محلی اندروید

پیش‌نیازها: - Android Studio - JDK 17 - Go 1.22+ - Android SDK / NDK

ساخت AAR (پل Go mobile):

bash android/build_go_mobile.sh

ساخت APK دیباگ:

cd android
./gradlew :app:assembleDebug

انتشار / CI

Workflowهای این مخزن: - .github/workflows/android-ci.yml - .github/workflows/release-manual.yml - .github/workflows/release.yml

Secretهای لازم برای انتشار دستی امضاشده: - ANDROID_KEYSTORE_BASE64 - ANDROID_KEYSTORE_PASSWORD - ANDROID_KEY_ALIAS - ANDROID_KEY_PASSWORD

عیب‌یابی

  • اگر بعد از قطع اتصال، اتصال مجدد با خطای اشغال بودن پورت SOCKS مواجه شد:
  • چند ثانیه صبر کنید و دوباره وصل شوید.
  • مطمئن شوید اپ دیگری از همان پورت استفاده نمی‌کند.
  • اگر اتصال روی حالت آماده‌سازی ماند:
  • script_keys و tunnel_key را بررسی کنید.
  • لاگ‌ها را در تب Logs ببینید.
  • اگر ترافیک عبور نمی‌کند:
  • مجوز VPN اندروید را بررسی کنید.
  • تنظیمات Split Tunnel را بررسی کنید.

Credits

  1. پروژه اصلی:
  2. https://github.com/kianmhz/GooseRelayVPN

  3. پروژه‌ای که ایده پروژه اصلی از آن الهام گرفته شده است:

  4. https://github.com/masterking32/MasterHttpRelayVPN

Extension points exported contracts — how you extend this code

SessionFactory (FuncType)
SessionFactory creates a new tunneled session for the given "host:port" target. The returned session is owned by the car
internal/socks/server.go
ProfileDao (Interface)
(no doc)
android/app/src/main/java/com/gooserelay/gooserelayvpn/data/local/ProfileDao.kt

Core symbols most depended-on inside this repo

Close
called by 59
internal/socks/conn.go
appendLog
called by 50
android/app/src/main/java/com/gooserelay/gooserelayvpn/util/VpnManager.kt
get
called by 45
internal/exit/dnscache.go
shortScriptKey
called by 28
internal/carrier/client.go
New
called by 23
internal/session/session.go
EnqueueTx
called by 23
internal/session/session.go
New
called by 22
internal/carrier/client.go
EncodeBatch
called by 21
internal/frame/crypto.go

Shape

Function 323
Method 231
Struct 50
Class 47
FuncType 2
Interface 1
TypeAlias 1

Languages

Go66%
Kotlin34%
Python1%

Modules by API surface

internal/carrier/client.go48 symbols
internal/exit/exit_timing_test.go33 symbols
bench/harness/main.go30 symbols
android/app/src/main/java/com/gooserelay/gooserelayvpn/service/GooseRelayVpnService.kt30 symbols
internal/exit/exit.go26 symbols
mobile/mobile.go21 symbols
internal/session/session.go20 symbols
android/app/src/main/java/com/gooserelay/gooserelayvpn/util/VpnManager.kt20 symbols
android/app/src/main/java/com/gooserelay/gooserelayvpn/ui/logs/LogsScreen.kt18 symbols
internal/frame/crypto_test.go16 symbols
internal/carrier/client_test.go16 symbols
internal/carrier/fronting.go14 symbols

For agents

$ claude mcp add GooseRelayVPN-AndroidClient \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact