Add process to routing domains

https://github.com/2dust/v2rayN/issues/8757
This commit is contained in:
2dust 2026-02-05 16:52:48 +08:00
parent fdb733fa72
commit bceebc1661
6 changed files with 19 additions and 11 deletions

View file

@ -1086,7 +1086,19 @@ public class Utils
public static string GetExeName(string name) public static string GetExeName(string name)
{ {
return IsWindows() ? $"{name}.exe" : name; if (name.IsNullOrEmpty() || IsNonWindows())
{
return name;
}
if (name.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
{
return name;
}
else
{
return $"{name}.exe";
}
} }
public static bool IsAdministrator() public static bool IsAdministrator()

View file

@ -277,7 +277,7 @@ public partial class CoreConfigSingboxService
} }
} }
if (_config.TunModeItem.EnableTun && item.Process?.Count > 0) if (item.Process?.Count > 0)
{ {
var ruleProcName = JsonUtils.DeepCopy(rule3); var ruleProcName = JsonUtils.DeepCopy(rule3);
ruleProcName.process_name ??= []; ruleProcName.process_name ??= [];
@ -304,11 +304,7 @@ public partial class CoreConfigSingboxService
} }
// sing-box strictly matches the exe suffix on Windows // sing-box strictly matches the exe suffix on Windows
var procName = process; var procName = Utils.GetExeName(process);
if (Utils.IsWindows() && !procName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
{
procName += ".exe";
}
ruleProcName.process_name.Add(procName); ruleProcName.process_name.Add(procName);
} }

View file

@ -109,7 +109,7 @@ public partial class CoreConfigV2rayService
v2rayConfig.routing.rules.Add(it); v2rayConfig.routing.rules.Add(it);
hasDomainIp = true; hasDomainIp = true;
} }
if (_config.TunModeItem.EnableTun && rule.process?.Count > 0) if (rule.process?.Count > 0)
{ {
var it = JsonUtils.DeepCopy(rule); var it = JsonUtils.DeepCopy(rule);
it.domain = null; it.domain = null;

View file

@ -106,7 +106,7 @@ public class RoutingRuleSettingViewModel : MyReactiveObject
Network = item.Network, Network = item.Network,
Protocols = Utils.List2String(item.Protocol), Protocols = Utils.List2String(item.Protocol),
InboundTags = Utils.List2String(item.InboundTag), InboundTags = Utils.List2String(item.InboundTag),
Domains = Utils.List2String((item.Domain ?? []).Concat(item.Ip ?? []).ToList()), Domains = Utils.List2String((item.Domain ?? []).Concat(item.Ip ?? []).ToList().Concat(item.Process ?? []).ToList()),
Enabled = item.Enabled, Enabled = item.Enabled,
Remarks = item.Remarks, Remarks = item.Remarks,
}; };

View file

@ -248,7 +248,7 @@
<DataGridTextColumn <DataGridTextColumn
Width="*" Width="*"
Binding="{Binding Domains}" Binding="{Binding Domains}"
Header="domain / ip" /> Header="domain / ip / process" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>

View file

@ -333,7 +333,7 @@
<DataGridTextColumn <DataGridTextColumn
Width="*" Width="*"
Binding="{Binding Domains}" Binding="{Binding Domains}"
Header="domain / ip" /> Header="domain / ip / process" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</TabItem> </TabItem>