tizen beta release
[framework/messaging/email-service.git] / email-core / em-core-api.c
1 /*\r
2 *  email-service\r
3 *\r
4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
5 *\r
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>\r
7\r
8 * Licensed under the Apache License, Version 2.0 (the "License");\r
9 * you may not use this file except in compliance with the License.\r
10 * You may obtain a copy of the License at\r
11 *\r
12 * http://www.apache.org/licenses/LICENSE-2.0\r
13 *\r
14 * Unless required by applicable law or agreed to in writing, software\r
15 * distributed under the License is distributed on an "AS IS" BASIS,\r
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17 * See the License for the specific language governing permissions and\r
18 * limitations under the License.\r
19 *\r
20 */\r
21 \r
22 \r
23 /******************************************************************************\r
24  * File :  em-core-api.h\r
25  * Desc :  Mail Engine API\r
26  *\r
27  * Auth : \r
28  *\r
29  * History : \r
30  *    2006.08.16  :  created\r
31  *****************************************************************************/\r
32 #include <stdio.h>\r
33 #include <string.h>\r
34 #include <stdlib.h>\r
35 \r
36 #include "c-client.h"\r
37 #include "em-core-global.h"\r
38 #include "em-network.h"\r
39 #include "em-core-event.h"\r
40 #include "em-core-mailbox.h"\r
41 #include "em-core-utils.h"\r
42 #include "emf-dbglog.h"\r
43 \r
44 extern void *\r
45 pop3_parameters(long function, void *value);\r
46 extern void *\r
47 imap_parameters(long function, void *value);\r
48 \r
49 /*\r
50  * encoding base64\r
51  */\r
52 int em_core_encode_base64(char *src, unsigned long src_len, char **enc, unsigned long* enc_len, int *err_code)\r
53 {\r
54         EM_DEBUG_FUNC_BEGIN();\r
55 \r
56     unsigned char *content;\r
57     int ret = true, err = EMF_ERROR_NONE;\r
58 \r
59         if (err_code != NULL) {\r
60                 *err_code = EMF_ERROR_NONE;\r
61         }\r
62 \r
63     content = rfc822_binary(src, src_len, enc_len);\r
64 \r
65     if (content)\r
66         *enc = (char *)content;\r
67     else {\r
68         err = EMF_ERROR_UNKNOWN;\r
69         ret = false;\r
70     }\r
71 \r
72     if (err_code)\r
73         *err_code = err;\r
74 \r
75         EM_DEBUG_FUNC_END();\r
76     return ret;\r
77 }\r
78 \r
79 /*\r
80  * decoding quoted-printable\r
81  */\r
82 int em_core_decode_quotedprintable(unsigned char *enc_text, unsigned long enc_len, char **dec_text, unsigned long* dec_len, int *err_code)\r
83 {\r
84     unsigned char *text = enc_text;\r
85     unsigned long size = enc_len;\r
86     unsigned char *content;\r
87     int ret = true, err = EMF_ERROR_NONE;\r
88 \r
89         if (err_code != NULL) {\r
90                 *err_code = EMF_ERROR_NONE;\r
91         }\r
92 \r
93     EM_DEBUG_FUNC_BEGIN();\r
94 \r
95     content = rfc822_qprint(text, size, dec_len);\r
96 \r
97     if (content)\r
98         *dec_text = (char *)content;\r
99     else\r
100     {\r
101         err = EMF_ERROR_UNKNOWN;\r
102         ret = false;\r
103     }\r
104 \r
105     if (err_code)\r
106         *err_code = err;\r
107 \r
108     return ret;\r
109 }\r
110 \r
111 /*\r
112  * decoding base64\r
113  */\r
114 int em_core_decode_base64(unsigned char *enc_text, unsigned long enc_len, char **dec_text, unsigned long* dec_len, int *err_code)\r
115 {\r
116     unsigned char *text = enc_text;\r
117     unsigned long size = enc_len;\r
118     unsigned char *content;\r
119     int ret = true, err = EMF_ERROR_NONE;\r
120 \r
121         if (err_code != NULL) {\r
122                 *err_code = EMF_ERROR_NONE;\r
123         }\r
124 \r
125     EM_DEBUG_FUNC_BEGIN();\r
126 \r
127     content = rfc822_base64(text, size, dec_len);\r
128     if (content)\r
129         *dec_text = (char *)content;\r
130     else\r
131     {\r
132         err = EMF_ERROR_UNKNOWN;\r
133         ret = false;\r
134     }\r
135 \r
136     if (err_code)\r
137         *err_code = err;\r
138 \r
139     return ret;\r
140 }\r
141 \r
142 /**\r
143   * em_core_get_logout_status - Get the logout status\r
144   **/\r
145 EXPORT_API void\r
146 em_core_get_logout_status(int  *status)\r
147 {\r
148         EM_DEBUG_FUNC_BEGIN();\r
149         int logout_status = 0;\r
150         *status = logout_status;\r
151         EM_DEBUG_LOG("em_core_get_logout_status is not implemented");\r
152         EM_DEBUG_FUNC_END("status [%d]", logout_status);\r
153 }\r
154 \r
155 \r
156 /**\r
157   * em_core_set_logout_status - Set the logout status\r
158   **/\r
159 EXPORT_API void\r
160 em_core_set_logout_status(int status)\r
161 {\r
162         EM_DEBUG_FUNC_BEGIN();\r
163         EM_DEBUG_LOG("em_core_set_logout_status is not implemented");\r
164         EM_DEBUG_FUNC_END("status [%d] ", status);\r
165 }\r
166 \r
167 #define EM_BATTERY_RECOVER_TEMP    6\r
168 #define EM_BATTERY_ONLINE          1\r
169 int _check_charger_status(int *charging_status, int *err_code)\r
170 {\r
171         EM_DEBUG_FUNC_BEGIN("err_code[%p] ",  err_code);\r
172 \r
173         int ret = false;\r
174         int err = EMF_ERROR_NONE;\r
175         int ps_value = 0;\r
176         \r
177         *charging_status = ps_value;\r
178 \r
179         ret = true;\r
180 \r
181         if (err_code != NULL)\r
182                 *err_code = err;\r
183         EM_DEBUG_FUNC_END();\r
184         return ret;\r
185 }\r
186 \r
187 EXPORT_API\r
188 int em_low_battery_noti_init()\r
189 {\r
190         EM_DEBUG_FUNC_BEGIN();\r
191         EM_DEBUG_LOG("Not implemented");\r
192         EM_DEBUG_FUNC_END();\r
193         return 0;\r
194 }\r
195 \r
196 /* initialize mail core */\r
197 EXPORT_API int em_core_init(int *err_code)\r
198 {\r
199         EM_DEBUG_FUNC_BEGIN();\r
200 \r
201         if (err_code != NULL) {\r
202                 *err_code = EMF_ERROR_NONE;\r
203         }\r
204 \r
205         mail_link(&imapdriver);  /*  link in the imap driver  */\r
206         mail_link(&pop3driver);  /*  link in the pop3 driver  */\r
207 \r
208         mail_link(&unixdriver);  /*  link in the unix driver  */\r
209         mail_link(&dummydriver); /*  link in the dummy driver  */\r
210 \r
211         ssl_onceonlyinit();\r
212 \r
213         auth_link(&auth_md5);    /*  link in the md5 authenticator  */\r
214         auth_link(&auth_pla);    /*  link in the pla authenticator  */\r
215         auth_link(&auth_log);    /*  link in the log authenticator  */\r
216 \r
217         /* Disabled to authenticate with plain text */\r
218         mail_parameters(NIL, SET_DISABLEPLAINTEXT, (void *) 2);\r
219 \r
220         /* Set max trials for login */\r
221         imap_parameters(SET_MAXLOGINTRIALS, (void *)1);\r
222         pop3_parameters(SET_MAXLOGINTRIALS, (void *)1);\r
223         smtp_parameters(SET_MAXLOGINTRIALS, (void *)1);\r
224 \r
225         mail_parameters(NIL, SET_SSLCERTIFICATEQUERY, (void *)em_core_ssl_cert_query_cb);\r
226         mail_parameters(NIL, SET_SSLCAPATH, (void *)SSL_CERT_DIRECTORY);\r
227 \r
228         /* Set time out in second */\r
229         mail_parameters(NIL, SET_OPENTIMEOUT  , (void *)50);\r
230         mail_parameters(NIL, SET_READTIMEOUT  , (void *)180);\r
231         mail_parameters(NIL, SET_WRITETIMEOUT , (void *)180);\r
232         mail_parameters(NIL, SET_CLOSETIMEOUT , (void *)30);\r
233 \r
234         if (err_code)\r
235                 *err_code = EMF_ERROR_NONE;\r
236 \r
237     return true;\r
238 }\r
239 \r