Optimize and improve code

This commit is contained in:
2dust 2025-04-28 15:16:58 +08:00
parent 41c406b84d
commit 6985328653
3 changed files with 114 additions and 128 deletions

View file

@ -9,7 +9,6 @@ public sealed class AppHandler
private int? _statePort; private int? _statePort;
private int? _statePort2; private int? _statePort2;
private Job? _processJob; private Job? _processJob;
private bool? _isAdministrator;
public static AppHandler Instance => _instance.Value; public static AppHandler Instance => _instance.Value;
public Config Config => _config; public Config Config => _config;

View file

@ -10,7 +10,6 @@ public class CoreAdminHandler
public static CoreAdminHandler Instance => _instance.Value; public static CoreAdminHandler Instance => _instance.Value;
private Config _config; private Config _config;
private Action<bool, string>? _updateFunc; private Action<bool, string>? _updateFunc;
private const string _tag = "CoreAdminHandler";
private int _linuxSudoPid = -1; private int _linuxSudoPid = -1;
public async Task Init(Config config, Action<bool, string> updateFunc) public async Task Init(Config config, Action<bool, string> updateFunc)
@ -29,8 +28,6 @@ public class CoreAdminHandler
} }
public async Task<Process?> RunProcessAsLinuxSudo(string fileName, CoreInfo coreInfo, string configPath) public async Task<Process?> RunProcessAsLinuxSudo(string fileName, CoreInfo coreInfo, string configPath)
{
try
{ {
var cmdLine = $"{fileName.AppendQuotes()} {string.Format(coreInfo.Arguments, Utils.GetBinConfigPath(configPath).AppendQuotes())}"; var cmdLine = $"{fileName.AppendQuotes()} {string.Format(coreInfo.Arguments, Utils.GetBinConfigPath(configPath).AppendQuotes())}";
var shFilePath = await CreateLinuxShellFile(cmdLine, "run_as_sudo.sh"); var shFilePath = await CreateLinuxShellFile(cmdLine, "run_as_sudo.sh");
@ -87,13 +84,6 @@ public class CoreAdminHandler
return proc; return proc;
} }
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
UpdateFunc(false, ex.Message);
return null;
}
}
public async Task KillProcessAsLinuxSudo() public async Task KillProcessAsLinuxSudo()
{ {
@ -102,23 +92,15 @@ public class CoreAdminHandler
return; return;
} }
try
{
var cmdLine = $"pkill -P {_linuxSudoPid} ; kill {_linuxSudoPid}"; var cmdLine = $"pkill -P {_linuxSudoPid} ; kill {_linuxSudoPid}";
var shFilePath = await CreateLinuxShellFile(cmdLine, "kill_as_sudo.sh"); var shFilePath = await CreateLinuxShellFile(cmdLine, "kill_as_sudo.sh");
var result = await Cli.Wrap(shFilePath) await Cli.Wrap(shFilePath)
.WithStandardInputPipe(PipeSource.FromString(AppHandler.Instance.LinuxSudoPwd)) .WithStandardInputPipe(PipeSource.FromString(AppHandler.Instance.LinuxSudoPwd))
.ExecuteAsync(); .ExecuteAsync();
_linuxSudoPid = -1; _linuxSudoPid = -1;
} }
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
UpdateFunc(false, ex.Message);
}
}
private async Task<string> CreateLinuxShellFile(string cmdLine, string fileName) private async Task<string> CreateLinuxShellFile(string cmdLine, string fileName)
{ {

View file

@ -238,6 +238,8 @@ public class CoreHandler
return null; return null;
} }
try
{
if (mayNeedSudo if (mayNeedSudo
&& _config.TunModeItem.EnableTun && _config.TunModeItem.EnableTun
&& coreInfo.CoreType == ECoreType.sing_box && coreInfo.CoreType == ECoreType.sing_box
@ -248,7 +250,17 @@ public class CoreHandler
return await CoreAdminHandler.Instance.RunProcessAsLinuxSudo(fileName, coreInfo, configPath); return await CoreAdminHandler.Instance.RunProcessAsLinuxSudo(fileName, coreInfo, configPath);
} }
try return await RunProcessNormal(fileName, coreInfo, configPath, displayLog);
}
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
UpdateFunc(mayNeedSudo, ex.Message);
return null;
}
}
private async Task<Process?> RunProcessNormal(string fileName, CoreInfo? coreInfo, string configPath, bool displayLog)
{ {
Process proc = new() Process proc = new()
{ {
@ -291,7 +303,7 @@ public class CoreHandler
proc.BeginErrorReadLine(); proc.BeginErrorReadLine();
} }
await Task.Delay(500); await Task.Delay(100);
AppHandler.Instance.AddProcess(proc.Handle); AppHandler.Instance.AddProcess(proc.Handle);
if (proc is null or { HasExited: true }) if (proc is null or { HasExited: true })
{ {
@ -299,13 +311,6 @@ public class CoreHandler
} }
return proc; return proc;
} }
catch (Exception ex)
{
Logging.SaveLog(_tag, ex);
UpdateFunc(mayNeedSudo, ex.Message);
return null;
}
}
#endregion Process #endregion Process
} }