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>
26 #include <setting-security-firewall.h>
27 #include <setting-security-firewall-data.h>
28 #include <setting-security.h>
29 #include <setting-debug.h>
30 #include <security-server.h>
32 static int setting_security_firewall_create(void *cb);
33 static int setting_security_firewall_destroy(void *cb);
34 static int setting_security_firewall_update(void *cb);
35 static int setting_security_firewall_cleanup(void *cb);
37 setting_view setting_view_security_firewall = {
38 .create = setting_security_firewall_create,
39 .destroy = setting_security_firewall_destroy,
40 .update = setting_security_firewall_update,
41 .cleanup = setting_security_firewall_cleanup,
44 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_LEN 4
45 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL "IDS_ST_OPT_ALLOW_ALL"
46 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI "IDS_ST_OPT_BLOCK_WI_FI"
47 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK "IDS_ST_OPT_BLOCK_MOBILE_NETWORKS"
48 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL "IDS_ST_OPT_BLOCK_ALL"
50 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_LEN 4
51 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL "IDS_ST_OPT_ALLOW_ALL"
52 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP "IDS_ST_BODY_BLOCK_TCP"
53 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP "IDS_ST_BODY_BLOCK_UDP"
54 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL "IDS_ST_OPT_BLOCK_ALL"
56 static char *network_block_type[SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_LEN] = {
57 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL,
58 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI,
59 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK,
60 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL
63 static char *protocol_block_type[SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_LEN] = {
64 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL,
65 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP,
66 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP,
67 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL
70 static void __setting_security_firewall_exp_cb(void *data, Evas_Object *obj, void *event_info);
71 int __check_network_block_mode();
72 int __check_protocol_block_mode();
74 /* ***************************************************
78 ****************************************************/
80 static int setting_security_firewall_create(void *cb)
83 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
85 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
86 if (CONNECTION_ERROR_NONE != connection_create(&(ad->connection))) {
87 SETTING_TRACE_ERROR("***Failed to connection_create.***");
90 Evas_Object *scroller;
91 Elm_Object_Item *item = NULL;
93 setting_security_firewall_data_init_list();
99 /* add basic layout */
100 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
101 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
102 (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
103 /*setting_security_firewall_data_init_list(); */
104 setting_push_layout_navi_bar_genlist(ad->win_main_layout,
108 setting_security_firewall_click_softkey_back_cb,
109 NULL, ad, &scroller, ad->navi_bar);
111 ad->genlist = scroller;
112 evas_object_smart_callback_add(ad->genlist, "realized", __gl_realized_cb, ad);
114 /* expandable disabled set */
115 SETTING_TRACE_DEBUG("expandable disabled set");
116 setting_enable_expandable_genlist(scroller, ad, __setting_security_firewall_exp_cb, NULL);
119 item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
120 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
123 /* check ip ON/off */
124 SETTING_TRACE_DEBUG("start user_iptables_isTurnOn");
126 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_IP) == 0) {
132 SETTING_TRACE_DEBUG("end user_iptables_isTurnOn");
134 setting_create_Gendial_field_def(scroller,
135 &(ad->itc_1text_1icon),
136 setting_security_firewall_mouse_up_Gendial_list_cb,
138 SWALLOW_Type_1TOGGLE, NULL,
140 Keystr_BlockIP, NULL,
141 setting_security_firewall_chk_btn_cb);
143 if (ad->data_block_ip) {
144 ad->data_block_ip->userdata = ad;
145 ad->data_block_ip->group_style = SETTING_GROUP_STYLE_TOP;
147 SETTING_TRACE_ERROR("ad->data_block_ip is NULL");
150 /* 1-1) Blocked IP list */
151 ad->data_blocked_ip_list =
152 setting_create_Gendial_field_def(scroller,
154 setting_security_firewall_mouse_up_Gendial_list_cb,
156 SWALLOW_Type_INVALID, NULL,
158 Keystr_BlockedIPList, NULL,
161 if (ad->data_blocked_ip_list) {
162 ad->data_blocked_ip_list->userdata = ad;
163 ad->data_blocked_ip_list->group_style = SETTING_GROUP_STYLE_BOTTOM;
165 setting_disable_genlist_item(ad->data_blocked_ip_list->item);
168 /* 1-2) description */
169 ADD_GL_HELP(scroller, Keystr_BlockedIPDesc);
171 /* check url ON/off */
173 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_URL) == 0) {
180 setting_create_Gendial_field_def(scroller,
181 &(ad->itc_1text_1icon),
182 setting_security_firewall_mouse_up_Gendial_list_cb,
184 SWALLOW_Type_1TOGGLE, NULL,
186 Keystr_BlockURL, NULL,
187 setting_security_firewall_chk_btn_cb);
189 if (ad->data_block_url) {
190 ad->data_block_url->userdata = ad;
191 ad->data_block_url->group_style = SETTING_GROUP_STYLE_TOP;
193 SETTING_TRACE_ERROR("ad->data_block_url is NULL");
196 /* 2-1) Blocked URL list */
197 ad->data_blocked_url_list =
198 setting_create_Gendial_field_def(scroller,
200 setting_security_firewall_mouse_up_Gendial_list_cb,
202 SWALLOW_Type_INVALID, NULL,
204 Keystr_BlockedURLList, NULL,
207 if (ad->data_blocked_url_list) {
208 ad->data_blocked_url_list->userdata = ad;
209 ad->data_blocked_url_list->group_style = SETTING_GROUP_STYLE_BOTTOM;
211 setting_disable_genlist_item(ad->data_blocked_url_list->item);
215 /* 2-2) description */
216 ADD_GL_HELP(ad->enc_genlist, Keystr_BlockedURLDesc);
219 /* check Port ON/off */
220 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_PORT) == 0) {
226 ad->data_block_port =
227 setting_create_Gendial_field_def(scroller,
228 &(ad->itc_1text_1icon),
229 setting_security_firewall_mouse_up_Gendial_list_cb,
231 SWALLOW_Type_1TOGGLE, NULL,
233 Keystr_BlockPort, NULL,
234 setting_security_firewall_chk_btn_cb);
236 if (ad->data_block_port) {
237 ad->data_block_port->userdata = ad;
238 ad->data_block_port->group_style = SETTING_GROUP_STYLE_TOP;
240 SETTING_TRACE_ERROR("ad->data_block_port is NULL");
243 /* 3-1) Blocked Port list */
244 ad->data_blocked_port_list =
245 setting_create_Gendial_field_def(scroller,
247 setting_security_firewall_mouse_up_Gendial_list_cb,
249 SWALLOW_Type_INVALID, NULL,
251 Keystr_BlockedPortList, NULL,
254 if (ad->data_blocked_port_list) {
255 ad->data_blocked_port_list->userdata = ad;
256 ad->data_blocked_port_list->group_style = SETTING_GROUP_STYLE_BOTTOM;
258 setting_disable_genlist_item(ad->data_blocked_port_list->item);
262 /* 3-2) Blocked Port description */
263 ADD_GL_HELP(ad->enc_genlist, Keystr_BlockedPortDesc);
265 /* 4) Network type */
266 int network_block_type_value = __check_network_block_mode();
268 SETTING_TRACE_DEBUG("network_block_type_value: %s ", _(network_block_type[network_block_type_value]));
270 ad->data_block_network_type =
271 setting_create_Gendial_exp_parent_field(scroller,
272 &(itc_2text_3_parent),
274 SWALLOW_Type_INVALID,
275 Keystr_BlockedNetworkType,
276 _(network_block_type[network_block_type_value]),
277 SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
279 if (ad->data_block_network_type) {
280 ad->data_block_network_type->userdata = ad;
282 SETTING_TRACE_ERROR("ad->data_block_network_type is NULL");
283 return SETTING_RETURN_FAIL;
286 SETTING_TRACE_DEBUG("start expandable protocol");
287 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL),
288 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
289 /* 5) Protocol type */
290 int protocol_block_type_value = __check_protocol_block_mode();
292 SETTING_TRACE_DEBUG("protocol_block_type: %s ", _(protocol_block_type[protocol_block_type_value]));
294 ad->data_block_protocol_type =
295 setting_create_Gendial_exp_parent_field(scroller,
296 &(itc_2text_3_parent),
298 SWALLOW_Type_INVALID,
299 Keystr_BlockedProtocolType,
300 _(protocol_block_type[protocol_block_type_value]),
301 SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
303 if (ad->data_block_protocol_type) {
304 ad->data_block_protocol_type->userdata = ad;
306 SETTING_TRACE_ERROR("ad->data_block_protocol_type is NULL");
307 return SETTING_RETURN_FAIL;
310 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL),
311 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
314 setting_view_security_firewall.is_create = 1;
315 return SETTING_RETURN_SUCCESS;
319 static int setting_security_firewall_destroy(void *cb)
323 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
325 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
326 if (ad->connection) {
327 connection_destroy(ad->connection);
328 connection_profile_destroy(ad->profile);
329 ad->connection = NULL;
333 /*evas_object_smart_callback_del(ad->genlist, "realized", __gl_realized_cb); */
334 setting_security_firewall_data_end_list();
335 elm_naviframe_item_pop(ad->navi_bar);
336 /*setting_security_firewall_data_end_list(); */
337 setting_view_security_firewall.is_create = 0;
339 return SETTING_RETURN_SUCCESS;
342 static int setting_security_firewall_update(void *cb)
346 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
348 return SETTING_RETURN_SUCCESS;
351 static int setting_security_firewall_cleanup(void *cb)
355 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
357 SettingSecurityUG *ad = (SettingSecurityUG *) cb;
358 return setting_security_firewall_destroy(ad);
361 /* ***************************************************
365 ****************************************************/
367 static void __toggle_automatic_chk(void *data, int chk_status, char *keyStr)
370 SettingSecurityUG *ad = (SettingSecurityUG *) data;
374 if (!safeStrCmp(Keystr_BlockIP, keyStr)) {
375 setting_enable_genlist_item(ad->data_blocked_ip_list->item);
376 SETTING_TRACE_DEBUG("Keystr_BlockIP");
377 setting_security_system_command("20", NULL);
378 } else if (!safeStrCmp(Keystr_BlockURL, keyStr)) {
380 setting_enable_genlist_item(ad->data_blocked_url_list->item);
381 SETTING_TRACE_DEBUG("Keystr_BlockURL");
382 setting_security_system_command("24", NULL);
383 } else if (!safeStrCmp(Keystr_BlockPort, keyStr)) {
384 setting_enable_genlist_item(ad->data_blocked_port_list->item);
385 SETTING_TRACE_DEBUG("Keystr_BlockPort");
386 setting_security_system_command("21", NULL);
390 if (!safeStrCmp(Keystr_BlockIP, keyStr)) {
391 setting_disable_genlist_item(ad->data_blocked_ip_list->item);
393 SETTING_TRACE_DEBUG("Keystr_BlockIP - off");
394 setting_security_system_command("25", NULL);
395 } else if (!safeStrCmp(Keystr_BlockURL, keyStr)) {
396 setting_disable_genlist_item(ad->data_blocked_url_list->item);
397 SETTING_TRACE_DEBUG("Keystr_BlockURL - off");
398 setting_security_system_command("29", NULL);
399 } else if (!safeStrCmp(Keystr_BlockPort, keyStr)) {
400 setting_disable_genlist_item(ad->data_blocked_port_list->item);
401 SETTING_TRACE_DEBUG("Keystr_BlockURL - off");
402 setting_security_system_command("26", NULL);
409 setting_security_firewall_chk_btn_cb(void *data, Evas_Object *obj,
414 retm_if(data == NULL, "Data parameter is NULL");
415 Setting_GenGroupItem_Data *list_item =
416 (Setting_GenGroupItem_Data *) data;
417 SettingSecurityUG *ad = list_item->userdata;
418 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
420 /* enable /disable toggle button */
421 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
427 setting_security_firewall_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info)
430 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
432 SettingSecurityUG *ad = (SettingSecurityUG *) data;
434 setting_view_change(&setting_view_security_firewall, &setting_view_security_main, ad);
440 setting_security_firewall_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
445 setting_retm_if(data == NULL, "Data parameter is NULL");
446 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
448 SettingSecurityUG *ad = data;
450 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
451 elm_genlist_item_selected_set(item, 0);
452 Setting_GenGroupItem_Data *list_item =
453 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
455 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
457 /* enable /disable toggle button */
458 if (!safeStrCmp(Keystr_BlockIP, list_item->keyStr)) {
459 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
460 } else if (!safeStrCmp(Keystr_BlockedIPList, list_item->keyStr)) {
462 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_IP;
463 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
466 if (!safeStrCmp(Keystr_BlockURL, list_item->keyStr)) {
467 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
468 } else if (!safeStrCmp(Keystr_BlockedURLList, list_item->keyStr)) {
469 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_URL;
470 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
473 if (!safeStrCmp(Keystr_BlockPort, list_item->keyStr)) {
474 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
475 } else if (!safeStrCmp(Keystr_BlockedPortList, list_item->keyStr)) {
476 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_PORT;
477 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
483 setting_security_firewall_click_softkey_delete_cb(void *data, Evas_Object *obj,
488 retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
490 SettingSecurityUG *ad = (SettingSecurityUG *) data;
494 /* change to select list */
499 static bool __get_user_selected_profile(void *data)
502 setting_retvm_if(data == NULL, -1, "Data parameter is NULL");
503 /*Setting_GenGroupItem_Data *list_item = data; */
504 SettingSecurityUG *ad = (SettingSecurityUG *) data;
505 setting_retvm_if(ad == NULL, -1, "ad parameter is NULL");
507 connection_profile_iterator_h profile_iter = NULL;
508 connection_profile_h profile_h = NULL;
509 connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
510 char *profile_name = NULL;
512 int rv = connection_get_current_profile(ad->connection, &profile_h);
513 if (rv != CONNECTION_ERROR_NONE) {
514 SETTING_TRACE_ERROR("Fail to get current profile [%d]", rv);
517 if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
518 SETTING_TRACE_ERROR("Fail to get profile name");
521 if (connection_get_default_cellular_service_profile(ad->connection, CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET, &(ad->profile)) != CONNECTION_ERROR_NONE
522 && connection_get_default_cellular_service_profile(ad->connection, CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET, &(ad->profile)) != CONNECTION_ERROR_NONE) {
523 SETTING_TRACE_ERROR("Fail to get service_type");
527 ad->interface_name = NULL;
528 if (connection_profile_get_network_interface_name(ad->profile, &(ad->interface_name)) != CONNECTION_ERROR_NONE) {
529 SETTING_TRACE("Fail to get interface name!");
532 SETTING_TRACE("get profile !! Interface name : [%s], profile name [%s]", ad->interface_name, profile_name);
533 if (ad->interface_name == NULL)
543 void __sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
547 SettingSecurityUG *ad = (SettingSecurityUG *) data;
548 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
549 Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
550 Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
551 elm_genlist_item_selected_set(subitem, 0);
552 Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
553 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
554 ret_if(NULL == data_subItem || NULL == data_parentItem);
556 int err = IPTABLES_ERROR_NONE;
557 if (!safeStrCmp(Keystr_BlockedNetworkType, data_parentItem->keyStr)) {
558 bool isInterface = false;
559 if (!__get_user_selected_profile(ad)) { /*get interface from profile for pdp!! */
560 SETTING_TRACE_DEBUG("__get_user_selected_profile failed");
563 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
564 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
565 err = setting_security_system_command("16", ad->interface_name); /*allow, interface name as pdp0, pdp1,... */
566 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
568 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
569 err = setting_security_system_command("17", "wlan+"); /*allow */
570 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
572 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, data_subItem->keyStr)) {
573 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
574 err = setting_security_system_command("16", ad->interface_name); /*allow */
575 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
577 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
578 err = setting_security_system_command("8", "wlan+");
579 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
581 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, data_subItem->keyStr)) {
582 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
583 err = setting_security_system_command("17", "wlan+"); /*allow */
584 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
586 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
588 setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
591 err = setting_security_system_command("7", ad->interface_name);
592 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
595 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
596 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
598 setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
601 err = setting_security_system_command("7", ad->interface_name);
602 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
605 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
606 err = setting_security_system_command("8", "wlan+");
607 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
610 } else if (!safeStrCmp(Keystr_BlockedProtocolType, data_parentItem->keyStr)) {
611 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
612 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
613 err = setting_security_system_command("14", "TCP"); /*allow */
614 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
616 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
617 err = setting_security_system_command("15", "UDP"); /*allow */
618 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
620 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, data_subItem->keyStr)) {
621 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
622 err = setting_security_system_command("15", "UDP"); /*allow */
623 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
625 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
626 err = setting_security_system_command("5", "TCP");
627 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
629 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, data_subItem->keyStr)) {
630 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
631 err = setting_security_system_command("14", "TCP"); /*allow */
632 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
634 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
635 err = setting_security_system_command("6", "UDP");
636 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
638 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
639 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
640 err = setting_security_system_command("5", "TCP");
641 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
643 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
644 err = setting_security_system_command("6", "UDP");
645 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
650 elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
651 data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
652 elm_object_item_data_set(data_parentItem->item, data_parentItem);
653 elm_genlist_item_update(data_parentItem->item);
656 void __sub_list_rd_change(void *data, Evas_Object *obj, void *event_info)
659 retm_if(data == NULL, "Data parameter is NULL");
660 Setting_GenGroupItem_Data *list_item =
661 (Setting_GenGroupItem_Data *) data;
662 list_item->chk_status = elm_radio_value_get(obj); /* for update */
664 SettingSecurityUG *ad = list_item->userdata;
665 setting_retm_if(ad == NULL, "ad parameter is NULL");
667 Elm_Object_Item *subItem = list_item->item;
668 Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subItem);
670 Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subItem); /* subItem data */
671 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);
672 ret_if(NULL == data_subItem || NULL == data_parentItem);
674 int err = IPTABLES_ERROR_NONE;
675 if (!safeStrCmp(Keystr_BlockedNetworkType, data_parentItem->keyStr)) {
676 bool isInterface = false;
677 if (!__get_user_selected_profile(ad)) { /*get interface from profile for pdp!! */
678 SETTING_TRACE_DEBUG("__get_user_selected_profile failed");
681 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
682 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
683 err = setting_security_system_command("16", ad->interface_name); /*allow, interface name as pdp0, pdp1,... */
684 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
686 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
687 err = setting_security_system_command("17", "wlan+"); /*allow */
688 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
690 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, data_subItem->keyStr)) {
691 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
692 err = setting_security_system_command("16", ad->interface_name); /*allow */
693 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
695 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
696 err = setting_security_system_command("8", "wlan+");
697 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
699 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, data_subItem->keyStr)) {
700 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
701 err = setting_security_system_command("17", "wlan+"); /*allow */
702 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
704 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
706 setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
709 err = setting_security_system_command("7", ad->interface_name);
710 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
713 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
714 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
716 setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
719 err = setting_security_system_command("7", ad->interface_name);
720 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
723 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
724 err = setting_security_system_command("8", "wlan+");
725 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
728 } else if (!safeStrCmp(Keystr_BlockedProtocolType, data_parentItem->keyStr)) {
729 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
730 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
731 err = setting_security_system_command("14", "TCP"); /*allow */
732 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
734 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
735 err = setting_security_system_command("15", "UDP"); /*allow */
736 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
738 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, data_subItem->keyStr)) {
739 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
740 err = setting_security_system_command("15", "UDP"); /*allow */
741 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
743 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
744 err = setting_security_system_command("5", "TCP");
745 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
747 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, data_subItem->keyStr)) {
748 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
749 err = setting_security_system_command("14", "TCP"); /*allow */
750 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
752 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
753 err = setting_security_system_command("6", "UDP");
754 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
756 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
757 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
758 err = setting_security_system_command("5", "TCP");
759 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
761 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
762 err = setting_security_system_command("6", "UDP");
763 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
768 data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
769 elm_object_item_data_set(data_parentItem->item, data_parentItem);
770 elm_genlist_item_update(data_parentItem->item);
774 __check_network_block_mode()
777 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0 &&
778 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
779 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_ALLOW_ALL;
780 } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0 &&
781 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
782 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_3G;
783 } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0 &&
784 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
785 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_WIFI;
786 } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0 &&
787 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
788 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_ALL;
794 __check_protocol_block_mode()
797 if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0 &&
798 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
799 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_ALLOW_ALL;
800 } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0 &&
801 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
802 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_TCP;
803 } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0 &&
804 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
805 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_UDP;
806 } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0 &&
807 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
808 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_ALL;
814 __setting_security_firewall_exp_cb(void *data, Evas_Object *obj, void *event_info)
816 ret_if(NULL == data || NULL == event_info);
818 SettingSecurityUG *ad = (SettingSecurityUG *) data;
819 Elm_Object_Item *parentItem = event_info; /*parent item */
820 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /*parent data */
821 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
824 Setting_GenGroupItem_Data *list_item = NULL;
825 if (data_parentItem == ad->data_block_network_type /* <- name */) {
826 rgd = elm_radio_add(scroller);
827 elm_radio_value_set(rgd, -1);
828 int net_block = __check_network_block_mode();
829 elm_radio_value_set(rgd, net_block);
831 /*elm_object_item_signal_emit(parentItem, "elm,state,top", ""); */
833 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
834 &(itc_1icon_1text_sub),
835 __sub_list_sel_cb, ad, parentItem,
836 SWALLOW_Type_1RADIO, rgd,
838 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
839 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
841 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
842 &(itc_1icon_1text_sub),
843 __sub_list_sel_cb, ad, parentItem,
844 SWALLOW_Type_1RADIO, rgd,
846 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
847 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
849 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
850 &(itc_1icon_1text_sub),
851 __sub_list_sel_cb, ad, parentItem,
852 SWALLOW_Type_1RADIO, rgd,
854 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
856 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
857 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
858 &(itc_1icon_1text_sub),
859 __sub_list_sel_cb, ad, parentItem,
860 SWALLOW_Type_1RADIO, rgd,
862 SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_BOTTOM);
863 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_BOTTOM);
864 } else if (data_parentItem == ad->data_block_protocol_type /* <- name */) {
865 rgd = elm_radio_add(scroller);
866 elm_radio_value_set(rgd, -1);
867 int proto_block = __check_protocol_block_mode();
868 elm_radio_value_set(rgd, proto_block);
870 /*elm_object_item_signal_emit(parentItem, "elm,state,top", ""); */
872 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
873 &(itc_1icon_1text_sub),
874 __sub_list_sel_cb, ad, parentItem,
875 SWALLOW_Type_1RADIO, rgd,
877 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
878 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
880 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
881 &(itc_1icon_1text_sub),
882 __sub_list_sel_cb, ad, parentItem,
883 SWALLOW_Type_1RADIO, rgd,
885 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
886 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
888 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
889 &(itc_1icon_1text_sub),
890 __sub_list_sel_cb, ad, parentItem,
891 SWALLOW_Type_1RADIO, rgd,
893 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
894 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
896 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
897 &(itc_1icon_1text_sub),
898 __sub_list_sel_cb, ad, parentItem,
899 SWALLOW_Type_1RADIO, rgd,
901 SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_BOTTOM);
903 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_BOTTOM);