feat: set default proxy
This commit is contained in:
@@ -2,6 +2,56 @@
|
||||
|
||||
#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()
|
||||
{
|
||||
Log::createConsole();
|
||||
@@ -18,6 +68,8 @@ int main()
|
||||
return 1;
|
||||
}
|
||||
|
||||
setProxy(true, std::format("127.0.0.1:{}", PROXY_PORT));
|
||||
|
||||
Log::verbose("Proxy running (CTRL+C to stop)");
|
||||
while (running)
|
||||
Sleep(100);
|
||||
@@ -25,5 +77,7 @@ int main()
|
||||
Log::verbose("Shutting down proxy");
|
||||
proxy->Shutdown();
|
||||
delete proxy;
|
||||
setProxy(false, "");
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user