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> | ||||
| 
 | ||||
|     <PropertyGroup> | ||||
|         <Version>7.12.0</Version> | ||||
|         <Version>7.11.3</Version> | ||||
|     </PropertyGroup> | ||||
| 
 | ||||
|     <PropertyGroup> | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ public sealed class AppHandler | |||
|     private int? _statePort; | ||||
|     private int? _statePort2; | ||||
|     private Job? _processJob; | ||||
|     private bool? _isAdministrator; | ||||
|     public static AppHandler Instance => _instance.Value; | ||||
|     public Config Config => _config; | ||||
| 
 | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ public class CoreAdminHandler | |||
|     public static CoreAdminHandler Instance => _instance.Value; | ||||
|     private Config _config; | ||||
|     private Action<bool, string>? _updateFunc; | ||||
|     private const string _tag = "CoreAdminHandler"; | ||||
|     private int _linuxSudoPid = -1; | ||||
| 
 | ||||
|     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) | ||||
|     { | ||||
|         try | ||||
|         { | ||||
|             var cmdLine = $"{fileName.AppendQuotes()} {string.Format(coreInfo.Arguments, Utils.GetBinConfigPath(configPath).AppendQuotes())}"; | ||||
|             var shFilePath = await CreateLinuxShellFile(cmdLine, "run_as_sudo.sh"); | ||||
|  | @ -84,6 +87,13 @@ public class CoreAdminHandler | |||
| 
 | ||||
|             return proc; | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             Logging.SaveLog(_tag, ex); | ||||
|             UpdateFunc(false, ex.Message); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public async Task KillProcessAsLinuxSudo() | ||||
|     { | ||||
|  | @ -92,15 +102,23 @@ public class CoreAdminHandler | |||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         try | ||||
|         { | ||||
|             var cmdLine = $"pkill -P {_linuxSudoPid} ; kill {_linuxSudoPid}"; | ||||
|             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)) | ||||
|                 .ExecuteAsync(); | ||||
| 
 | ||||
|             _linuxSudoPid = -1; | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             Logging.SaveLog(_tag, ex); | ||||
|             UpdateFunc(false, ex.Message); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private async Task<string> CreateLinuxShellFile(string cmdLine, string fileName) | ||||
|     { | ||||
|  |  | |||
|  | @ -238,8 +238,6 @@ public class CoreHandler | |||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         try | ||||
|         { | ||||
|         if (mayNeedSudo | ||||
|             && _config.TunModeItem.EnableTun | ||||
|             && coreInfo.CoreType == ECoreType.sing_box | ||||
|  | @ -250,17 +248,7 @@ public class CoreHandler | |||
|             return await CoreAdminHandler.Instance.RunProcessAsLinuxSudo(fileName, coreInfo, configPath); | ||||
|         } | ||||
| 
 | ||||
|             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) | ||||
|         try | ||||
|         { | ||||
|             Process proc = new() | ||||
|             { | ||||
|  | @ -303,7 +291,7 @@ public class CoreHandler | |||
|                 proc.BeginErrorReadLine(); | ||||
|             } | ||||
| 
 | ||||
|         await Task.Delay(100); | ||||
|             await Task.Delay(500); | ||||
|             AppHandler.Instance.AddProcess(proc.Handle); | ||||
|             if (proc is null or { HasExited: true }) | ||||
|             { | ||||
|  | @ -311,6 +299,13 @@ public class CoreHandler | |||
|             } | ||||
|             return proc; | ||||
|         } | ||||
|         catch (Exception ex) | ||||
|         { | ||||
|             Logging.SaveLog(_tag, ex); | ||||
|             UpdateFunc(mayNeedSudo, ex.Message); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     #endregion Process | ||||
| } | ||||
|  |  | |||
|  | @ -18,9 +18,6 @@ | |||
|     <UserControl.Resources> | ||||
|         <BooleanToVisibilityConverter x:Key="BoolToVisConverter" /> | ||||
|         <conv:DelayColorConverter x:Key="DelayColorConverter" /> | ||||
|         <Style x:Key="AccessibleMyChipListBoxItem" TargetType="ListBoxItem" BasedOn="{StaticResource MyChipListBoxItem}"> | ||||
|             <Setter Property="AutomationProperties.Name" Value="{Binding Remarks}" /> | ||||
|         </Style> | ||||
|     </UserControl.Resources> | ||||
|     <Grid> | ||||
|         <DockPanel> | ||||
|  | @ -29,9 +26,8 @@ | |||
|                     x:Name="lstGroup" | ||||
|                     MaxHeight="200" | ||||
|                     FontSize="{DynamicResource StdFontSize}" | ||||
|                     ItemContainerStyle="{StaticResource AccessibleMyChipListBoxItem}" | ||||
|                     Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}" | ||||
|                     AutomationProperties.Name="{x:Static resx:ResUI.menuSubscription}"> | ||||
|                     ItemContainerStyle="{StaticResource MyChipListBoxItem}" | ||||
|                     Style="{StaticResource MaterialDesignChoiceChipPrimaryOutlineListBox}"> | ||||
|                     <ListBox.ItemTemplate> | ||||
|                         <DataTemplate> | ||||
|                             <TextBlock Text="{Binding Remarks}" /> | ||||
|  |  | |||
|  | @ -92,13 +92,7 @@ | |||
|                         AutomationProperties.Name="{x:Static resx:ResUI.menuRouting}" | ||||
|                         DisplayMemberPath="Remarks" | ||||
|                         FontSize="{DynamicResource StdFontSize}" | ||||
|                         Style="{StaticResource MaterialDesignFloatingHintComboBox}"> | ||||
|                         <ComboBox.ItemContainerStyle> | ||||
|                             <Style TargetType="ComboBoxItem"> | ||||
|                                 <Setter Property="AutomationProperties.Name" Value="{Binding Remarks}" /> | ||||
|                             </Style> | ||||
|                         </ComboBox.ItemContainerStyle> | ||||
|                     </ComboBox> | ||||
|                         Style="{StaticResource MaterialDesignFloatingHintComboBox}" /> | ||||
|                 </StackPanel> | ||||
| 
 | ||||
|                 <StackPanel Margin="{StaticResource MarginLeftRight8}" VerticalAlignment="Center"> | ||||
|  | @ -190,13 +184,7 @@ | |||
|                                     AutomationProperties.Name="{x:Static resx:ResUI.menuRouting}" | ||||
|                                     DisplayMemberPath="Remarks" | ||||
|                                     FontSize="{DynamicResource StdFontSize}" | ||||
|                                     Style="{StaticResource MaterialDesignFilledComboBox}"> | ||||
|                                     <ComboBox.ItemContainerStyle> | ||||
|                                         <Style TargetType="ComboBoxItem"> | ||||
|                                             <Setter Property="AutomationProperties.Name" Value="{Binding Remarks}" /> | ||||
|                                         </Style> | ||||
|                                     </ComboBox.ItemContainerStyle> | ||||
|                                 </ComboBox> | ||||
|                                     Style="{StaticResource MaterialDesignFilledComboBox}" /> | ||||
|                             </DockPanel> | ||||
|                         </MenuItem.Header> | ||||
|                     </MenuItem> | ||||
|  | @ -210,13 +198,7 @@ | |||
|                                     AutomationProperties.Name="{x:Static resx:ResUI.menuServers}" | ||||
|                                     DisplayMemberPath="Text" | ||||
|                                     FontSize="{DynamicResource StdFontSize}" | ||||
|                                     Style="{StaticResource MaterialDesignFilledComboBox}"> | ||||
|                                     <ComboBox.ItemContainerStyle> | ||||
|                                         <Style TargetType="ComboBoxItem"> | ||||
|                                             <Setter Property="AutomationProperties.Name" Value="{Binding Text}" /> | ||||
|                                         </Style> | ||||
|                                     </ComboBox.ItemContainerStyle> | ||||
|                                 </ComboBox> | ||||
|                                     Style="{StaticResource MaterialDesignFilledComboBox}" /> | ||||
|                             </DockPanel> | ||||
|                         </MenuItem.Header> | ||||
|                     </MenuItem> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue