Skip to content

Commit

Permalink
Bug fix for Dsktop
Browse files Browse the repository at this point in the history
  • Loading branch information
2dust committed Oct 16, 2024
1 parent 74f980a commit a5122b6
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 65 deletions.
2 changes: 2 additions & 0 deletions v2rayN/ServiceLib/Global.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,13 @@ public class Global
};

public static readonly List<string> GeoFilesSources = new() {
"",
GeoUrl,
@"https://github.com/runetfreedom/russia-v2ray-rules-dat/releases/latest/download/{0}.dat",
};

public static readonly List<string> SingboxRulesetSources = new() {
"",
SingboxRulesetUrl,
@"https://raw.githubusercontent.com/runetfreedom/russia-v2ray-rules-dat/refs/heads/release/sing-box/rule-set-{0}/{1}.srs",
};
Expand Down
18 changes: 7 additions & 11 deletions v2rayN/ServiceLib/Handler/AppHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,6 @@ public bool IsAdministrator

#region Init

public AppHandler()
{
}

public bool InitApp()
{
if (ConfigHandler.LoadConfig(ref _config) != 0)
Expand All @@ -61,6 +57,13 @@ public bool InitApp()
{
Environment.SetEnvironmentVariable("DOTNET_EnableWriteXorExecute", "0", EnvironmentVariableTarget.User);
}

SQLiteHelper.Instance.CreateTable<SubItem>();
SQLiteHelper.Instance.CreateTable<ProfileItem>();
SQLiteHelper.Instance.CreateTable<ServerStatItem>();
SQLiteHelper.Instance.CreateTable<RoutingItem>();
SQLiteHelper.Instance.CreateTable<ProfileExItem>();
SQLiteHelper.Instance.CreateTable<DNSItem>();
return true;
}

Expand All @@ -72,13 +75,6 @@ public bool InitComponents()
Logging.SaveLog($"{Environment.OSVersion} - {(Environment.Is64BitOperatingSystem ? 64 : 32)}");
Logging.ClearLogs();

SQLiteHelper.Instance.CreateTable<SubItem>();
SQLiteHelper.Instance.CreateTable<ProfileItem>();
SQLiteHelper.Instance.CreateTable<ServerStatItem>();
SQLiteHelper.Instance.CreateTable<RoutingItem>();
SQLiteHelper.Instance.CreateTable<ProfileExItem>();
SQLiteHelper.Instance.CreateTable<DNSItem>();

return true;
}

