Two-box throttle system + support top-up
- Server: two Xray inbounds (vless-normal / vless-throttled), 4GB threshold, management loop moves users between boxes instead of hard-killing. /session/status returns dynamic vless_path + is_throttled. Support ad callback (ad_type: support) extends session +30min +2GB. No hard quota kill — only 60-min expiry removes sessions. - App: session_timer detects vless_path change in 5s poll, triggers silent reconnect (skipCleanup, skipAdBypass, quickReconnect). New support_button.dart for top-up rewarded ads. hivemind_service uses server vless_path instead of hardcoded constant. vpn_connection: skipAdBypass, quickReconnect, skipCleanup params. - Config: Xray two-inbound template, nginx /tunnel-throttled with limit_rate 187k (1.5 Mbps). Updated AGENTS.md + SERVER_SETUP.md.
This commit is contained in:
1 parent
6825a264a5
commit
efcfe6e706
6 files changed
+282
-63
No files matched your search
@@ -5,6 +5,7 @@ import 'package:revoltvpn/components/sidebar_drawer.dart';
|
||||
import 'package:revoltvpn/components/timer_box.dart';
|
||||
import 'package:revoltvpn/components/speed_box.dart';
|
||||
import 'package:revoltvpn/components/status_bar.dart';
|
||||
import 'package:revoltvpn/components/support_button.dart';
|
||||
|
||||
class MainScreen extends StatelessWidget {
|
||||
const MainScreen({super.key});
|
||||
@@ -47,6 +48,13 @@ class MainScreen extends StatelessWidget {
|
||||
child: const Center(child: TimerBox()),
|
||||
),
|
||||
|
||||
Positioned(
|
||||
top: 175, // <-- CHANGE ME: support button from top
|
||||
left: 0,
|
||||
right: 0,
|
||||
child: const Center(child: SupportButton()),
|
||||
),
|
||||
|
||||
Positioned(
|
||||
top: 250, // <-- CHANGE ME: connect button from top
|
||||
left: 0,
|
||||
|
||||
Reference in new issue
Block a user