1 #ifndef __DC_CONTEXT_H__ 2 #define __DC_CONTEXT_H__ 12 #include <libetpan/libetpan.h> 13 #include "deltachat.h" 14 #include "dc_sqlite3.h" 16 #include "dc_strbuilder.h" 17 #include "dc_strencode.h" 22 #include "dc_chatlist.h" 25 #include "dc_contact.h" 26 #include "dc_jobthread.h" 30 #include "dc_mimeparser.h" 38 #define DC_CONTEXT_MAGIC 0x11a11807 49 pthread_mutex_t inboxidle_condmutex;
50 int perform_inbox_jobs_needed;
51 int probe_imap_network;
53 dc_jobthread_t sentbox_thread;
54 dc_jobthread_t mvbox_thread;
57 pthread_cond_t smtpidle_cond;
58 pthread_mutex_t smtpidle_condmutex;
59 int smtpidle_condflag;
62 #define DC_JOBS_NEEDED_AT_ONCE 1 63 #define DC_JOBS_NEEDED_AVOID_DOS 2 64 int perform_smtp_jobs_needed;
65 int probe_smtp_network;
71 uint32_t cmdline_sel_chat_id;
74 #define DC_VC_AUTH_REQUIRED 2 75 #define DC_VC_CONTACT_CONFIRM 6 77 #define DC_BOB_ERROR 0 78 #define DC_BOB_SUCCESS 1 81 pthread_mutex_t bobs_qr_critical;
84 time_t last_smeared_timestamp;
85 pthread_mutex_t smear_critical;
89 int shall_stop_ongoing;
92 void dc_log_event (
dc_context_t*,
int event_code,
int data1,
const char* msg, ...);
93 void dc_log_event_seq (
dc_context_t*,
int event_code,
int* sequence_start,
const char* msg, ...);
94 void dc_log_error (
dc_context_t*,
int data1,
const char* msg, ...);
95 void dc_log_warning (
dc_context_t*,
int data1,
const char* msg, ...);
96 void dc_log_info (
dc_context_t*,
int data1,
const char* msg, ...);
98 void dc_receive_imf (
dc_context_t*,
const char* imf_raw_not_terminated,
size_t imf_raw_bytes,
const char* server_folder, uint32_t server_uid, uint32_t flags);
100 #define DC_NOT_CONNECTED 0 101 #define DC_ALREADY_CONNECTED 1 102 #define DC_JUST_CONNECTED 2 103 int dc_connect_to_configured_imap (
dc_context_t*, dc_imap_t*);
105 #define DC_CREATE_MVBOX 0x01 106 #define DC_FOLDERS_CONFIGURED_VERSION 3 107 void dc_configure_folders (
dc_context_t*, dc_imap_t*,
int flags);
110 void dc_do_heuristics_moves(
dc_context_t*,
const char* folder, uint32_t msg_id);
117 #define DC_BAK_PREFIX "delta-chat" 118 #define DC_BAK_SUFFIX "bak" 125 #define DC_MSGSIZE_MAX_RECOMMENDED ((24*1024*1024)/4*3) 126 #define DC_MSGSIZE_UPPER_LIMIT ((49*1024*1024)/4*3) 130 #define DC_E2EE_DEFAULT_ENABLED 1 131 #define DC_MDNS_DEFAULT_ENABLED 1 132 #define DC_INBOX_WATCH_DEFAULT 1 133 #define DC_SENTBOX_WATCH_DEFAULT 1 134 #define DC_MVBOX_WATCH_DEFAULT 1 135 #define DC_MVBOX_MOVE_DEFAULT 1 138 typedef struct _dc_e2ee_helper dc_e2ee_helper_t;
142 struct _dc_e2ee_helper {
144 int encryption_successfull;
149 dc_hash_t* signatures;
150 dc_hash_t* gossipped_addr;
154 void dc_e2ee_encrypt (
dc_context_t*,
const clist* recipients_addr,
int force_plaintext,
int e2ee_guaranteed,
int min_verified,
struct mailmime* in_out_message, dc_e2ee_helper_t*);
155 void dc_e2ee_decrypt (
dc_context_t*,
struct mailmime* in_out_message, dc_e2ee_helper_t*);
156 void dc_e2ee_thanks (dc_e2ee_helper_t*);
159 char* dc_normalize_setup_code(
dc_context_t*,
const char* passphrase);
160 char* dc_render_setup_file (
dc_context_t*,
const char* passphrase);
161 char* dc_decrypt_setup_file(
dc_context_t*,
const char* passphrase,
const char* filecontent);
163 extern int dc_shall_stop_ongoing;
169 #define DC_HANDSHAKE_CONTINUE_NORMAL_PROCESSING 0x01 170 #define DC_HANDSHAKE_STOP_NORMAL_PROCESSING 0x02 171 #define DC_HANDSHAKE_ADD_DELETE_JOB 0x04 172 int dc_handle_securejoin_handshake(
dc_context_t*, dc_mimeparser_t*, uint32_t contact_id);
173 void dc_handle_degrade_event (
dc_context_t*, dc_apeerstate_t*);
176 #define DC_OPENPGP4FPR_SCHEME "OPENPGP4FPR:" 180 void dc_add_to_keyhistory(
dc_context_t*,
const char* rfc724_mid, time_t,
const char* addr,
const char* fingerprint);
An object representing a single account.
An object containing a set of values.