Files
UUVPN/source/lib/channels/vpn_manager.dart
T
Zeus 1bf69048f3 update ios project
update ios project
2024-07-24 11:51:39 +08:00

115 lines
3.0 KiB
Dart

import 'package:flutter/services.dart';
import 'package:uuvpn/channels/Platform.dart';
import 'package:uuvpn/utils/common_util.dart';
enum VpnStatus {
connected(code: 2),
connecting(code: 1),
reasserting(code: 4),
disconnecting(code: 5),
disconnected(code: 0),
invalid(code: 3);
const VpnStatus({required this.code});
final int code;
}
class VpnManager {
Future<VpnStatus> getStatus() async {
// Native channel
const platform = MethodChannel("com.vpntunnel.vpnzeus/vpn_manager");
if (Platform.isAndroid || Platform.isMacOS) {
bool? result = await platform.invokeMethod("getStatus");
// print("${result}");
return (result ?? false) ? VpnStatus.connected : VpnStatus.disconnected;
}
int result;
try {
// bool xxx = await platform.invokeMethod("getStatus");
// result = xxx ? 1 : 0;
result = await platform.invokeMethod("getStatus");
} on PlatformException catch (e) {
print(e.toString());
rethrow;
}
return VpnStatus.values.firstWhere((e) => e.code == result);
}
Future<DateTime> getConnectedDate() async {
// Native channel
const platform = MethodChannel("com.vpntunnel.vpnzeus/vpn_manager");
double result;
try {
if (Platform.isAndroid || Platform.isMacOS) {
// bool? result = await platform.invokeMethod("getConnectedDate");
return DateTime.fromMillisecondsSinceEpoch((1 * 1000).toInt());
}
result = await platform.invokeMethod("getConnectedDate");
} on PlatformException catch (e) {
print(e.toString());
rethrow;
}
return DateTime.fromMillisecondsSinceEpoch((result * 1000).toInt());
}
Future<bool> toggle() async {
// Native channel
const platform = MethodChannel("com.vpntunnel.vpnzeus/vpn_manager");
bool result = false;
try {
result = await platform.invokeMethod("toggle");
} on PlatformException catch (e) {
print(e.toString());
rethrow;
}
return result;
}
Future<String> getTunnelLog() async {
// Native channel
const platform = MethodChannel("com.vpntunnel.vpnzeus/vpn_manager");
String result;
try {
result = await platform.invokeMethod("getTunnelLog");
} on PlatformException catch (e) {
print(e.toString());
rethrow;
}
return result;
}
Future<String> getTunnelConfiguration() async {
// Native channel
const platform = MethodChannel("com.vpntunnel.vpnzeus/vpn_manager");
String result;
try {
result = await platform.invokeMethod("getTunnelConfiguration");
} on PlatformException catch (e) {
print(e.toString());
rethrow;
}
return result;
}
Future<String> setTunnelConfiguration(String conf) async {
// Native channel
const platform = MethodChannel("com.vpntunnel.vpnzeus/vpn_manager");
String result;
try {
result = await platform.invokeMethod("setTunnelConfiguration", conf);
} on PlatformException catch (e) {
print(e.toString());
rethrow;
}
return result;
}
}