diff --git a/docs/html/functions.html b/docs/html/functions.html index d99d4f41..adfcba24 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -234,9 +234,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • mrmailbox_create_group_chat() : mrmailbox_t
  • -
  • mrmailbox_create_setup_code() -: mrmailbox_t -
  • mrmailbox_delete_chat() : mrmailbox_t
  • @@ -327,6 +324,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • mrmailbox_imex_has_backup() : mrmailbox_t
  • +
  • mrmailbox_initiate_key_transfer() +: mrmailbox_t +
  • mrmailbox_is_configured() : mrmailbox_t
  • diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html index f0d1c0d1..bba8b2e0 100644 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -202,9 +202,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • mrmailbox_create_group_chat() : mrmailbox_t
  • -
  • mrmailbox_create_setup_code() -: mrmailbox_t -
  • mrmailbox_delete_chat() : mrmailbox_t
  • @@ -295,6 +292,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • mrmailbox_imex_has_backup() : mrmailbox_t
  • +
  • mrmailbox_initiate_key_transfer() +: mrmailbox_t +
  • mrmailbox_is_configured() : mrmailbox_t
  • diff --git a/docs/html/mrmailbox_8h_source.html b/docs/html/mrmailbox_8h_source.html index 2b28db24..b556ee4d 100644 --- a/docs/html/mrmailbox_8h_source.html +++ b/docs/html/mrmailbox_8h_source.html @@ -89,17 +89,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    mrmailbox.h
    -
    1 /*******************************************************************************
    2  *
    3  * Delta Chat Core
    4  * Copyright (C) 2017 Björn Petersen
    5  * Contact: r10s@b44t.com, http://b44t.com
    6  *
    7  * This program is free software: you can redistribute it and/or modify it under
    8  * the terms of the GNU General Public License as published by the Free Software
    9  * Foundation, either version 3 of the License, or (at your option) any later
    10  * version.
    11  *
    12  * This program is distributed in the hope that it will be useful, but WITHOUT
    13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    14  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    15  * details.
    16  *
    17  * You should have received a copy of the GNU General Public License along with
    18  * this program. If not, see http://www.gnu.org/licenses/ .
    19  *
    20  ******************************************************************************/
    21 
    22 
    23 #ifndef __MRMAILBOX_H__
    24 #define __MRMAILBOX_H__
    25 #ifdef __cplusplus
    26 extern "C" {
    27 #endif
    28 
    29 
    30 #define MR_VERSION_MAJOR 0
    31 #define MR_VERSION_MINOR 10
    32 #define MR_VERSION_REVISION 0
    33 
    34 
    145 #include <pthread.h>
    146 #include <libetpan/libetpan.h> /* defines uint16_t */
    147 #include "mrarray.h"
    148 #include "mrchatlist.h"
    149 #include "mrchat.h"
    150 #include "mrmsg.h"
    151 #include "mrcontact.h"
    152 #include "mrlot.h"
    153 #include "mrparam.h"
    154 #include "mrevent.h"
    155 
    156 typedef struct mrmailbox_t mrmailbox_t;
    157 typedef struct mrimap_t mrimap_t;
    158 typedef struct mrsmtp_t mrsmtp_t;
    159 typedef struct mrsqlite3_t mrsqlite3_t;
    160 typedef struct mrjob_t mrjob_t;
    161 typedef struct mrmimeparser_t mrmimeparser_t;
    162 
    163 
    179 typedef uintptr_t (*mrmailboxcb_t) (mrmailbox_t*, int event, uintptr_t data1, uintptr_t data2);
    180 
    181 
    189 typedef struct mrmailbox_t
    190 {
    191  void* m_userdata;
    194  char* m_dbfile;
    195  char* m_blobdir;
    197  mrsqlite3_t* m_sql;
    198  mrimap_t* m_imap;
    199  mrsmtp_t* m_smtp;
    201  pthread_t m_job_thread;
    202  pthread_cond_t m_job_cond;
    203  pthread_mutex_t m_job_condmutex;
    204  int m_job_condflag;
    205  int m_job_do_exit;
    207  mrmailboxcb_t m_cb;
    209  char* m_os_name;
    211  uint32_t m_cmdline_sel_chat_id;
    213  int m_wake_lock;
    214  pthread_mutex_t m_wake_lock_critical;
    216  int m_e2ee_enabled;
    218  #define MR_LOG_RINGBUF_SIZE 200
    219  pthread_mutex_t m_log_ringbuf_critical;
    220  char* m_log_ringbuf[MR_LOG_RINGBUF_SIZE];
    222  time_t m_log_ringbuf_times[MR_LOG_RINGBUF_SIZE];
    224  int m_log_ringbuf_pos;
    226 } mrmailbox_t;
    227 
    228 
    229 /* create/open/connect */
    230 mrmailbox_t* mrmailbox_new (mrmailboxcb_t, void* userdata, const char* os_name);
    231 void mrmailbox_unref (mrmailbox_t*);
    232 
    233 int mrmailbox_open (mrmailbox_t*, const char* dbfile, const char* blobdir);
    234 void mrmailbox_close (mrmailbox_t*);
    235 int mrmailbox_is_open (const mrmailbox_t*);
    236 
    237 int mrmailbox_set_config (mrmailbox_t*, const char* key, const char* value);
    238 char* mrmailbox_get_config (mrmailbox_t*, const char* key, const char* def);
    239 int mrmailbox_set_config_int (mrmailbox_t*, const char* key, int32_t value);
    240 int32_t mrmailbox_get_config_int (mrmailbox_t*, const char* key, int32_t def);
    241 char* mrmailbox_get_version_str (void);
    242 
    243 int mrmailbox_configure_and_connect(mrmailbox_t*);
    244 void mrmailbox_configure_cancel (mrmailbox_t*);
    245 int mrmailbox_is_configured (mrmailbox_t*);
    246 
    247 void mrmailbox_connect (mrmailbox_t*);
    248 void mrmailbox_disconnect (mrmailbox_t*);
    249 
    250 char* mrmailbox_get_info (mrmailbox_t*);
    251 
    252 
    253 /* Handle chatlists */
    254 #define MR_GCL_ARCHIVED_ONLY 0x01
    255 #define MR_GCL_NO_SPECIALS 0x02
    256 mrchatlist_t* mrmailbox_get_chatlist (mrmailbox_t*, int flags, const char* query);
    257 
    258 
    259 /* Handle chats */
    260 uint32_t mrmailbox_create_chat_by_contact_id (mrmailbox_t*, uint32_t contact_id);
    261 uint32_t mrmailbox_get_chat_id_by_contact_id (mrmailbox_t*, uint32_t contact_id);
    262 
    263 uint32_t mrmailbox_send_text_msg (mrmailbox_t*, uint32_t chat_id, const char* text_to_send);
    264 uint32_t mrmailbox_send_image_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int width, int height);
    265 uint32_t mrmailbox_send_video_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int width, int height, int duration);
    266 uint32_t mrmailbox_send_voice_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int duration);
    267 uint32_t mrmailbox_send_audio_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int duration, const char* author, const char* trackname);
    268 uint32_t mrmailbox_send_file_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime);
    269 uint32_t mrmailbox_send_vcard_msg (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    270 void mrmailbox_set_draft (mrmailbox_t*, uint32_t chat_id, const char*);
    271 
    272 #define MR_GCM_ADDDAYMARKER 0x01
    273 mrarray_t* mrmailbox_get_chat_msgs (mrmailbox_t*, uint32_t chat_id, uint32_t flags, uint32_t marker1before);
    274 int mrmailbox_get_total_msg_count (mrmailbox_t*, uint32_t chat_id);
    275 int mrmailbox_get_fresh_msg_count (mrmailbox_t*, uint32_t chat_id);
    276 mrarray_t* mrmailbox_get_fresh_msgs (mrmailbox_t*);
    277 void mrmailbox_marknoticed_chat (mrmailbox_t*, uint32_t chat_id);
    278 mrarray_t* mrmailbox_get_chat_media (mrmailbox_t*, uint32_t chat_id, int msg_type, int or_msg_type);
    279 uint32_t mrmailbox_get_next_media (mrmailbox_t*, uint32_t curr_msg_id, int dir);
    280 
    281 void mrmailbox_archive_chat (mrmailbox_t*, uint32_t chat_id, int archive);
    282 void mrmailbox_delete_chat (mrmailbox_t*, uint32_t chat_id);
    283 
    284 mrarray_t* mrmailbox_get_chat_contacts (mrmailbox_t*, uint32_t chat_id);
    285 mrarray_t* mrmailbox_search_msgs (mrmailbox_t*, uint32_t chat_id, const char* query);
    286 
    287 mrchat_t* mrmailbox_get_chat (mrmailbox_t*, uint32_t chat_id);
    288 
    289 
    290 /* Handle group chats */
    291 uint32_t mrmailbox_create_group_chat (mrmailbox_t*, const char* name);
    292 int mrmailbox_is_contact_in_chat (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    293 int mrmailbox_add_contact_to_chat (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    294 int mrmailbox_remove_contact_from_chat (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    295 int mrmailbox_set_chat_name (mrmailbox_t*, uint32_t chat_id, const char* name);
    296 int mrmailbox_set_chat_profile_image (mrmailbox_t*, uint32_t chat_id, const char* image);
    297 
    298 
    299 /* Handle messages */
    300 char* mrmailbox_get_msg_info (mrmailbox_t*, uint32_t msg_id);
    301 void mrmailbox_delete_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt);
    302 void mrmailbox_forward_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt, uint32_t chat_id);
    303 void mrmailbox_marknoticed_contact (mrmailbox_t*, uint32_t contact_id);
    304 void mrmailbox_markseen_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt);
    305 void mrmailbox_star_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt, int star);
    306 mrmsg_t* mrmailbox_get_msg (mrmailbox_t*, uint32_t msg_id);
    307 
    308 
    309 /* Handle contacts */
    310 uint32_t mrmailbox_create_contact (mrmailbox_t*, const char* name, const char* addr);
    311 int mrmailbox_add_address_book (mrmailbox_t*, const char*);
    312 mrarray_t* mrmailbox_get_known_contacts (mrmailbox_t*, const char* query);
    313 int mrmailbox_get_blocked_count (mrmailbox_t*);
    315 void mrmailbox_block_contact (mrmailbox_t*, uint32_t contact_id, int block);
    316 char* mrmailbox_get_contact_encrinfo (mrmailbox_t*, uint32_t contact_id);
    317 int mrmailbox_delete_contact (mrmailbox_t*, uint32_t contact_id);
    318 mrcontact_t* mrmailbox_get_contact (mrmailbox_t*, uint32_t contact_id);
    319 
    320 
    321 /* Import/export and Tools */
    322 #define MR_IMEX_EXPORT_SELF_KEYS 1 /* param1 is a directory where the keys are written to */
    323 #define MR_IMEX_IMPORT_SELF_KEYS 2 /* param1 is a directory where the keys are searched in and read from */
    324 #define MR_IMEX_EXPORT_BACKUP 11 /* param1 is a directory where the backup is written to */
    325 #define MR_IMEX_IMPORT_BACKUP 12 /* param1 is the file with the backup to import */
    326 #define MR_IMEX_EXPORT_SETUP_MESSAGE 20 /* param1 is a directory where the setup file is written to */
    327 #define MR_BAK_PREFIX "delta-chat"
    328 #define MR_BAK_SUFFIX "bak"
    329 int mrmailbox_imex (mrmailbox_t*, int what, const char* param1, const char* param2);
    330 void mrmailbox_imex_cancel (mrmailbox_t*);
    331 char* mrmailbox_imex_has_backup (mrmailbox_t*, const char* dir);
    332 int mrmailbox_check_password (mrmailbox_t*, const char* pw);
    333 char* mrmailbox_create_setup_code (mrmailbox_t*);
    334 void mrmailbox_heartbeat (mrmailbox_t*);
    335 
    336 
    337 /* logging */
    338 void mrmailbox_log_error (mrmailbox_t*, int code, const char* msg, ...);
    339 void mrmailbox_log_error_if (int* condition, mrmailbox_t*, int code, const char* msg, ...);
    340 void mrmailbox_log_warning (mrmailbox_t*, int code, const char* msg, ...);
    341 void mrmailbox_log_info (mrmailbox_t*, int code, const char* msg, ...);
    342 void mrmailbox_log_vprintf (mrmailbox_t*, int event, int code, const char* msg, va_list);
    343 int mrmailbox_get_thread_index (void);
    344 
    345 
    346 /* error codes */
    347 #define MR_ERR_SELF_NOT_IN_GROUP 1
    348 #define MR_ERR_NONETWORK 2
    349 
    350 
    351 /* deprecated functions */
    352 int mrchat_set_draft (mrchat_t*, const char* msg); /* deprecated - use mrmailbox_set_draft() instead */
    353 #define mrpoortext_t mrlot_t
    354 #define mrpoortext_unref mrlot_unref
    355 
    356 
    357 /* library-internal */
    358 uint32_t mrmailbox_send_msg_object (mrmailbox_t*, uint32_t chat_id, mrmsg_t*);
    359 void mrmailbox_connect_to_imap (mrmailbox_t*, mrjob_t*);
    360 void mrmailbox_wake_lock (mrmailbox_t*);
    361 void mrmailbox_wake_unlock (mrmailbox_t*);
    362 int mrmailbox_poke_eml_file (mrmailbox_t*, const char* file);
    363 int mrmailbox_is_reply_to_known_message__ (mrmailbox_t*, mrmimeparser_t*);
    364 int mrmailbox_is_reply_to_messenger_message__ (mrmailbox_t*, mrmimeparser_t*);
    365 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);
    366 void mrmailbox_add_or_lookup_contacts_by_mailbox_list__(mrmailbox_t* ths, struct mailimf_mailbox_list* mb_list, int origin, mrarray_t* ids, int* check_self);
    367 void mrmailbox_add_or_lookup_contacts_by_address_list__(mrmailbox_t* ths, struct mailimf_address_list* adr_list, int origin, mrarray_t* ids, int* check_self);
    368 int mrmailbox_get_archived_count__ (mrmailbox_t*);
    369 int mrmailbox_reset_tables (mrmailbox_t*, int bits); /* reset tables but leaves server configuration, 1=jobs, 2=e2ee, 8=rest but server config */
    370 size_t mrmailbox_get_real_contact_cnt__ (mrmailbox_t*);
    371 uint32_t mrmailbox_add_or_lookup_contact__ (mrmailbox_t*, const char* display_name /*can be NULL*/, const char* addr_spec, int origin, int* sth_modified);
    372 int mrmailbox_get_contact_origin__ (mrmailbox_t*, uint32_t id, int* ret_blocked);
    373 int mrmailbox_is_contact_blocked__ (mrmailbox_t*, uint32_t id);
    374 int mrmailbox_real_contact_exists__ (mrmailbox_t*, uint32_t id);
    375 int mrmailbox_contact_addr_equals__ (mrmailbox_t*, uint32_t contact_id, const char* other_addr);
    376 void mrmailbox_scaleup_contact_origin__ (mrmailbox_t*, uint32_t contact_id, int origin);
    377 void mrmailbox_unarchive_chat__ (mrmailbox_t*, uint32_t chat_id);
    378 size_t mrmailbox_get_chat_cnt__ (mrmailbox_t*);
    379 uint32_t mrmailbox_create_or_lookup_nchat_by_contact_id__ (mrmailbox_t*, uint32_t contact_id);
    380 uint32_t mrmailbox_lookup_real_nchat_by_contact_id__ (mrmailbox_t*, uint32_t contact_id);
    381 int mrmailbox_get_total_msg_count__ (mrmailbox_t*, uint32_t chat_id);
    382 int mrmailbox_get_fresh_msg_count__ (mrmailbox_t*, uint32_t chat_id);
    383 uint32_t mrmailbox_get_last_deaddrop_fresh_msg__ (mrmailbox_t*);
    384 void mrmailbox_send_msg_to_smtp (mrmailbox_t*, mrjob_t*);
    385 void mrmailbox_send_msg_to_imap (mrmailbox_t*, mrjob_t*);
    386 int mrmailbox_add_contact_to_chat__ (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    387 int mrmailbox_is_contact_in_chat__ (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    388 int mrmailbox_get_chat_contact_count__ (mrmailbox_t*, uint32_t chat_id);
    389 int mrmailbox_group_explicitly_left__ (mrmailbox_t*, const char* grpid);
    390 void mrmailbox_set_group_explicitly_left__ (mrmailbox_t*, const char* grpid);
    391 size_t mrmailbox_get_real_msg_cnt__ (mrmailbox_t*); /* the number of messages assigned to real chat (!=deaddrop, !=trash) */
    392 size_t mrmailbox_get_deaddrop_msg_cnt__ (mrmailbox_t*);
    393 int mrmailbox_rfc724_mid_cnt__ (mrmailbox_t*, const char* rfc724_mid);
    394 int mrmailbox_rfc724_mid_exists__ (mrmailbox_t*, const char* rfc724_mid, char** ret_server_folder, uint32_t* ret_server_uid);
    395 void mrmailbox_update_server_uid__ (mrmailbox_t*, const char* rfc724_mid, const char* server_folder, uint32_t server_uid);
    396 void mrmailbox_update_msg_chat_id__ (mrmailbox_t*, uint32_t msg_id, uint32_t chat_id);
    397 void mrmailbox_update_msg_state__ (mrmailbox_t*, uint32_t msg_id, int state);
    398 void mrmailbox_delete_msg_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
    399 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); /* returns 1 if an event should be send */
    400 void mrmailbox_send_mdn (mrmailbox_t*, mrjob_t* job);
    401 void mrmailbox_markseen_msg_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
    402 void mrmailbox_markseen_mdn_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
    403 
    404 
    405 /* library private: end-to-end-encryption */
    406 #define MR_E2EE_DEFAULT_ENABLED 1
    407 #define MR_MDNS_DEFAULT_ENABLED 1
    408 
    409 typedef struct mrmailbox_e2ee_helper_t {
    410  int m_encryption_successfull;
    411  void* m_cdata_to_free;
    412 } mrmailbox_e2ee_helper_t;
    413 
    414 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*);
    415 int mrmailbox_e2ee_decrypt (mrmailbox_t*, struct mailmime* in_out_message, int* ret_validation_errors); /* returns 1 if sth. was decrypted, 0 in other cases */
    416 void mrmailbox_e2ee_thanks (mrmailbox_e2ee_helper_t*); /* frees data referenced by "mailmime" but not freed by mailmime_free(). After calling mre2ee_unhelp(), in_out_message cannot be used any longer! */
    417 int mrmailbox_ensure_secret_key_exists (mrmailbox_t*); /* makes sure, the private key exists, needed only for exporting keys and the case no message was sent before */
    418 
    419 
    420 #ifdef __cplusplus
    421 } /* /extern "C" */
    422 #endif
    423 #endif /* __MRMAILBOX_H__ */
    int mrmailbox_add_address_book(mrmailbox_t *mailbox, const char *adr_book)
    Add a number of contacts.
    Definition: mrmailbox.c:4339
    +
    1 /*******************************************************************************
    2  *
    3  * Delta Chat Core
    4  * Copyright (C) 2017 Björn Petersen
    5  * Contact: r10s@b44t.com, http://b44t.com
    6  *
    7  * This program is free software: you can redistribute it and/or modify it under
    8  * the terms of the GNU General Public License as published by the Free Software
    9  * Foundation, either version 3 of the License, or (at your option) any later
    10  * version.
    11  *
    12  * This program is distributed in the hope that it will be useful, but WITHOUT
    13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    14  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    15  * details.
    16  *
    17  * You should have received a copy of the GNU General Public License along with
    18  * this program. If not, see http://www.gnu.org/licenses/ .
    19  *
    20  ******************************************************************************/
    21 
    22 
    23 #ifndef __MRMAILBOX_H__
    24 #define __MRMAILBOX_H__
    25 #ifdef __cplusplus
    26 extern "C" {
    27 #endif
    28 
    29 
    30 #define MR_VERSION_MAJOR 0
    31 #define MR_VERSION_MINOR 10
    32 #define MR_VERSION_REVISION 0
    33 
    34 
    145 #include <pthread.h>
    146 #include <libetpan/libetpan.h> /* defines uint16_t */
    147 #include "mrarray.h"
    148 #include "mrchatlist.h"
    149 #include "mrchat.h"
    150 #include "mrmsg.h"
    151 #include "mrcontact.h"
    152 #include "mrlot.h"
    153 #include "mrparam.h"
    154 #include "mrevent.h"
    155 
    156 typedef struct mrmailbox_t mrmailbox_t;
    157 typedef struct mrimap_t mrimap_t;
    158 typedef struct mrsmtp_t mrsmtp_t;
    159 typedef struct mrsqlite3_t mrsqlite3_t;
    160 typedef struct mrjob_t mrjob_t;
    161 typedef struct mrmimeparser_t mrmimeparser_t;
    162 
    163 
    179 typedef uintptr_t (*mrmailboxcb_t) (mrmailbox_t*, int event, uintptr_t data1, uintptr_t data2);
    180 
    181 
    189 typedef struct mrmailbox_t
    190 {
    191  void* m_userdata;
    194  char* m_dbfile;
    195  char* m_blobdir;
    197  mrsqlite3_t* m_sql;
    198  mrimap_t* m_imap;
    199  mrsmtp_t* m_smtp;
    201  pthread_t m_job_thread;
    202  pthread_cond_t m_job_cond;
    203  pthread_mutex_t m_job_condmutex;
    204  int m_job_condflag;
    205  int m_job_do_exit;
    207  mrmailboxcb_t m_cb;
    209  char* m_os_name;
    211  uint32_t m_cmdline_sel_chat_id;
    213  int m_wake_lock;
    214  pthread_mutex_t m_wake_lock_critical;
    216  int m_e2ee_enabled;
    218  #define MR_LOG_RINGBUF_SIZE 200
    219  pthread_mutex_t m_log_ringbuf_critical;
    220  char* m_log_ringbuf[MR_LOG_RINGBUF_SIZE];
    222  time_t m_log_ringbuf_times[MR_LOG_RINGBUF_SIZE];
    224  int m_log_ringbuf_pos;
    226 } mrmailbox_t;
    227 
    228 
    229 /* create/open/connect */
    230 mrmailbox_t* mrmailbox_new (mrmailboxcb_t, void* userdata, const char* os_name);
    231 void mrmailbox_unref (mrmailbox_t*);
    232 
    233 int mrmailbox_open (mrmailbox_t*, const char* dbfile, const char* blobdir);
    234 void mrmailbox_close (mrmailbox_t*);
    235 int mrmailbox_is_open (const mrmailbox_t*);
    236 
    237 int mrmailbox_set_config (mrmailbox_t*, const char* key, const char* value);
    238 char* mrmailbox_get_config (mrmailbox_t*, const char* key, const char* def);
    239 int mrmailbox_set_config_int (mrmailbox_t*, const char* key, int32_t value);
    240 int32_t mrmailbox_get_config_int (mrmailbox_t*, const char* key, int32_t def);
    241 char* mrmailbox_get_version_str (void);
    242 
    243 int mrmailbox_configure_and_connect(mrmailbox_t*);
    244 void mrmailbox_configure_cancel (mrmailbox_t*);
    245 int mrmailbox_is_configured (mrmailbox_t*);
    246 
    247 void mrmailbox_connect (mrmailbox_t*);
    248 void mrmailbox_disconnect (mrmailbox_t*);
    249 
    250 char* mrmailbox_get_info (mrmailbox_t*);
    251 
    252 
    253 /* Handle chatlists */
    254 #define MR_GCL_ARCHIVED_ONLY 0x01
    255 #define MR_GCL_NO_SPECIALS 0x02
    256 mrchatlist_t* mrmailbox_get_chatlist (mrmailbox_t*, int flags, const char* query);
    257 
    258 
    259 /* Handle chats */
    260 uint32_t mrmailbox_create_chat_by_contact_id (mrmailbox_t*, uint32_t contact_id);
    261 uint32_t mrmailbox_get_chat_id_by_contact_id (mrmailbox_t*, uint32_t contact_id);
    262 
    263 uint32_t mrmailbox_send_text_msg (mrmailbox_t*, uint32_t chat_id, const char* text_to_send);
    264 uint32_t mrmailbox_send_image_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int width, int height);
    265 uint32_t mrmailbox_send_video_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int width, int height, int duration);
    266 uint32_t mrmailbox_send_voice_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int duration);
    267 uint32_t mrmailbox_send_audio_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime, int duration, const char* author, const char* trackname);
    268 uint32_t mrmailbox_send_file_msg (mrmailbox_t*, uint32_t chat_id, const char* file, const char* filemime);
    269 uint32_t mrmailbox_send_vcard_msg (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    270 void mrmailbox_set_draft (mrmailbox_t*, uint32_t chat_id, const char*);
    271 
    272 #define MR_GCM_ADDDAYMARKER 0x01
    273 mrarray_t* mrmailbox_get_chat_msgs (mrmailbox_t*, uint32_t chat_id, uint32_t flags, uint32_t marker1before);
    274 int mrmailbox_get_total_msg_count (mrmailbox_t*, uint32_t chat_id);
    275 int mrmailbox_get_fresh_msg_count (mrmailbox_t*, uint32_t chat_id);
    276 mrarray_t* mrmailbox_get_fresh_msgs (mrmailbox_t*);
    277 void mrmailbox_marknoticed_chat (mrmailbox_t*, uint32_t chat_id);
    278 mrarray_t* mrmailbox_get_chat_media (mrmailbox_t*, uint32_t chat_id, int msg_type, int or_msg_type);
    279 uint32_t mrmailbox_get_next_media (mrmailbox_t*, uint32_t curr_msg_id, int dir);
    280 
    281 void mrmailbox_archive_chat (mrmailbox_t*, uint32_t chat_id, int archive);
    282 void mrmailbox_delete_chat (mrmailbox_t*, uint32_t chat_id);
    283 
    284 mrarray_t* mrmailbox_get_chat_contacts (mrmailbox_t*, uint32_t chat_id);
    285 mrarray_t* mrmailbox_search_msgs (mrmailbox_t*, uint32_t chat_id, const char* query);
    286 
    287 mrchat_t* mrmailbox_get_chat (mrmailbox_t*, uint32_t chat_id);
    288 
    289 
    290 /* Handle group chats */
    291 uint32_t mrmailbox_create_group_chat (mrmailbox_t*, const char* name);
    292 int mrmailbox_is_contact_in_chat (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    293 int mrmailbox_add_contact_to_chat (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    294 int mrmailbox_remove_contact_from_chat (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    295 int mrmailbox_set_chat_name (mrmailbox_t*, uint32_t chat_id, const char* name);
    296 int mrmailbox_set_chat_profile_image (mrmailbox_t*, uint32_t chat_id, const char* image);
    297 
    298 
    299 /* Handle messages */
    300 char* mrmailbox_get_msg_info (mrmailbox_t*, uint32_t msg_id);
    301 void mrmailbox_delete_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt);
    302 void mrmailbox_forward_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt, uint32_t chat_id);
    303 void mrmailbox_marknoticed_contact (mrmailbox_t*, uint32_t contact_id);
    304 void mrmailbox_markseen_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt);
    305 void mrmailbox_star_msgs (mrmailbox_t*, const uint32_t* msg_ids, int msg_cnt, int star);
    306 mrmsg_t* mrmailbox_get_msg (mrmailbox_t*, uint32_t msg_id);
    307 
    308 
    309 /* Handle contacts */
    310 uint32_t mrmailbox_create_contact (mrmailbox_t*, const char* name, const char* addr);
    311 int mrmailbox_add_address_book (mrmailbox_t*, const char*);
    312 mrarray_t* mrmailbox_get_known_contacts (mrmailbox_t*, const char* query);
    313 int mrmailbox_get_blocked_count (mrmailbox_t*);
    315 void mrmailbox_block_contact (mrmailbox_t*, uint32_t contact_id, int block);
    316 char* mrmailbox_get_contact_encrinfo (mrmailbox_t*, uint32_t contact_id);
    317 int mrmailbox_delete_contact (mrmailbox_t*, uint32_t contact_id);
    318 mrcontact_t* mrmailbox_get_contact (mrmailbox_t*, uint32_t contact_id);
    319 
    320 
    321 /* Import/export and Tools */
    322 #define MR_IMEX_EXPORT_SELF_KEYS 1 /* param1 is a directory where the keys are written to */
    323 #define MR_IMEX_IMPORT_SELF_KEYS 2 /* param1 is a directory where the keys are searched in and read from */
    324 #define MR_IMEX_EXPORT_BACKUP 11 /* param1 is a directory where the backup is written to */
    325 #define MR_IMEX_IMPORT_BACKUP 12 /* param1 is the file with the backup to import */
    326 #define MR_BAK_PREFIX "delta-chat"
    327 #define MR_BAK_SUFFIX "bak"
    328 int mrmailbox_imex (mrmailbox_t*, int what, const char* param1, const char* param2);
    329 void mrmailbox_imex_cancel (mrmailbox_t*);
    330 char* mrmailbox_imex_has_backup (mrmailbox_t*, const char* dir);
    331 int mrmailbox_check_password (mrmailbox_t*, const char* pw);
    332 char* mrmailbox_initiate_key_transfer(mrmailbox_t*);
    333 void mrmailbox_heartbeat (mrmailbox_t*);
    334 
    335 
    336 /* logging */
    337 void mrmailbox_log_error (mrmailbox_t*, int code, const char* msg, ...);
    338 void mrmailbox_log_error_if (int* condition, mrmailbox_t*, int code, const char* msg, ...);
    339 void mrmailbox_log_warning (mrmailbox_t*, int code, const char* msg, ...);
    340 void mrmailbox_log_info (mrmailbox_t*, int code, const char* msg, ...);
    341 void mrmailbox_log_vprintf (mrmailbox_t*, int event, int code, const char* msg, va_list);
    342 int mrmailbox_get_thread_index (void);
    343 
    344 
    345 /* error codes */
    346 #define MR_ERR_SELF_NOT_IN_GROUP 1
    347 #define MR_ERR_NONETWORK 2
    348 
    349 
    350 /* deprecated functions */
    351 int mrchat_set_draft (mrchat_t*, const char* msg); /* deprecated - use mrmailbox_set_draft() instead */
    352 #define mrpoortext_t mrlot_t
    353 #define mrpoortext_unref mrlot_unref
    354 
    355 
    356 /* library-internal */
    357 uint32_t mrmailbox_send_msg_object (mrmailbox_t*, uint32_t chat_id, mrmsg_t*);
    358 void mrmailbox_connect_to_imap (mrmailbox_t*, mrjob_t*);
    359 void mrmailbox_wake_lock (mrmailbox_t*);
    360 void mrmailbox_wake_unlock (mrmailbox_t*);
    361 int mrmailbox_poke_eml_file (mrmailbox_t*, const char* file);
    362 int mrmailbox_is_reply_to_known_message__ (mrmailbox_t*, mrmimeparser_t*);
    363 int mrmailbox_is_reply_to_messenger_message__ (mrmailbox_t*, mrmimeparser_t*);
    364 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);
    365 void mrmailbox_add_or_lookup_contacts_by_mailbox_list__(mrmailbox_t* ths, struct mailimf_mailbox_list* mb_list, int origin, mrarray_t* ids, int* check_self);
    366 void mrmailbox_add_or_lookup_contacts_by_address_list__(mrmailbox_t* ths, struct mailimf_address_list* adr_list, int origin, mrarray_t* ids, int* check_self);
    367 int mrmailbox_get_archived_count__ (mrmailbox_t*);
    368 int mrmailbox_reset_tables (mrmailbox_t*, int bits); /* reset tables but leaves server configuration, 1=jobs, 2=e2ee, 8=rest but server config */
    369 size_t mrmailbox_get_real_contact_cnt__ (mrmailbox_t*);
    370 uint32_t mrmailbox_add_or_lookup_contact__ (mrmailbox_t*, const char* display_name /*can be NULL*/, const char* addr_spec, int origin, int* sth_modified);
    371 int mrmailbox_get_contact_origin__ (mrmailbox_t*, uint32_t id, int* ret_blocked);
    372 int mrmailbox_is_contact_blocked__ (mrmailbox_t*, uint32_t id);
    373 int mrmailbox_real_contact_exists__ (mrmailbox_t*, uint32_t id);
    374 int mrmailbox_contact_addr_equals__ (mrmailbox_t*, uint32_t contact_id, const char* other_addr);
    375 void mrmailbox_scaleup_contact_origin__ (mrmailbox_t*, uint32_t contact_id, int origin);
    376 void mrmailbox_unarchive_chat__ (mrmailbox_t*, uint32_t chat_id);
    377 size_t mrmailbox_get_chat_cnt__ (mrmailbox_t*);
    378 uint32_t mrmailbox_create_or_lookup_nchat_by_contact_id__ (mrmailbox_t*, uint32_t contact_id);
    379 uint32_t mrmailbox_lookup_real_nchat_by_contact_id__ (mrmailbox_t*, uint32_t contact_id);
    380 int mrmailbox_get_total_msg_count__ (mrmailbox_t*, uint32_t chat_id);
    381 int mrmailbox_get_fresh_msg_count__ (mrmailbox_t*, uint32_t chat_id);
    382 uint32_t mrmailbox_get_last_deaddrop_fresh_msg__ (mrmailbox_t*);
    383 void mrmailbox_send_msg_to_smtp (mrmailbox_t*, mrjob_t*);
    384 void mrmailbox_send_msg_to_imap (mrmailbox_t*, mrjob_t*);
    385 int mrmailbox_add_contact_to_chat__ (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    386 int mrmailbox_is_contact_in_chat__ (mrmailbox_t*, uint32_t chat_id, uint32_t contact_id);
    387 int mrmailbox_get_chat_contact_count__ (mrmailbox_t*, uint32_t chat_id);
    388 int mrmailbox_group_explicitly_left__ (mrmailbox_t*, const char* grpid);
    389 void mrmailbox_set_group_explicitly_left__ (mrmailbox_t*, const char* grpid);
    390 size_t mrmailbox_get_real_msg_cnt__ (mrmailbox_t*); /* the number of messages assigned to real chat (!=deaddrop, !=trash) */
    391 size_t mrmailbox_get_deaddrop_msg_cnt__ (mrmailbox_t*);
    392 int mrmailbox_rfc724_mid_cnt__ (mrmailbox_t*, const char* rfc724_mid);
    393 int mrmailbox_rfc724_mid_exists__ (mrmailbox_t*, const char* rfc724_mid, char** ret_server_folder, uint32_t* ret_server_uid);
    394 void mrmailbox_update_server_uid__ (mrmailbox_t*, const char* rfc724_mid, const char* server_folder, uint32_t server_uid);
    395 void mrmailbox_update_msg_chat_id__ (mrmailbox_t*, uint32_t msg_id, uint32_t chat_id);
    396 void mrmailbox_update_msg_state__ (mrmailbox_t*, uint32_t msg_id, int state);
    397 void mrmailbox_delete_msg_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
    398 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); /* returns 1 if an event should be send */
    399 void mrmailbox_send_mdn (mrmailbox_t*, mrjob_t* job);
    400 void mrmailbox_markseen_msg_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
    401 void mrmailbox_markseen_mdn_on_imap (mrmailbox_t* mailbox, mrjob_t* job);
    402 
    403 
    404 /* library private: end-to-end-encryption */
    405 #define MR_E2EE_DEFAULT_ENABLED 1
    406 #define MR_MDNS_DEFAULT_ENABLED 1
    407 
    408 typedef struct mrmailbox_e2ee_helper_t {
    409  int m_encryption_successfull;
    410  void* m_cdata_to_free;
    411 } mrmailbox_e2ee_helper_t;
    412 
    413 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*);
    414 int mrmailbox_e2ee_decrypt (mrmailbox_t*, struct mailmime* in_out_message, int* ret_validation_errors); /* returns 1 if sth. was decrypted, 0 in other cases */
    415 void mrmailbox_e2ee_thanks (mrmailbox_e2ee_helper_t*); /* frees data referenced by "mailmime" but not freed by mailmime_free(). After calling mre2ee_unhelp(), in_out_message cannot be used any longer! */
    416 int mrmailbox_ensure_secret_key_exists (mrmailbox_t*); /* makes sure, the private key exists, needed only for exporting keys and the case no message was sent before */
    417 char* mrmailbox_create_setup_code (mrmailbox_t*);
    418 int mrmailbox_render_setup_file (mrmailbox_t* mailbox, const char* passphrase, char** ret_msg);
    419 
    420 #ifdef __cplusplus
    421 } /* /extern "C" */
    422 #endif
    423 #endif /* __MRMAILBOX_H__ */
    int mrmailbox_add_address_book(mrmailbox_t *mailbox, const char *adr_book)
    Add a number of contacts.
    Definition: mrmailbox.c:4339
    uint32_t mrmailbox_create_group_chat(mrmailbox_t *mailbox, const char *chat_name)
    Create a new group chat.
    Definition: mrmailbox.c:3627
    uint32_t mrmailbox_create_contact(mrmailbox_t *mailbox, const char *name, const char *addr)
    Add a single contact.
    Definition: mrmailbox.c:4296
    uint32_t mrmailbox_send_text_msg(mrmailbox_t *mailbox, uint32_t chat_id, const char *text_to_send)
    Send a simple text message a given chat.
    Definition: mrmailbox.c:3249
    void mrmailbox_close(mrmailbox_t *mailbox)
    Close mailbox database.
    Definition: mrmailbox.c:1083
    +
    char * mrmailbox_initiate_key_transfer(mrmailbox_t *mailbox)
    Initiate Autocrypt key transfer.
    Definition: mrmailbox_imex.c:1255
    mrmailbox_t * mrmailbox_new(mrmailboxcb_t cb, void *userdata, const char *os_name)
    Create a new mailbox object.
    Definition: mrmailbox.c:900
    int mrmailbox_is_contact_in_chat(mrmailbox_t *mailbox, uint32_t chat_id, uint32_t contact_id)
    Check if a given contact ID is a member of a group chat.
    Definition: mrmailbox.c:3865
    The following constants are used as events reported to the callback given to mrmailbox_new().
    mrchat_t * mrmailbox_get_chat(mrmailbox_t *mailbox, uint32_t chat_id)
    Get chat object by a chat ID.
    Definition: mrmailbox.c:1699
    int mrmailbox_remove_contact_from_chat(mrmailbox_t *mailbox, uint32_t chat_id, uint32_t contact_id)
    Remove a member from a group.
    Definition: mrmailbox.c:3982
    -
    void mrmailbox_imex_cancel(mrmailbox_t *mailbox)
    Signal the import-/export-process to stop.
    Definition: mrmailbox_imex.c:970
    +
    void mrmailbox_imex_cancel(mrmailbox_t *mailbox)
    Signal the import-/export-process to stop.
    Definition: mrmailbox_imex.c:994
    int mrmailbox_open(mrmailbox_t *mailbox, const char *dbfile, const char *blobdir)
    Open mailbox database.
    Definition: mrmailbox.c:1018
    An object representing a single contact in memory.
    Definition: mrcontact.h:38
    An object containing a simple array.
    Definition: mrarray.h:39
    @@ -136,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    int mrmailbox_get_fresh_msg_count(mrmailbox_t *mailbox, uint32_t chat_id)
    Get the number of fresh messages in a chat.
    Definition: mrmailbox.c:2609
    void mrmailbox_delete_chat(mrmailbox_t *mailbox, uint32_t chat_id)
    Delete a chat.
    Definition: mrmailbox.c:2770
    void mrmailbox_set_draft(mrmailbox_t *mailbox, uint32_t chat_id, const char *msg)
    Save a draft for a chat.
    Definition: mrmailbox.c:2364
    -
    int mrmailbox_imex(mrmailbox_t *mailbox, int what, const char *param1, const char *param2)
    Import/export things.
    Definition: mrmailbox_imex.c:866
    +
    int mrmailbox_imex(mrmailbox_t *mailbox, int what, const char *param1, const char *param2)
    Import/export things.
    Definition: mrmailbox_imex.c:894
    int mrmailbox_get_blocked_count(mrmailbox_t *mailbox)
    Get the number of blocked contacts.
    Definition: mrmailbox.c:4492
    mrarray_t * mrmailbox_search_msgs(mrmailbox_t *mailbox, uint32_t chat_id, const char *query)
    Search messages containing the given query string.
    Definition: mrmailbox.c:2215
    uint32_t mrmailbox_send_image_msg(mrmailbox_t *mailbox, uint32_t chat_id, const char *file, const char *filemime, int width, int height)
    Send an image to a chat.
    Definition: mrmailbox.c:3290
    @@ -149,16 +150,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    void mrmailbox_markseen_msgs(mrmailbox_t *mailbox, const uint32_t *msg_ids, int msg_cnt)
    Mark a message as seen, updates the IMAP state and sends MDNs.
    Definition: mrmailbox.c:5555
    mrarray_t * mrmailbox_get_chat_contacts(mrmailbox_t *mailbox, uint32_t chat_id)
    Get contact IDs belonging to a chat.
    Definition: mrmailbox.c:1994
    void mrmailbox_marknoticed_chat(mrmailbox_t *mailbox, uint32_t chat_id)
    Mark all message in a chat as noticed.
    Definition: mrmailbox.c:1745
    -
    char * mrmailbox_imex_has_backup(mrmailbox_t *mailbox, const char *dir_name)
    Check if there is a backup file.
    Definition: mrmailbox_imex.c:1038
    +
    char * mrmailbox_imex_has_backup(mrmailbox_t *mailbox, const char *dir_name)
    Check if there is a backup file.
    Definition: mrmailbox_imex.c:1063
    void mrmailbox_configure_cancel(mrmailbox_t *mailbox)
    Signal the configure-process to stop.
    Definition: mrmailbox_configure.c:720
    mrarray_t * mrmailbox_get_fresh_msgs(mrmailbox_t *mailbox)
    Returns the message IDs of all fresh messages of any chat.
    Definition: mrmailbox.c:2043
    mrcontact_t * mrmailbox_get_contact(mrmailbox_t *mailbox, uint32_t contact_id)
    Get a single contact object.
    Definition: mrmailbox.c:4534
    -
    int mrmailbox_check_password(mrmailbox_t *mailbox, const char *test_pw)
    Check if the user is authorized by the given password in some way.
    Definition: mrmailbox_imex.c:1105
    +
    int mrmailbox_check_password(mrmailbox_t *mailbox, const char *test_pw)
    Check if the user is authorized by the given password in some way.
    Definition: mrmailbox_imex.c:1129
    void mrmailbox_marknoticed_contact(mrmailbox_t *mailbox, uint32_t contact_id)
    Mark all messages send by the given contact as noticed.
    Definition: mrmailbox.c:4582
    int mrmailbox_set_config_int(mrmailbox_t *ths, const char *key, int32_t value)
    Configure the mailbox.
    Definition: mrmailbox.c:1237
    int32_t mrmailbox_get_config_int(mrmailbox_t *ths, const char *key, int32_t def)
    Get a configuration option.
    Definition: mrmailbox.c:1259
    int mrmailbox_set_chat_name(mrmailbox_t *mailbox, uint32_t chat_id, const char *new_name)
    Set group name.
    Definition: mrmailbox.c:3695
    -
    char * mrmailbox_create_setup_code(mrmailbox_t *mailbox)
    Create random setup code.
    Definition: mrmailbox_imex.c:1162
    char * mrmailbox_get_contact_encrinfo(mrmailbox_t *mailbox, uint32_t contact_id)
    Get encryption info for a contact.
    Definition: mrmailbox.c:4699
    mrarray_t * mrmailbox_get_chat_media(mrmailbox_t *mailbox, uint32_t chat_id, int msg_type, int or_msg_type)
    Returns all message IDs of the given types in a chat.
    Definition: mrmailbox.c:1886
    uint32_t mrmailbox_send_audio_msg(mrmailbox_t *mailbox, uint32_t chat_id, const char *file, const char *filemime, int duration, const char *author, const char *trackname)
    Send an audio file to a chat.
    Definition: mrmailbox.c:3422
    diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js index 8d9ab62a..1ac05df0 100644 --- a/docs/html/search/all_1.js +++ b/docs/html/search/all_1.js @@ -68,7 +68,6 @@ var searchData= ['mrmailbox_5fcreate_5fchat_5fby_5fcontact_5fid',['mrmailbox_create_chat_by_contact_id',['../structmrmailbox__t.html#a1386ec2c091b936b65b25b50a302173d',1,'mrmailbox_t']]], ['mrmailbox_5fcreate_5fcontact',['mrmailbox_create_contact',['../structmrmailbox__t.html#aa089e97e7ca1add16c10d5cc0e902824',1,'mrmailbox_t']]], ['mrmailbox_5fcreate_5fgroup_5fchat',['mrmailbox_create_group_chat',['../structmrmailbox__t.html#a47156db87107ec208d6637f460d897a8',1,'mrmailbox_t']]], - ['mrmailbox_5fcreate_5fsetup_5fcode',['mrmailbox_create_setup_code',['../structmrmailbox__t.html#af4d9c838230758e1b0e40957447232f7',1,'mrmailbox_t']]], ['mrmailbox_5fdelete_5fchat',['mrmailbox_delete_chat',['../structmrmailbox__t.html#a24813f8aea38bcf5f928ea8a5fd7a3ec',1,'mrmailbox_t']]], ['mrmailbox_5fdelete_5fcontact',['mrmailbox_delete_contact',['../structmrmailbox__t.html#a209732d105e40cd0c61d33d76d288c59',1,'mrmailbox_t']]], ['mrmailbox_5fdelete_5fmsgs',['mrmailbox_delete_msgs',['../structmrmailbox__t.html#adf02bfc046577b46e1f0f5a31869890f',1,'mrmailbox_t']]], @@ -99,6 +98,7 @@ var searchData= ['mrmailbox_5fimex',['mrmailbox_imex',['../structmrmailbox__t.html#a7db60273eae74ebbc74231f4c6d7204f',1,'mrmailbox_t']]], ['mrmailbox_5fimex_5fcancel',['mrmailbox_imex_cancel',['../structmrmailbox__t.html#a59c3c9ba62ffe2e7252dc4e49151f337',1,'mrmailbox_t']]], ['mrmailbox_5fimex_5fhas_5fbackup',['mrmailbox_imex_has_backup',['../structmrmailbox__t.html#abcb59b494a430c2d3d6e77cf433f5755',1,'mrmailbox_t']]], + ['mrmailbox_5finitiate_5fkey_5ftransfer',['mrmailbox_initiate_key_transfer',['../structmrmailbox__t.html#a8662e21a209936e2070f6a59479bfef4',1,'mrmailbox_t']]], ['mrmailbox_5fis_5fconfigured',['mrmailbox_is_configured',['../structmrmailbox__t.html#aa6e325e49ecccfc96276db6c327dba94',1,'mrmailbox_t']]], ['mrmailbox_5fis_5fcontact_5fin_5fchat',['mrmailbox_is_contact_in_chat',['../structmrmailbox__t.html#ae37988665a3d46f42a7e8199d18735c2',1,'mrmailbox_t']]], ['mrmailbox_5fis_5fopen',['mrmailbox_is_open',['../structmrmailbox__t.html#aace7cd8b68f45b869956d5c7476a1da0',1,'mrmailbox_t']]], diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js index 09360620..ae0bd02b 100644 --- a/docs/html/search/functions_0.js +++ b/docs/html/search/functions_0.js @@ -35,7 +35,6 @@ var searchData= ['mrmailbox_5fcreate_5fchat_5fby_5fcontact_5fid',['mrmailbox_create_chat_by_contact_id',['../structmrmailbox__t.html#a1386ec2c091b936b65b25b50a302173d',1,'mrmailbox_t']]], ['mrmailbox_5fcreate_5fcontact',['mrmailbox_create_contact',['../structmrmailbox__t.html#aa089e97e7ca1add16c10d5cc0e902824',1,'mrmailbox_t']]], ['mrmailbox_5fcreate_5fgroup_5fchat',['mrmailbox_create_group_chat',['../structmrmailbox__t.html#a47156db87107ec208d6637f460d897a8',1,'mrmailbox_t']]], - ['mrmailbox_5fcreate_5fsetup_5fcode',['mrmailbox_create_setup_code',['../structmrmailbox__t.html#af4d9c838230758e1b0e40957447232f7',1,'mrmailbox_t']]], ['mrmailbox_5fdelete_5fchat',['mrmailbox_delete_chat',['../structmrmailbox__t.html#a24813f8aea38bcf5f928ea8a5fd7a3ec',1,'mrmailbox_t']]], ['mrmailbox_5fdelete_5fcontact',['mrmailbox_delete_contact',['../structmrmailbox__t.html#a209732d105e40cd0c61d33d76d288c59',1,'mrmailbox_t']]], ['mrmailbox_5fdelete_5fmsgs',['mrmailbox_delete_msgs',['../structmrmailbox__t.html#adf02bfc046577b46e1f0f5a31869890f',1,'mrmailbox_t']]], @@ -66,6 +65,7 @@ var searchData= ['mrmailbox_5fimex',['mrmailbox_imex',['../structmrmailbox__t.html#a7db60273eae74ebbc74231f4c6d7204f',1,'mrmailbox_t']]], ['mrmailbox_5fimex_5fcancel',['mrmailbox_imex_cancel',['../structmrmailbox__t.html#a59c3c9ba62ffe2e7252dc4e49151f337',1,'mrmailbox_t']]], ['mrmailbox_5fimex_5fhas_5fbackup',['mrmailbox_imex_has_backup',['../structmrmailbox__t.html#abcb59b494a430c2d3d6e77cf433f5755',1,'mrmailbox_t']]], + ['mrmailbox_5finitiate_5fkey_5ftransfer',['mrmailbox_initiate_key_transfer',['../structmrmailbox__t.html#a8662e21a209936e2070f6a59479bfef4',1,'mrmailbox_t']]], ['mrmailbox_5fis_5fconfigured',['mrmailbox_is_configured',['../structmrmailbox__t.html#aa6e325e49ecccfc96276db6c327dba94',1,'mrmailbox_t']]], ['mrmailbox_5fis_5fcontact_5fin_5fchat',['mrmailbox_is_contact_in_chat',['../structmrmailbox__t.html#ae37988665a3d46f42a7e8199d18735c2',1,'mrmailbox_t']]], ['mrmailbox_5fis_5fopen',['mrmailbox_is_open',['../structmrmailbox__t.html#aace7cd8b68f45b869956d5c7476a1da0',1,'mrmailbox_t']]], diff --git a/docs/html/structmrmailbox__t-members.html b/docs/html/structmrmailbox__t-members.html index 51b4b1d3..347aa4ae 100644 --- a/docs/html/structmrmailbox__t-members.html +++ b/docs/html/structmrmailbox__t-members.html @@ -101,37 +101,37 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); mrmailbox_create_chat_by_contact_id(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t mrmailbox_create_contact(mrmailbox_t *mailbox, const char *name, const char *addr)mrmailbox_t mrmailbox_create_group_chat(mrmailbox_t *mailbox, const char *chat_name)mrmailbox_t - mrmailbox_create_setup_code(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_delete_chat(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t - mrmailbox_delete_contact(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t - mrmailbox_delete_msgs(mrmailbox_t *mailbox, const uint32_t *msg_ids, int msg_cnt)mrmailbox_t - mrmailbox_disconnect(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_forward_msgs(mrmailbox_t *mailbox, const uint32_t *msg_ids, int msg_cnt, uint32_t chat_id)mrmailbox_t - mrmailbox_get_blocked_contacts(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_get_blocked_count(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_get_chat(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t - mrmailbox_get_chat_contacts(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t - mrmailbox_get_chat_id_by_contact_id(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t - mrmailbox_get_chat_media(mrmailbox_t *mailbox, uint32_t chat_id, int msg_type, int or_msg_type)mrmailbox_t - mrmailbox_get_chat_msgs(mrmailbox_t *mailbox, uint32_t chat_id, uint32_t flags, uint32_t marker1before)mrmailbox_t - mrmailbox_get_chatlist(mrmailbox_t *mailbox, int listflags, const char *query)mrmailbox_t - mrmailbox_get_config(mrmailbox_t *ths, const char *key, const char *def)mrmailbox_t - mrmailbox_get_config_int(mrmailbox_t *ths, const char *key, int32_t def)mrmailbox_t - mrmailbox_get_contact(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t - mrmailbox_get_contact_encrinfo(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t - mrmailbox_get_fresh_msg_count(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t - mrmailbox_get_fresh_msgs(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_get_info(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_get_known_contacts(mrmailbox_t *mailbox, const char *query)mrmailbox_t - mrmailbox_get_msg(mrmailbox_t *mailbox, uint32_t msg_id)mrmailbox_t - mrmailbox_get_msg_info(mrmailbox_t *mailbox, uint32_t msg_id)mrmailbox_t - mrmailbox_get_next_media(mrmailbox_t *mailbox, uint32_t curr_msg_id, int dir)mrmailbox_t - mrmailbox_get_total_msg_count(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t - mrmailbox_get_version_str(void)mrmailbox_t - mrmailbox_heartbeat(mrmailbox_t *ths)mrmailbox_t - mrmailbox_imex(mrmailbox_t *mailbox, int what, const char *param1, const char *param2)mrmailbox_t - mrmailbox_imex_cancel(mrmailbox_t *mailbox)mrmailbox_t - mrmailbox_imex_has_backup(mrmailbox_t *mailbox, const char *dir_name)mrmailbox_t + mrmailbox_delete_chat(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t + mrmailbox_delete_contact(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t + mrmailbox_delete_msgs(mrmailbox_t *mailbox, const uint32_t *msg_ids, int msg_cnt)mrmailbox_t + mrmailbox_disconnect(mrmailbox_t *mailbox)mrmailbox_t + mrmailbox_forward_msgs(mrmailbox_t *mailbox, const uint32_t *msg_ids, int msg_cnt, uint32_t chat_id)mrmailbox_t + mrmailbox_get_blocked_contacts(mrmailbox_t *mailbox)mrmailbox_t + mrmailbox_get_blocked_count(mrmailbox_t *mailbox)mrmailbox_t + mrmailbox_get_chat(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t + mrmailbox_get_chat_contacts(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t + mrmailbox_get_chat_id_by_contact_id(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t + mrmailbox_get_chat_media(mrmailbox_t *mailbox, uint32_t chat_id, int msg_type, int or_msg_type)mrmailbox_t + mrmailbox_get_chat_msgs(mrmailbox_t *mailbox, uint32_t chat_id, uint32_t flags, uint32_t marker1before)mrmailbox_t + mrmailbox_get_chatlist(mrmailbox_t *mailbox, int listflags, const char *query)mrmailbox_t + mrmailbox_get_config(mrmailbox_t *ths, const char *key, const char *def)mrmailbox_t + mrmailbox_get_config_int(mrmailbox_t *ths, const char *key, int32_t def)mrmailbox_t + mrmailbox_get_contact(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t + mrmailbox_get_contact_encrinfo(mrmailbox_t *mailbox, uint32_t contact_id)mrmailbox_t + mrmailbox_get_fresh_msg_count(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t + mrmailbox_get_fresh_msgs(mrmailbox_t *mailbox)mrmailbox_t + mrmailbox_get_info(mrmailbox_t *mailbox)mrmailbox_t + mrmailbox_get_known_contacts(mrmailbox_t *mailbox, const char *query)mrmailbox_t + mrmailbox_get_msg(mrmailbox_t *mailbox, uint32_t msg_id)mrmailbox_t + mrmailbox_get_msg_info(mrmailbox_t *mailbox, uint32_t msg_id)mrmailbox_t + mrmailbox_get_next_media(mrmailbox_t *mailbox, uint32_t curr_msg_id, int dir)mrmailbox_t + mrmailbox_get_total_msg_count(mrmailbox_t *mailbox, uint32_t chat_id)mrmailbox_t + mrmailbox_get_version_str(void)mrmailbox_t + mrmailbox_heartbeat(mrmailbox_t *ths)mrmailbox_t + mrmailbox_imex(mrmailbox_t *mailbox, int what, const char *param1, const char *param2)mrmailbox_t + mrmailbox_imex_cancel(mrmailbox_t *mailbox)mrmailbox_t + mrmailbox_imex_has_backup(mrmailbox_t *mailbox, const char *dir_name)mrmailbox_t + mrmailbox_initiate_key_transfer(mrmailbox_t *mailbox)mrmailbox_t mrmailbox_is_configured(mrmailbox_t *mailbox)mrmailbox_t mrmailbox_is_contact_in_chat(mrmailbox_t *mailbox, uint32_t chat_id, uint32_t contact_id)mrmailbox_t mrmailbox_is_open(const mrmailbox_t *mailbox)mrmailbox_t diff --git a/docs/html/structmrmailbox__t.html b/docs/html/structmrmailbox__t.html index acf33536..edfa1ea8 100644 --- a/docs/html/structmrmailbox__t.html +++ b/docs/html/structmrmailbox__t.html @@ -302,9 +302,9 @@ Public Member Functions int mrmailbox_check_password (mrmailbox_t *mailbox, const char *test_pw)  Check if the user is authorized by the given password in some way. More...
      -char * mrmailbox_create_setup_code (mrmailbox_t *mailbox) - Create random setup code. More...
    -  +char * mrmailbox_initiate_key_transfer (mrmailbox_t *mailbox) + Initiate Autocrypt key transfer. More...
    +  @@ -2968,7 +2968,8 @@ Public Attributes
    Returns
    String with the backup file, typically given to mrmailbox_imex(), returned strings must be free()'d. The function returns NULL if no backup was found.
    -

    Example:

    char dir[] = "/dir/to/search/backups/in";
    void ask_user_for_credentials()
    {
    // - ask the user for email and password
    // - save them using mrmailbox_set_config()
    }
    int ask_user_whether_to_import()
    {
    // - inform the user that we've found a backup
    // - ask if he want to import it
    // - return 1 to import, 0 to skip
    return 1;
    }
    if( !mrmailbox_is_configured(mailbox) )
    {
    char* file = NULL;
    if( (file=mrmailbox_imex_has_backup(mailbox, dir))!=NULL && ask_user_whether_to_import() )
    {
    mrmailbox_imex(mailbox, MR_IMEX_IMPORT_BACKUP, file, NULL);
    }
    else
    {
    do {
    ask_user_for_credentials();
    }
    }
    free(file);
    }
    +

    Example:

    +
    char dir[] = "/dir/to/search/backups/in";
    void ask_user_for_credentials()
    {
    // - ask the user for email and password
    // - save them using mrmailbox_set_config()
    }
    int ask_user_whether_to_import()
    {
    // - inform the user that we've found a backup
    // - ask if he want to import it
    // - return 1 to import, 0 to skip
    return 1;
    }
    if( !mrmailbox_is_configured(mailbox) )
    {
    char* file = NULL;
    if( (file=mrmailbox_imex_has_backup(mailbox, dir))!=NULL && ask_user_whether_to_import() )
    {
    mrmailbox_imex(mailbox, MR_IMEX_IMPORT_BACKUP, file, NULL);
    }
    else
    {
    do {
    ask_user_for_credentials();
    }
    }
    free(file);
    }
    @@ -2999,7 +3000,7 @@ Public Attributes

    This is to promt for the password eg. before exporting keys/backup.

    Parameters

    Public Attributes

    - +
    mailboxMailbox object as created by mrmailbox_new().
    mailboxMailbox object as created by mrmailbox_new().
    test_pwPassword to check.
    @@ -3008,12 +3009,12 @@ Public Attributes
    - +
    - + @@ -3022,16 +3023,18 @@ Public Attributes
    char * mrmailbox_create_setup_code char * mrmailbox_initiate_key_transfer ( mrmailbox_t mailbox)
    -

    Create random setup code.

    -

    The created "Autocrypt Level 1" setup code has the following form:

    -
    1234-1234-1234-
    1234-1234-1234-
    1234-1234-1234

    Linebreaks and spaces are not added to the setup code, but the "-" are. Should be given to mrmailbox_imex() for encryption, should be wiped and free()'d after usage.

    +

    Initiate Autocrypt key transfer.

    +

    Before starting the key transfer with this function, the user should be asked:

    +
    "The 'Autocrypt key transfer' requires that the mail client on the other device is Autocrypt-compliant.
    We will then send the key to yourself. The key will be encrypted by a setup code which is displayed herer and must be typed on the other device."

    After that, this function should be called to send the Autocrypt setup message. The required setup code is then returned by this function, does not contain linebreaks or spaces and has the follwing format:

    +
    1234-1234-1234-1234-1234-1234-1234-1234-1234

    The setup code should be shown to the user then:

    +
    "The setup message has been sent to yourself.
    Please switch to the other device now and open the setup message.
    You should be promptet for a setup code.
    Please type the following digits into the prompt:
    1234-1234-1234-
    1234-1234-1234-
    1234-1234-1234
    Once you're done, your other device will be ready to use Autocrypt."

    For more details about the Autocrypt setup process, please refer to https://autocrypt.org/en/latest/level1.html#autocrypt-setup-message

    Parameters
    - +
    mailboxMailbox object as created by mrmailbox_new().
    mailboxThe mailbox object.
    -
    Returns
    Setup code, must be free()'d after usage.
    +
    Returns
    The setup code. Must be free()'d after usage. On errors, eg. if the message could not be sent, NULL is returned.