From 8740905a08a6ef69eeb815f50e4b36bfbac6c93d Mon Sep 17 00:00:00 2001 From: Nekromateion <43814053+Nekromateion@users.noreply.github.com> Date: Sun, 16 Jun 2024 07:06:02 +0200 Subject: [PATCH] Implement proxy-server launch argument Grab proxy-server from launch arguments to match chromium getting it. --- Dotnet/ImageCache.cs | 6 +++--- Dotnet/StartupArgs.cs | 9 +++++++++ Dotnet/WebApi.cs | 4 ++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Dotnet/ImageCache.cs b/Dotnet/ImageCache.cs index 012d8472..f4972122 100644 --- a/Dotnet/ImageCache.cs +++ b/Dotnet/ImageCache.cs @@ -11,7 +11,8 @@ namespace VRCX class ImageCache { private static readonly string cacheLocation = Path.Combine(Program.AppDataDirectory, "ImageCache"); - private static readonly HttpClient httpClient = new HttpClient(); + private static readonly HttpClientHandler httpClientHandler = new HttpClientHandler(){ Proxy = StartupArgs.Proxy }; + private static readonly HttpClient httpClient = new HttpClient(httpClientHandler); private static readonly List _imageHosts = [ "api.vrchat.cloud", @@ -53,8 +54,7 @@ namespace VRCX { { "Cookie", cookieString }, { "User-Agent", Program.Version } - }, - + } }; using (var response = await httpClient.SendAsync(request)) { diff --git a/Dotnet/StartupArgs.cs b/Dotnet/StartupArgs.cs index 5b95e996..272c4083 100644 --- a/Dotnet/StartupArgs.cs +++ b/Dotnet/StartupArgs.cs @@ -4,10 +4,12 @@ // This work is licensed under the terms of the MIT license. // For a copy, see . +using CefSharp; using System; using System.Diagnostics; using System.IO; using System.IO.Pipes; +using System.Net; using System.Text; using System.Windows.Forms; @@ -15,6 +17,7 @@ namespace VRCX { internal class StartupArgs { + public static IWebProxy? Proxy = WebRequest.DefaultWebProxy; public static string LaunchCommand; public static Process[] processList; @@ -47,6 +50,12 @@ namespace VRCX if (arg.Length >= 7 && arg.Substring(0, 7) == "--debug") Program.LaunchDebug = true; + + if (arg.Length >= 16 && arg.Substring(0, 14) == "--proxy-server") + { + string proxyUrl = arg.Substring(15).Replace("'", string.Empty).Replace("\"", string.Empty); + Proxy = new WebProxy(proxyUrl); + } } if (!string.IsNullOrEmpty(Program.AppDataDirectory)) diff --git a/Dotnet/WebApi.cs b/Dotnet/WebApi.cs index 0d0dbb43..38cc4bf5 100644 --- a/Dotnet/WebApi.cs +++ b/Dotnet/WebApi.cs @@ -144,6 +144,7 @@ namespace VRCX private static async Task LegacyImageUpload(HttpWebRequest request, IDictionary options) { + request.Proxy = StartupArgs.Proxy; request.Method = "POST"; string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; @@ -188,6 +189,7 @@ namespace VRCX private static async Task UploadFilePut(HttpWebRequest request, IDictionary options) { + request.Proxy = StartupArgs.Proxy; request.Method = "PUT"; request.ContentType = options["fileMIME"] as string; var fileData = options["fileData"] as string; @@ -202,6 +204,7 @@ namespace VRCX private static async Task ImageUpload(HttpWebRequest request, IDictionary options) { + request.Proxy = StartupArgs.Proxy; request.Method = "POST"; string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); request.ContentType = "multipart/form-data; boundary=" + boundary; @@ -255,6 +258,7 @@ namespace VRCX try { var request = WebRequest.CreateHttp((string)options["url"]); + request.Proxy = StartupArgs.Proxy; request.CookieContainer = _cookieContainer; request.KeepAlive = true; request.UserAgent = Program.Version;