23 #ifndef __MRMAILBOX_H__ 24 #define __MRMAILBOX_H__ 30 #define MR_VERSION_MAJOR 0 31 #define MR_VERSION_MINOR 9 32 #define MR_VERSION_REVISION 7 137 #include <libetpan/libetpan.h> 138 #include "mrchatlist.h" 141 #include "mrcontact.h" 142 #include "mrpoortext.h" 147 typedef struct mrimap_t mrimap_t;
148 typedef struct mrsmtp_t mrsmtp_t;
149 typedef struct mrsqlite3_t mrsqlite3_t;
150 typedef struct mrjob_t mrjob_t;
151 typedef struct mrmimeparser_t mrmimeparser_t;
179 typedef struct mrmailbox_t
190 pthread_t m_job_thread;
191 pthread_cond_t m_job_cond;
192 pthread_mutex_t m_job_condmutex;
200 uint32_t m_cmdline_sel_chat_id;
203 pthread_mutex_t m_wake_lock_critical;
207 #define MR_LOG_RINGBUF_SIZE 200 208 pthread_mutex_t m_log_ringbuf_critical;
209 char* m_log_ringbuf[MR_LOG_RINGBUF_SIZE];
211 time_t m_log_ringbuf_times[MR_LOG_RINGBUF_SIZE];
213 int m_log_ringbuf_pos;
222 int mrmailbox_open (mrmailbox_t*,
const char* dbfile,
const char* blobdir);
240 int mrmailbox_restore (mrmailbox_t*, time_t seconds_to_restore);
245 #define MR_GCL_ARCHIVED_ONLY 0x01 246 #define MR_GCL_NO_SPECIALS 0x02 258 #define MR_GCM_ADDDAYMARKER 0x01 308 #define MR_IMEX_CANCEL 0 309 #define MR_IMEX_EXPORT_SELF_KEYS 1 310 #define MR_IMEX_IMPORT_SELF_KEYS 2 311 #define MR_IMEX_EXPORT_BACKUP 11 312 #define MR_IMEX_IMPORT_BACKUP 12 313 #define MR_IMEX_EXPORT_SETUP_MESSAGE 20 314 #define MR_BAK_PREFIX "delta-chat" 315 #define MR_BAK_SUFFIX "bak" 316 void mrmailbox_imex (mrmailbox_t*,
int what,
const char* param1,
const char* setup_code);
320 int mrmailbox_poke_spec (mrmailbox_t*,
const char* spec);
325 void mrmailbox_log_error (mrmailbox_t*,
int code,
const char* msg, ...);
326 void mrmailbox_log_error_if (
int* condition, mrmailbox_t*,
int code,
const char* msg, ...);
327 void mrmailbox_log_warning (mrmailbox_t*,
int code,
const char* msg, ...);
328 void mrmailbox_log_info (mrmailbox_t*,
int code,
const char* msg, ...);
329 void mrmailbox_log_vprintf (mrmailbox_t*,
int event,
int code,
const char* msg, va_list);
330 int mrmailbox_get_thread_index (
void);
334 #define MR_ERR_SELF_NOT_IN_GROUP 1 335 #define MR_ERR_NONETWORK 2 340 uint32_t carray_get_uint32 (carray*,
unsigned int index);
346 int mrchat_set_draft (
mrchat_t*,
const char* msg);
350 uint32_t mrmailbox_send_msg_i__ (mrmailbox_t*,
mrchat_t*,
const mrmsg_t*, time_t);
351 void mrmailbox_connect_to_imap (mrmailbox_t*, mrjob_t*);
352 void mrmailbox_wake_lock (mrmailbox_t*);
353 void mrmailbox_wake_unlock (mrmailbox_t*);
354 int mrmailbox_poke_eml_file (mrmailbox_t*,
const char* file);
355 int mrmailbox_is_reply_to_known_message__ (mrmailbox_t*, mrmimeparser_t*);
356 int mrmailbox_is_reply_to_messenger_message__ (mrmailbox_t*, mrmimeparser_t*);
357 time_t mrmailbox_correct_bad_timestamp__ (mrmailbox_t* ths, uint32_t chat_id, uint32_t from_id, time_t desired_timestamp,
int is_fresh_msg);
358 void mrmailbox_add_or_lookup_contacts_by_mailbox_list__(mrmailbox_t* ths,
struct mailimf_mailbox_list* mb_list,
int origin, carray* ids,
int* check_self);
359 void mrmailbox_add_or_lookup_contacts_by_address_list__(mrmailbox_t* ths,
struct mailimf_address_list* adr_list,
int origin, carray* ids,
int* check_self);
360 int mrmailbox_get_archived_count__ (mrmailbox_t*);
361 int mrmailbox_reset_tables (mrmailbox_t*,
int bits);
362 size_t mrmailbox_get_real_contact_cnt__ (mrmailbox_t*);
363 uint32_t mrmailbox_add_or_lookup_contact__ (mrmailbox_t*,
const char* display_name ,
const char* addr_spec,
int origin,
int* sth_modified);
364 int mrmailbox_get_contact_origin__ (mrmailbox_t*, uint32_t
id,
int* ret_blocked);
365 int mrmailbox_is_contact_blocked__ (mrmailbox_t*, uint32_t
id);
366 int mrmailbox_real_contact_exists__ (mrmailbox_t*, uint32_t
id);
367 int mrmailbox_contact_addr_equals__ (mrmailbox_t*, uint32_t contact_id,
const char* other_addr);
368 void mrmailbox_scaleup_contact_origin__ (mrmailbox_t*, uint32_t contact_id,
int origin);
369 void mrmailbox_unarchive_chat__ (mrmailbox_t*, uint32_t chat_id);
370 size_t mrmailbox_get_chat_cnt__ (mrmailbox_t*);
371 uint32_t mrmailbox_create_or_lookup_nchat_by_contact_id__ (mrmailbox_t*, uint32_t contact_id);
372 uint32_t mrmailbox_lookup_real_nchat_by_contact_id__ (mrmailbox_t*, uint32_t contact_id);
373 int mrmailbox_get_total_msg_count__ (mrmailbox_t*, uint32_t chat_id);
374 int mrmailbox_get_fresh_msg_count__ (mrmailbox_t*, uint32_t chat_id);
375 uint32_t mrmailbox_get_last_deaddrop_fresh_msg__ (mrmailbox_t*);
376 void mrmailbox_send_msg_to_smtp (mrmailbox_t*, mrjob_t*);
377 void mrmailbox_send_msg_to_imap (mrmailbox_t*, mrjob_t*);
378 int mrmailbox_add_contact_to_chat__ (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
379 int mrmailbox_is_contact_in_chat__ (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
380 int mrmailbox_get_chat_contact_count__ (mrmailbox_t*, uint32_t chat_id);
381 int mrmailbox_group_explicitly_left__ (mrmailbox_t*,
const char* grpid);
382 void mrmailbox_set_group_explicitly_left__ (mrmailbox_t*,
const char* grpid);
383 size_t mrmailbox_get_real_msg_cnt__ (mrmailbox_t*);
384 size_t mrmailbox_get_deaddrop_msg_cnt__ (mrmailbox_t*);
385 int mrmailbox_rfc724_mid_cnt__ (mrmailbox_t*,
const char* rfc724_mid);
386 int mrmailbox_rfc724_mid_exists__ (mrmailbox_t*,
const char* rfc724_mid,
char** ret_server_folder, uint32_t* ret_server_uid);
387 void mrmailbox_update_server_uid__ (mrmailbox_t*,
const char* rfc724_mid,
const char* server_folder, uint32_t server_uid);
388 void mrmailbox_update_msg_chat_id__ (mrmailbox_t*, uint32_t msg_id, uint32_t chat_id);
389 void mrmailbox_update_msg_state__ (mrmailbox_t*, uint32_t msg_id,
int state);
390 void mrmailbox_delete_msg_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
391 int mrmailbox_mdn_from_ext__ (mrmailbox_t*, uint32_t from_id,
const char* rfc724_mid, uint32_t* ret_chat_id, uint32_t* ret_msg_id);
392 void mrmailbox_send_mdn (mrmailbox_t*, mrjob_t* job);
393 void mrmailbox_markseen_msg_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
394 void mrmailbox_markseen_mdn_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
398 #define MR_E2EE_DEFAULT_ENABLED 1 399 #define MR_MDNS_DEFAULT_ENABLED 1 401 typedef struct mrmailbox_e2ee_helper_t {
402 int m_encryption_successfull;
403 void* m_cdata_to_free;
404 } mrmailbox_e2ee_helper_t;
406 void mrmailbox_e2ee_encrypt (mrmailbox_t*,
const clist* recipients_addr,
int e2ee_guaranteed,
int encrypt_to_self,
struct mailmime* in_out_message, mrmailbox_e2ee_helper_t*);
407 int mrmailbox_e2ee_decrypt (mrmailbox_t*,
struct mailmime* in_out_message,
int* ret_validation_errors);
408 void mrmailbox_e2ee_thanks (mrmailbox_e2ee_helper_t*);
409 int mrmailbox_ensure_secret_key_exists (mrmailbox_t*);
int mrmailbox_add_address_book(mrmailbox_t *mailbox, const char *adr_book)
Add a number of contacts.
Definition: mrmailbox.c:4032
uint32_t mrmailbox_create_group_chat(mrmailbox_t *mailbox, const char *chat_name)
Create a new group chat.
Definition: mrmailbox.c:3344
uint32_t mrmailbox_create_contact(mrmailbox_t *mailbox, const char *name, const char *addr)
Add a single contact.
Definition: mrmailbox.c:3996
uint32_t mrmailbox_send_text_msg(mrmailbox_t *mailbox, uint32_t chat_id, const char *text_to_send)
Send a simple text message to the given chat.
Definition: mrmailbox.c:3112
@@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');