2 * Copyright (c) 2022 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "privilege_common.h"
20 #include "launcher_env.h"
23 static const char* INTERNET_PRIVILEGE = "http://tizen.org/privilege/internet";
25 static int checkInternetPrivilegeCb(const char *privilegeName, void *user_data)
27 bool* ret = (bool*)user_data;
28 if (!strcmp(privilegeName, INTERNET_PRIVILEGE)) {
35 void checkInternetPrivilegeAndDisableIPv6(const char* pkgId, const std::string& rootPath)
37 bool isInternetPrivilegeExisted = false;
38 pkgmgrinfo_pkginfo_h pkg_handle;
39 int ret = pkgmgrGetPkgInfo(pkgId, &pkg_handle);
44 ret = pkgmgrinfo_pkginfo_foreach_privilege(pkg_handle, checkInternetPrivilegeCb, &isInternetPrivilegeExisted);
45 if (ret != PMINFO_R_OK) {
46 _SERR("Failed to pkgmgrinfo_pkginfo_foreach_privilege");
47 pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle);
51 if (!isInternetPrivilegeExisted) {
52 std::string ipv6FilePath = rootPath + "/bin/" + DISABLE_IPV6_FILE;
53 std::ofstream output(ipv6FilePath);
54 if (exist(ipv6FilePath)) {
55 copySmackAndOwnership(rootPath + "/bin/", ipv6FilePath);
56 _INFO("File to disable IPv6 is created successfully");
58 _SERR("Failed to create file to disable IPv6 [%s]", pkgId);
63 pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle);
66 static int checkAppPrivilegeListCb(pkgmgrinfo_appinfo_h handle, void *user_data)
71 ret = pkgmgrinfo_appinfo_get_apptype(handle, &appType);
72 if (ret != PMINFO_R_OK) {
73 _SERR("Failed to get apptype");
77 // skip if appType is NULL or appType does not contains "dotnet",
78 if (appType == NULL || (appType != NULL && strstr(appType, "dotnet") == NULL)) {
83 ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgId);
84 if (ret != PMINFO_R_OK || pkgId == NULL) {
85 _SERR("Failed to get package id");
89 char *rootPath = NULL;
90 ret = pkgmgrinfo_appinfo_get_root_path(handle, &rootPath);
91 if (ret != PMINFO_R_OK) {
92 _SERR("Failed to get root path");
96 checkInternetPrivilegeAndDisableIPv6(pkgId, rootPath);
101 void checkAllAppPrivilege()
103 int ret = pkgmgrinfo_appinfo_get_installed_list(checkAppPrivilegeListCb, NULL);
104 if (ret != PMINFO_R_OK) {
105 _SERR("Failed to get installed list");