mirror of
				https://github.com/2dust/v2rayN.git
				synced 2025-10-31 04:22:51 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "514dce960a831b77f0792181000ea41913a45d6a" and "41c406b84d4bda3e2fd2fc0f827bd420dbc20e7c" have entirely different histories.
		
	
	
		
			514dce960a
			...
			41c406b84d
		
	
		
					 7 changed files with 132 additions and 140 deletions
				
			
		|  | @ -1,7 +1,7 @@ | ||||||
| <Project> | <Project> | ||||||
| 
 | 
 | ||||||
|     <PropertyGroup> |     <PropertyGroup> | ||||||
|         <Version>7.12.0</Version> |         <Version>7.11.3</Version> | ||||||
|     </PropertyGroup> |     </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|     <PropertyGroup> |     <PropertyGroup> | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ 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; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -10,6 +10,7 @@ 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) | ||||||
|  | @ -28,6 +29,8 @@ 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"); | ||||||
|  | @ -84,6 +87,13 @@ 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() | ||||||
|     { |     { | ||||||
|  | @ -92,15 +102,23 @@ 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"); | ||||||
| 
 | 
 | ||||||
|         await Cli.Wrap(shFilePath) |             var result = 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) | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -238,8 +238,6 @@ 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 | ||||||
|  | @ -250,17 +248,7 @@ public class CoreHandler | ||||||
|             return await CoreAdminHandler.Instance.RunProcessAsLinuxSudo(fileName, coreInfo, configPath); |             return await CoreAdminHandler.Instance.RunProcessAsLinuxSudo(fileName, coreInfo, configPath); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|             return await RunProcessNormal(fileName, coreInfo, configPath, displayLog); |         try | ||||||
|         } |  | ||||||
|         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() | ||||||
|             { |             { | ||||||
|  | @ -303,7 +291,7 @@ public class CoreHandler | ||||||
|                 proc.BeginErrorReadLine(); |                 proc.BeginErrorReadLine(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|         await Task.Delay(100); |             await Task.Delay(500); | ||||||
|             AppHandler.Instance.AddProcess(proc.Handle); |             AppHandler.Instance.AddProcess(proc.Handle); | ||||||
|             if (proc is null or { HasExited: true }) |             if (proc is null or { HasExited: true }) | ||||||
|             { |             { | ||||||
|  | @ -311,6 +299,13 @@ public class CoreHandler | ||||||
|             } |             } | ||||||
|             return proc; |             return proc; | ||||||
|         } |         } | ||||||
|  |         catch (Exception ex) | ||||||
|  |         { | ||||||
|  |             Logging.SaveLog(_tag, ex); | ||||||
|  |             UpdateFunc(mayNeedSudo, ex.Message); | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     #endregion Process |     #endregion Process | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -18,9 +18,6 @@ | ||||||
|     <UserControl.Resources> |     <UserControl.Resources> | ||||||
|         <BooleanToVisibilityConverter x:Key="BoolToVisConverter" /> |         <BooleanToVisibilityConverter x:Key="BoolToVisConverter" /> | ||||||
|         <conv:DelayColorConverter x:Key="DelayColorConverter" /> |         <conv:DelayColorConverter x:Key="DelayColorConverter" /> | ||||||
|         <Style x:Key="AccessibleMyChipListBoxItem" TargetType="ListBoxItem" BasedOn="{StaticResource MyChipListBoxItem}"> |  | ||||||
|             <Setter Property="AutomationProperties.Name" Value="{Binding Remarks}" /> |  | ||||||
|         </Style> |  | ||||||
|     </UserControl.Resources> |     </UserControl.Resources> | ||||||
|     <Grid> |     <Grid> | ||||||
|         <DockPanel> |         <DockPanel> | ||||||
|  | @ -29,9 +26,8 @@ | ||||||
|                     x:Name="lstGroup" |                     x:Name="lstGroup" | ||||||
|                     MaxHeight="200" |                     MaxHeight="200" | ||||||
|                     FontSize="{DynamicResource StdFontSize}" |                     FontSize="{DynamicResource StdFontSize}" | ||||||
|                     ItemContainerStyle="{StaticResource AccessibleMyChipListBoxItem}" |                     ItemContainerStyle="{StaticResource MyChipListBoxItem}" | ||||||
|                     Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}" |                     Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}"> | ||||||
|                     AutomationProperties.Name="{x:Static resx:ResUI.menuSubscription}"> |  | ||||||
|                     <ListBox.ItemTemplate> |                     <ListBox.ItemTemplate> | ||||||
|                         <DataTemplate> |                         <DataTemplate> | ||||||
|                             <TextBlock Text="{Binding Remarks}" /> |                             <TextBlock Text="{Binding Remarks}" /> | ||||||
|  |  | ||||||
|  | @ -92,13 +92,7 @@ | ||||||
|                         AutomationProperties.Name="{x:Static resx:ResUI.menuRouting}" |                         AutomationProperties.Name="{x:Static resx:ResUI.menuRouting}" | ||||||
|                         DisplayMemberPath="Remarks" |                         DisplayMemberPath="Remarks" | ||||||
|                         FontSize="{DynamicResource StdFontSize}" |                         FontSize="{DynamicResource StdFontSize}" | ||||||
|                         Style="{StaticResource MaterialDesignFloatingHintComboBox}"> |                         Style="{StaticResource MaterialDesignFloatingHintComboBox}" /> | ||||||
|                         <ComboBox.ItemContainerStyle> |  | ||||||
|                             <Style TargetType="ComboBoxItem"> |  | ||||||
|                                 <Setter Property="AutomationProperties.Name" Value="{Binding Remarks}" /> |  | ||||||
|                             </Style> |  | ||||||
|                         </ComboBox.ItemContainerStyle> |  | ||||||
|                     </ComboBox> |  | ||||||
|                 </StackPanel> |                 </StackPanel> | ||||||
| 
 | 
 | ||||||
|                 <StackPanel Margin="{StaticResource MarginLeftRight8}" VerticalAlignment="Center"> |                 <StackPanel Margin="{StaticResource MarginLeftRight8}" VerticalAlignment="Center"> | ||||||
|  | @ -190,13 +184,7 @@ | ||||||
|                                     AutomationProperties.Name="{x:Static resx:ResUI.menuRouting}" |                                     AutomationProperties.Name="{x:Static resx:ResUI.menuRouting}" | ||||||
|                                     DisplayMemberPath="Remarks" |                                     DisplayMemberPath="Remarks" | ||||||
|                                     FontSize="{DynamicResource StdFontSize}" |                                     FontSize="{DynamicResource StdFontSize}" | ||||||
|                                     Style="{StaticResource MaterialDesignFilledComboBox}"> |                                     Style="{StaticResource MaterialDesignFilledComboBox}" /> | ||||||
|                                     <ComboBox.ItemContainerStyle> |  | ||||||
|                                         <Style TargetType="ComboBoxItem"> |  | ||||||
|                                             <Setter Property="AutomationProperties.Name" Value="{Binding Remarks}" /> |  | ||||||
|                                         </Style> |  | ||||||
|                                     </ComboBox.ItemContainerStyle> |  | ||||||
|                                 </ComboBox> |  | ||||||
|                             </DockPanel> |                             </DockPanel> | ||||||
|                         </MenuItem.Header> |                         </MenuItem.Header> | ||||||
|                     </MenuItem> |                     </MenuItem> | ||||||
|  | @ -210,13 +198,7 @@ | ||||||
|                                     AutomationProperties.Name="{x:Static resx:ResUI.menuServers}" |                                     AutomationProperties.Name="{x:Static resx:ResUI.menuServers}" | ||||||
|                                     DisplayMemberPath="Text" |                                     DisplayMemberPath="Text" | ||||||
|                                     FontSize="{DynamicResource StdFontSize}" |                                     FontSize="{DynamicResource StdFontSize}" | ||||||
|                                     Style="{StaticResource MaterialDesignFilledComboBox}"> |                                     Style="{StaticResource MaterialDesignFilledComboBox}" /> | ||||||
|                                     <ComboBox.ItemContainerStyle> |  | ||||||
|                                         <Style TargetType="ComboBoxItem"> |  | ||||||
|                                             <Setter Property="AutomationProperties.Name" Value="{Binding Text}" /> |  | ||||||
|                                         </Style> |  | ||||||
|                                     </ComboBox.ItemContainerStyle> |  | ||||||
|                                 </ComboBox> |  | ||||||
|                             </DockPanel> |                             </DockPanel> | ||||||
|                         </MenuItem.Header> |                         </MenuItem.Header> | ||||||
|                     </MenuItem> |                     </MenuItem> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue