Skip to content

Repository files navigation

Disruptor Proxy

DisruptorProxy/Core

Source of Disruptor Proxy, a proxy client for Windows, Linux, macOS, and Android built on Xray-core.

Platform License

This repository is the source, where releases are built, and where they are published - grab a build from Releases. Guides live on the Wiki.

Stack

  • Frontend: AzerothJS (.azeroth components, fine-grained reactivity) + Tailwind CSS, bundled with Vite.
  • Shell: Tauri 2 - a Rust-backed native window around the web frontend, roughly 10-20x smaller than an Electron equivalent.
  • Proxy core: bundled app-xray (Xray-core), driven via generated JSON configs and Tauri commands (src-tauri/src/lib.rs).
  • Storage: IndexedDB for the server catalogue (src/lib/db/), scales to thousands of rows without a backend.

Local development

npm install
npm run tauri dev

npm run dev alone runs just the frontend in a browser. Tauri-specific APIs no-op outside the desktop shell - fine for UI work, not for anything touching the proxy engine, geo files, or the updater.

Useful scripts

Script Does
npm run dev AzerothJS dev server only (browser, no Tauri shell)
npm run tauri dev / npm run desktop Full desktop app in dev mode
npm run check azeroth check - typechecks and lints the whole frontend in one pass
npm run lint / npm run lint:fix ESLint on its own (including .azeroth files)
npm run build Production frontend build
npm run desktop-build Full production Tauri build (installer)
npm run android / npm run android-apk Android dev on a device/emulator / assemble an APK
npm run fetch-core [-- --target linux-64] Download + checksum-verify the Xray core for a target
npm run tauri icon <path> Regenerate every platform icon from one square source image
npm run release -- <version | patch | minor | major> Bump the version, commit, tag, and push - see Releasing below

Project structure

src/                    frontend (.azeroth components, stores, lib)
  app/                   shell, router, nav, titlebar, tray
  pages/                 one file per route
  features/              feature-grouped components (configs, connection, subscriptions, routing, import)
  components/            shared UI primitives
  stores/                app state (createStore-based, one file per domain)
  lib/                    non-UI logic: db, search/filter, i18n, routing rules, xray config building
  assets/                 logo source files (see the icon script above)
src-tauri/               Rust shell
  src/lib.rs              Tauri commands: xray process lifecycle, geo file downloads, config generation
  tauri.conf.json         app identity, window config, updater endpoint, bundle targets
  icons/                  generated by `tauri icon`; do not hand-edit
scripts/
  release.mjs             version bump + tag + push, see Releasing below

Releasing

Everything happens in this repo: it builds and signs the installer, and it is where users and the auto-updater get it from.

npm run release -- patch     # or: minor, major, or an explicit X.Y.Z
npm run release -- patch --dry-run    # see every step first, changes nothing

What that does, and what happens after:

  1. Bumps package.json, src-tauri/Cargo.toml, and syncs Cargo.lock's own entry; commits and tags (vX.Y.Z); pushes both.
  2. The pushed tag triggers .github/workflows/release.yml: builds and signs, then publishes a draft release on this repo - the Windows installer + its .sig, the .deb, the .apk, and the latest.json the updater polls. Nothing else is bundled (no MSI, AppImage, or macOS build).
  3. Review the draft on GitHub, then publish it manually. A draft is invisible to the updater and to anonymous downloads until you do.

The updater's public key lives in tauri.conf.json; the matching private key is a GitHub Actions secret (TAURI_SIGNING_PRIVATE_KEY) on this repo, never committed. The release is published by the default GITHUB_TOKEN.

License

MIT.

About

Fast, open-source Xray-core GUI client for Windows, Linux, macOS, and Android. VLESS, VMess, Trojan, Shadowsocks, Hysteria2, TUIC and REALITY - with subscriptions, bulk latency testing, and custom routing rules.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages