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