4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.1 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://floralicense.org/license/
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 #include <appcore-common.h>
24 #include <Elementary.h>
26 #include <sys/types.h>
27 #include <sys/socket.h>
33 #include <iniparser.h>
38 #define MAXFILELEN 1048576 /* 32000 */
40 #define PHLOCK_SOCK_PREFIX "/tmp/phlock"
41 #define PHLOCK_SOCK_MAXBUFF 65535
43 const char *sys_str_table[] = {
44 "IDS_COM_SK_DONE", /* 0 */
45 "IDS_COM_BODY_ENTER_PASSWORD",
46 "IDS_COM_BODY_PREVIOUS",
53 const char *app_str_table[] = {
54 "IDS_IDLE_BODY_AUTOMATIC",
55 "IDS_IDLE_HEADER_NETWORK_LOCK",
56 "IDS_IDLE_HEADER_PIN_LOCK",
57 "IDS_IDLE_HEADER_PUK_LOCK",
58 "IDS_IDLE_HEADER_SIM_BLOCKED",
59 "IDS_IDLE_HEADER_SIM_LOCK",
60 "IDS_IDLE_BODY_1_ATTEMPT_LEFT",
61 "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY",
62 "IDS_IDLE_BODY_ENTER_NEW_PIN",
63 "IDS_IDLE_BODY_ENTER_PIN",
64 "IDS_IDLE_BODY_ENTER_PUK",
65 "IDS_IDLE_BODY_INCORRECT_PIN",
66 "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN",
67 "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY",
68 "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY",
69 "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT",
70 "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY",
71 "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER",
72 "IDS_IDLE_BODY_WRONG_PASSWORD",
73 "IDS_IDLE_BUTTON_DIALER",
74 "IDS_IDLE_HEADER_DISPLAY_LANGUAGE",
75 "IDS_IDLE_BODY_PASSWORD_EMPTY",
76 "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED",
77 "Passwords do not match", /* TODO: System string request */
78 "PIN code has been changed", /* TODO: String request */
79 "SIM card error", /* TODO: String request */
80 "IDS_IDLE_POP_CHECKING_SIM_CARD_ING",
81 "Welcome to your", /* TODO: String request */
82 "IDS_SCM_BODY_WELCOME_E",
83 "IDS_STU_BODY_SELECT_LANGUAGE",
84 "IDS_ST_SK_EMERGENCY_CALL",
85 "IDS_ST_BODY_TAP_TO_SET_UP",
87 "IDS_ST_BODY_INSTALTAB_FINISH",
88 "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE",
89 "IDS_STU_POP_SETUP_COMPLETE",
90 "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE",
91 "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG",
92 "IDS_ST_BUTTON_TRY_AGAIN_ABB",
93 "IDS_ST_BODY_DATE_AND_TIME",
94 "IDS_ST_BODY_SET_DATE_AND_TIME"
97 static void _log(char *msg)
101 fp = fopen(LOGFILE, "a");
104 fprintf(fp, "%s\n", msg);
108 void pwlock_log(char *fmt, ...)
114 vsnprintf(buf, sizeof(buf), fmt, ap);
120 void pwlock_log_t(char *fmt, ...)
124 char buf[LINEMAX] = { 0, };
125 char debugString[LINEMAX] = { 0, };
128 vsnprintf(buf, sizeof(buf), fmt, ap);
132 time_t current_time = 0;
133 bzero((char *)&debugString, LINEMAX);
135 gmtime_r(¤t_time, &local_t); /* for prevent 53555 */
136 int len = snprintf(debugString, sizeof(debugString),
137 "[%d-%02d-%02d, %02d:%02d:%02d]: ",
138 local_t.tm_year + 1900, local_t.tm_mon + 1,
139 local_t.tm_mday, local_t.tm_hour, local_t.tm_min,
144 debugString[len] = '\0';
146 len = g_strlcat(debugString, buf, LINEMAX);
147 if (len >= LINEMAX) {
148 /* TODO:ERROR handling */
151 debugString[len] = '\n';
153 /* FIXME this is for permission.. later we should fix and remove this... */
154 if ((fd = fopen(LOGFILE, "at+")) == NULL) {
155 PWLOCK_ERR("File fopen fail for writing Pwlock information");
158 if (fwrite(debugString, strlen(debugString), 1, fd) < 1) {
160 ("File fwrite fail for writing Pwlock information");
162 if ((pid = fork()) < 0) {
163 } else if (pid == 0) {
164 execl("/bin/rm", "rm", "-f", LOGFILE,
168 fseek(fd, 0l, SEEK_END);
170 if (fileLen > MAXFILELEN) {
172 if ((pid = fork()) < 0) {
174 } else if (pid == 0) {
175 execl("/bin/rm", "rm", "-f", LOGFILE,
184 static void win_del(void *data, Evas_Object * obj, void *event)
189 Evas_Object *create_win(const char *name)
194 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
196 elm_win_title_set(eo, name);
197 elm_win_borderless_set(eo, EINA_TRUE);
198 elm_win_conformant_set(eo, EINA_TRUE);
199 evas_object_smart_callback_add(eo, "delete,request",
201 ecore_x_window_size_get(ecore_x_window_root_first_get(),
203 evas_object_resize(eo, w, h);
209 Evas_Object *load_edj(Evas_Object * parent, const char *file, const char *group)
214 eo = elm_layout_add(parent);
216 r = elm_layout_file_set(eo, file, group);
222 evas_object_size_hint_weight_set(eo,
230 char *pwlock_get_string(int id)
232 _DBG("get string id : %d\n", id);
236 if (id < IDS_PWLOCK_SYSTEM_STRING_MAX) {
237 /* get system string */
238 str = dgettext("sys_string", sys_str_table[id]);
240 /* get application string */
243 app_str_table[id - IDS_PWLOCK_SYSTEM_STRING_MAX]);
246 _DBG("get string : %s\n", str);
251 void pwlock_tolower(char *src, char *dest)
257 _DBG(" src=%p, dest=%p\n", src, dest);
260 src_len = strlen(src);
261 for(i=0;i<src_len;i++) {
262 dest[i] = tolower(src[i]);