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"
95 static void _log(char *msg)
99 fp = fopen(LOGFILE, "a");
102 fprintf(fp, "%s\n", msg);
106 void pwlock_log(char *fmt, ...)
112 vsnprintf(buf, sizeof(buf), fmt, ap);
118 void pwlock_log_t(char *fmt, ...)
122 char buf[LINEMAX] = { 0, };
123 char debugString[LINEMAX] = { 0, };
126 vsnprintf(buf, sizeof(buf), fmt, ap);
130 time_t current_time = 0;
131 bzero((char *)&debugString, LINEMAX);
133 gmtime_r(¤t_time, &local_t); /* for prevent 53555 */
134 int len = snprintf(debugString, sizeof(debugString),
135 "[%d-%02d-%02d, %02d:%02d:%02d]: ",
136 local_t.tm_year + 1900, local_t.tm_mon + 1,
137 local_t.tm_mday, local_t.tm_hour, local_t.tm_min,
142 debugString[len] = '\0';
144 len = g_strlcat(debugString, buf, LINEMAX);
145 if (len >= LINEMAX) {
146 /* TODO:ERROR handling */
149 debugString[len] = '\n';
151 /* FIXME this is for permission.. later we should fix and remove this... */
152 if ((fd = fopen(LOGFILE, "at+")) == NULL) {
153 PWLOCK_ERR("File fopen fail for writing Pwlock information");
156 if (fwrite(debugString, strlen(debugString), 1, fd) < 1) {
158 ("File fwrite fail for writing Pwlock information");
160 if ((pid = fork()) < 0) {
161 } else if (pid == 0) {
162 execl("/bin/rm", "rm", "-f", LOGFILE,
166 fseek(fd, 0l, SEEK_END);
168 if (fileLen > MAXFILELEN) {
170 if ((pid = fork()) < 0) {
172 } else if (pid == 0) {
173 execl("/bin/rm", "rm", "-f", LOGFILE,
182 static void win_del(void *data, Evas_Object * obj, void *event)
187 Evas_Object *create_win(const char *name)
192 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
194 elm_win_title_set(eo, name);
195 elm_win_borderless_set(eo, EINA_TRUE);
196 elm_win_conformant_set(eo, EINA_TRUE);
197 evas_object_smart_callback_add(eo, "delete,request",
199 ecore_x_window_size_get(ecore_x_window_root_first_get(),
201 evas_object_resize(eo, w, h);
207 Evas_Object *load_edj(Evas_Object * parent, const char *file, const char *group)
212 eo = elm_layout_add(parent);
214 r = elm_layout_file_set(eo, file, group);
220 evas_object_size_hint_weight_set(eo,
228 char *pwlock_get_string(int id)
230 _DBG("get string id : %d\n", id);
234 if (id < IDS_PWLOCK_SYSTEM_STRING_MAX) {
235 /* get system string */
236 str = dgettext("sys_string", sys_str_table[id]);
238 /* get application string */
241 app_str_table[id - IDS_PWLOCK_SYSTEM_STRING_MAX]);
244 _DBG("get string : %s\n", str);
249 void pwlock_tolower(char *src, char *dest)
255 _DBG(" src=%p, dest=%p\n", src, dest);
258 src_len = strlen(src);
259 for(i=0;i<src_len;i++) {
260 dest[i] = tolower(src[i]);