From 24418ee37f7276a02cbb39282e6a8282906402e5 Mon Sep 17 00:00:00 2001
From: snltty <1069410172@qq.com>
Date: Sun, 11 May 2025 18:26:11 +0800
Subject: [PATCH] =?UTF-8?q?=E9=98=B2=E7=81=AB=E5=A2=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/dotnet.yml | 2 +-
src/linker.libs/Helper.cs | 13 +++++++++++--
src/linker.messenger.signin/SignInClientState.cs | 14 ++++++++------
src/linker.messenger.store.file/RunningConfig.cs | 1 +
src/linker.messenger.store.file/Storefactory.cs | 13 ++++++-------
src/linker.messenger.tuntap/TuntapTransfer.cs | 5 -----
src/linker.tun/LanSnat.cs | 7 ++++++-
src/linker.tun/LinkerTunDeviceAdapter.cs | 5 +++--
src/linker/linker.csproj | 5 +++--
version.txt | 7 ++++---
10 files changed, 43 insertions(+), 29 deletions(-)
diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index bd5d3e54..95f1bd67 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -37,7 +37,7 @@ jobs:
release_name: v1.7.9.${{ steps.date.outputs.today }}
draft: false
prerelease: false
- body: "1. 一些累计更新\r\n2. 优化安卓APP\r\n3. 新增防火墙,用于网卡、端口转发、和socks5\r\n4. 检测密钥是否正确\r\n5. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它"
+ body: "1. 一些累计更新\r\n2. 优化安卓APP\r\n3. 新增防火墙,用于网卡、端口转发、和socks5\r\n4. 优化重启清理数据,优化了网卡自启动问题\r\n5. 检测密钥是否正确\r\n6. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它"
- name: publish projects
run: ./publish.bat "C:\\Android\\android-sdk"
- name: upload-win-x86-oss
diff --git a/src/linker.libs/Helper.cs b/src/linker.libs/Helper.cs
index ec7f58b9..f9460abb 100644
--- a/src/linker.libs/Helper.cs
+++ b/src/linker.libs/Helper.cs
@@ -25,10 +25,19 @@ namespace linker.libs
public static async Task Await()
{
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
- AppDomain.CurrentDomain.ProcessExit += (sender, e) => cancellationTokenSource.Cancel();
- Console.CancelKeyPress += (sender, e) => cancellationTokenSource.Cancel();
+
+ AppDomain.CurrentDomain.ProcessExit += (sender, e) => Exit(cancellationTokenSource);
+ Console.CancelKeyPress += (sender, e) => Exit(cancellationTokenSource);
await Task.Delay(-1, cancellationTokenSource.Token).ConfigureAwait(false);
}
+ private static void Exit(CancellationTokenSource cancellationTokenSource)
+ {
+ if(cancellationTokenSource.IsCancellationRequested == false)
+ {
+ cancellationTokenSource.Cancel();
+ AppExit(0);
+ }
+ }
private delegate bool ConsoleCtrlDelegate(int ctrlType);
private static ConsoleCtrlDelegate handler;
diff --git a/src/linker.messenger.signin/SignInClientState.cs b/src/linker.messenger.signin/SignInClientState.cs
index e7adb4b7..5f7f73e2 100644
--- a/src/linker.messenger.signin/SignInClientState.cs
+++ b/src/linker.messenger.signin/SignInClientState.cs
@@ -1,4 +1,5 @@
-using System.Net;
+using linker.libs;
+using System.Net;
using System.Text.Json.Serialization;
namespace linker.messenger.signin
{
@@ -10,11 +11,12 @@ namespace linker.messenger.signin
public SignInClientState()
{
- if (OperatingSystem.IsAndroid() == false)
- {
- AppDomain.CurrentDomain.ProcessExit += (s, e) => Disponse();
- Console.CancelKeyPress += (s, e) => Disponse();
- }
+ Helper.OnAppExit += Helper_OnAppExit;
+ }
+
+ private void Helper_OnAppExit(object sender, EventArgs e)
+ {
+ Disponse();
}
///
diff --git a/src/linker.messenger.store.file/RunningConfig.cs b/src/linker.messenger.store.file/RunningConfig.cs
index dc93bafd..1bb5a3e5 100644
--- a/src/linker.messenger.store.file/RunningConfig.cs
+++ b/src/linker.messenger.store.file/RunningConfig.cs
@@ -33,6 +33,7 @@ namespace linker.messenger.store.file
private void Helper_OnAppExit(object sender, EventArgs e)
{
Save();
+ dBfactory.Dispose();
}
private void Load()
diff --git a/src/linker.messenger.store.file/Storefactory.cs b/src/linker.messenger.store.file/Storefactory.cs
index 0c5769c9..6dae49e3 100644
--- a/src/linker.messenger.store.file/Storefactory.cs
+++ b/src/linker.messenger.store.file/Storefactory.cs
@@ -4,7 +4,6 @@ using linker.libs.timer;
using linker.tunnel.connection;
using LiteDB;
using System.Net;
-using System.Runtime.ExceptionServices;
namespace linker.messenger.store.file
{
@@ -47,12 +46,6 @@ namespace linker.messenger.store.file
//让服务自动重启
Helper.AppExit(1);
}
-
- if (OperatingSystem.IsAndroid() == false)
- {
- AppDomain.CurrentDomain.ProcessExit += (s, e) => { database.Checkpoint(); database.Dispose(); };
- Console.CancelKeyPress += (s, e) => { database.Checkpoint(); database.Dispose(); };
- }
TimerHelper.SetIntervalLong(database.Checkpoint, 3000);
}
@@ -60,6 +53,12 @@ namespace linker.messenger.store.file
{
return database.GetCollection(name);
}
+
+ public void Dispose()
+ {
+ database.Checkpoint();
+ database.Dispose();
+ }
}
}
\ No newline at end of file
diff --git a/src/linker.messenger.tuntap/TuntapTransfer.cs b/src/linker.messenger.tuntap/TuntapTransfer.cs
index a40a559f..588fdb7f 100644
--- a/src/linker.messenger.tuntap/TuntapTransfer.cs
+++ b/src/linker.messenger.tuntap/TuntapTransfer.cs
@@ -29,11 +29,6 @@ namespace linker.messenger.tuntap
this.linkerTunDeviceAdapter = linkerTunDeviceAdapter;
linkerTunDeviceAdapter.AddHooks(new List { tuntapFirewall });
Helper.OnAppExit += Helper_OnAppExit;
- if (OperatingSystem.IsAndroid() == false)
- {
- AppDomain.CurrentDomain.ProcessExit += (s, e) => Shutdown();
- Console.CancelKeyPress += (s, e) => Shutdown();
- }
}
private void Helper_OnAppExit(object sender, EventArgs e)
diff --git a/src/linker.tun/LanSnat.cs b/src/linker.tun/LanSnat.cs
index 5630e912..deb493ab 100644
--- a/src/linker.tun/LanSnat.cs
+++ b/src/linker.tun/LanSnat.cs
@@ -16,8 +16,13 @@ namespace linker.tun
public LanSnat()
{
-
}
+
+ private void Helper_OnAppExit(object sender, EventArgs e)
+ {
+ Shutdown();
+ }
+
public void Setup(IPAddress address, byte prefixLength, LinkerTunAppNatItemInfo[] items, ref string error)
{
if (OperatingSystem.IsWindows() == false) return;
diff --git a/src/linker.tun/LinkerTunDeviceAdapter.cs b/src/linker.tun/LinkerTunDeviceAdapter.cs
index de7f4851..881033d7 100644
--- a/src/linker.tun/LinkerTunDeviceAdapter.cs
+++ b/src/linker.tun/LinkerTunDeviceAdapter.cs
@@ -156,6 +156,7 @@ namespace linker.tun
cancellationTokenSource?.Cancel();
linkerTunDevice.Shutdown();
linkerTunDevice.RemoveNat(out string error);
+ lanSnat.Shutdown();
}
catch (Exception)
{
@@ -289,7 +290,7 @@ namespace linker.tun
List list = this.hooks.ToList();
list.AddRange(hooks);
- this.hooks = list.Distinct().OrderBy(c=>c.Level).ToArray();
+ this.hooks = list.Distinct().OrderBy(c => c.Level).ToArray();
}
private void Read()
@@ -334,7 +335,7 @@ namespace linker.tun
///
///
///
- public bool Write(string srcId,ReadOnlyMemory buffer)
+ public bool Write(string srcId, ReadOnlyMemory buffer)
{
if (linkerTunDevice == null || Status != LinkerTunDeviceStatus.Running) return false;
diff --git a/src/linker/linker.csproj b/src/linker/linker.csproj
index 4159c132..c17c1ce1 100644
--- a/src/linker/linker.csproj
+++ b/src/linker/linker.csproj
@@ -23,8 +23,9 @@
1. 一些累计更新
2. 优化安卓APP
3. 新增防火墙,用于网卡、端口转发、和socks5
-4. 检测密钥是否正确
-5. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
+4. 优化重启清理数据,优化了网卡自启动问题
+5. 检测密钥是否正确
+6. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
snltty
https://github.com/snltty/linker
https://github.com/snltty/linker
diff --git a/version.txt b/version.txt
index 68f6d826..dff0da21 100644
--- a/version.txt
+++ b/version.txt
@@ -1,7 +1,8 @@
v1.7.9
-2025-05-11 18:02:02
+2025-05-11 18:26:11
1. 一些累计更新
2. 优化安卓APP
3. 新增防火墙,用于网卡、端口转发、和socks5
-4. 检测密钥是否正确
-5. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
\ No newline at end of file
+4. 优化重启清理数据,优化了网卡自启动问题
+5. 检测密钥是否正确
+6. 如果你设备很多,请尝试升级其中一个成功重启后再升级其它
\ No newline at end of file