From 5c1bb683a09e636d465228d29977bb82f86edcfb Mon Sep 17 00:00:00 2001 From: xuzhenhai <282052309@qq.com> Date: Sun, 31 Aug 2025 16:43:22 +0800 Subject: [PATCH] =?UTF-8?q?1=20=E4=BF=AE=E5=A4=8DSetPacFileUrl=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=E6=B2=A1=E6=9C=89=E6=9B=B4=E6=96=B0ProxyMode?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=202=20=E5=AE=8C=E5=96=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E4=BB=A3=E7=90=86=E5=88=87=E6=8D=A2=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I77076b5ff506773b677be55e5001e65222b5ac8e Signed-off-by: xuzhenhai <282052309@qq.com> --- .../napi/netpolicy/src/net_conn_service.cpp | 28 +++++++++++++++-- .../netconnclient/libnetconn_kits.map | 8 ----- .../unittest/pac_http_test/pac_server.cpp | 10 +++++++ .../unittest/pac_http_test/pac_server.h | 4 +++ .../proxy_switch_server_tool.cpp | 30 +++++++++++++++---- 5 files changed, 63 insertions(+), 17 deletions(-) diff --git a/frameworks/js/napi/netpolicy/src/net_conn_service.cpp b/frameworks/js/napi/netpolicy/src/net_conn_service.cpp index 888e12d3d..57317ca7f 100644 --- a/frameworks/js/napi/netpolicy/src/net_conn_service.cpp +++ b/frameworks/js/napi/netpolicy/src/net_conn_service.cpp @@ -2810,7 +2810,11 @@ void NetConnService::CheckProxyStatus() if (GetProxyMode(mode) != NETMANAGER_SUCCESS) { return; } - SetProxyMode(mode); + if (SetProxyMode(mode) == NETMANAGER_SUCCESS) { + NETMGR_LOG_I("NetConnService CheckProxyStatus %{public}d sucess", mode); + } else { + NETMGR_LOG_E("NetConnService CheckProxyStatus %{public}d fail", mode); + } } #ifdef NETMANAGER_ENABLE_PAC_PROXY @@ -2961,9 +2965,27 @@ int32_t NetConnService::SetPacFileUrl(const std::string &pacUrl) } #ifdef NETMANAGER_ENABLE_PAC_PROXY if (pacUrl.empty()) { - return SetProxyOff(); + SetProxyOff(); + Uri hostUri(GLOBAL_PROXY_HOST_URI); + auto dataShareHelperUtils = std::make_unique(); + int ret = dataShareHelperUtils->Update(hostUri, KEY_PROXY_MODE, std::to_string(PROXY_MODE_OFF)); + if (ret != NETMANAGER_SUCCESS) { + NETMGR_LOG_E("Update proxy mode fail %d", PROXY_MODE_AUTO); + return NETMANAGER_ERR_OPERATION_FAILED; + } + return NETMANAGER_SUCCESS; } else { - return SetProxyAuto(); + auto ret = SetProxyAuto(); + if (ret == NETMANAGER_SUCCESS) { + Uri hostUri(GLOBAL_PROXY_HOST_URI); + auto dataShareHelperUtils = std::make_unique(); + int ret = dataShareHelperUtils->Update(hostUri, KEY_PROXY_MODE, std::to_string(PROXY_MODE_AUTO)); + if (ret != NETMANAGER_SUCCESS) { + NETMGR_LOG_E("Update proxy mode fail %d", PROXY_MODE_AUTO); + return NETMANAGER_ERR_OPERATION_FAILED; + } + } + return ret; } #endif return NETMANAGER_SUCCESS; diff --git a/interfaces/innerkits/netconnclient/libnetconn_kits.map b/interfaces/innerkits/netconnclient/libnetconn_kits.map index 10396d606..92dca7b9c 100644 --- a/interfaces/innerkits/netconnclient/libnetconn_kits.map +++ b/interfaces/innerkits/netconnclient/libnetconn_kits.map @@ -227,14 +227,6 @@ "OHOS::NetManagerStandard::NetConnClient::SetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator> const&)"; "OHOS::NetManagerStandard::NetConnClient::GetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator>&)"; - VTT?for?OHOS::NetManagerStandard::NetPacFileUrlCallbackStub; - vtable?for?OHOS::NetManagerStandard::NetPacFileUrlCallbackStub; - "OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::NetPacFileUrlCallbackStub()"; - "OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::~NetPacFileUrlCallbackStub()"; - "OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::OnRemoteRequest(unsigned int, OHOS::MessageParcel&, OHOS::MessageParcel&, OHOS::MessageOption&)"; - "non-virtual thunk to OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::~NetPacFileUrlCallbackStub()"; - "virtual thunk to OHOS::NetManagerStandard::NetPacFileUrlCallbackStub::~NetPacFileUrlCallbackStub()"; - "OHOS::NetManagerStandard::NetConnClient::SetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator> const&)"; "OHOS::NetManagerStandard::NetConnClient::GetNetExtAttribute(OHOS::NetManagerStandard::NetHandle const&, std::__h::basic_string, std::__h::allocator>&)"; "OHOS::NetManagerStandard::NetConnClient::SetPacFileUrl(std::__h::basic_string, std::__h::allocator> const&)"; diff --git a/test/netconnmanager/unittest/pac_http_test/pac_server.cpp b/test/netconnmanager/unittest/pac_http_test/pac_server.cpp index 013ba46d8..b9719f5b4 100644 --- a/test/netconnmanager/unittest/pac_http_test/pac_server.cpp +++ b/test/netconnmanager/unittest/pac_http_test/pac_server.cpp @@ -21,7 +21,9 @@ #include #include #include +#include "functional" +static std::function g_handler; static std::string g_defaultFileContent = "// PAC (Proxy Auto-Configuration) 脚本示例\n" "// 包含所有主要PAC函数的使用示例,只演示基础函数使用。\n" @@ -158,6 +160,11 @@ bool IsTestRequest(const std::string &request) return false; } +void SetTestHttpHandler(std::function function) +{ + g_handler = function; +} + std::string GetHeaderValue(const std::string &request, const std::string &headerName) { std::string headerPrefix = headerName + ": "; @@ -281,6 +288,9 @@ void HandleClientConnection(int32_t serverFd, std::string pacScript) std::string request(buffer); if (IsTestRequest(request)) { + if (g_handler) { + g_handler(); + } HandleTestRequest(clientSocket, request, address); } else { HandlePacRequest(clientSocket, pacScript); diff --git a/test/netconnmanager/unittest/pac_http_test/pac_server.h b/test/netconnmanager/unittest/pac_http_test/pac_server.h index 0b895c2e1..9db0f3bf3 100644 --- a/test/netconnmanager/unittest/pac_http_test/pac_server.h +++ b/test/netconnmanager/unittest/pac_http_test/pac_server.h @@ -14,7 +14,11 @@ */ #ifndef PACHTTPTEST_PAC_SERVER_H #define PACHTTPTEST_PAC_SERVER_H +#include "functional" +#include void StartHttpServer(int32_t port, std::string ip, std::string pacScript); +void SetTestHttpHandler(std::function function); + #endif // PACHTTPTEST_PAC_SERVER_H diff --git a/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp b/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp index d674a3561..fa8069e97 100644 --- a/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp +++ b/test/netconnmanager/unittest/pac_http_test/proxy_switch_server_tool.cpp @@ -24,11 +24,13 @@ using namespace OHOS::NetManagerStandard; std::map> services; -#define PAC_PROXY_SERVER 9000 -#define GLOBAL_PROXY_SERVER 9001 +#define PROXY_PORT_9000 9000 +#define PROXY_PORT_9001 9001 #define PROT_8080 8080 #define PROT_8889 8889 -#define TIME 10 +#define TIME 20 + +static int32_t g_counter = 0; static void StartProxyServer(int32_t port) { @@ -39,11 +41,27 @@ static void StartProxyServer(int32_t port) TEST(PROXY_SWITCH_TEST, PacFileUrlClient) { - StartProxyServer(GLOBAL_PROXY_SERVER); - StartProxyServer(PAC_PROXY_SERVER); + StartProxyServer(PROXY_PORT_9001); + StartProxyServer(PROXY_PORT_9000); + services[PROXY_PORT_9000]->Stop(); + services[PROXY_PORT_9001]->Stop(); SetUpPermission(); StartHttpServer(PROT_8080, "", ""); - std::string script = ProxyServer::pacScripts[LOCAL_PROXY_9000]; + SetTestHttpHandler([]() { + int32_t n = g_counter % 3; + switch (n) { + case 0: + services[PROXY_PORT_9001]->Start(); + break; + case 1: + services[PROXY_PORT_9000]->Start(); + break; + default: + break; + } + g_counter++; + }); + std::string script = ProxyServer::pacScripts[ALL_DIRECT]; printf(" pac script %s \n", script.c_str()); StartHttpServer(PROT_8889, "", script); EXPECT_EQ(services.empty(), false); -- Gitee