Expand Down
108 changes: 61 additions & 47 deletions v2rayN/ServiceLib/Handler/SysProxy/SysProxyHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,67 +17,59 @@ public static async Task<bool> UpdateSysProxy(Config config, bool forceDisable)
{
var port = AppHandler.Instance.GetLocalPort(EInboundProtocol.http);
var portSocks = AppHandler.Instance.GetLocalPort(EInboundProtocol.socks);
var portPac = AppHandler.Instance.GetLocalPort(EInboundProtocol.pac);
if (port <= 0)
{
return false;
}
if (type == ESysProxyType.ForcedChange)
switch (type)
{
if (Utils.IsWindows())
{
var strExceptions = "";
if (config.systemProxyItem.notProxyLocalAddress)
case ESysProxyType.ForcedChange when Utils.IsWindows():
{
strExceptions = $"<local>;{config.constItem.defIEProxyExceptions};{config.systemProxyItem.systemProxyExceptions}";
GetWindowsProxyString(config, port, portSocks, out var strProxy, out var strExceptions);
ProxySettingWindows.SetProxy(strProxy, strExceptions, 2);
break;
}
case ESysProxyType.ForcedChange when Utils.IsLinux():
await ProxySettingLinux.SetProxy(Global.Loopback, port);
break;

var strProxy = string.Empty;
if (Utils.IsNullOrEmpty(config.systemProxyItem.systemProxyAdvancedProtocol))
{
strProxy = $"{Global.Loopback}:{port}";
}
else
case ESysProxyType.ForcedChange:
{
strProxy = config.systemProxyItem.systemProxyAdvancedProtocol
.Replace("{ip}", Global.Loopback)
.Replace("{http_port}", port.ToString())
.Replace("{socks_port}", portSocks.ToString());
if (Utils.IsOSX())
{
await ProxySettingOSX.SetProxy(Global.Loopback, port);
}

break;
}
ProxySettingWindows.SetProxy(strProxy, strExceptions, 2);
}
else if (Utils.IsLinux())
{
await ProxySettingLinux.SetProxy(Global.Loopback, port);
}
else if (Utils.IsOSX())
{
await ProxySettingOSX.SetProxy(Global.Loopback, port);
}
}
else if (type == ESysProxyType.ForcedClear)
{
if (Utils.IsWindows())
{
case ESysProxyType.ForcedClear when Utils.IsWindows():
ProxySettingWindows.UnsetProxy();
}
else if (Utils.IsLinux())
{
break;

case ESysProxyType.ForcedClear when Utils.IsLinux():
await ProxySettingLinux.UnsetProxy();
}
else if (Utils.IsOSX())
{
await ProxySettingOSX.UnsetProxy();
}
}
else if (type == ESysProxyType.Pac)
{
PacHandler.Start(Utils.GetConfigPath(), port, portPac);
var strProxy = $"{Global.HttpProtocol}{Global.Loopback}:{portPac}/pac?t={DateTime.Now.Ticks}";
ProxySettingWindows.SetProxy(strProxy, "", 4);
break;

case ESysProxyType.ForcedClear:
{
if (Utils.IsOSX())
{
await ProxySettingOSX.UnsetProxy();
}

break;
}
case ESysProxyType.Pac when Utils.IsWindows():
{
var portPac = AppHandler.Instance.GetLocalPort(EInboundProtocol.pac);
PacHandler.Start(Utils.GetConfigPath(), port, portPac);
var strProxy = $"{Global.HttpProtocol}{Global.Loopback}:{portPac}/pac?t={DateTime.Now.Ticks}";
ProxySettingWindows.SetProxy(strProxy, "", 4);
break;
}
}

if (type != ESysProxyType.Pac)
if (type != ESysProxyType.Pac && Utils.IsWindows())
{
PacHandler.Stop();
}
Expand All @@ -88,5 +80,27 @@ public static async Task<bool> UpdateSysProxy(Config config, bool forceDisable)
}
return true;
}

private static void GetWindowsProxyString(Config config, int port, int portSocks, out string strProxy, out string strExceptions)
{
strExceptions = "";
if (config.systemProxyItem.notProxyLocalAddress)
{
strExceptions = $"<local>;{config.constItem.defIEProxyExceptions};{config.systemProxyItem.systemProxyExceptions}";
}

strProxy = string.Empty;
if (Utils.IsNullOrEmpty(config.systemProxyItem.systemProxyAdvancedProtocol))
{
strProxy = $"{Global.Loopback}:{port}";
}
else
{
strProxy = config.systemProxyItem.systemProxyAdvancedProtocol
.Replace("{ip}", Global.Loopback)
.Replace("{http_port}", port.ToString())
.Replace("{socks_port}", portSocks.ToString());
}
}
}
}
11 changes: 4 additions & 7 deletions v2rayN/v2rayN.Desktop/Views/OptionSettingWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,10 @@ public OptionSettingWindow()
this.BindCommand(ViewModel, vm => vm.SaveCmd, v => v.btnSave).DisposeWith(disposables);
});

//if (Utils.IsWindows())
//{
//}
//else
//{
tabSystemproxy.IsVisible = false;
//}
if (!Utils.IsWindows())
{
tabSystemproxy.IsVisible = false;
}
}

private async Task<bool> UpdateViewHandler(EViewAction action, object? obj)
Expand Down

0 comments on commit a5122b6

Please sign in to comment.