From e8a2e7a5bf14fc32bf6eb74794e2d2f8f25dcd59 Mon Sep 17 00:00:00 2001 From: wangkun Date: Mon, 21 Jun 2021 16:06:49 +0800 Subject: [PATCH] add softbus interface permission Signed-off-by: wangkun --- .../src/softbus_adapter_standard.cpp | 18 ++++----- services/distributeddataservice/app/BUILD.gn | 2 + .../app/src/kvstore_data_service.cpp | 38 ++++++++++++++++++- .../app/src/kvstore_data_service.h | 2 + .../distributeddataservice/app/test/BUILD.gn | 7 ++++ 5 files changed, 56 insertions(+), 11 deletions(-) diff --git a/services/distributeddataservice/adapter/communicator/src/softbus_adapter_standard.cpp b/services/distributeddataservice/adapter/communicator/src/softbus_adapter_standard.cpp index e9450d6a1..e37d355a8 100755 --- a/services/distributeddataservice/adapter/communicator/src/softbus_adapter_standard.cpp +++ b/services/distributeddataservice/adapter/communicator/src/softbus_adapter_standard.cpp @@ -149,7 +149,7 @@ void SoftBusAdapter::Init() int i = 0; constexpr int RETRY_TIMES = 300; while (i++ < RETRY_TIMES) { - int32_t errNo = RegNodeDeviceStateCb("com.huawei.hwddmp", &nodeStateCb_); + int32_t errNo = RegNodeDeviceStateCb("ohos.distributeddata", &nodeStateCb_); if (errNo != SOFTBUS_OK) { ZLOGE("RegNodeDeviceStateCb fail %{public}d, time:%{public}d", errNo, i); std::this_thread::sleep_for(std::chrono::seconds(1)); @@ -248,7 +248,7 @@ std::vector SoftBusAdapter::GetDeviceList() const int32_t infoNum = 0; dis.clear(); - int32_t ret = GetAllNodeDeviceInfo("com.huawei.hwddmp", &info, &infoNum); + int32_t ret = GetAllNodeDeviceInfo("ohos.distributeddata", &info, &infoNum); if (ret != SOFTBUS_OK) { ZLOGE("GetAllNodeDeviceInfo error"); return dis; @@ -273,7 +273,7 @@ DeviceInfo SoftBusAdapter::GetLocalDevice() } NodeBasicInfo info; - int32_t ret = GetLocalNodeDeviceInfo("com.huawei.hwddmp", &info); + int32_t ret = GetLocalNodeDeviceInfo("ohos.distributeddata", &info); if (ret != SOFTBUS_OK) { ZLOGE("GetLocalNodeDeviceInfo error"); return DeviceInfo(); @@ -288,7 +288,7 @@ DeviceInfo SoftBusAdapter::GetLocalDevice() std::string SoftBusAdapter::GetUuidByNodeId(const std::string &nodeId) const { char uuid[ID_BUF_LEN] = {0}; - int32_t ret = GetNodeKeyInfo("com.huawei.hwddmp", nodeId.c_str(), + int32_t ret = GetNodeKeyInfo("ohos.distributeddata", nodeId.c_str(), NodeDeivceInfoKey::NODE_KEY_UUID, reinterpret_cast(uuid), ID_BUF_LEN); if (ret != SOFTBUS_OK) { ZLOGW("GetNodeKeyInfo error, nodeId:%{public}s", ToBeAnonymous(nodeId).c_str()); @@ -300,7 +300,7 @@ std::string SoftBusAdapter::GetUuidByNodeId(const std::string &nodeId) const std::string SoftBusAdapter::GetUdidByNodeId(const std::string &nodeId) const { char udid[ID_BUF_LEN] = {0}; - int32_t ret = GetNodeKeyInfo("com.huawei.hwddmp", nodeId.c_str(), + int32_t ret = GetNodeKeyInfo("ohos.distributeddata", nodeId.c_str(), NodeDeivceInfoKey::NODE_KEY_UDID, reinterpret_cast(udid), ID_BUF_LEN); if (ret != SOFTBUS_OK) { ZLOGW("GetNodeKeyInfo error, nodeId:%{public}s", ToBeAnonymous(nodeId).c_str()); @@ -313,7 +313,7 @@ DeviceInfo SoftBusAdapter::GetLocalBasicInfo() const { ZLOGD("begin"); NodeBasicInfo info; - int32_t ret = GetLocalNodeDeviceInfo("com.huawei.hwddmp", &info); + int32_t ret = GetLocalNodeDeviceInfo("ohos.distributeddata", &info); if (ret != SOFTBUS_OK) { ZLOGE("GetLocalNodeDeviceInfo error"); return DeviceInfo(); @@ -333,7 +333,7 @@ std::vector SoftBusAdapter::GetRemoteNodesBasicInfo() const int32_t infoNum = 0; dis.clear(); - int32_t ret = GetAllNodeDeviceInfo("com.huawei.hwddmp", &info, &infoNum); + int32_t ret = GetAllNodeDeviceInfo("ohos.distributeddata", &info, &infoNum); if (ret != SOFTBUS_OK) { ZLOGE("GetAllNodeDeviceInfo error"); return dis; @@ -530,13 +530,13 @@ void SoftBusAdapter::SetMessageTransFlag(const PipeInfo &pipeInfo, bool flag) int SoftBusAdapter::CreateSessionServerAdapter(const std::string &sessionName) { ZLOGD("begin"); - return CreateSessionServer("com.huawei.hwddmp", sessionName.c_str(), &sessionListener_); + return CreateSessionServer("ohos.distributeddata", sessionName.c_str(), &sessionListener_); } int SoftBusAdapter::RemoveSessionServerAdapter(const std::string &sessionName) const { ZLOGD("begin"); - return RemoveSessionServer("com.huawei.hwddmp", sessionName.c_str()); + return RemoveSessionServer("ohos.distributeddata", sessionName.c_str()); } void SoftBusAdapter::InsertSession(const std::string &sessionName) diff --git a/services/distributeddataservice/app/BUILD.gn b/services/distributeddataservice/app/BUILD.gn index da93bd522..1003b306c 100755 --- a/services/distributeddataservice/app/BUILD.gn +++ b/services/distributeddataservice/app/BUILD.gn @@ -54,6 +54,7 @@ config("module_private_config") { "include", "src", "//third_party/json/single_include", + "//base/security/permission/interfaces/innerkits/permission_standard/permissionsdk/main/cpp/include", ] cflags = [ "-Wno-multichar" ] @@ -111,6 +112,7 @@ ohos_shared_library("distributeddataservice") { "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", "startup_l2:syspara", + "permission_standard:libpermissionsdk_standard", ] subsystem_name = "distributeddatamgr" diff --git a/services/distributeddataservice/app/src/kvstore_data_service.cpp b/services/distributeddataservice/app/src/kvstore_data_service.cpp index 70b440067..d0d01d151 100644 --- a/services/distributeddataservice/app/src/kvstore_data_service.cpp +++ b/services/distributeddataservice/app/src/kvstore_data_service.cpp @@ -32,16 +32,18 @@ #include "dds_trace.h" #include "device_change_listener_impl.h" #include "device_kvstore_impl.h" +#include "if_system_ability_manager.h" +#include "iservice_registry.h" #include "kvstore_account_observer.h" #include "kvstore_app_accessor.h" #include "kvstore_meta_manager.h" #include "kvstore_utils.h" #include "log_print.h" +#include "permission/permission.h" +#include "permission/permission_kit.h" #include "permission_validator.h" #include "process_communicator_impl.h" #include "reporter.h" -#include "if_system_ability_manager.h" -#include "iservice_registry.h" #include "system_ability_definition.h" #include "uninstaller/uninstaller.h" @@ -49,6 +51,7 @@ namespace OHOS { namespace DistributedKv { using json = nlohmann::json; using namespace std::chrono; +using namespace OHOS::Security::Permission; REGISTER_SYSTEM_ABILITY_BY_ID(KvStoreDataService, DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID, true); @@ -918,6 +921,34 @@ int KvStoreDataService::Dump(int fd, const std::vector &args) return 0; } +const std::string PKGNAME = "ohos.distributeddata"; +const std::string APP_DATASYNC_PERMISSION = "ohos.permission.DISTRIBUTED_DATASYNC"; +const std::string LABEL = "distributeddata"; +const std::string DESCRIPTION = "distributeddata service"; +const int LABEL_ID = 9527; +const int DESCRIPTION_ID = 9528; + +void KvStoreDataService::AddPermission() const +{ + std::vector permissionDefs { + { + .permissionName = APP_DATASYNC_PERMISSION, + .bundleName = PKGNAME, + .grantMode = GrantMode::SYSTEM_GRANT, + .availableScope = AVAILABLE_SCOPE_ALL, + .label = LABEL, + .labelId = LABEL_ID, + .description = DESCRIPTION, + .descriptionId = DESCRIPTION_ID + } + }; + PermissionKit::AddDefPermissions(permissionDefs); + std::vector permissions; + permissions.push_back(APP_DATASYNC_PERMISSION); + PermissionKit::AddSystemGrantedReqPermissions(PKGNAME, permissions); + PermissionKit::GrantSystemGrantedPermission(PKGNAME, APP_DATASYNC_PERMISSION); +} + void KvStoreDataService::OnStart() { ZLOGI("distributeddata service onStart"); @@ -940,6 +971,9 @@ void KvStoreDataService::OnStart() } Uninstaller::GetInstance().Init(this); + // add softbus permission. + AddPermission(); + // Initialize meta db delegate manager. KvStoreMetaManager::GetInstance().InitMetaListener([this](const KvStoreMetaData &metaData) { if (!metaData.isDirty) { diff --git a/services/distributeddataservice/app/src/kvstore_data_service.h b/services/distributeddataservice/app/src/kvstore_data_service.h index 03eead02f..fcec10db5 100755 --- a/services/distributeddataservice/app/src/kvstore_data_service.h +++ b/services/distributeddataservice/app/src/kvstore_data_service.h @@ -120,6 +120,8 @@ private: sptr deathRecipient_; }; + void AddPermission() const; + void Initialize(); Status AppExit(const AppId &appId); diff --git a/services/distributeddataservice/app/test/BUILD.gn b/services/distributeddataservice/app/test/BUILD.gn index 8e087294f..7fce5a389 100755 --- a/services/distributeddataservice/app/test/BUILD.gn +++ b/services/distributeddataservice/app/test/BUILD.gn @@ -72,6 +72,7 @@ ohos_unittest("KvStoreImplLogicalIsolationTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] deps = [ @@ -124,6 +125,7 @@ ohos_unittest("KvStoreImplPhysicalIsolationTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] deps = [ @@ -176,6 +178,7 @@ ohos_unittest("KvStoreDataServiceTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] deps = [ @@ -228,6 +231,7 @@ ohos_unittest("KvStoreBackupTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] deps = [ @@ -262,6 +266,7 @@ ohos_unittest("KvStoreFlowCtrlManagerTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] deps = [ @@ -307,6 +312,7 @@ ohos_unittest("KvStoreSyncManagerTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] deps = [ @@ -375,6 +381,7 @@ ohos_unittest("KvStoreUninstallerTest") { "ipc:ipc_core", "safwk:system_ability_fwk", "samgr_L2:samgr_proxy", + "permission_standard:libpermissionsdk_standard", ] } -- Gitee