Skip to content

feat: add Remnawave HWID device identification support#2091

Open
jeezft wants to merge 1 commit intohiddify:mainfrom
jeezft:feat/remnawave-hwid-support
Open

feat: add Remnawave HWID device identification support#2091
jeezft wants to merge 1 commit intohiddify:mainfrom
jeezft:feat/remnawave-hwid-support

Conversation

@jeezft
Copy link
Copy Markdown

@jeezft jeezft commented Mar 27, 2026

Adds support for Remnawave panel HWID feature for device identification/limiting via subscription request headers.

Headers sent on every subscription fetch:

  • x-hwid — persistent UUID (generated once, stored in SharedPreferences)
  • x-device-os — normalized OS name (Android, iOS, Windows, macOS, Linux)
  • x-ver-os — OS version string
  • x-device-model — device model via device_info_plus

Changes:

  • pubspec.yaml: add device_info_plus ^10.1.0
  • lib/core/app_info/device_info_provider.dart: FutureProvider returning device model per platform
  • lib/core/model/app_info_entity.dart: displayOs getter for normalized OS name
  • lib/core/preferences/general_preferences.dart: hwidProvider (UUID v4, persisted)
  • lib/core/http_client/dio_http_client.dart: extraHeaders param in download() and _options()
  • lib/features/profile/data/profile_parser.dart: pass HWID headers on subscription download

Non-breaking: panels that don't use HWID simply ignore the headers.

Send device identification headers on every subscription fetch to support
Remnawave panel HWID feature for device limiting.

Headers sent:
- x-hwid: persistent UUID (generated once, stored in SharedPreferences)
- x-device-os: normalized OS name (Android, iOS, Windows, macOS, Linux)
- x-ver-os: OS version string
- x-device-model: device model via device_info_plus (Android/iOS/Windows/macOS)

Changes:
- pubspec.yaml: add device_info_plus ^10.1.0
- lib/core/app_info/device_info_provider.dart: new FutureProvider returning device model per platform
- lib/core/model/app_info_entity.dart: add displayOs getter for normalized OS name
- lib/core/preferences/general_preferences.dart: add hwidProvider (UUID v4, persisted)
- lib/core/http_client/dio_http_client.dart: add extraHeaders param to download() and _options()
- lib/features/profile/data/profile_parser.dart: pass HWID headers on subscription download

Ref: https://github.com/remnawave/panel
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