diff options
author | Michael Vetter <jubalh@iodoru.org> | 2020-12-10 09:17:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-10 09:17:12 +0100 |
commit | f0bfa6929673cdcf016b15ea4413e67c6a07291d (patch) | |
tree | d860654770066790a7ffb453fe461ef2ecd931ad | |
parent | aa1f9071256596f5e94f602f10be38e2e43e9cfd (diff) | |
parent | a1486012d2b92bd1472b3b33e90a237fccd12576 (diff) | |
download | profani-tty-f0bfa6929673cdcf016b15ea4413e67c6a07291d.tar.gz |
Merge pull request #1450 from wstrm/issue-1449
Cast chat/muc window to correct type and refactor cmd_sendfile
-rw-r--r-- | src/command/cmd_funcs.c | 57 | ||||
-rw-r--r-- | src/common.c | 12 | ||||
-rw-r--r-- | src/ui/chatwin.c | 2 |
3 files changed, 41 insertions, 30 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index 68153270..2397ccfc 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -4889,43 +4889,52 @@ cmd_sendfile(ProfWin* window, const char* const command, gchar** args) FILE* fh = fdopen(fd, "rb"); + gboolean omemo_enabled = FALSE; + gboolean sendfile_enabled = TRUE; + switch (window->type) { case WIN_MUC: + { + ProfMucWin* mucwin = (ProfMucWin*)window; + assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); + omemo_enabled = mucwin->is_omemo == TRUE; + break; + } case WIN_CHAT: { ProfChatWin* chatwin = (ProfChatWin*)window; - -#ifdef HAVE_OMEMO - if (chatwin->is_omemo) { - char* err = NULL; - alt_scheme = OMEMO_AESGCM_URL_SCHEME; - alt_fragment = _add_omemo_stream(&fd, &fh, &err); - if (err != NULL) { - cons_show_error(err); - win_println(window, THEME_ERROR, "-", err); - goto out; - } - break; - } -#endif - - if (window->type == WIN_CHAT) { - assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); - if ((chatwin->pgp_send && !prefs_get_boolean(PREF_PGP_SENDFILE)) - || (chatwin->is_otr && !prefs_get_boolean(PREF_OTR_SENDFILE))) { - cons_show_error("Uploading unencrypted files disabled. See /otr sendfile or /pgp sendfile."); - win_println(window, THEME_ERROR, "-", "Sending encrypted files via http_upload is not possible yet."); - goto out; - } - } + assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); + omemo_enabled = chatwin->is_omemo == TRUE; + sendfile_enabled = !((chatwin->pgp_send == TRUE && !prefs_get_boolean(PREF_PGP_SENDFILE)) + || (chatwin->is_otr == TRUE && !prefs_get_boolean(PREF_OTR_SENDFILE))); break; } + case WIN_PRIVATE: // We don't support encryption in private MUC windows. default: cons_show_error("Unsupported window for file transmission."); goto out; } + if (!sendfile_enabled) { + cons_show_error("Uploading unencrypted files disabled. See /otr sendfile or /pgp sendfile."); + win_println(window, THEME_ERROR, "-", "Sending encrypted files via http_upload is not possible yet."); + goto out; + } + + if (omemo_enabled) { +#ifdef HAVE_OMEMO + char* err = NULL; + alt_scheme = OMEMO_AESGCM_URL_SCHEME; + alt_fragment = _add_omemo_stream(&fd, &fh, &err); + if (err != NULL) { + cons_show_error(err); + win_println(window, THEME_ERROR, "-", err); + goto out; + } +#endif + } + HTTPUpload* upload = malloc(sizeof(HTTPUpload)); upload->window = window; diff --git a/src/common.c b/src/common.c index 8dbf1619..fc1f60ab 100644 --- a/src/common.c +++ b/src/common.c @@ -629,15 +629,15 @@ _basename_from_url(const char* url) } gchar* -get_expanded_path(const char *path) +get_expanded_path(const char* path) { GString* exp_path = g_string_new(""); - gchar *result; + gchar* result; if (strlen(path) >= 2 && path[0] == '~' && path[1] == '/') { - g_string_printf(exp_path, "%s/%s", getenv("HOME"), path+2); + g_string_printf(exp_path, "%s/%s", getenv("HOME"), path + 2); } else { - g_string_printf(exp_path, "%s", path+2); + g_string_printf(exp_path, "%s", path); } result = exp_path->str; @@ -649,11 +649,11 @@ get_expanded_path(const char *path) gchar* unique_filename_from_url(const char* url, const char* path) { - gchar *realpath; + gchar* realpath; // Default to './' as path when none has been provided. if (path == NULL) { - realpath = strdup("./"); + realpath = g_strdup("./"); } else { realpath = get_expanded_path(path); } diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index 1861232b..d1737561 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -80,6 +80,7 @@ chatwin_new(const char* const barejid) } } + chatwin->is_omemo = FALSE; #ifdef HAVE_OMEMO if (omemo_automatic_start(barejid)) { omemo_start_session(barejid); @@ -90,6 +91,7 @@ chatwin_new(const char* const barejid) if (prefs_get_boolean(PREF_MAM)) { iq_mam_request(chatwin); } + // XEP-0373: OpenPGP for XMPP chatwin->is_ox = FALSE; |