|
@@ -2,6 +2,7 @@ import 'dart:io';
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:naiyouwl/app/bean/proxie.dart';
|
|
|
+import 'package:naiyouwl/app/component/dialogs.dart';
|
|
|
import 'package:naiyouwl/app/controller/controllers.dart';
|
|
|
import 'package:naiyouwl/app/data/model/NodeMode.dart';
|
|
|
import 'package:naiyouwl/app/network/api_service.dart';
|
|
@@ -16,6 +17,9 @@ class GlobalController extends GetxController {
|
|
|
|
|
|
late BuildContext context;
|
|
|
final List<String> modes = ['rule', 'global'];
|
|
|
+ final List<String> routeModes = ['sys', 'tun'];
|
|
|
+
|
|
|
+ var routeModesSelect = "sys".obs;
|
|
|
var nodeModes = <NodeMode>[].obs;
|
|
|
var isLoading = false.obs;
|
|
|
var errorMsg = ''.obs;
|
|
@@ -55,9 +59,9 @@ class GlobalController extends GetxController {
|
|
|
|
|
|
await controllers.service.initConfig();
|
|
|
// init service
|
|
|
- await controllers.service.startService();
|
|
|
+ await controllers.service.install();
|
|
|
if (controllers.service.serviceStatus.value != RunningState.running) return;
|
|
|
-
|
|
|
+ // await controllers.service.serviceModeSwitch(true);
|
|
|
// init clash core
|
|
|
|
|
|
// await controllers.service.startClashCore();
|
|
@@ -68,16 +72,64 @@ class GlobalController extends GetxController {
|
|
|
initRegularlyUpdate();
|
|
|
}
|
|
|
|
|
|
+ Future<void> updateRoute(String route) async {
|
|
|
+ if(allowStatusUpdate){
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // if(route == "tun"){
|
|
|
+ // final res = await showNormalDialog( context,content: '启用网卡模式需要管理员',title: '提示', cancelText: '取消', enterText: '确认安装');
|
|
|
+ // if (res != true) return;
|
|
|
+ // controllers.service.serviceModeSwitch(true);
|
|
|
+ // }
|
|
|
+ routeModesSelect.value = route;
|
|
|
+ }
|
|
|
Future<void> fetchNodes() async {
|
|
|
nodeModes.value = await ApiService().getNode("/api/client/v4/nodes?vless=1");
|
|
|
+ // await makeProxy();
|
|
|
+ // if(controllers.service.coreStatus.value == RunningState.stoped){
|
|
|
+ // await controllers.service.reloadClashCore();
|
|
|
+ // }
|
|
|
+ // if (controllers.service.coreStatus.value != RunningState.running) return;
|
|
|
+ // await controllers.core.updateVersion();
|
|
|
+ // await updateDate();
|
|
|
+ //
|
|
|
+ // NodeMode? targetNode;
|
|
|
+ // if (selectedNode.value == null) {
|
|
|
+ // targetNode = await findNodeWithMinUsers(nodeModes);
|
|
|
+ // } else {
|
|
|
+ // targetNode = selectedNode.value;
|
|
|
+ // }
|
|
|
+ // if (targetNode != null){
|
|
|
+ // selectNode(targetNode);
|
|
|
+ // ProxieProxiesItem? targetProxie = await findProxieByName(targetNode.name);
|
|
|
+ // if (targetProxie != null) {
|
|
|
+ // handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<void> startSysMode() async {
|
|
|
+
|
|
|
await makeProxy();
|
|
|
- if(controllers.service.coreStatus.value == RunningState.stoped){
|
|
|
- await controllers.service.reloadClashCore();
|
|
|
+ NodeMode? targetNode;
|
|
|
+ if (selectedNode.value == null) {
|
|
|
+ targetNode = await findNodeWithMinUsers(nodeModes);
|
|
|
+ } else {
|
|
|
+ targetNode = selectedNode.value;
|
|
|
+ }
|
|
|
+ if (targetNode != null){
|
|
|
+ selectNode(targetNode);
|
|
|
+ ProxieProxiesItem? targetProxie = await findProxieByName(targetNode.name);
|
|
|
+ if (targetProxie != null) {
|
|
|
+ handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
+ }
|
|
|
}
|
|
|
- if (controllers.service.coreStatus.value != RunningState.running) return;
|
|
|
- await controllers.core.updateVersion();
|
|
|
await updateDate();
|
|
|
-
|
|
|
+ }
|
|
|
+ Future<void> startTunMode() async {
|
|
|
+ await makeProxy();
|
|
|
NodeMode? targetNode;
|
|
|
if (selectedNode.value == null) {
|
|
|
targetNode = await findNodeWithMinUsers(nodeModes);
|
|
@@ -91,8 +143,14 @@ class GlobalController extends GetxController {
|
|
|
handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
}
|
|
|
}
|
|
|
+ await updateDate();
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ Future<void> swift(String name) async {
|
|
|
+ ProxieProxiesItem? targetProxie = await findProxieByName(name);
|
|
|
+ if (targetProxie != null) {
|
|
|
+ handleSetProxieGroup(targetProxie, name);
|
|
|
+ }
|
|
|
}
|
|
|
// Future<ProxieProxiesItem> findProxieByName(String name) async {
|
|
|
// return proxieGroups.firstWhere((proxie) => proxie['name'] == name, orElse: () => null);
|