diff --git a/v2rayN/v2rayN/Handler/ProxySetting.cs b/v2rayN/v2rayN/Handler/ProxySetting.cs
deleted file mode 100644
index ec43bce1..00000000
--- a/v2rayN/v2rayN/Handler/ProxySetting.cs
+++ /dev/null
@@ -1,190 +0,0 @@
-using System;
-using Microsoft.Win32;
-using System.Runtime.InteropServices;
-
-namespace v2rayN.Handler
-{
- ///
- /// 设置系统代理类
- ///
- class ProxySetting
- {
- public static bool UnsetProxy()
- {
- return SetProxy(null, null);
- }
- public static bool SetProxy(string strProxy)
- {
- return SetProxy(strProxy, null);
- }
-
- public static bool SetProxy(string strProxy, string exceptions)
- {
- InternetPerConnOptionList list = new InternetPerConnOptionList();
-
- int optionCount = string.IsNullOrEmpty(strProxy) ? 1 : (string.IsNullOrEmpty(exceptions) ? 2 : 3);
- InternetConnectionOption[] options = new InternetConnectionOption[optionCount];
- // USE a proxy server ...
- options[0].m_Option = PerConnOption.INTERNET_PER_CONN_FLAGS;
- options[0].m_Value.m_Int = (int)((optionCount < 2) ? PerConnFlags.PROXY_TYPE_DIRECT : (PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_PROXY));
- // use THIS proxy server
- if (optionCount > 1)
- {
- options[1].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_SERVER;
- options[1].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(strProxy);
- // except for these addresses ...
- if (optionCount > 2)
- {
- options[2].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_BYPASS;
- options[2].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(exceptions);
- }
- }
-
- // default stuff
- list.dwSize = Marshal.SizeOf(list);
- list.szConnection = IntPtr.Zero;
- list.dwOptionCount = options.Length;
- list.dwOptionError = 0;
-
-
- int optSize = Marshal.SizeOf(typeof(InternetConnectionOption));
- // make a pointer out of all that ...
- IntPtr optionsPtr = Marshal.AllocCoTaskMem(optSize * options.Length);
- // copy the array over into that spot in memory ...
- for (int i = 0; i < options.Length; ++i)
- {
- IntPtr opt = new IntPtr(optionsPtr.ToInt32() + (i * optSize));
- Marshal.StructureToPtr(options[i], opt, false);
- }
-
- list.options = optionsPtr;
-
- // and then make a pointer out of the whole list
- IntPtr ipcoListPtr = Marshal.AllocCoTaskMem((Int32)list.dwSize);
- Marshal.StructureToPtr(list, ipcoListPtr, false);
-
- // and finally, call the API method!
- int returnvalue = NativeMethods.InternetSetOption(IntPtr.Zero,
- InternetOption.INTERNET_OPTION_PER_CONNECTION_OPTION,
- ipcoListPtr, list.dwSize) ? -1 : 0;
- if (returnvalue == 0)
- { // get the error codes, they might be helpful
- returnvalue = Marshal.GetLastWin32Error();
- }
- // FREE the data ASAP
- Marshal.FreeCoTaskMem(optionsPtr);
- Marshal.FreeCoTaskMem(ipcoListPtr);
- if (returnvalue > 0)
- { // throw the error codes, they might be helpful
- //throw new Win32Exception(Marshal.GetLastWin32Error());
- }
-
- return (returnvalue < 0);
- }
-
-
- #region WinInet structures
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
- public struct InternetPerConnOptionList
- {
- public int dwSize; // size of the INTERNET_PER_CONN_OPTION_LIST struct
- public IntPtr szConnection; // connection name to set/query options
- public int dwOptionCount; // number of options to set/query
- public int dwOptionError; // on error, which option failed
- //[MarshalAs(UnmanagedType.)]
- public IntPtr options;
- };
-
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
- public struct InternetConnectionOption
- {
- static readonly int Size;
- public PerConnOption m_Option;
- public InternetConnectionOptionValue m_Value;
- static InternetConnectionOption()
- {
- InternetConnectionOption.Size = Marshal.SizeOf(typeof(InternetConnectionOption));
- }
-
- // Nested Types
- [StructLayout(LayoutKind.Explicit)]
- public struct InternetConnectionOptionValue
- {
- // Fields
- [FieldOffset(0)]
- public System.Runtime.InteropServices.ComTypes.FILETIME m_FileTime;
- [FieldOffset(0)]
- public int m_Int;
- [FieldOffset(0)]
- public IntPtr m_StringPtr;
- }
- }
- #endregion
-
- #region WinInet enums
- //
- // options manifests for Internet{Query|Set}Option
- //
- public enum InternetOption : uint
- {
- INTERNET_OPTION_PER_CONNECTION_OPTION = 75
- }
-
- //
- // Options used in INTERNET_PER_CONN_OPTON struct
- //
- public enum PerConnOption
- {
- INTERNET_PER_CONN_FLAGS = 1, // Sets or retrieves the connection type. The Value member will contain one or more of the values from PerConnFlags
- INTERNET_PER_CONN_PROXY_SERVER = 2, // Sets or retrieves a string containing the proxy servers.
- INTERNET_PER_CONN_PROXY_BYPASS = 3, // Sets or retrieves a string containing the URLs that do not use the proxy server.
- INTERNET_PER_CONN_AUTOCONFIG_URL = 4//, // Sets or retrieves a string containing the URL to the automatic configuration script.
-
- }
-
- //
- // PER_CONN_FLAGS
- //
- [Flags]
- public enum PerConnFlags
- {
- 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
- }
- #endregion
-
- internal static class NativeMethods
- {
- [DllImport("WinInet.dll", SetLastError = true, CharSet = CharSet.Auto)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool InternetSetOption(IntPtr hInternet, InternetOption dwOption, IntPtr lpBuffer, int dwBufferLength);
- }
-
- //判断是否使用代理
- public static bool UsedProxy()
- {
- RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
- if (rk.GetValue("ProxyEnable").ToString() == "1")
- {
- rk.Close();
- return true;
- }
- else
- {
- rk.Close();
- return false;
- }
- }
- //获得代理的IP和端口
- public static string GetProxyProxyServer()
- {
- RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
- string ProxyServer = rk.GetValue("ProxyServer").ToString();
- rk.Close();
- return ProxyServer;
-
- }
- }
-}
diff --git a/v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs b/v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs
deleted file mode 100644
index df06f21a..00000000
--- a/v2rayN/v2rayN/HttpProxyHandler/SysProxyHandle.cs
+++ /dev/null
@@ -1,185 +0,0 @@
-using Newtonsoft.Json;
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Text;
-using v2rayN.Base;
-using v2rayN.Mode;
-using v2rayN.Properties;
-using v2rayN.Tool;
-
-namespace v2rayN.HttpProxyHandler
-{
- class SysProxyHandle
- {
- private const string _userWininetConfigFile = "user-wininet.json";
-
- private static string _queryStr;
-
- // In general, this won't change
- // format:
- //
- //
- //
- //
- private static SysproxyConfig _userSettings = null;
-
- 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 SysProxyHandle()
- {
- try
- {
- FileManager.UncompressFile(Utils.GetTempPath("sysproxy.exe"),
- Environment.Is64BitOperatingSystem ? Resources.sysproxy64_exe : Resources.sysproxy_exe);
- }
- catch (IOException ex)
- {
- Utils.SaveLog(ex.Message, ex);
-
- }
- }
-
- public static void SetIEProxy(bool enable, bool global, string proxyServer, string pacURL)
- {
- //Read();
-
- //if (!_userSettings.UserSettingsRecorded)
- //{
- // // record user settings
- // ExecSysproxy("query");
- // ParseQueryStr(_queryStr);
- //}
-
- string arguments;
- if (enable)
- {
- arguments = global
- ? string.Format(
- //"global {0} ;localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;172.32.*;192.168.*",
- "global {0} ;localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;172.32.*",
- proxyServer)
- : string.Format("pac {0}", pacURL);
- }
- else
- {
- // restore user settings
- //var flags = _userSettings.Flags;
- //var proxy_server = _userSettings.ProxyServer ?? "-";
- //var bypass_list = _userSettings.BypassList ?? "-";
- //var pac_url = _userSettings.PacUrl ?? "-";
- ////arguments = string.Format("set {0} {1} {2} {3}", flags, proxy_server, bypass_list, pac_url);
- //set null settings
- arguments = string.Format("set {0} {1} {2} {3}", 1, "-", "", @"http://127.0.0.1");
-
- // have to get new settings
- //_userSettings.UserSettingsRecorded = false;
- }
-
- //Save();
- ExecSysproxy(arguments);
- }
-
- private static void ExecSysproxy(string arguments)
- {
- 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.RedirectStandardOutput = true;
-
- // Need to provide encoding info, or output/error strings we got will be wrong.
- process.StartInfo.StandardOutputEncoding = Encoding.Unicode;
- process.StartInfo.StandardErrorEncoding = Encoding.Unicode;
-
- process.StartInfo.CreateNoWindow = true;
- process.Start();
-
- var stderr = process.StandardError.ReadToEnd();
- var stdout = process.StandardOutput.ReadToEnd();
-
- process.WaitForExit();
-
- var exitCode = process.ExitCode;
- if (exitCode != (int)RET_ERRORS.RET_NO_ERROR)
- {
- throw new Exception(stderr);
- }
-
- if (arguments == "query")
- {
- if (stdout.IsNullOrWhiteSpace() || stdout.IsNullOrEmpty())
- {
- // we cannot get user settings
- throw new Exception("failed to query wininet settings");
- }
- _queryStr = stdout;
- }
- }
- }
-
- private static void Save()
- {
- try
- {
- using (StreamWriter sw = new StreamWriter(File.Open(Utils.GetPath(_userWininetConfigFile), FileMode.Create)))
- {
- string jsonString = JsonConvert.SerializeObject(_userSettings, Formatting.Indented);
- sw.Write(jsonString);
- sw.Flush();
- }
- }
- catch (IOException ex)
- {
- Utils.SaveLog(ex.Message, ex);
- }
- }
-
- private static void Read()
- {
- try
- {
- string configContent = File.ReadAllText(Utils.GetPath(_userWininetConfigFile));
- _userSettings = JsonConvert.DeserializeObject(configContent);
- }
- catch (Exception ex)
- {
- Utils.SaveLog(ex.Message, ex);
- // Suppress all exceptions. finally block will initialize new user config settings.
- }
- finally
- {
- if (_userSettings == null) _userSettings = new SysproxyConfig();
- }
- }
-
- private static void ParseQueryStr(string str)
- {
- string[] userSettingsArr = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
- _userSettings.Flags = userSettingsArr[0];
-
- // handle output from WinINET
- if (userSettingsArr[1] == "(null)") _userSettings.ProxyServer = null;
- else _userSettings.ProxyServer = userSettingsArr[1];
- if (userSettingsArr[2] == "(null)") _userSettings.BypassList = null;
- else _userSettings.BypassList = userSettingsArr[2];
- if (userSettingsArr[3] == "(null)") _userSettings.PacUrl = null;
- else _userSettings.PacUrl = userSettingsArr[3];
-
- _userSettings.UserSettingsRecorded = true;
- }
- }
-}
diff --git a/v2rayN/v2rayN/Resources/grpc_csharp_ext.x64.dll.gz b/v2rayN/v2rayN/Resources/grpc_csharp_ext.x64.dll.gz
deleted file mode 100644
index b69a16bd..00000000
Binary files a/v2rayN/v2rayN/Resources/grpc_csharp_ext.x64.dll.gz and /dev/null differ
diff --git a/v2rayN/v2rayN/Resources/grpc_csharp_ext.x86.dll.gz b/v2rayN/v2rayN/Resources/grpc_csharp_ext.x86.dll.gz
deleted file mode 100644
index d56025ca..00000000
Binary files a/v2rayN/v2rayN/Resources/grpc_csharp_ext.x86.dll.gz and /dev/null differ
diff --git a/v2rayN/v2rayN/Resources/sysproxy.exe.gz b/v2rayN/v2rayN/Resources/sysproxy.exe.gz
deleted file mode 100644
index 980d304b..00000000
Binary files a/v2rayN/v2rayN/Resources/sysproxy.exe.gz and /dev/null differ
diff --git a/v2rayN/v2rayN/Resources/sysproxy64.exe.gz b/v2rayN/v2rayN/Resources/sysproxy64.exe.gz
deleted file mode 100644
index c5ff36af..00000000
Binary files a/v2rayN/v2rayN/Resources/sysproxy64.exe.gz and /dev/null differ