Add VPN session monitoring service

This commit is contained in:
ImBenji
2025-08-05 17:25:46 +01:00
parent fe12e5cc37
commit 78c6294851
2 changed files with 61 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
import 'dart:isolate';
import 'dart:math';
import 'package:waylume_server/services/vpn_session_service.dart';
void initVpnSessionMonitor() {
// Run this on a separate thread
Isolate.spawn((_) async {
// To avoid server deadlock, add random delay
await Future.delayed(Duration(seconds: Random().nextInt(10)));
print('VPN Session Monitor started');
while (true) {
try {
await VpnSessionService.detectSessions();
} catch (e) {
print('Error in VPN session monitor: $e');
}
// Check for sessions every 60 seconds
await Future.delayed(Duration(seconds: 60));
}
}, null);
}

View File

@@ -0,0 +1,35 @@
import 'package:supabase/supabase.dart';
import 'package:waylume_server/config/supabase_config.dart';
class VpnSessionService {
/// Detects existing VPN sessions for this server and prints their IDs
static Future<void> detectSessions() async {
try {
final serverId = fromEnivronment('SERVER_ID');
if (serverId == null) {
print('ERROR: SERVER_ID environment variable not set');
return;
}
// Get all sessions for this server
final sessions = await SUPABASE_CLIENT
.from('vpn_sessions')
.select('id')
.eq('server_id', serverId);
if (sessions.isEmpty) {
print('No VPN sessions found for server: $serverId');
} else {
print('Found ${sessions.length} VPN sessions for server: $serverId');
for (final session in sessions) {
print('Session ID: ${session['id']}');
}
}
} catch (e) {
print('Error detecting sessions: $e');
}
}
}