From aec8d984ba4e46a5b9b3e94b6e9066e82bc8681e Mon Sep 17 00:00:00 2001 From: Zheng Yongjun Date: Wed, 16 Feb 2022 11:09:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E7=B2=BE=E7=AE=80=E6=B2=99?= =?UTF-8?q?=E7=AE=B1=E4=BB=A3=E7=A0=81=201=EF=BC=8C=E5=B0=86mkdir=20?= =?UTF-8?q?=E8=B7=9F=20symlink=E4=BB=A3=E7=A0=81=E7=B2=BE=E7=AE=80?= =?UTF-8?q?=E5=8C=96=202=EF=BC=8C=E5=8E=BB=E6=8E=89=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E7=9A=84=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Zheng Yongjun --- src/appspawn_server.cpp | 135 +++++++++++----------------------------- 1 file changed, 38 insertions(+), 97 deletions(-) diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp index a234a251..3b4c400e 100644 --- a/src/appspawn_server.cpp +++ b/src/appspawn_server.cpp @@ -126,43 +126,6 @@ static void UninstallSigHandler() } #endif -static sptr GetBundleMgrProxy() -{ - sptr systemAbilityManager = - SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (!systemAbilityManager) { - return nullptr; - } - - sptr remoteObject = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); - if (!remoteObject) { - return nullptr; - } - - return iface_cast(remoteObject); -} - -std::vector GetApplicationNamesById(int32_t uid) -{ - std::vector bundleNames; - sptr mgr = GetBundleMgrProxy(); - if (mgr != nullptr) { - mgr->GetBundlesForUid(uid, bundleNames); - } - - return bundleNames; -} - -std::string GetApplicationNameById(int32_t uid) -{ - std::vector bundleNames = GetApplicationNamesById(uid); - if (bundleNames.empty()) { - return ""; - } - - return bundleNames.front(); -} - AppSpawnServer::AppSpawnServer(const std::string &socketName) { socketName_ = socketName; @@ -261,7 +224,7 @@ bool AppSpawnServer::ServerMain(char *longProcName, int64_t longProcNameLen) _exit(0); } - read(fd[0], &buff, sizeof(buff)); // wait child process resutl + read(fd[0], &buff, sizeof(buff)); // wait child process result close(fd[0]); close(fd[1]); @@ -507,60 +470,42 @@ int32_t AppSpawnServer::DoAppSandboxMount(const ClientSocket::AppProperty *appPr DoAppSandboxMountOnce(oriMediaPath.c_str(), destMediaPath.c_str()); } - std::string dirPath = rootPath + "/data/storage/el2/base/el3"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = rootPath + "/data/storage/el2/base/el3/base"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = rootPath + "/data/storage/el2/base/el4"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = rootPath + "/data/storage/el2/base/el4/base"; - mkdir(dirPath.c_str(), FILE_MODE); - return 0; } void AppSpawnServer::DoAppSandboxMkdir(std::string sandboxPackagePath, const ClientSocket::AppProperty *appProperty) { - // to create /mnt/sandbox//data/storage/el1 related path, later should delete this code. - std::string dirPath = sandboxPackagePath + "/data/"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/storage/"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/storage/media"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el1"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el1/bundle"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el1/base"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el1/database"; - mkdir(dirPath.c_str(), FILE_MODE); + std::vector mkdirInfo; + std::string dirPath; + mkdirInfo.push_back("/data/"); + mkdirInfo.push_back("/storage/"); + mkdirInfo.push_back("/storage/media"); + mkdirInfo.push_back("/data/storage"); // to create /mnt/sandbox//data/storage/el1 related path, later should delete this code. - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el2"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el2/base"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el2/database"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el2/distributedfiles"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/storage/el2/auth_groups"; - mkdir(dirPath.c_str(), FILE_MODE); - + mkdirInfo.push_back("/data/storage/el1"); + mkdirInfo.push_back("/data/storage/el1/bundle"); + mkdirInfo.push_back("/data/storage/el1/base"); + mkdirInfo.push_back("/data/storage/el1/database"); + mkdirInfo.push_back("/data/storage/el2"); + mkdirInfo.push_back("/data/storage/el2/base"); + mkdirInfo.push_back("/data/storage/el2/base/el3"); + mkdirInfo.push_back("/data/storage/el2/base/el3/base"); + mkdirInfo.push_back("/data/storage/el2/base/el4"); + mkdirInfo.push_back("/data/storage/el2/base/el4/base"); + mkdirInfo.push_back("/data/storage/el2/database"); + mkdirInfo.push_back("/data/storage/el2/distributedfiles"); + mkdirInfo.push_back("/data/storage/el2/auth_groups"); // create applications folder for compatibility purpose - dirPath = sandboxPackagePath + "/data/accounts"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/accounts/account_0"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/accounts/account_0/applications/"; - mkdir(dirPath.c_str(), FILE_MODE); - dirPath = sandboxPackagePath + "/data/accounts/account_0/appdata/"; - mkdir(dirPath.c_str(), FILE_MODE); + mkdirInfo.push_back("/data/accounts"); + mkdirInfo.push_back("/data/accounts/account_0"); + mkdirInfo.push_back("/data/accounts/account_0/applications/"); + mkdirInfo.push_back("/data/accounts/account_0/appdata/"); + + for (int i = 0; i < mkdirInfo.size(); i++) { + dirPath = sandboxPackagePath + mkdirInfo[i]; + mkdir(dirPath.c_str(), FILE_MODE); + } } int32_t AppSpawnServer::DoSandboxRootFolderCreateAdapt(std::string sandboxPackagePath) @@ -627,20 +572,16 @@ int32_t AppSpawnServer::DoSandboxRootFolderCreate(std::string sandboxPackagePath // init -> /system/bin/init // lib -> /system/lib // sdcard -> /storage/self/primary - tmpDir = sandboxPackagePath + "/bin"; - symlink("/system/bin", tmpDir.c_str()); - - tmpDir = sandboxPackagePath + "/d"; - symlink("/sys/kernel/debug", tmpDir.c_str()); + std::map symlinkMap; + symlinkMap["/system/bin"] = sandboxPackagePath + "/bin"; + symlinkMap["/sys/kernel/debug"] = sandboxPackagePath + "/d"; + symlinkMap["/system/etc"] = sandboxPackagePath + "/etc"; + symlinkMap["/system/bin/init"] = sandboxPackagePath + "/init"; + symlinkMap["/system/lib"] = sandboxPackagePath + "/lib"; - tmpDir = sandboxPackagePath + "/etc"; - symlink("/system/etc", tmpDir.c_str()); - - tmpDir = sandboxPackagePath + "/init"; - symlink("/system/bin/init", tmpDir.c_str()); - - tmpDir = sandboxPackagePath + "/lib"; - symlink("/system/lib", tmpDir.c_str()); + for (iter = symlinkMap.begin(); iter != symlinkMap.end(); ++iter) { + symlink(iter->first.c_str(), iter->second.c_str()); + } return 0; } -- Gitee