mirror of
https://github.com/deltachat/deltachat-core.git
synced 2025-10-06 03:50:08 +02:00
separate system messages from the 'centered status text'; the one may exist without the other
This commit is contained in:
parent
076f2abe2c
commit
2ef6067461
11 changed files with 71 additions and 70 deletions
|
@ -37,7 +37,7 @@ extern "C" {
|
|||
typedef struct _mrcontact mrcontact_t;
|
||||
|
||||
#define MR_CONTACT_ID_SELF 1
|
||||
#define MR_CONTACT_ID_SYSTEM 2
|
||||
#define MR_CONTACT_ID_DEVICE 2
|
||||
#define MR_CONTACT_ID_LAST_SPECIAL 9
|
||||
|
||||
|
||||
|
|
|
@ -157,7 +157,7 @@ void mrmailbox_free_ongoing (mrmailbox_t*);
|
|||
int mrmailbox_oob_is_handshake_message__ (mrmailbox_t*, mrmimeparser_t*); /* must be called from lock */
|
||||
void mrmailbox_oob_handle_handshake_message(mrmailbox_t*, mrmimeparser_t*, uint32_t chat_id); /* must not be called from lock */
|
||||
|
||||
uint32_t mrmailbox_add_system_msg (mrmailbox_t*, uint32_t chat_id, const char* text);
|
||||
uint32_t mrmailbox_add_device_msg (mrmailbox_t*, uint32_t chat_id, const char* text);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -2189,7 +2189,7 @@ void mrmailbox_send_msg_to_smtp(mrmailbox_t* mailbox, mrjob_t* job)
|
|||
|
||||
if( (mailbox->m_imap->m_server_flags&MR_NO_EXTRA_IMAP_UPLOAD)==0
|
||||
&& mrparam_get(mimefactory.m_chat->m_param, MRP_SELFTALK, 0)==0
|
||||
&& mrparam_get_int(mimefactory.m_msg->m_param, MRP_SYSTEM_CMD, 0)!=MR_SYSTEM_OOB_VERIFY_MESSAGE ) {
|
||||
&& mrparam_get_int(mimefactory.m_msg->m_param, MRP_CMD, 0)!=MR_CMD_OOB_VERIFY_MESSAGE ) {
|
||||
mrjob_add__(mailbox, MRJ_SEND_MSG_TO_IMAP, mimefactory.m_msg->m_id, NULL); /* send message to IMAP in another job */
|
||||
}
|
||||
|
||||
|
@ -2267,8 +2267,8 @@ static uint32_t mrmailbox_send_msg_i__(mrmailbox_t* mailbox, mrchat_t* chat, con
|
|||
|
||||
/* check if we can guarantee E2EE for this message. If we can, we won't send the message without E2EE later (because of a reset, changed settings etc. - messages may be delayed significally if there is no network present) */
|
||||
int do_guarantee_e2ee = 0;
|
||||
int system_command = mrparam_get_int(msg->m_param, MRP_SYSTEM_CMD, 0);
|
||||
if( mailbox->m_e2ee_enabled && system_command!=MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE )
|
||||
int command = mrparam_get_int(msg->m_param, MRP_CMD, 0);
|
||||
if( mailbox->m_e2ee_enabled && command!=MR_CMD_AUTOCRYPT_SETUP_MESSAGE )
|
||||
{
|
||||
int can_encrypt = 1, all_mutual = 1; /* be optimistic */
|
||||
sqlite3_stmt* stmt = mrsqlite3_predefine__(mailbox->m_sql, SELECT_p_FROM_chats_contacs_JOIN_contacts_peerstates_WHERE_cc,
|
||||
|
@ -2818,11 +2818,11 @@ cleanup:
|
|||
|
||||
|
||||
/*
|
||||
* Log a system message.
|
||||
* Such a message is typically shown in the "middle" of the chat.
|
||||
* Log a device message.
|
||||
* Such a message is typically shown in the "middle" of the chat, the user can check this using mrmsg_is_systemmsg().
|
||||
* Texts are typically "Alice has added Bob to the group" or "Alice fingerprint verified."
|
||||
*/
|
||||
uint32_t mrmailbox_add_system_msg(mrmailbox_t* mailbox, uint32_t chat_id, const char* text)
|
||||
uint32_t mrmailbox_add_device_msg(mrmailbox_t* mailbox, uint32_t chat_id, const char* text)
|
||||
{
|
||||
uint32_t msg_id = 0;
|
||||
int locked = 0;
|
||||
|
@ -2838,14 +2838,14 @@ uint32_t mrmailbox_add_system_msg(mrmailbox_t* mailbox, uint32_t chat_id, const
|
|||
stmt = mrsqlite3_predefine__(mailbox->m_sql, INSERT_INTO_msgs_cftttst,
|
||||
"INSERT INTO msgs (chat_id,from_id,to_id, timestamp,type,state, txt) VALUES (?,?,?, ?,?,?, ?);");
|
||||
sqlite3_bind_int (stmt, 1, chat_id);
|
||||
sqlite3_bind_int (stmt, 2, MR_CONTACT_ID_SYSTEM);
|
||||
sqlite3_bind_int (stmt, 3, MR_CONTACT_ID_SYSTEM);
|
||||
sqlite3_bind_int (stmt, 2, MR_CONTACT_ID_DEVICE);
|
||||
sqlite3_bind_int (stmt, 3, MR_CONTACT_ID_DEVICE);
|
||||
sqlite3_bind_int64(stmt, 4, mr_create_smeared_timestamp__());
|
||||
sqlite3_bind_int (stmt, 5, MR_MSG_TEXT);
|
||||
sqlite3_bind_int (stmt, 6, MR_STATE_IN_NOTICED);
|
||||
sqlite3_bind_text (stmt, 7, text, -1, SQLITE_STATIC);
|
||||
if( sqlite3_step(stmt) != SQLITE_DONE ) {
|
||||
mrmailbox_log_error(mailbox, 0, "Cannot add system message to database.");
|
||||
mrmailbox_log_error(mailbox, 0, "Cannot add device message to database.");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
|
@ -3058,7 +3058,7 @@ int mrmailbox_set_chat_name(mrmailbox_t* mailbox, uint32_t chat_id, const char*
|
|||
{
|
||||
msg->m_type = MR_MSG_TEXT;
|
||||
msg->m_text = mrstock_str_repl_string2(MR_STR_MSGGRPNAME, chat->m_name, new_name);
|
||||
mrparam_set_int(msg->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_GROUPNAME_CHANGED);
|
||||
mrparam_set_int(msg->m_param, MRP_CMD, MR_CMD_GROUPNAME_CHANGED);
|
||||
msg->m_id = mrmailbox_send_msg_object(mailbox, chat_id, msg);
|
||||
mailbox->m_cb(mailbox, MR_EVENT_MSGS_CHANGED, chat_id, msg->m_id);
|
||||
}
|
||||
|
@ -3130,8 +3130,8 @@ int mrmailbox_set_chat_profile_image(mrmailbox_t* mailbox, uint32_t chat_id, con
|
|||
/* send a status mail to all group members, also needed for outself to allow multi-client */
|
||||
if( DO_SEND_STATUS_MAILS )
|
||||
{
|
||||
mrparam_set_int(msg->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_GROUPIMAGE_CHANGED);
|
||||
mrparam_set (msg->m_param, MRP_SYSTEM_CMD_PARAM, new_image);
|
||||
mrparam_set_int(msg->m_param, MRP_CMD, MR_CMD_GROUPIMAGE_CHANGED);
|
||||
mrparam_set (msg->m_param, MRP_CMD_PARAM, new_image);
|
||||
msg->m_type = MR_MSG_TEXT;
|
||||
msg->m_text = mrstock_str(new_image? MR_STR_MSGGRPIMGCHANGED : MR_STR_MSGGRPIMGDELETED);
|
||||
msg->m_id = mrmailbox_send_msg_object(mailbox, chat_id, msg);
|
||||
|
@ -3271,8 +3271,8 @@ int mrmailbox_add_contact_to_chat(mrmailbox_t* mailbox, uint32_t chat_id, uint32
|
|||
{
|
||||
msg->m_type = MR_MSG_TEXT;
|
||||
msg->m_text = mrstock_str_repl_string(MR_STR_MSGADDMEMBER, (contact->m_authname&&contact->m_authname[0])? contact->m_authname : contact->m_addr);
|
||||
mrparam_set_int(msg->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_MEMBER_ADDED_TO_GROUP);
|
||||
mrparam_set (msg->m_param, MRP_SYSTEM_CMD_PARAM, contact->m_addr);
|
||||
mrparam_set_int(msg->m_param, MRP_CMD, MR_CMD_MEMBER_ADDED_TO_GROUP);
|
||||
mrparam_set (msg->m_param, MRP_CMD_PARAM, contact->m_addr);
|
||||
msg->m_id = mrmailbox_send_msg_object(mailbox, chat_id, msg);
|
||||
mailbox->m_cb(mailbox, MR_EVENT_MSGS_CHANGED, chat_id, msg->m_id);
|
||||
}
|
||||
|
@ -3350,8 +3350,8 @@ int mrmailbox_remove_contact_from_chat(mrmailbox_t* mailbox, uint32_t chat_id, u
|
|||
else {
|
||||
msg->m_text = mrstock_str_repl_string(MR_STR_MSGDELMEMBER, (contact->m_authname&&contact->m_authname[0])? contact->m_authname : contact->m_addr);
|
||||
}
|
||||
mrparam_set_int(msg->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_MEMBER_REMOVED_FROM_GROUP);
|
||||
mrparam_set (msg->m_param, MRP_SYSTEM_CMD_PARAM, contact->m_addr);
|
||||
mrparam_set_int(msg->m_param, MRP_CMD, MR_CMD_MEMBER_REMOVED_FROM_GROUP);
|
||||
mrparam_set (msg->m_param, MRP_CMD_PARAM, contact->m_addr);
|
||||
msg->m_id = mrmailbox_send_msg_object(mailbox, chat_id, msg);
|
||||
mailbox->m_cb(mailbox, MR_EVENT_MSGS_CHANGED, chat_id, msg->m_id);
|
||||
}
|
||||
|
@ -4493,7 +4493,7 @@ char* mrmailbox_get_msg_info(mrmailbox_t* mailbox, uint32_t msg_id)
|
|||
mrstrbuilder_cat(&ret, "\n");
|
||||
}
|
||||
|
||||
if( msg->m_from_id == MR_CONTACT_ID_SYSTEM || msg->m_to_id == MR_CONTACT_ID_SYSTEM ) { // do not use mrmsg_is_systemcmd() as this would als catch system messages sent as real messages by others
|
||||
if( msg->m_from_id == MR_CONTACT_ID_DEVICE || msg->m_to_id == MR_CONTACT_ID_DEVICE ) { // do not use mrmsg_is_systemcmd() as this would als catch system messages sent as real messages by others
|
||||
goto cleanup; // internal message, no further details needed
|
||||
}
|
||||
|
||||
|
|
|
@ -510,7 +510,7 @@ char* mrmailbox_initiate_key_transfer(mrmailbox_t* mailbox)
|
|||
msg->m_type = MR_MSG_FILE;
|
||||
mrparam_set (msg->m_param, MRP_FILE, setup_file_name);
|
||||
mrparam_set (msg->m_param, MRP_MIMETYPE, "application/autocrypt-setup");
|
||||
mrparam_set_int(msg->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE);
|
||||
mrparam_set_int(msg->m_param, MRP_CMD, MR_CMD_AUTOCRYPT_SETUP_MESSAGE);
|
||||
|
||||
CHECK_EXIT
|
||||
|
||||
|
|
|
@ -423,15 +423,15 @@ static void send_handshake_msg(mrmailbox_t* mailbox, uint32_t chat_id, const cha
|
|||
msg->m_type = MR_MSG_TEXT;
|
||||
msg->m_text = mr_mprintf("Secure-Join: %s", step);
|
||||
msg->m_hidden = 1;
|
||||
mrparam_set_int(msg->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_OOB_VERIFY_MESSAGE);
|
||||
mrparam_set (msg->m_param, MRP_SYSTEM_CMD_PARAM, step);
|
||||
mrparam_set_int(msg->m_param, MRP_CMD, MR_CMD_OOB_VERIFY_MESSAGE);
|
||||
mrparam_set (msg->m_param, MRP_CMD_PARAM, step);
|
||||
|
||||
if( random ) {
|
||||
mrparam_set(msg->m_param, MRP_SYSTEM_CMD_PARAM2, random);
|
||||
mrparam_set(msg->m_param, MRP_CMD_PARAM2, random);
|
||||
}
|
||||
|
||||
if( fingerprint ) {
|
||||
mrparam_set(msg->m_param, MRP_SYSTEM_CMD_PARAM3, fingerprint);
|
||||
mrparam_set(msg->m_param, MRP_CMD_PARAM3, fingerprint);
|
||||
}
|
||||
|
||||
if( strcmp(step, "request") != 0 ) {
|
||||
|
@ -782,7 +782,7 @@ void mrmailbox_oob_handle_handshake_message(mrmailbox_t* mailbox, mrmimeparser_t
|
|||
|
||||
mrmailbox_log_info(mailbox, 0, "Random secret validated.");
|
||||
|
||||
mrmailbox_add_system_msg(mailbox, chat_id, "Secure-join connection established.");
|
||||
mrmailbox_add_device_msg(mailbox, chat_id, "Secure-join connection established.");
|
||||
|
||||
send_handshake_msg(mailbox, chat_id, "broadcast", NULL, NULL); // Alice -> Bob and all other group members
|
||||
}
|
||||
|
@ -810,7 +810,7 @@ void mrmailbox_oob_handle_handshake_message(mrmailbox_t* mailbox, mrmimeparser_t
|
|||
mrsqlite3_unlock(mailbox->m_sql);
|
||||
locked = 0;
|
||||
|
||||
mrmailbox_add_system_msg(mailbox, chat_id, "Secure-join connection established.");
|
||||
mrmailbox_add_device_msg(mailbox, chat_id, "Secure-join connection established.");
|
||||
|
||||
s_bob_expects = 0;
|
||||
end_bobs_joining(mailbox, BOB_SUCCESS);
|
||||
|
|
|
@ -661,19 +661,19 @@ static void create_or_lookup_group__(mrmailbox_t* mailbox, mrmimeparser_t* mime_
|
|||
|
||||
if( (optional_field=mrmimeparser_lookup_optional_field2(mime_parser, "Chat-Group-Member-Removed", "X-MrRemoveFromGrp"))!=NULL ) {
|
||||
X_MrRemoveFromGrp = optional_field->fld_value;
|
||||
mime_parser->m_is_system_message = MR_SYSTEM_MEMBER_REMOVED_FROM_GROUP;
|
||||
mime_parser->m_is_system_message = MR_CMD_MEMBER_REMOVED_FROM_GROUP;
|
||||
}
|
||||
else if( (optional_field=mrmimeparser_lookup_optional_field2(mime_parser, "Chat-Group-Member-Added", "X-MrAddToGrp"))!=NULL ) {
|
||||
X_MrAddToGrp = optional_field->fld_value;
|
||||
mime_parser->m_is_system_message = MR_SYSTEM_MEMBER_ADDED_TO_GROUP;
|
||||
mime_parser->m_is_system_message = MR_CMD_MEMBER_ADDED_TO_GROUP;
|
||||
}
|
||||
else if( (optional_field=mrmimeparser_lookup_optional_field2(mime_parser, "Chat-Group-Name-Changed", "X-MrGrpNameChanged"))!=NULL ) {
|
||||
X_MrGrpNameChanged = 1;
|
||||
mime_parser->m_is_system_message = MR_SYSTEM_GROUPNAME_CHANGED;
|
||||
mime_parser->m_is_system_message = MR_CMD_GROUPNAME_CHANGED;
|
||||
}
|
||||
else if( (optional_field=mrmimeparser_lookup_optional_field(mime_parser, "Chat-Group-Image"))!=NULL ) {
|
||||
X_MrGrpImageChanged = 1;
|
||||
mime_parser->m_is_system_message = MR_SYSTEM_GROUPIMAGE_CHANGED;
|
||||
mime_parser->m_is_system_message = MR_CMD_GROUPIMAGE_CHANGED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1202,7 +1202,7 @@ void mrmailbox_receive_imf(mrmailbox_t* mailbox, const char* imf_raw_not_termina
|
|||
}
|
||||
|
||||
if( mime_parser->m_is_system_message ) {
|
||||
mrparam_set_int(part->m_param, MRP_SYSTEM_CMD, mime_parser->m_is_system_message);
|
||||
mrparam_set_int(part->m_param, MRP_CMD, mime_parser->m_is_system_message);
|
||||
}
|
||||
|
||||
stmt = mrsqlite3_predefine__(mailbox->m_sql, INSERT_INTO_msgs_msscftttsmttpb,
|
||||
|
|
|
@ -148,9 +148,9 @@ int mrmimefactory_load_msg(mrmimefactory_t* factory, uint32_t msg_id)
|
|||
}
|
||||
}
|
||||
|
||||
int system_command = mrparam_get_int(factory->m_msg->m_param, MRP_SYSTEM_CMD, 0);
|
||||
if( system_command==MR_SYSTEM_MEMBER_REMOVED_FROM_GROUP /* for added members, the list is just fine */) {
|
||||
char* email_to_remove = mrparam_get(factory->m_msg->m_param, MRP_SYSTEM_CMD_PARAM, NULL);
|
||||
int command = mrparam_get_int(factory->m_msg->m_param, MRP_CMD, 0);
|
||||
if( command==MR_CMD_MEMBER_REMOVED_FROM_GROUP /* for added members, the list is just fine */) {
|
||||
char* email_to_remove = mrparam_get(factory->m_msg->m_param, MRP_CMD_PARAM, NULL);
|
||||
char* self_addr = mrsqlite3_get_config__(mailbox->m_sql, "configured_addr", "");
|
||||
if( email_to_remove && strcasecmp(email_to_remove, self_addr)!=0 )
|
||||
{
|
||||
|
@ -163,8 +163,8 @@ int mrmimefactory_load_msg(mrmimefactory_t* factory, uint32_t msg_id)
|
|||
free(self_addr);
|
||||
}
|
||||
|
||||
if( system_command!=MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE
|
||||
&& system_command!=MR_SYSTEM_OOB_VERIFY_MESSAGE
|
||||
if( command!=MR_CMD_AUTOCRYPT_SETUP_MESSAGE
|
||||
&& command!=MR_CMD_OOB_VERIFY_MESSAGE
|
||||
&& mrsqlite3_get_config_int__(mailbox->m_sql, "mdns_enabled", MR_MDNS_DEFAULT_ENABLED) ) {
|
||||
factory->m_req_mdn = 1;
|
||||
}
|
||||
|
@ -414,7 +414,7 @@ static char* get_subject(const mrchat_t* chat, const mrmsg_t* msg, int afwd_emai
|
|||
char *ret, *raw_subject = mrmsg_get_summarytext_by_raw(msg->m_type, msg->m_text, msg->m_param, APPROX_SUBJECT_CHARS);
|
||||
const char* fwd = afwd_email? "Fwd: " : "";
|
||||
|
||||
if( mrparam_get_int(msg->m_param, MRP_SYSTEM_CMD, 0) == MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE )
|
||||
if( mrparam_get_int(msg->m_param, MRP_CMD, 0) == MR_CMD_AUTOCRYPT_SETUP_MESSAGE )
|
||||
{
|
||||
ret = mrstock_str(MR_STR_AC_SETUP_MSG_SUBJECT); /* do not add the "Chat:" prefix for setup messages */
|
||||
}
|
||||
|
@ -519,54 +519,54 @@ int mrmimefactory_render(mrmimefactory_t* factory, int encrypt_to_self)
|
|||
char* placeholdertext = NULL;
|
||||
|
||||
/* build header etc. */
|
||||
int system_command = mrparam_get_int(msg->m_param, MRP_SYSTEM_CMD, 0);
|
||||
int command = mrparam_get_int(msg->m_param, MRP_CMD, 0);
|
||||
if( chat->m_type==MR_CHAT_TYPE_GROUP )
|
||||
{
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Chat-Group-ID"), safe_strdup(chat->m_grpid)));
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Chat-Group-Name"), mr_encode_header_string(chat->m_name)));
|
||||
|
||||
if( system_command == MR_SYSTEM_MEMBER_REMOVED_FROM_GROUP ) {
|
||||
char* email_to_remove = mrparam_get(msg->m_param, MRP_SYSTEM_CMD_PARAM, NULL);
|
||||
if( command == MR_CMD_MEMBER_REMOVED_FROM_GROUP ) {
|
||||
char* email_to_remove = mrparam_get(msg->m_param, MRP_CMD_PARAM, NULL);
|
||||
if( email_to_remove ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Chat-Group-Member-Removed"), email_to_remove));
|
||||
}
|
||||
}
|
||||
else if( system_command == MR_SYSTEM_MEMBER_ADDED_TO_GROUP ) {
|
||||
char* email_to_add = mrparam_get(msg->m_param, MRP_SYSTEM_CMD_PARAM, NULL);
|
||||
else if( command == MR_CMD_MEMBER_ADDED_TO_GROUP ) {
|
||||
char* email_to_add = mrparam_get(msg->m_param, MRP_CMD_PARAM, NULL);
|
||||
if( email_to_add ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Chat-Group-Member-Added"), email_to_add));
|
||||
grpimage = mrparam_get(chat->m_param, MRP_PROFILE_IMAGE, NULL);
|
||||
}
|
||||
}
|
||||
else if( system_command == MR_SYSTEM_GROUPNAME_CHANGED ) {
|
||||
else if( command == MR_CMD_GROUPNAME_CHANGED ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Chat-Group-Name-Changed"), strdup("1")));
|
||||
}
|
||||
else if( system_command == MR_SYSTEM_GROUPIMAGE_CHANGED ) {
|
||||
grpimage = mrparam_get(msg->m_param, MRP_SYSTEM_CMD_PARAM, NULL);
|
||||
else if( command == MR_CMD_GROUPIMAGE_CHANGED ) {
|
||||
grpimage = mrparam_get(msg->m_param, MRP_CMD_PARAM, NULL);
|
||||
if( grpimage==NULL ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Chat-Group-Image"), safe_strdup("0")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( system_command == MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE ) {
|
||||
if( command == MR_CMD_AUTOCRYPT_SETUP_MESSAGE ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Autocrypt-Setup-Message"), strdup("v1")));
|
||||
placeholdertext = mrstock_str(MR_STR_AC_SETUP_MSG_BODY);
|
||||
force_unencrypted = 1;
|
||||
}
|
||||
|
||||
if( system_command == MR_SYSTEM_OOB_VERIFY_MESSAGE ) {
|
||||
char* step = mrparam_get(msg->m_param, MRP_SYSTEM_CMD_PARAM, NULL);
|
||||
if( command == MR_CMD_OOB_VERIFY_MESSAGE ) {
|
||||
char* step = mrparam_get(msg->m_param, MRP_CMD_PARAM, NULL);
|
||||
if( step ) {
|
||||
mrmailbox_log_info(msg->m_mailbox, 0, "sending secure-join message '%s' >>>>>>>>>>>>>>>>>>>>>>>>>", step);
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Secure-Join"), step/*mailimf takes ownership of string*/));
|
||||
|
||||
char* random_secret = mrparam_get(msg->m_param, MRP_SYSTEM_CMD_PARAM2, NULL);
|
||||
char* random_secret = mrparam_get(msg->m_param, MRP_CMD_PARAM2, NULL);
|
||||
if( random_secret ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strcmp(step, "request")==0? strdup("Secure-Join-Random-Public"):strdup("Secure-Join-Random-Secret"), random_secret/*mailimf takes ownership of string*/));
|
||||
}
|
||||
|
||||
char* fingerprint = mrparam_get(msg->m_param, MRP_SYSTEM_CMD_PARAM3, NULL);
|
||||
char* fingerprint = mrparam_get(msg->m_param, MRP_CMD_PARAM3, NULL);
|
||||
if( fingerprint ) {
|
||||
mailimf_fields_add(imf_fields, mailimf_field_new_custom(strdup("Secure-Join-Fingerprint"), fingerprint/*mailimf takes ownership of string*/));
|
||||
}
|
||||
|
|
|
@ -34,12 +34,12 @@ typedef struct _mrchat mrchat_t;
|
|||
typedef struct _mrmailbox mrmailbox_t;
|
||||
|
||||
|
||||
#define MR_SYSTEM_GROUPNAME_CHANGED 2
|
||||
#define MR_SYSTEM_GROUPIMAGE_CHANGED 3
|
||||
#define MR_SYSTEM_MEMBER_ADDED_TO_GROUP 4
|
||||
#define MR_SYSTEM_MEMBER_REMOVED_FROM_GROUP 5
|
||||
#define MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE 6
|
||||
#define MR_SYSTEM_OOB_VERIFY_MESSAGE 7
|
||||
#define MR_CMD_GROUPNAME_CHANGED 2
|
||||
#define MR_CMD_GROUPIMAGE_CHANGED 3
|
||||
#define MR_CMD_MEMBER_ADDED_TO_GROUP 4
|
||||
#define MR_CMD_MEMBER_REMOVED_FROM_GROUP 5
|
||||
#define MR_CMD_AUTOCRYPT_SETUP_MESSAGE 6
|
||||
#define MR_CMD_OOB_VERIFY_MESSAGE 7
|
||||
|
||||
|
||||
typedef enum {
|
||||
|
|
|
@ -1467,7 +1467,7 @@ void mrmimeparser_parse(mrmimeparser_t* ths, const char* body_not_terminated, si
|
|||
}
|
||||
if( has_setup_file ) {
|
||||
/* delete all parts but the application/autocrypt-setup part */
|
||||
ths->m_is_system_message = MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE;
|
||||
ths->m_is_system_message = MR_CMD_AUTOCRYPT_SETUP_MESSAGE;
|
||||
for( i = 0; i < carray_count(ths->m_parts); i++ ) {
|
||||
mrmimepart_t* part = (mrmimepart_t*)carray_get(ths->m_parts, i);
|
||||
if( part->m_int_mimetype!=MR_MIMETYPE_AC_SETUP_FILE ) {
|
||||
|
@ -1560,7 +1560,7 @@ void mrmimeparser_parse(mrmimeparser_t* ths, const char* body_not_terminated, si
|
|||
&& carray_count(ths->m_parts)>=1 ) {
|
||||
mrmimepart_t* textpart = (mrmimepart_t*)carray_get(ths->m_parts, 0);
|
||||
if( textpart->m_type == MR_MSG_TEXT ) {
|
||||
mrparam_set_int(textpart->m_param, MRP_SYSTEM_CMD, MR_SYSTEM_GROUPIMAGE_CHANGED);
|
||||
mrparam_set_int(textpart->m_param, MRP_CMD, MR_CMD_GROUPIMAGE_CHANGED);
|
||||
if( carray_count(ths->m_parts)>=2 ) {
|
||||
mrmimepart_t* imgpart = (mrmimepart_t*)carray_get(ths->m_parts, 1);
|
||||
if( imgpart->m_type == MR_MSG_IMAGE ) {
|
||||
|
|
17
src/mrmsg.c
17
src/mrmsg.c
|
@ -753,7 +753,7 @@ int mrmsg_is_forwarded(const mrmsg_t* msg)
|
|||
* mrmsg_get_text() returns a descriptive text about what is going on.
|
||||
*
|
||||
* There is no need to perfrom any action when seeing such a message - this is already done by the core.
|
||||
* Typically, this text is displayed in another color or in another font than normal user messages.
|
||||
* Typically, these messages are displayed in the center of the chat.
|
||||
*
|
||||
* @memberof mrmsg_t
|
||||
*
|
||||
|
@ -767,9 +767,11 @@ int mrmsg_is_systemcmd(const mrmsg_t* msg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if( msg->m_from_id == MR_CONTACT_ID_SYSTEM
|
||||
|| msg->m_to_id == MR_CONTACT_ID_SYSTEM
|
||||
|| mrparam_get_int(msg->m_param, MRP_SYSTEM_CMD, 0) ) {
|
||||
int cmd = mrparam_get_int(msg->m_param, MRP_CMD, 0);
|
||||
|
||||
if( msg->m_from_id == MR_CONTACT_ID_DEVICE
|
||||
|| msg->m_to_id == MR_CONTACT_ID_DEVICE
|
||||
|| (cmd && cmd != MR_CMD_AUTOCRYPT_SETUP_MESSAGE) ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -791,8 +793,7 @@ int mrmsg_is_systemcmd(const mrmsg_t* msg)
|
|||
* @param msg The message object.
|
||||
*
|
||||
* @return 1=message is a setup message, 0=no setup message.
|
||||
* For setup messages, mrmsg_is_systemcmd() returns 1 and
|
||||
* mrmsg_get_type() returns MR_MSG_FILE.
|
||||
* For setup messages, mrmsg_get_type() returns MR_MSG_FILE.
|
||||
*/
|
||||
int mrmsg_is_setupmessage(const mrmsg_t* msg)
|
||||
{
|
||||
|
@ -800,7 +801,7 @@ int mrmsg_is_setupmessage(const mrmsg_t* msg)
|
|||
return 0;
|
||||
}
|
||||
|
||||
return mrparam_get_int(msg->m_param, MRP_SYSTEM_CMD, 0)==MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE? 1 : 0;
|
||||
return mrparam_get_int(msg->m_param, MRP_CMD, 0)==MR_CMD_AUTOCRYPT_SETUP_MESSAGE? 1 : 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1039,7 +1040,7 @@ char* mrmsg_get_summarytext_by_raw(int type, const char* text, mrparam_t* param,
|
|||
break;
|
||||
|
||||
case MR_MSG_FILE:
|
||||
if( mrparam_get_int(param, MRP_SYSTEM_CMD, 0)==MR_SYSTEM_AUTOCRYPT_SETUP_MESSAGE ) {
|
||||
if( mrparam_get_int(param, MRP_CMD, 0)==MR_CMD_AUTOCRYPT_SETUP_MESSAGE ) {
|
||||
ret = mrstock_str(MR_STR_AC_SETUP_MSG_SUBJECT);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -54,10 +54,10 @@ typedef struct mrparam_t
|
|||
#define MRP_ERRONEOUS_E2EE 'e' /* for msgs: decrypted with validation errors or without mutual set, if neither 'c' nor 'e' are preset, the messages is only transport encrypted */
|
||||
#define MRP_WANTS_MDN 'r' /* for msgs: an incoming message which requestes a MDN (aka read receipt) */
|
||||
#define MRP_FORWARDED 'a' /* for msgs */
|
||||
#define MRP_SYSTEM_CMD 'S' /* for msgs */
|
||||
#define MRP_SYSTEM_CMD_PARAM 'E' /* for msgs */
|
||||
#define MRP_SYSTEM_CMD_PARAM2 'F' /* for msgs */
|
||||
#define MRP_SYSTEM_CMD_PARAM3 'G' /* for msgs */
|
||||
#define MRP_CMD 'S' /* for msgs */
|
||||
#define MRP_CMD_PARAM 'E' /* for msgs */
|
||||
#define MRP_CMD_PARAM2 'F' /* for msgs */
|
||||
#define MRP_CMD_PARAM3 'G' /* for msgs */
|
||||
|
||||
#define MRP_SERVER_FOLDER 'Z' /* for jobs */
|
||||
#define MRP_SERVER_UID 'z' /* for jobs */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue