Implement restriction mode
[platform/core/appfw/pkgmgr-server.git] / include / pkgmgr-server.h
1 /*
2  * slp-pkgmgr
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7  * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  */
22
23 #ifndef _PKGMGR_SERVER_H_
24 #define _PKGMGR_SERVER_H_
25
26 #include <sys/types.h>
27 #include <glib.h>
28 #include <dlog.h>
29
30 #ifdef LOG_TAG
31 #undef LOG_TAG
32 #endif /* LOG_TAG */
33 #define LOG_TAG "PKGMGR_SERVER"
34
35 #ifndef ERR
36 #define ERR(fmt, args...) LOGE("[%s:%d] "fmt"\n", __func__, __LINE__, ##args)
37 #endif
38
39 #ifndef DBG
40 #define DBG(fmt, args...) LOGD("[%s:%d] "fmt"\n", __func__, __LINE__, ##args)
41 #endif
42
43 #ifndef INFO
44 #define INFO(fmt, args...) LOGI("[%s:%d] "fmt"\n", __func__, __LINE__, ##args)
45 #endif
46
47 #define CONF_FILE "/etc/package-manager/server/.config"
48 #define DESKTOP_FILE_DIRS "/usr/share/install-info/desktop.conf"
49
50 #define PKG_BACKEND "backend:"
51 #define PKG_CONF_PATH "/etc/package-manager/pkg_path.conf"
52
53 #define MAX_REQ_ID_LEN 256
54 #define MAX_PKG_TYPE_LEN 128
55 #define MAX_PKG_NAME_LEN 256
56 #define MAX_PKG_ARGS_LEN 4096
57 #define DESKTOP_FILE_DIRS_NUM 1024
58
59 enum request_type {
60         PKGMGR_REQUEST_TYPE_INSTALL,
61         PKGMGR_REQUEST_TYPE_MOUNT_INSTALL,
62         PKGMGR_REQUEST_TYPE_REINSTALL,
63         PKGMGR_REQUEST_TYPE_UNINSTALL,
64         PKGMGR_REQUEST_TYPE_MOVE,
65         PKGMGR_REQUEST_TYPE_ENABLE_PKG,
66         PKGMGR_REQUEST_TYPE_DISABLE_PKG,
67         PKGMGR_REQUEST_TYPE_ENABLE_APP,
68         PKGMGR_REQUEST_TYPE_DISABLE_APP,
69         PKGMGR_REQUEST_TYPE_GETSIZE,
70         PKGMGR_REQUEST_TYPE_CLEARDATA,
71         PKGMGR_REQUEST_TYPE_CLEARCACHE,
72         PKGMGR_REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID,
73         PKGMGR_REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID,
74         PKGMGR_REQUEST_TYPE_KILL,
75         PKGMGR_REQUEST_TYPE_CHECK,
76         PKGMGR_REQUEST_TYPE_GENERATE_LICENSE_REQUEST,
77         PKGMGR_REQUEST_TYPE_REGISTER_LICENSE,
78         PKGMGR_REQUEST_TYPE_DECRYPT_PACKAGE,
79         PKGMGR_REQUEST_TYPE_ADD_BLACKLIST,
80         PKGMGR_REQUEST_TYPE_REMOVE_BLACKLIST,
81         PKGMGR_REQUEST_TYPE_CHECK_BLACKLIST,
82         PKGMGR_REQUEST_TYPE_ENABLE_APP_SPLASH_SCREEN,
83         PKGMGR_REQUEST_TYPE_DISABLE_APP_SPLASH_SCREEN,
84         PKGMGR_REQUEST_TYPE_SET_RESTRICTION_MODE,
85         PKGMGR_REQUEST_TYPE_UNSET_RESTRICTION_MODE,
86         PKGMGR_REQUEST_TYPE_GET_RESTRICTION_MODE,
87 };
88
89 typedef struct {
90         char req_id[MAX_REQ_ID_LEN];
91         int req_type;
92         uid_t uid;
93         char pkg_type[MAX_PKG_TYPE_LEN];
94         char pkgid[MAX_PKG_NAME_LEN];
95         char appid[MAX_PKG_NAME_LEN];
96         char args[MAX_PKG_ARGS_LEN];
97 } pm_dbus_msg;
98
99 typedef struct backend_info_t {
100         int pid;
101         uid_t uid;
102         char pkgtype[MAX_PKG_TYPE_LEN];
103         char pkgid[MAX_PKG_NAME_LEN];
104         char args[MAX_PKG_ARGS_LEN];
105 } backend_info;
106
107 char *_get_backend_cmd(char *type);
108
109 gboolean queue_job(void *data);
110 int __return_value_to_caller(const char *req_key, GVariant *result);
111 int __init_request_handler(void);
112 void __fini_request_handler(void);
113 int __add_blacklist(uid_t uid, const char *pkgid);
114 int __remove_blacklist(uid_t uid, const char *pkgid);
115 int __check_blacklist(uid_t uid, const char *pkgid, int *result);
116 int __set_restriction_mode(uid_t uid, int mode);
117 int __unset_restriction_mode(uid_t uid, int mode);
118 int __get_restriction_mode(uid_t uid, int *result);
119
120 #endif/*  _PKGMGR_SERVER_H_ */