From 5c5f753721e0a3ab558fcf4953028071811edfbc Mon Sep 17 00:00:00 2001 From: noisyfox Date: Sat, 19 Nov 2016 12:43:31 +1100 Subject: [PATCH] Use external agents to set system proxy. This fix the proxy issue on win10 insider preview. --- .../Controller/System/SystemProxy.cs | 6 +- shadowsocks-csharp/Data/sysproxy.exe.gz | Bin 0 -> 50458 bytes shadowsocks-csharp/Data/sysproxy64.exe.gz | Bin 0 -> 57012 bytes .../Properties/Resources.Designer.cs | 66 ++++--- shadowsocks-csharp/Properties/Resources.resx | 6 + .../Util/SystemProxy/INTERNET_OPTION.cs | 42 ---- .../SystemProxy/INTERNET_PER_CONN_OPTION.cs | 115 ----------- .../INTERNET_PER_CONN_OPTION_LIST.cs | 63 ------ .../Util/SystemProxy/NativeMethods.cs | 36 ---- shadowsocks-csharp/Util/SystemProxy/RAS.cs | 148 -------------- .../Util/SystemProxy/Sysproxy.cs | 83 ++++++++ .../Util/SystemProxy/WinINet.cs | 183 ------------------ shadowsocks-csharp/shadowsocks-csharp.csproj | 59 +++--- 13 files changed, 163 insertions(+), 644 deletions(-) create mode 100644 shadowsocks-csharp/Data/sysproxy.exe.gz create mode 100644 shadowsocks-csharp/Data/sysproxy64.exe.gz delete mode 100644 shadowsocks-csharp/Util/SystemProxy/INTERNET_OPTION.cs delete mode 100644 shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION.cs delete mode 100644 shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION_LIST.cs delete mode 100644 shadowsocks-csharp/Util/SystemProxy/NativeMethods.cs delete mode 100644 shadowsocks-csharp/Util/SystemProxy/RAS.cs create mode 100644 shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs delete mode 100644 shadowsocks-csharp/Util/SystemProxy/WinINet.cs diff --git a/shadowsocks-csharp/Controller/System/SystemProxy.cs b/shadowsocks-csharp/Controller/System/SystemProxy.cs index 92da7784..ac342441 100644 --- a/shadowsocks-csharp/Controller/System/SystemProxy.cs +++ b/shadowsocks-csharp/Controller/System/SystemProxy.cs @@ -27,7 +27,7 @@ namespace Shadowsocks.Controller { if (global) { - WinINet.SetIEProxy(true, true, "127.0.0.1:" + config.localPort.ToString(), ""); + Sysproxy.SetIEProxy(true, true, "127.0.0.1:" + config.localPort.ToString(), ""); } else { @@ -36,12 +36,12 @@ namespace Shadowsocks.Controller pacUrl = config.pacUrl; else pacUrl = $"http://127.0.0.1:{config.localPort}/pac?t={GetTimestamp(DateTime.Now)}{pacSrv.PacSecret}"; - WinINet.SetIEProxy(true, false, "", pacUrl); + Sysproxy.SetIEProxy(true, false, "", pacUrl); } } else { - WinINet.SetIEProxy(false, false, "", ""); + Sysproxy.SetIEProxy(false, false, "", ""); } } catch (ProxyException ex) diff --git a/shadowsocks-csharp/Data/sysproxy.exe.gz b/shadowsocks-csharp/Data/sysproxy.exe.gz new file mode 100644 index 0000000000000000000000000000000000000000..6f07960352844ed8e10c4d189ad9bdcccf6efe28 GIT binary patch literal 50458 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 literal 0 HcmV?d00001 diff --git a/shadowsocks-csharp/Data/sysproxy64.exe.gz b/shadowsocks-csharp/Data/sysproxy64.exe.gz new file mode 100644 index 0000000000000000000000000000000000000000..6a2041c1f86ca637fc5d4c388e7356d13de5f952 GIT binary patch literal 57012 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 td@DS<7qY-(;YJp&KPVm}oRD1i^W@;=Q + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] sysproxy_exe { + get { + object obj = ResourceManager.GetObject("sysproxy_exe", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// 查找 System.Byte[] 类型的本地化资源。 + /// + internal static byte[] sysproxy64_exe { + get { + object obj = ResourceManager.GetObject("sysproxy64_exe", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// 查找类似 ! Put user rules line by line in this file. ///! See https://adblockplus.org/en/filter-cheatsheet @@ -227,29 +247,29 @@ namespace Shadowsocks.Properties { } /// - /// 查找类似 # translation for Traditional Chinese - /// - ///Shadowsocks=Shadowsocks - /// - ///# Menu items - /// - ///Enable System Proxy=啟用系統代理 - ///Mode=系統代理模式 - ///PAC=PAC 模式 - ///Global=全局模式 - ///Servers=伺服器 - ///Edit Servers...=編輯伺服器... - ///Statistics Config...=統計配置... - ///Start on Boot=開機啟動 - ///Forward Proxy...=正向代理設置... - ///Allow Clients from LAN=允許來自區域網路的連接 - ///Local PAC=使用本地 PAC - ///Online PAC=使用在線 PAC - ///Edit Local PAC File...=編輯本地 PAC 文件... - ///Update Local PAC from GFWList=從 GFWList 更新本地 PAC - ///Edit User Rule for GFWList...=編輯 GFWList 的用戶規則... - ///Show QRCode...=顯示 QR 碼... - ///Scan QRCode from Screen [字符串的其余部分被截断]"; 的本地化字符串。 + /// 查找类似 # translation for Traditional Chinese + /// + ///Shadowsocks=Shadowsocks + /// + ///# Menu items + /// + ///Enable System Proxy=啟用系統代理 + ///Mode=系統代理模式 + ///PAC=PAC 模式 + ///Global=全局模式 + ///Servers=伺服器 + ///Edit Servers...=編輯伺服器... + ///Statistics Config...=統計配置... + ///Start on Boot=開機啟動 + ///Forward Proxy...=正向代理設置... + ///Allow Clients from LAN=允許來自區域網路的連接 + ///Local PAC=使用本地 PAC + ///Online PAC=使用在線 PAC + ///Edit Local PAC File...=編輯本地 PAC 文件... + ///Update Local PAC from GFWList=從 GFWList 更新本地 PAC + ///Edit User Rule for GFWList...=編輯 GFWList 的用戶規則... + ///Show QRCode...=顯示 QR 碼... + ///S [字符串的其余部分被截断]"; 的本地化字符串。 /// internal static string zh_tw { get { diff --git a/shadowsocks-csharp/Properties/Resources.resx b/shadowsocks-csharp/Properties/Resources.resx index 5e4ca247..eaa37bd3 100755 --- a/shadowsocks-csharp/Properties/Resources.resx +++ b/shadowsocks-csharp/Properties/Resources.resx @@ -157,6 +157,12 @@ ..\Resources\ssw128.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Data\sysproxy64.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Data\sysproxy.exe.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\data\user-rule.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 diff --git a/shadowsocks-csharp/Util/SystemProxy/INTERNET_OPTION.cs b/shadowsocks-csharp/Util/SystemProxy/INTERNET_OPTION.cs deleted file mode 100644 index 169d7ebf..00000000 --- a/shadowsocks-csharp/Util/SystemProxy/INTERNET_OPTION.cs +++ /dev/null @@ -1,42 +0,0 @@ -/****************************** Module Header ******************************\ - Module Name: INTERNET_OPTION.cs - Project: CSWebBrowserWithProxy - Copyright (c) Microsoft Corporation. - - This enum contains 4 WinINet constants used in method InternetQueryOption and - InternetSetOption functions. - Visit http://msdn.microsoft.com/en-us/library/aa385328(VS.85).aspx to get the - whole constants list. - - This source is subject to the Microsoft Public License. - See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL. - All other rights reserved. - - THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -\***************************************************************************/ - -namespace Shadowsocks.Util.SystemProxy -{ - public enum INTERNET_OPTION - { - // Sets or retrieves an INTERNET_PER_CONN_OPTION_LIST structure that specifies - // a list of options for a particular connection. - INTERNET_OPTION_PER_CONNECTION_OPTION = 75, - - // Notify the system that the registry settings have been changed so that - // it verifies the settings on the next call to InternetConnect. - INTERNET_OPTION_SETTINGS_CHANGED = 39, - - // Causes the proxy data to be reread from the registry for a handle. - INTERNET_OPTION_REFRESH = 37, - - // Alerts the current WinInet instance that proxy settings have changed - // and that they must update with the new settings. - // To alert all available WinInet instances, set the Buffer parameter of - // InternetSetOption to NULL and BufferLength to 0 when passing this option. - INTERNET_OPTION_PROXY_SETTINGS_CHANGED = 95 - - } -} diff --git a/shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION.cs b/shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION.cs deleted file mode 100644 index 7a2dbe15..00000000 --- a/shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION.cs +++ /dev/null @@ -1,115 +0,0 @@ -/****************************** Module Header ******************************\ - Module Name: INTERNET_PER_CONN_OPTION.cs - Project: CSWebBrowserWithProxy - Copyright (c) Microsoft Corporation. - - This file defines the struct INTERNET_PER_CONN_OPTION and constants used by it. - The struct INTERNET_PER_CONN_OPTION contains the value of an option that to be - set to internet settings. - Visit http://msdn.microsoft.com/en-us/library/aa385145(VS.85).aspx to get the - detailed description. - - This source is subject to the Microsoft Public License. - See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL. - All other rights reserved. - - THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -\***************************************************************************/ - -using System; -using System.Runtime.InteropServices; - -namespace Shadowsocks.Util.SystemProxy -{ - /// - /// Constants used in INTERNET_PER_CONN_OPTION_OptionUnion struct. - /// - public enum INTERNET_PER_CONN_OptionEnum - { - INTERNET_PER_CONN_FLAGS = 1, - INTERNET_PER_CONN_PROXY_SERVER = 2, - INTERNET_PER_CONN_PROXY_BYPASS = 3, - INTERNET_PER_CONN_AUTOCONFIG_URL = 4, - INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5, - INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL = 6, - INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS = 7, - INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME = 8, - INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL = 9, - INTERNET_PER_CONN_FLAGS_UI = 10 - } - - /// - /// Constants used in INTERNET_PER_CONN_OPTON struct. - /// - [Flags] - public enum INTERNET_OPTION_PER_CONN_FLAGS - { - PROXY_TYPE_DIRECT = 0x00000001, // direct to net - PROXY_TYPE_PROXY = 0x00000002, // via named proxy - PROXY_TYPE_AUTO_PROXY_URL = 0x00000004, // autoproxy URL - PROXY_TYPE_AUTO_DETECT = 0x00000008 // use autoproxy detection - } - - /// - /// Constants used in INTERNET_PER_CONN_OPTON struct. - /// Windows 7 and later: - /// Clients that support Internet Explorer 8 should query the connection type using INTERNET_PER_CONN_FLAGS_UI. - /// If this query fails, then the system is running a previous version of Internet Explorer and the client should - /// query again with INTERNET_PER_CONN_FLAGS. - /// Restore the connection type using INTERNET_PER_CONN_FLAGS regardless of the version of Internet Explorer. - /// XXX: If fails, notify user to upgrade Internet Explorer - /// - [Flags] - public enum INTERNET_OPTION_PER_CONN_FLAGS_UI - { - PROXY_TYPE_DIRECT = 0x00000001, // direct to net - PROXY_TYPE_PROXY = 0x00000002, // via named proxy - PROXY_TYPE_AUTO_PROXY_URL = 0x00000004, // autoproxy URL - PROXY_TYPE_AUTO_DETECT = 0x00000008 // use autoproxy detection - } - - /// - /// Used in INTERNET_PER_CONN_OPTION. - /// When create a instance of OptionUnion, only one filed will be used. - /// The StructLayout and FieldOffset attributes could help to decrease the struct size. - /// - [StructLayout(LayoutKind.Explicit)] - public struct INTERNET_PER_CONN_OPTION_OptionUnion : IDisposable - { - // A value in INTERNET_OPTION_PER_CONN_FLAGS. - [FieldOffset(0)] - public int dwValue; - [FieldOffset(0)] - public System.IntPtr pszValue; - [FieldOffset(0)] - public System.Runtime.InteropServices.ComTypes.FILETIME ftValue; - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private void Dispose(bool disposing) - { - if (disposing) - { - if (pszValue != IntPtr.Zero) - { - Marshal.FreeHGlobal(pszValue); - pszValue = IntPtr.Zero; - } - } - } - } - - [StructLayout(LayoutKind.Sequential)] - public struct INTERNET_PER_CONN_OPTION - { - // A value in INTERNET_PER_CONN_OptionEnum. - public int dwOption; - public INTERNET_PER_CONN_OPTION_OptionUnion Value; - } -} diff --git a/shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION_LIST.cs b/shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION_LIST.cs deleted file mode 100644 index 8541e0b7..00000000 --- a/shadowsocks-csharp/Util/SystemProxy/INTERNET_PER_CONN_OPTION_LIST.cs +++ /dev/null @@ -1,63 +0,0 @@ -/****************************** Module Header ******************************\ - Module Name: INTERNET_PER_CONN_OPTION_LIST.cs - Project: CSWebBrowserWithProxy - Copyright (c) Microsoft Corporation. - - The struct INTERNET_PER_CONN_OPTION contains a list of options that to be - set to internet connection. - Visit http://msdn.microsoft.com/en-us/library/aa385146(VS.85).aspx to get the - detailed description. - - This source is subject to the Microsoft Public License. - See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL. - All other rights reserved. - - THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -\***************************************************************************/ - -using System; -using System.Runtime.InteropServices; - -namespace Shadowsocks.Util.SystemProxy -{ - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - public struct INTERNET_PER_CONN_OPTION_LIST : IDisposable - { - public int Size; - - // The connection to be set. NULL means LAN. - public System.IntPtr Connection; - - public int OptionCount; - public int OptionError; - - // List of INTERNET_PER_CONN_OPTIONs. - public System.IntPtr pOptions; - - public void Dispose() - { - Dispose( true ); - GC.SuppressFinalize( this ); - } - - private void Dispose( bool disposing ) - { - if ( disposing ) - { - if ( Connection != IntPtr.Zero ) - { - Marshal.FreeHGlobal( Connection ); - Connection = IntPtr.Zero; - } - - if ( pOptions != IntPtr.Zero ) - { - Marshal.FreeHGlobal( pOptions ); - pOptions = IntPtr.Zero; - } - } - } - } -} diff --git a/shadowsocks-csharp/Util/SystemProxy/NativeMethods.cs b/shadowsocks-csharp/Util/SystemProxy/NativeMethods.cs deleted file mode 100644 index e5dd0578..00000000 --- a/shadowsocks-csharp/Util/SystemProxy/NativeMethods.cs +++ /dev/null @@ -1,36 +0,0 @@ -/****************************** Module Header ******************************\ - Module Name: NativeMethods.cs - Project: CSWebBrowserWithProxy - Copyright (c) Microsoft Corporation. - - This class is a simple .NET wrapper of wininet.dll. It contains 4 extern - methods in wininet.dll. They are InternetOpen, InternetCloseHandle, - InternetSetOption and InternetQueryOption. - - This source is subject to the Microsoft Public License. - See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL. - All other rights reserved. - - THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -\***************************************************************************/ - -using System; -using System.Runtime.InteropServices; - -namespace Shadowsocks.Util.SystemProxy -{ - internal static class NativeMethods - { - /// - /// Sets an Internet option. - /// - [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] - internal static extern bool InternetSetOption( - IntPtr hInternet, - INTERNET_OPTION dwOption, - IntPtr lpBuffer, - int lpdwBufferLength); - } -} diff --git a/shadowsocks-csharp/Util/SystemProxy/RAS.cs b/shadowsocks-csharp/Util/SystemProxy/RAS.cs deleted file mode 100644 index 19f6c78b..00000000 --- a/shadowsocks-csharp/Util/SystemProxy/RAS.cs +++ /dev/null @@ -1,148 +0,0 @@ -using System.Runtime.InteropServices; - -namespace Shadowsocks.Util.SystemProxy -{ - internal static class RemoteAccessService - { - private enum RasFieldSizeConstants - { - #region original header - - //#if (WINVER >= 0x400) - //#define RAS_MaxEntryName 256 - //#define RAS_MaxDeviceName 128 - //#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber - //#else - //#define RAS_MaxEntryName 20 - //#define RAS_MaxDeviceName 32 - //#define RAS_MaxCallbackNumber 48 - //#endif - - #endregion - - RAS_MaxEntryName = 256, - RAS_MaxPath = 260 - } - - private const int ERROR_SUCCESS = 0; - private const int RASBASE = 600; - private const int ERROR_BUFFER_TOO_SMALL = RASBASE + 3; - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] - private struct RasEntryName - { - #region original header - - //#define RASENTRYNAMEW struct tagRASENTRYNAMEW - //RASENTRYNAMEW - //{ - // DWORD dwSize; - // WCHAR szEntryName[RAS_MaxEntryName + 1]; - // - //#if (WINVER >= 0x500) - // // - // // If this flag is REN_AllUsers then its a - // // system phonebook. - // // - // DWORD dwFlags; - // WCHAR szPhonebookPath[MAX_PATH + 1]; - //#endif - //}; - // - //#define RASENTRYNAMEA struct tagRASENTRYNAMEA - //RASENTRYNAMEA - //{ - // DWORD dwSize; - // CHAR szEntryName[RAS_MaxEntryName + 1]; - // - //#if (WINVER >= 0x500) - // DWORD dwFlags; - // CHAR szPhonebookPath[MAX_PATH + 1]; - //#endif - //}; - - #endregion - - public int dwSize; - - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=(int)RasFieldSizeConstants.RAS_MaxEntryName + 1)] - public string szEntryName; - - public int dwFlags; - - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=(int)RasFieldSizeConstants.RAS_MaxPath + 1)] - public string szPhonebookPath; - } - - [DllImport("rasapi32.dll", CharSet = CharSet.Auto)] - private static extern uint RasEnumEntries( - // reserved, must be NULL - string reserved, - // pointer to full path and file name of phone-book file - string lpszPhonebook, - // buffer to receive phone-book entries - [In, Out] RasEntryName[] lprasentryname, - // size in bytes of buffer - ref int lpcb, - // number of entries written to buffer - out int lpcEntries - ); - - /// - /// Get all entries from RAS - /// - /// - /// - /// 0: success with entries - /// 1: success but no entries found - /// 2: failed - /// - public static uint GetAllConns(ref string[] allConns) - { - int lpNames = 0; - int entryNameSize = 0; - int lpSize = 0; - uint retval = ERROR_SUCCESS; - RasEntryName[] names = null; - - entryNameSize = Marshal.SizeOf(typeof(RasEntryName)); - - // Windows Vista or later: To determine the required buffer size, call RasEnumEntries - // with lprasentryname set to NULL. The variable pointed to by lpcb should be set to zero. - // The function will return the required buffer size in lpcb and an error code of ERROR_BUFFER_TOO_SMALL. - retval = RasEnumEntries(null, null, null, ref lpSize, out lpNames); - - if (retval == ERROR_BUFFER_TOO_SMALL) - { - names = new RasEntryName[lpNames]; - for (int i = 0; i < names.Length; i++) - { - names[i].dwSize = entryNameSize; - } - - retval = RasEnumEntries(null, null, names, ref lpSize, out lpNames); - } - - if (retval == ERROR_SUCCESS) - { - if (lpNames == 0) - { - // no entries found. - return 1; - } - - allConns = new string[names.Length]; - - for (int i = 0; i < names.Length; i++) - { - allConns[i] = names[i].szEntryName; - } - return 0; - } - else - { - return 2; - } - } - } -} \ No newline at end of file diff --git a/shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs b/shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs new file mode 100644 index 00000000..f0353f46 --- /dev/null +++ b/shadowsocks-csharp/Util/SystemProxy/Sysproxy.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Shadowsocks.Controller; +using Shadowsocks.Properties; + +namespace Shadowsocks.Util.SystemProxy +{ + public static class Sysproxy + { + + enum RET_ERRORS : int + { + RET_NO_ERROR = 0, + INVALID_FORMAT = 1, + NO_PERMISSION = 2, + SYSCALL_FAILED = 3, + NO_MEMORY = 4, + INVAILD_OPTION_COUNT = 5, + }; + + static Sysproxy() + { + try + { + FileManager.UncompressFile(Utils.GetTempPath("sysproxy.exe"), + Environment.Is64BitOperatingSystem ? Resources.sysproxy64_exe : Resources.sysproxy_exe); + } + catch (IOException e) + { + Logging.LogUsefulException(e); + } + } + + public static void SetIEProxy(bool enable, bool global, string proxyServer, string pacURL) + { + string arguments; + + if (enable) + { + if (global) + { + arguments = "global " + proxyServer; + } + else + { + arguments = "pac " + pacURL; + } + } + else + { + arguments = "off"; + } + + using (var process = new Process()) + { + // Configure the process using the StartInfo properties. + process.StartInfo.FileName = Utils.GetTempPath("sysproxy.exe"); + process.StartInfo.Arguments = arguments; + process.StartInfo.WorkingDirectory = Utils.GetTempPath(); + process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + process.StartInfo.UseShellExecute = false; + process.StartInfo.RedirectStandardError = true; + process.StartInfo.CreateNoWindow = true; + process.Start(); + + var error = process.StandardError.ReadToEnd(); + + process.WaitForExit(); + + var exitCode = process.ExitCode; + if (exitCode != (int) RET_ERRORS.RET_NO_ERROR) + { + throw new ProxyException(error); + } + } + } + } +} diff --git a/shadowsocks-csharp/Util/SystemProxy/WinINet.cs b/shadowsocks-csharp/Util/SystemProxy/WinINet.cs deleted file mode 100644 index 184f47e7..00000000 --- a/shadowsocks-csharp/Util/SystemProxy/WinINet.cs +++ /dev/null @@ -1,183 +0,0 @@ -/****************************** Module Header ******************************\ - Module Name: WinINet.cs - Project: CSWebBrowserWithProxy - Copyright (c) Microsoft Corporation. - - This class is used to set the proxy. or restore to the system proxy for the - current application - - This source is subject to the Microsoft Public License. - See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL. - All other rights reserved. - - THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -\***************************************************************************/ - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.InteropServices; -using Shadowsocks.Controller; - -namespace Shadowsocks.Util.SystemProxy -{ - public static class WinINet - { - /// - /// Set IE settings. - /// - private static void SetIEProxy(bool enable, bool global, string proxyServer, string pacURL, string connName) - { - List _optionlist = new List(); - - if (enable) - { - if (global) - { - // global proxy - _optionlist.Add(new INTERNET_PER_CONN_OPTION - { - dwOption = (int)INTERNET_PER_CONN_OptionEnum.INTERNET_PER_CONN_FLAGS_UI, - Value = { dwValue = (int)(INTERNET_OPTION_PER_CONN_FLAGS_UI.PROXY_TYPE_PROXY - | INTERNET_OPTION_PER_CONN_FLAGS_UI.PROXY_TYPE_DIRECT) } - }); - _optionlist.Add(new INTERNET_PER_CONN_OPTION - { - dwOption = (int)INTERNET_PER_CONN_OptionEnum.INTERNET_PER_CONN_PROXY_SERVER, - Value = { pszValue = Marshal.StringToHGlobalAuto(proxyServer) } - }); - _optionlist.Add(new INTERNET_PER_CONN_OPTION - { - dwOption = (int)INTERNET_PER_CONN_OptionEnum.INTERNET_PER_CONN_PROXY_BYPASS, - Value = { pszValue = Marshal.StringToHGlobalAuto("") } - }); - } - else - { - // pac - _optionlist.Add(new INTERNET_PER_CONN_OPTION - { - dwOption = (int)INTERNET_PER_CONN_OptionEnum.INTERNET_PER_CONN_FLAGS_UI, - Value = { dwValue = (int)INTERNET_OPTION_PER_CONN_FLAGS_UI.PROXY_TYPE_AUTO_PROXY_URL } - }); - _optionlist.Add(new INTERNET_PER_CONN_OPTION - { - dwOption = (int)INTERNET_PER_CONN_OptionEnum.INTERNET_PER_CONN_AUTOCONFIG_URL, - Value = { pszValue = Marshal.StringToHGlobalAuto(pacURL) } - }); - } - } - else - { - // direct - _optionlist.Add(new INTERNET_PER_CONN_OPTION - { - dwOption = (int)INTERNET_PER_CONN_OptionEnum.INTERNET_PER_CONN_FLAGS_UI, - Value = { dwValue = (int)(INTERNET_OPTION_PER_CONN_FLAGS_UI.PROXY_TYPE_AUTO_DETECT - | INTERNET_OPTION_PER_CONN_FLAGS_UI.PROXY_TYPE_DIRECT) } - }); - } - - // Get total length of INTERNET_PER_CONN_OPTIONs - var len = _optionlist.Sum(each => Marshal.SizeOf(each)); - - // Allocate a block of memory of the options. - IntPtr buffer = Marshal.AllocCoTaskMem(len); - - IntPtr current = buffer; - - // Marshal data from a managed object to an unmanaged block of memory. - foreach (INTERNET_PER_CONN_OPTION eachOption in _optionlist) - { - Marshal.StructureToPtr(eachOption, current, false); - current = (IntPtr)((int)current + Marshal.SizeOf(eachOption)); - } - - // Initialize a INTERNET_PER_CONN_OPTION_LIST instance. - INTERNET_PER_CONN_OPTION_LIST optionList = new INTERNET_PER_CONN_OPTION_LIST(); - - // Point to the allocated memory. - optionList.pOptions = buffer; - - // Return the unmanaged size of an object in bytes. - optionList.Size = Marshal.SizeOf(optionList); - - optionList.Connection = connName.IsNullOrEmpty() - ? IntPtr.Zero // NULL means LAN - : Marshal.StringToHGlobalAuto(connName); // TODO: not working if contains Chinese - - optionList.OptionCount = _optionlist.Count; - optionList.OptionError = 0; - int optionListSize = Marshal.SizeOf(optionList); - - // Allocate memory for the INTERNET_PER_CONN_OPTION_LIST instance. - IntPtr intptrStruct = Marshal.AllocCoTaskMem(optionListSize); - - // Marshal data from a managed object to an unmanaged block of memory. - Marshal.StructureToPtr(optionList, intptrStruct, true); - - // Set internet settings. - bool bReturn = NativeMethods.InternetSetOption( - IntPtr.Zero, - INTERNET_OPTION.INTERNET_OPTION_PER_CONNECTION_OPTION, - intptrStruct, optionListSize); - - // Free the allocated memory. - Marshal.FreeCoTaskMem(buffer); - Marshal.FreeCoTaskMem(intptrStruct); - - // Throw an exception if this operation failed. - if (!bReturn) - { - throw new ProxyException("InternetSetOption failed.", new Win32Exception()); - } - - // Notify the system that the registry settings have been changed and cause - // the proxy data to be reread from the registry for a handle. - bReturn = NativeMethods.InternetSetOption( - IntPtr.Zero, - INTERNET_OPTION.INTERNET_OPTION_PROXY_SETTINGS_CHANGED, - IntPtr.Zero, 0); - if (!bReturn) - { - Logging.Error("InternetSetOption:INTERNET_OPTION_PROXY_SETTINGS_CHANGED"); - } - - bReturn = NativeMethods.InternetSetOption( - IntPtr.Zero, - INTERNET_OPTION.INTERNET_OPTION_REFRESH, - IntPtr.Zero, 0); - if (!bReturn) - { - Logging.Error("InternetSetOption:INTERNET_OPTION_REFRESH"); - } - } - - public static void SetIEProxy(bool enable, bool global, string proxyServer, string pacURL) - { - string[] allConnections = null; - var ret = RemoteAccessService.GetAllConns(ref allConnections); - - if (ret == 2) - throw new ProxyException("Cannot get all connections"); - - if (ret == 1) - { - // no entries, only set LAN - SetIEProxy(enable, global, proxyServer, pacURL, null); - } - else if (ret == 0) - { - // found entries, set LAN and each connection - SetIEProxy(enable, global, proxyServer, pacURL, null); - foreach (string connName in allConnections) - { - SetIEProxy(enable, global, proxyServer, pacURL, connName); - } - } - } - } -} diff --git a/shadowsocks-csharp/shadowsocks-csharp.csproj b/shadowsocks-csharp/shadowsocks-csharp.csproj index 8379fe5f..c0156c67 100644 --- a/shadowsocks-csharp/shadowsocks-csharp.csproj +++ b/shadowsocks-csharp/shadowsocks-csharp.csproj @@ -195,13 +195,8 @@ - - - - - - + @@ -294,6 +289,8 @@ + + @@ -359,25 +356,25 @@ - (); -var attribute = config.Attribute("ExcludeAssemblies"); -if (attribute != null) - foreach (var item in attribute.Value.Split('|').Select(x => x.Trim()).Where(x => x != string.Empty)) - excludedAssemblies.Add(item); -var element = config.Element("ExcludeAssemblies"); -if (element != null) - foreach (var item in element.Value.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Where(x => x != string.Empty)) - excludedAssemblies.Add(item); - -var filesToCleanup = Files.Select(f => f.ItemSpec).Where(f => !excludedAssemblies.Contains(Path.GetFileNameWithoutExtension(f), StringComparer.InvariantCultureIgnoreCase)); - -foreach (var item in filesToCleanup) - File.Delete(item); + (); +var attribute = config.Attribute("ExcludeAssemblies"); +if (attribute != null) + foreach (var item in attribute.Value.Split('|').Select(x => x.Trim()).Where(x => x != string.Empty)) + excludedAssemblies.Add(item); +var element = config.Element("ExcludeAssemblies"); +if (element != null) + foreach (var item in element.Value.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Where(x => x != string.Empty)) + excludedAssemblies.Add(item); + +var filesToCleanup = Files.Select(f => f.ItemSpec).Where(f => !excludedAssemblies.Contains(Path.GetFileNameWithoutExtension(f), StringComparer.InvariantCultureIgnoreCase)); + +foreach (var item in filesToCleanup) + File.Delete(item); ]]> @@ -391,11 +388,11 @@ foreach (var item in filesToCleanup) - \ No newline at end of file