4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #include <setting-common-data-type.h>
22 #include <setting-common-data-slp-setting.h>
23 #include <setting-common-draw-widget.h>
24 #include <setting-common-view.h>
25 #include <setting-security-firewall-data.h>
26 #include <setting-security-blocked-list.h>
27 #include <setting-debug.h>
28 #include <security-server.h>
30 static int setting_security_blocked_list_create(void *cb);
31 static int setting_security_blocked_list_destroy(void *cb);
32 static int setting_security_blocked_list_update(void *cb);
33 static int setting_security_blocked_list_cleanup(void *cb);
35 setting_view setting_view_security_blocked_list = {
36 .create = setting_security_blocked_list_create,
37 .destroy = setting_security_blocked_list_destroy,
38 .update = setting_security_blocked_list_update,
39 .cleanup = setting_security_blocked_list_cleanup,
42 #define FIREWALL_DIR "/home/app/.firewall/"
43 #define FIREWALL_LIST_IP_PATH FIREWALL_DIR"List-IP"
44 #define FIREWALL_LIST_URL_PATH FIREWALL_DIR"List-url"
45 #define FIREWALL_LIST_PORT_PATH FIREWALL_DIR"List-port"
47 /* ***************************************************
51 ****************************************************/
52 static Evas_Object *__setting_security_create_nocontents(Evas_Object *parent, const char *text)
55 Evas_Object *layout, *noc;
58 noc = elm_layout_add(parent);
59 elm_object_part_text_set(noc, "elm.text", text);
60 elm_layout_theme_set(noc, "layout", "nocontents", "full");
63 layout = elm_layout_add(parent);
64 elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "nocontents");
65 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
66 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
67 elm_object_part_content_set(layout, "contents", noc);
71 void __setting_security_IP_blocklist_add_genlist_items(void *data)
76 SettingSecurityUG *ad = (SettingSecurityUG *)data;
77 ad->scroller = elm_genlist_add(ad->win_main_layout);
78 setting_retm_if(ad->scroller == NULL, "Cannot set scroller object as contento of layout");
79 elm_genlist_realization_mode_set(ad->scroller, EINA_TRUE);
80 elm_object_style_set(ad->scroller , "dialogue");
81 elm_genlist_clear(ad->scroller);
83 char temp[SETTING_STR_SLP_LEN] = {0,};
84 char *filePath = "/home/app/.firewall/";
85 char *fileName = "List-IP";
86 setting_security_firewall_data_init_list();
87 setting_security_firewall_data_get_data(g_ipHead, g_ipTail, filePath, fileName);
88 COMMAND *start = g_ipHead;
89 COMMAND *end = g_ipTail;
90 start = start->next ; /* <== HEAD is empty. */
94 while (start != end) {
95 if (start->command != NULL) {
96 SETTING_TRACE_DEBUG("block list name : [%d] %s", chk_idx, start->command);
98 /*filtering for same IP list*/
99 if (!safeStrCmp(temp, start->command)) {
100 SETTING_TRACE_DEBUG("same list skip : [%d] temp : %s, command : %s", chk_idx , temp , start->command);
102 setting_create_Gendial_field_def(ad->scroller, &(itc_1text),
104 SWALLOW_Type_INVALID,
105 NULL, NULL, 0, start->command, NULL,
110 snprintf(temp, SETTING_STR_SLP_LEN, "%s", start->command);
113 start = start->next; /* go */
116 ad->list_cnt = chk_cnt;
118 ad->content = __setting_security_create_nocontents(ad->navi_bar, "No IP list");
119 ad->genlist = ad->content;
121 ad->genlist = ad->scroller;
125 void __setting_security_URL_blocklist_add_genlist_items(void *data)
131 SettingSecurityUG *ad = (SettingSecurityUG *)data;
132 ad->scroller = elm_genlist_add(ad->win_main_layout);
133 setting_retm_if(ad->scroller == NULL, "Cannot set scroller object as contento of layout");
134 elm_genlist_realization_mode_set(ad->scroller, EINA_TRUE);
135 elm_object_style_set(ad->scroller , "dialogue");
136 elm_genlist_clear(ad->scroller);
138 char temp[SETTING_STR_SLP_LEN] = {0,};
139 char *filePath = "/home/app/.firewall/";
140 char *fileName = "List-url";
141 setting_security_firewall_data_init_list();
142 setting_security_firewall_data_get_data(g_urlHead, g_urlTail, filePath, fileName);
143 COMMAND *start = g_urlHead ;
144 COMMAND *end = g_urlTail ;
146 start = start->next ; /* <== HEAD is empty. */
151 while (start != end) {
152 if (start->command != NULL) {
153 SETTING_TRACE_DEBUG("block list name : [%d] %s", chk_idx, start->command);
155 /*filtering for same IP list*/
156 if (!safeStrCmp(temp, start->command)) {
157 SETTING_TRACE_DEBUG("same list skip : [%d] temp : %s, command : %s", chk_idx , temp , start->command);
159 setting_create_Gendial_field_def(ad->scroller, &(itc_1text),
161 SWALLOW_Type_INVALID,
162 NULL, NULL, 0, start->command, NULL,
167 snprintf(temp, SETTING_STR_SLP_LEN, "%s", start->command);
170 start = start->next; /* go */
173 ad->list_cnt = chk_cnt;
175 ad->content = __setting_security_create_nocontents(ad->navi_bar, "No IP list");
176 ad->genlist = ad->content;
178 ad->genlist = ad->scroller;
183 void __setting_security_Port_blocklist_add_genlist_items(void *data)
189 SettingSecurityUG *ad = (SettingSecurityUG *)data;
190 ad->scroller = elm_genlist_add(ad->win_main_layout);
191 setting_retm_if(ad->scroller == NULL, "Cannot set scroller object as contento of layout");
192 elm_genlist_realization_mode_set(ad->scroller, EINA_TRUE);
193 elm_object_style_set(ad->scroller , "dialogue");
194 elm_genlist_clear(ad->scroller);
196 char temp[SETTING_STR_SLP_LEN] = {0,};
197 char *filePath = "/home/app/.firewall/";
198 char *fileName = "List-port";
199 setting_security_firewall_data_init_list();
200 setting_security_firewall_data_get_data(g_portHead, g_portTail, filePath, fileName);
202 COMMAND *start = g_portHead ;
203 COMMAND *end = g_portTail ;
204 start = start->next ; /* <== HEAD is empty. */
208 while (start != end) {
209 if (start->command != NULL) {
210 SETTING_TRACE_DEBUG("block list name : [%d] %s", chk_idx, start->command);
212 /*filtering for same IP list*/
213 if (!safeStrCmp(temp, start->command)) {
214 SETTING_TRACE_DEBUG("same list skip : [%d] temp : %s, command : %s", chk_idx , temp , start->command);
216 setting_create_Gendial_field_def(ad->scroller, &(itc_1text),
218 SWALLOW_Type_INVALID,
219 NULL, NULL, 0, start->command, NULL,
224 snprintf(temp, SETTING_STR_SLP_LEN, "%s", start->command);
227 start = start->next; /* go */
230 ad->list_cnt = chk_cnt;
231 if (ad->list_cnt == 0) {
232 ad->content = __setting_security_create_nocontents(ad->navi_bar, "No IP list");
233 ad->genlist = ad->content;
235 ad->genlist = ad->scroller;
239 static int setting_security_blocked_list_create(void *cb)
242 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
244 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
245 Elm_Object_Item *item = NULL;
246 Evas_Object *scroller = NULL;
248 Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
249 elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME, "selinfo_bottom");
250 evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
252 /* add basic layout */
253 if (ad->firewall_block_type == SETTING_SEC_FIREWALL_BLOCK_IP) {
255 ad->navi_it = setting_push_layout_navi_bar(_(Keystr_BlockedIPList),
256 _("IDS_COM_BODY_BACK"),
257 _("IDS_COM_SK_DELETE"),
259 setting_security_blocked_list_click_softkey_back_cb,
260 setting_security_blocked_list_click_softkey_delete_cb,
261 setting_security_blocked_list_click_softkey_add_cb,
262 ad, view_layout , ad->navi_bar, NULL);
263 ad->view_layout = view_layout;
264 __setting_security_IP_blocklist_add_genlist_items(ad);
265 } else if (ad->firewall_block_type == SETTING_SEC_FIREWALL_BLOCK_URL) {
267 ad->navi_it = setting_push_layout_navi_bar(_(Keystr_BlockedURLList),
268 _("IDS_COM_BODY_BACK"),
269 _("IDS_COM_SK_DELETE"),
271 setting_security_blocked_list_click_softkey_back_cb,
272 setting_security_blocked_list_click_softkey_delete_cb,
273 setting_security_blocked_list_click_softkey_add_cb,
274 ad, view_layout , ad->navi_bar, NULL);
275 ad->view_layout = view_layout;
276 __setting_security_URL_blocklist_add_genlist_items(ad);
277 } else if (ad->firewall_block_type == SETTING_SEC_FIREWALL_BLOCK_PORT) {
279 ad->navi_it = setting_push_layout_navi_bar(_(Keystr_BlockedPortList),
280 _("IDS_COM_BODY_BACK"),
281 _("IDS_COM_SK_DELETE"),
283 setting_security_blocked_list_click_softkey_back_cb,
284 setting_security_blocked_list_click_softkey_delete_cb,
285 setting_security_blocked_list_click_softkey_add_cb,
286 ad, view_layout , ad->navi_bar, NULL);
287 ad->view_layout = view_layout;
288 __setting_security_Port_blocklist_add_genlist_items(ad);
290 scroller = ad->genlist;
291 elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
292 evas_object_smart_callback_add(ad->scroller, "realized", __gl_realized_cb, NULL);
294 item = elm_genlist_item_append(ad->scroller , &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
295 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
297 if (ad->list_cnt == 0) {
298 /* disable "Delete" button */
300 Evas_Object *toolbar = elm_object_item_part_content_get(ad->navi_it, "toolbar");
301 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
306 setting_view_security_blocked_list.is_create = 1;
307 return SETTING_RETURN_SUCCESS;
310 static int setting_security_blocked_list_destroy(void *cb)
314 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
315 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
316 elm_naviframe_item_pop(ad->navi_bar);
317 setting_security_firewall_data_end_list();
318 setting_view_security_blocked_list.is_create = 0;
319 return SETTING_RETURN_SUCCESS;
322 static int setting_security_blocked_list_update(void *cb)
326 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
327 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
328 /*elm_naviframe_item_pop(ad->navi_bar); */
330 Evas_Object *view_layout = ad->view_layout;
332 Evas_Object *scroller = NULL;
333 scroller = elm_object_part_content_get(view_layout, "elm.swallow.contents");
334 retm_if(NULL == scroller, "scroller is NULL");
336 /* checking layout or genlist type to clear */
337 char *objtype = NULL;
338 objtype = evas_object_type_get(view_layout);
339 if (!safeStrCmp(objtype, "elm_genlist")) {
340 elm_genlist_clear(scroller);
341 elm_object_part_content_unset(view_layout, "elm.swallow.contents");
342 evas_object_del(scroller);
347 setting_security_firewall_data_end_list();
348 if (ad->firewall_block_type == SETTING_SEC_FIREWALL_BLOCK_IP) {
350 __setting_security_IP_blocklist_add_genlist_items(ad);
351 } else if (ad->firewall_block_type == SETTING_SEC_FIREWALL_BLOCK_URL) {
353 __setting_security_URL_blocklist_add_genlist_items(ad);
354 } else if (ad->firewall_block_type == SETTING_SEC_FIREWALL_BLOCK_PORT) {
356 __setting_security_Port_blocklist_add_genlist_items(ad);
359 scroller = ad->genlist;
360 elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
362 Elm_Object_Item *navi_it = NULL;
363 navi_it = elm_naviframe_top_item_get(ad->navi_bar);
364 ad->navi_it = navi_it;
365 if (ad->list_cnt <= 0) {
366 SETTING_TRACE_DEBUG("ad->list_cnt : %d", ad->list_cnt);
367 /* disable "Delete" button */
369 SETTING_TRACE_DEBUG("ad->navi_it NOTNULL");
370 Evas_Object *toolbar = elm_object_item_part_content_get(ad->navi_it, "toolbar");
371 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_TRUE);
374 SETTING_TRACE_DEBUG("ad->list_cnt : %d", ad->list_cnt);
375 /* enable "Delete" button */
377 SETTING_TRACE_DEBUG("ad->navi_it NOTNULL");
378 Evas_Object *toolbar = elm_object_item_part_content_get(ad->navi_it, "toolbar");
379 elm_object_item_disabled_set(elm_toolbar_last_item_get(toolbar), EINA_FALSE);
383 return SETTING_RETURN_SUCCESS;
386 static int setting_security_blocked_list_cleanup(void *cb)
390 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
392 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
393 return setting_security_blocked_list_destroy(ad);
396 /* ***************************************************
400 ****************************************************/
402 setting_security_blocked_list_click_softkey_back_cb(void *data, Evas_Object *obj,
406 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
407 SettingSecurityUG *ad = (SettingSecurityUG *) data;
408 setting_view_change(&setting_view_security_blocked_list, &setting_view_security_firewall, ad);
413 setting_security_blocked_list_click_softkey_add_cb(void *data, Evas_Object *obj,
418 setting_retm_if(data == NULL, "Data parameter is NULL");
419 SettingSecurityUG *ad = (SettingSecurityUG *) data;
420 setting_view_change(&setting_view_security_blocked_list, &setting_view_security_firewall_keypad, ad);
424 setting_security_blocked_list_click_softkey_delete_cb(void *data, Evas_Object *obj,
429 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
431 SettingSecurityUG *ad = (SettingSecurityUG *) data;
434 /* change to select list */
435 setting_view_change(&setting_view_security_blocked_list, &setting_view_security_delete_block_list, ad);