2 * Copyright (c) 2011 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.
23 #include <tzplatform_config.h>
25 //#define TRACE_TAG TRACE_SDB
26 #define LOG_TAG "SDBD_TRACE_SDB"
29 #include <system_info.h>
32 #include "parameter.h"
33 #include "sdbd_plugin.h"
36 #define LOG_DIRECTORY "/home/owner/share/sdbdlog"
41 int r = system_info_get_platform_string("http://tizen.org/system/build.type", &value);
42 if (r != SYSTEM_INFO_ERROR_NONE) {
43 E("fail to get build.type:%d\n", errno);
49 if (!strncmp(value, "eng", sizeof("eng") + 1))
53 else { // expect "user"
63 int get_plugin_capability ( parameters* in, parameters* out )
67 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
68 || in->array_of_parameter[0].type != type_int32 ) {
69 E ( "Invalid argument\n" );
70 return PLUGIN_CMD_FAIL;
74 E ( "Invalid argument\n" );
75 return PLUGIN_CMD_FAIL;
78 out->number_of_parameter = 1;
79 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
80 if (out->array_of_parameter == NULL) {
81 E("failed to allocate memory for the parameter\n");
82 return PLUGIN_CMD_FAIL;
85 capability = in->array_of_parameter[0].v_int32;
87 if ( capability == CAPABILITY_SECURE ) {
88 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_DISABLED );
89 } else if ( capability == CAPABILITY_INTER_SHELL ) {
90 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_ENABLED );
91 } else if ( capability == CAPABILITY_FILESYNC ) {
92 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_PUSHPULL );
93 } else if ( capability == CAPABILITY_USB_PROTOCOL ) {
94 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_ENABLED );
95 } else if ( capability == CAPABILITY_SOCK_PROTOCOL ) {
96 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_ENABLED );
97 } else if ( capability == CAPABILITY_ROOT_ONOFF ) {
98 if ( access ( "/bin/su", F_OK ) == 0 ) {
99 if ( get_buildtype() == 1 ) {
100 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_ENABLED );
103 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_DISABLED );
106 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_DISABLED );
108 } else if ( capability == CAPABILITY_CAN_LAUNCH ) {
109 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_UNKNOWN );
110 } else if ( capability == CAPABILITY_PLUGIN_VER ) {
111 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_UNKNOWN );
112 } else if ( capability == CAPABILITY_PRODUCT_VER ) {
113 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_UNKNOWN );
114 } else if ( capability == CAPABILITY_LOG_ENABLE ) {
115 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_DISABLED );
116 } else if ( capability == CAPABILITY_LOG_PATH ) {
117 const char* sdkhome = tzplatform_getenv(TZ_SDK_HOME);
118 if (sdkhome != NULL) {
119 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s/share/sdbdlog", sdkhome );
121 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", LOG_DIRECTORY );
123 } else if ( capability == CAPABILITY_APPCMD ) {
124 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_ENABLED );
125 } else if (capability == CAPABILITY_DEBUGMODE ) {
126 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", PLUGIN_RET_ENABLED );
128 out->number_of_parameter = 0;
129 free ( out->array_of_parameter );
130 out->array_of_parameter = NULL;
131 return PLUGIN_CMD_NOT_SUPPORT;
134 return PLUGIN_CMD_SUCCESS;
137 int verify_shell_cmd ( parameters* in, parameters* out )
139 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
140 || in->array_of_parameter[0].type != type_string ) {
141 E ( "Invalid argument\n" );
142 return PLUGIN_CMD_FAIL;
146 E ( "Invalid argument\n" );
147 return PLUGIN_CMD_FAIL;
150 D ( "shell command : %s\n", in->array_of_parameter[0].v_string.data );
152 out->number_of_parameter = 1;
153 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
154 if (out->array_of_parameter == NULL) {
155 E("failed to allocate memory for the parameter\n");
156 return PLUGIN_CMD_FAIL;
158 out->array_of_parameter[0].type = type_int32;
159 out->array_of_parameter[0].v_int32 = PLUGIN_RET_VALID;
161 return PLUGIN_CMD_SUCCESS;
164 int convert_shell_cmd ( parameters* in, parameters* out )
166 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
167 || in->array_of_parameter[0].type != type_string ) {
168 E ( "Invalid argument\n" );
169 return PLUGIN_CMD_FAIL;
173 E ( "Invalid argument\n" );
174 return PLUGIN_CMD_FAIL;
177 D ( "shell command : %s\n", in->array_of_parameter[0].v_string.data );
179 out->number_of_parameter = 1;
180 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
181 if (out->array_of_parameter == NULL) {
182 E("failed to allocate memory for the parameter\n");
183 return PLUGIN_CMD_FAIL;
186 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", in->array_of_parameter[0].v_string.data );
187 return PLUGIN_CMD_SUCCESS;
190 int verify_peer_ip ( parameters* in, parameters* out )
192 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
193 || in->array_of_parameter[0].type != type_string ) {
194 E ( "Invalid argument\n" );
195 return PLUGIN_CMD_FAIL;
199 E ( "Invalid argument\n" );
200 return PLUGIN_CMD_FAIL;
203 D ( "shell command : %s\n", in->array_of_parameter[0].v_string.data );
205 out->number_of_parameter = 1;
206 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
207 if (out->array_of_parameter == NULL) {
208 E("failed to allocate memory for the parameter\n");
209 return PLUGIN_CMD_FAIL;
211 out->array_of_parameter[0].type = type_int32;
212 out->array_of_parameter[0].v_int32 = PLUGIN_RET_VALID;
214 return PLUGIN_CMD_SUCCESS;
217 int verify_peer_ipv6 ( parameters* in, parameters* out )
219 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
220 || in->array_of_parameter[0].type != type_string ) {
221 D ( "Invalid argument\n" );
222 return PLUGIN_CMD_FAIL;
226 D ( "Invalid argument\n" );
227 return PLUGIN_CMD_FAIL;
230 D ( "shell command : %s\n", in->array_of_parameter[0].v_string.data );
232 out->number_of_parameter = 1;
233 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
234 if (out->array_of_parameter == NULL) {
235 D("failed to allocate memory for the parameter\n");
236 return PLUGIN_CMD_FAIL;
238 out->array_of_parameter[0].type = type_int32;
239 out->array_of_parameter[0].v_int32 = PLUGIN_RET_INVALID;
241 return PLUGIN_CMD_SUCCESS;
244 int verify_sdbd_launch ( parameters* in, parameters* out )
247 E ( "Invalid argument\n" );
248 return PLUGIN_CMD_FAIL;
251 out->number_of_parameter = 1;
252 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
253 if (out->array_of_parameter == NULL) {
254 E("failed to allocate memory for the parameter\n");
255 return PLUGIN_CMD_FAIL;
257 out->array_of_parameter[0].type = type_int32;
258 out->array_of_parameter[0].v_int32 = PLUGIN_RET_VALID;
260 return PLUGIN_CMD_SUCCESS;
263 int verify_root_cmd ( parameters* in, parameters* out )
265 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
266 || in->array_of_parameter[0].type != type_string ) {
267 E ( "Invalid argument\n" );
268 return PLUGIN_CMD_FAIL;
272 E ( "Invalid argument\n" );
273 return PLUGIN_CMD_FAIL;
276 D ( "shell command : %s\n", in->array_of_parameter[0].v_string.data );
278 out->number_of_parameter = 1;
279 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
280 if (out->array_of_parameter == NULL) {
281 E("failed to allocate memory for the parameter\n");
282 return PLUGIN_CMD_FAIL;
284 out->array_of_parameter[0].type = type_int32;
286 if ( verify_root_commands ( in->array_of_parameter[0].v_string.data ) ) {
287 out->array_of_parameter[0].v_int32 = PLUGIN_RET_VALID;
289 out->array_of_parameter[0].v_int32 = PLUGIN_RET_INVALID;
292 return PLUGIN_CMD_SUCCESS;
295 int get_shell_env ( parameters* in, parameters* out )
298 E ( "Invalid argument\n" );
299 return PLUGIN_CMD_FAIL;
302 out->number_of_parameter = 1;
303 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
304 if (out->array_of_parameter == NULL) {
305 E("failed to allocate memory for the parameter\n");
306 return PLUGIN_CMD_FAIL;
309 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", "" );
310 return PLUGIN_CMD_SUCCESS;
313 int verify_push ( parameters* in, parameters* out )
315 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
316 || in->array_of_parameter[0].type != type_string ) {
317 E ( "Invalid argument\n" );
318 return PLUGIN_CMD_FAIL;
322 E ( "Invalid argument\n" );
323 return PLUGIN_CMD_FAIL;
326 out->number_of_parameter = 1;
327 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
328 if (out->array_of_parameter == NULL) {
329 E("failed to allocate memory for the parameter\n");
330 return PLUGIN_CMD_FAIL;
332 out->array_of_parameter[0].type = type_int32;
333 out->array_of_parameter[0].v_int32 = PLUGIN_RET_VALID;
335 return PLUGIN_CMD_SUCCESS;
338 int verify_pull ( parameters* in, parameters* out )
340 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
341 || in->array_of_parameter[0].type != type_string ) {
342 E ( "Invalid argument\n" );
343 return PLUGIN_CMD_FAIL;
347 E ( "Invalid argument\n" );
348 return PLUGIN_CMD_FAIL;
351 out->number_of_parameter = 1;
352 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
353 if (out->array_of_parameter == NULL) {
354 E("failed to allocate memory for the parameter\n");
355 return PLUGIN_CMD_FAIL;
357 out->array_of_parameter[0].type = type_int32;
358 out->array_of_parameter[0].v_int32 = PLUGIN_RET_VALID;
360 return PLUGIN_CMD_SUCCESS;
363 int verify_handle_by_plugin ( parameters* in, parameters* out )
365 if ( in == NULL || in->number_of_parameter != 1 || in->array_of_parameter == NULL
366 || in->array_of_parameter[0].type != type_string ) {
367 D ( "Invalid argument\n" );
368 return PLUGIN_CMD_FAIL;
372 D ( "Invalid argument\n" );
373 return PLUGIN_CMD_FAIL;
376 D ( "shell command : %s\n", in->array_of_parameter[0].v_string.data );
378 out->number_of_parameter = 1;
379 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
380 if (out->array_of_parameter == NULL) {
381 D("failed to allocate memory for the parameter\n");
382 return PLUGIN_CMD_FAIL;
385 //the data contains the string sample-echo followed by space and then the user string, hence checking for space.
386 if((in->array_of_parameter[0].v_string.data[11] == ' ')&&(!strncmp(in->array_of_parameter[0].v_string.data, "sample-echo", strlen("sample-echo")))) {
387 out->array_of_parameter[0].type = type_int32;
388 out->array_of_parameter[0].v_int32 = PLUGIN_RET_HANDLE;
391 out->array_of_parameter[0].type = type_int32;
392 out->array_of_parameter[0].v_int32 = PLUGIN_RET_NOT_HANDLE;
395 return PLUGIN_CMD_SUCCESS;
398 int get_plugin_extra_capability ( parameters* in, parameters* out )
401 E ( "Invalid argument\n" );
402 return PLUGIN_CMD_FAIL;
405 out->number_of_parameter = 1;
406 out->array_of_parameter = ( parameter* ) malloc ( sizeof ( parameter ) );
407 if (out->array_of_parameter == NULL) {
408 E("failed to allocate memory for the parameter\n");
409 return PLUGIN_CMD_FAIL;
412 make_string_parameter ( & ( out->array_of_parameter[0] ), "%s", "" );
413 return PLUGIN_CMD_SUCCESS;