|
@@ -20,6 +20,7 @@ class GlobalController extends GetxController {
|
|
|
final List<String> routeModes = ['sys', 'tun'];
|
|
|
|
|
|
var routeModesSelect = "sys".obs;
|
|
|
+ var modesSelect = "rule".obs;
|
|
|
var nodeModes = <NodeMode>[].obs;
|
|
|
var isLoading = false.obs;
|
|
|
var errorMsg = ''.obs;
|
|
@@ -50,31 +51,12 @@ class GlobalController extends GetxController {
|
|
|
await controllers.tray.initTray();
|
|
|
controllers.window.initWindow();
|
|
|
//controllers.protocol.initProtocol();
|
|
|
+ await controllers.config.portDetection();
|
|
|
+ // init clash config
|
|
|
|
|
|
// init config
|
|
|
await controllers.config.initConfig();
|
|
|
await controllers.service.initConfig();
|
|
|
- await initService();
|
|
|
- // final language = controllers.config.config.value.language.split('_');
|
|
|
- //
|
|
|
- // await applyLanguage(Locale(language[0], language[1]));
|
|
|
-
|
|
|
- // await controllers.service.initConfig();
|
|
|
- // // init service
|
|
|
- // await controllers.service.startService();
|
|
|
- // if (controllers.service.serviceStatus.value != RunningState.running) return;
|
|
|
- // // await controllers.service.serviceModeSwitch(true);
|
|
|
- // // init clash core
|
|
|
- //
|
|
|
- // await controllers.service.startClashCore();
|
|
|
- // if (controllers.service.coreStatus.value != RunningState.running) return;
|
|
|
- // await controllers.core.updateVersion();
|
|
|
- // await controllers.global.updateDate();
|
|
|
- //await controllers.service.install();
|
|
|
- initRegularlyUpdate();
|
|
|
- }
|
|
|
-
|
|
|
- Future<void> initService() async {
|
|
|
|
|
|
// init service
|
|
|
await controllers.service.startService();
|
|
@@ -82,9 +64,23 @@ class GlobalController extends GetxController {
|
|
|
// await controllers.service.serviceModeSwitch(true);
|
|
|
// init clash core
|
|
|
|
|
|
- await controllers.service.startClashCore();
|
|
|
+ await controllers.service.initClashCoreConfig();
|
|
|
if (controllers.service.coreStatus.value != RunningState.running) return;
|
|
|
await controllers.core.updateVersion();
|
|
|
+ //initRegularlyUpdate();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Future<void> updateMode(String route) async {
|
|
|
+ if(allowStatusUpdate){
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ modesSelect.value = route;
|
|
|
+ final coreStatus = controllers.service.coreStatus.value;
|
|
|
+ if( coreStatus == RunningState.running){
|
|
|
+ controllers.core.fetchConfigUpdate({'mode': modesSelect.value});
|
|
|
+ }
|
|
|
}
|
|
|
Future<void> updateRoute(String route) async {
|
|
|
if(allowStatusUpdate){
|
|
@@ -100,30 +96,35 @@ class GlobalController extends GetxController {
|
|
|
}
|
|
|
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();
|
|
|
+ //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> updateNode() async {
|
|
|
+ // 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);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // await updateDate();
|
|
|
+ }
|
|
|
+
|
|
|
Future<void> startSysMode() async {
|
|
|
|
|
|
await makeProxy();
|
|
@@ -135,10 +136,8 @@ class GlobalController extends GetxController {
|
|
|
}
|
|
|
if (targetNode != null){
|
|
|
selectNode(targetNode);
|
|
|
- ProxieProxiesItem? targetProxie = await findProxieByName(targetNode.name);
|
|
|
- if (targetProxie != null) {
|
|
|
- handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
- }
|
|
|
+ await swift(targetNode.name);
|
|
|
+
|
|
|
}
|
|
|
//await updateDate();
|
|
|
}
|
|
@@ -152,19 +151,30 @@ class GlobalController extends GetxController {
|
|
|
}
|
|
|
if (targetNode != null){
|
|
|
selectNode(targetNode);
|
|
|
- ProxieProxiesItem? targetProxie = await findProxieByName(targetNode.name);
|
|
|
- if (targetProxie != null) {
|
|
|
- handleSetProxieGroup(targetProxie, targetNode.name);
|
|
|
- }
|
|
|
+ await swift(targetNode.name);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
Future<void> swift(String name) async {
|
|
|
- ProxieProxiesItem? targetProxie = await findProxieByName(name);
|
|
|
- if (targetProxie != null) {
|
|
|
- handleSetProxieGroup(targetProxie, name);
|
|
|
+
|
|
|
+ try{
|
|
|
+ var g = "proxy";
|
|
|
+ if(modesSelect.value == "global")
|
|
|
+ {
|
|
|
+ g = "GLOBAL";
|
|
|
+ }
|
|
|
+ await controllers.core.fetchSetProxieGroup(g, name);
|
|
|
+ await updateDate();
|
|
|
+ final conn = await controllers.core.fetchConnection();
|
|
|
+ for (final it in conn.connections) {
|
|
|
+ if (it.chains.contains(name)) controllers.core.fetchCloseConnections(it.id);
|
|
|
+ }
|
|
|
+ }catch (e) {
|
|
|
+ log.debug(e.toString());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
// Future<ProxieProxiesItem> findProxieByName(String name) async {
|
|
|
// return proxieGroups.firstWhere((proxie) => proxie['name'] == name, orElse: () => null);
|
|
@@ -203,7 +213,6 @@ class GlobalController extends GetxController {
|
|
|
|
|
|
Future<void> systemProxySwitch(bool open) async {
|
|
|
systemProxySwitchIng.value = true;
|
|
|
-
|
|
|
await SystemProxy.instance.set(open ? controllers.core.proxyConfig : SystemProxyConfig());
|
|
|
await controllers.config.setSystemProxy(open);
|
|
|
systemProxySwitchIng.value = false;
|