diff --git a/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs b/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs index 6f19ffc8..9dbc0b85 100644 --- a/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs +++ b/v2rayN/ServiceLib/Handler/SysProxy/ProxySettingOSX.cs @@ -16,9 +16,9 @@ /// private static readonly List LstTypes = ["setwebproxy", "setsecurewebproxy", "setsocksfirewallproxy"]; - public static async Task SetProxy(string host, int port) + public static async Task SetProxy(string host, int port, string exceptions) { - var lstCmd = GetSetCmds(host, port); + var lstCmd = GetSetCmds(host, port, exceptions); await ExecCmd(lstCmd); } @@ -42,7 +42,7 @@ } } - private static List GetSetCmds(string host, int port) + private static List GetSetCmds(string host, int port, string exceptions) { List lstCmd = []; foreach (var interf in LstInterface) @@ -55,6 +55,16 @@ Arguments = [$"-{type}", interf, host, (type.Contains("socks") ? (port - 1) : port).ToString()] }); } + if (exceptions.IsNotEmpty()) + { + List args = [$"-setproxybypassdomains", interf]; + args.AddRange(exceptions.Split(',')); + lstCmd.Add(new CmdItem() + { + Cmd = "networksetup", + Arguments = args + }); + } } return lstCmd; diff --git a/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs b/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs index 06b1b527..3275b6d0 100644 --- a/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs +++ b/v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs @@ -32,7 +32,7 @@ break; case ESysProxyType.ForcedChange when Utils.IsOSX(): - await ProxySettingOSX.SetProxy(Global.Loopback, port); + await ProxySettingOSX.SetProxy(Global.Loopback, port, exceptions); break; case ESysProxyType.ForcedClear when Utils.IsWindows():