Skip to content

feat: add Snell v3–v6 protocol support#446

Open
Minis233 wants to merge 2 commits into
ExclaveNetwork:devfrom
Minis233:pr/snell-support
Open

feat: add Snell v3–v6 protocol support#446
Minis233 wants to merge 2 commits into
ExclaveNetwork:devfrom
Minis233:pr/snell-support

Conversation

@Minis233

Copy link
Copy Markdown

Summary

Add Snell v3–v6 to the Exclave Android client.

Depends on core PR: ExclaveNetwork/exclave-core#33

App changes

  • New profile type TYPE_SNELL = 30 + Room migration 36→37 (idempotent if legacy snellBean column exists)
  • UI: SnellSettingsActivity (version 3–6, obfs, obfs host, v6 mode, reuse)
  • Share link: snell://psk@host:port?version=6&obfs=tls&obfs-host=...&mode=default&reuse=1#name
  • Clash YAML import: type: snell
  • ConfigBuilder → outbound protocol "snell"

Config example

{
  "protocol": "snell",
  "settings": {
    "address": "1.2.3.4",
    "port": 44046,
    "psk": "secret",
    "obfs": "tls",
    "obfsHost": "www.bing.com",
    "version": 6,
    "reuse": true,
    "mode": "default"
  }
}

Notes

  • Protocol implementation lives in exclave-core (proxy/snell), based on SagerNet/sing-snell (same as sing-box testing).
  • Merge core PR first, bump/update the app’s exclave-core dependency, then this PR.
  • Do not enable streamSettings TLS for Snell; use obfs: "tls" for fake TLS.

Test plan

  • Built + real connect with personal fork (core branch + this UI)
  • After core merge: ./run lib core + assemble against released core
  • Add Snell profile in UI (v4 and v6)
  • Import snell:// share link
  • Import Clash type: snell node
  • TCP / UDP smoke test

Minis233 added 2 commits July 10, 2026 15:12
Wire Snell into the Android client: profile UI, share links, Clash
import, ConfigBuilder outbound, Room migration 36→37.

Requires exclave-core with proxy/snell outbound (protocol: "snell").
Supports Snell v3–v6 (v6 modes: default / unshaped / unsafe-raw).
- Version picker 4 / 6 only (label v6 as beta)
- Rename obfs → obfsMode; values none|http|tls (no "off")
- Add userPSK (sing-box extension)
- Hide v4-only / v6-only fields based on selected version
@Minis233

Copy link
Copy Markdown
Author

Synced with core review feedback (ExclaveNetwork/exclave-core#33 (comment)):

  • v4 / v6 only (v6 labeled beta in UI)
  • obfsMode instead of obfs; values none|http|tls
  • userPSK field (sing-box extension)
  • v4-only / v6-only fields shown/hidden by version

Depends on exclave-core#33.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant