feat: set default proxy

This commit is contained in:
2026-03-20 05:03:05 -03:00
parent e03dcad4fe
commit a65dfaf33b
+54
View File
@@ -2,6 +2,56 @@
#include <nerutils/log.h> #include <nerutils/log.h>
#include <Windows.h>
#include <wininet.h>
bool setProxy(bool enable, const std::string& proxyAddr)
{
INTERNET_PER_CONN_OPTION_LIST list;
INTERNET_PER_CONN_OPTION options[3];
unsigned long listSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
options[0].dwOption = INTERNET_PER_CONN_FLAGS;
if (enable)
options[0].Value.dwValue = PROXY_TYPE_PROXY | PROXY_TYPE_DIRECT;
else
options[0].Value.dwValue = PROXY_TYPE_DIRECT;
options[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
options[1].Value.pszValue = const_cast<char*>(proxyAddr.c_str());
options[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
options[2].Value.pszValue = const_cast<char*>("<local>");
list.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
list.pszConnection = NULL;
list.dwOptionCount = 3;
list.dwOptionError = 0;
list.pOptions = options;
if (!InternetSetOptionA(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, listSize))
{
Log::error("Failed to set proxy options, Err: {}", GetLastError());
return false;
}
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, 0);
return true;
}
bool running = true;
BOOL WINAPI consoleHandler(DWORD dwType)
{
if (dwType == CTRL_C_EVENT || dwType == CTRL_CLOSE_EVENT)
{
running = false;
return TRUE;
}
return FALSE;
}
int main() int main()
{ {
Log::createConsole(); Log::createConsole();
@@ -18,6 +68,8 @@ int main()
return 1; return 1;
} }
setProxy(true, std::format("127.0.0.1:{}", PROXY_PORT));
Log::verbose("Proxy running (CTRL+C to stop)"); Log::verbose("Proxy running (CTRL+C to stop)");
while (running) while (running)
Sleep(100); Sleep(100);
@@ -25,5 +77,7 @@ int main()
Log::verbose("Shutting down proxy"); Log::verbose("Shutting down proxy");
proxy->Shutdown(); proxy->Shutdown();
delete proxy; delete proxy;
setProxy(false, "");
return 0; return 0;
} }