mirror of
https://github.com/profanity-im/profanity.git
synced 2025-01-03 14:57:42 -05:00
Merge branch 'master' into plugins
Conflicts: .travis.yml
This commit is contained in:
commit
c225d24b42
@ -32,5 +32,4 @@ install:
|
||||
- sudo make install
|
||||
- cd ..
|
||||
- rm -rf stabber
|
||||
- ./bootstrap.sh
|
||||
script: ./configure --disable-ruby-plugins --enable-python-plugins --enable-c-plugins --disable-lua-plugins && make && make check
|
||||
|
@ -157,11 +157,11 @@ cl_ev_send_msg(ProfChatWin *chatwin, const char *const msg, const char *const oo
|
||||
// OTR supported, PGP unsupported
|
||||
#ifdef HAVE_LIBOTR
|
||||
#ifndef HAVE_LIBGPGME
|
||||
gboolean handled = otr_on_message_send(chatwin, plugin_msg);
|
||||
gboolean handled = otr_on_message_send(chatwin, plugin_msg, request_receipt);
|
||||
if (!handled) {
|
||||
char *id = message_send_chat(chatwin->barejid, plugin_msg, oob_url);
|
||||
char *id = message_send_chat(chatwin->barejid, plugin_msg, oob_url, request_receipt);
|
||||
chat_log_msg_out(chatwin->barejid, plugin_msg);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PLAIN);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PLAIN, request_receipt);
|
||||
free(id);
|
||||
}
|
||||
|
||||
@ -175,14 +175,14 @@ cl_ev_send_msg(ProfChatWin *chatwin, const char *const msg, const char *const oo
|
||||
#ifndef HAVE_LIBOTR
|
||||
#ifdef HAVE_LIBGPGME
|
||||
if (chatwin->pgp_send) {
|
||||
char *id = message_send_chat_pgp(chatwin->barejid, plugin_msg);
|
||||
char *id = message_send_chat_pgp(chatwin->barejid, plugin_msg, request_receipt);
|
||||
chat_log_pgp_msg_out(chatwin->barejid, plugin_msg);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PGP);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PGP, request_receipt);
|
||||
free(id);
|
||||
} else {
|
||||
char *id = message_send_chat(chatwin->barejid, plugin_msg, oob_url);
|
||||
char *id = message_send_chat(chatwin->barejid, plugin_msg, oob_url, request_receipt);
|
||||
chat_log_msg_out(chatwin->barejid, plugin_msg);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PLAIN);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PLAIN, request_receipt);
|
||||
free(id);
|
||||
}
|
||||
|
||||
@ -195,9 +195,9 @@ cl_ev_send_msg(ProfChatWin *chatwin, const char *const msg, const char *const oo
|
||||
// OTR unsupported, PGP unsupported
|
||||
#ifndef HAVE_LIBOTR
|
||||
#ifndef HAVE_LIBGPGME
|
||||
char *id = message_send_chat(chatwin->barejid, plugin_msg, oob_url);
|
||||
char *id = message_send_chat(chatwin->barejid, plugin_msg, oob_url, request_receipt);
|
||||
chat_log_msg_out(chatwin->barejid, plugin_msg);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PLAIN);
|
||||
chatwin_outgoing_msg(chatwin, plugin_msg, id, PROF_MSG_PLAIN, request_receipt);
|
||||
free(id);
|
||||
|
||||
plugins_post_chat_message_send(chatwin->barejid, plugin_msg);
|
||||
|
@ -1082,3 +1082,25 @@ sv_ev_lastactivity_response(const char *const from, const int seconds, const cha
|
||||
g_free(date_fmt);
|
||||
jid_destroy(jidp);
|
||||
}
|
||||
|
||||
void
|
||||
sv_ev_bookmark_autojoin(Bookmark *bookmark)
|
||||
{
|
||||
char *nick = NULL;
|
||||
if (bookmark->nick) {
|
||||
nick = strdup(bookmark->nick);
|
||||
} else {
|
||||
char *account_name = session_get_account_name();
|
||||
ProfAccount *account = accounts_get_account(account_name);
|
||||
nick = strdup(account->muc_nick);
|
||||
account_free(account);
|
||||
}
|
||||
|
||||
log_debug("Autojoin %s with nick=%s", bookmark->barejid, nick);
|
||||
if (!muc_active(bookmark->barejid)) {
|
||||
presence_join_room(bookmark->barejid, nick, bookmark->password);
|
||||
muc_join(bookmark->barejid, nick, bookmark->password, TRUE);
|
||||
}
|
||||
|
||||
free(nick);
|
||||
}
|
||||
|
@ -87,5 +87,6 @@ void sv_ev_roster_update(const char *const barejid, const char *const name,
|
||||
void sv_ev_roster_received(void);
|
||||
int sv_ev_certfail(const char *const errormsg, TLSCertificate *cert);
|
||||
void sv_ev_lastactivity_response(const char *const from, const int seconds, const char *const msg);
|
||||
void sv_ev_bookmark_autojoin(Bookmark *bookmark);
|
||||
|
||||
#endif
|
||||
|
@ -698,10 +698,10 @@ cons_show_bookmarks(const GList *list)
|
||||
|
||||
theme_item_t presence_colour = THEME_TEXT;
|
||||
|
||||
if (muc_active(item->jid)) {
|
||||
if (muc_active(item->barejid)) {
|
||||
presence_colour = THEME_ONLINE;
|
||||
}
|
||||
win_vprint(console, '-', 0, NULL, NO_EOL, presence_colour, "", " %s", item->jid);
|
||||
win_vprint(console, '-', 0, NULL, NO_EOL, presence_colour, "", " %s", item->barejid);
|
||||
if (item->nick) {
|
||||
win_vprint(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "/%s", item->nick);
|
||||
}
|
||||
@ -711,8 +711,8 @@ cons_show_bookmarks(const GList *list)
|
||||
if (item->password) {
|
||||
win_print(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (private)");
|
||||
}
|
||||
if (muc_active(item->jid)) {
|
||||
ProfWin *roomwin = (ProfWin*)wins_get_muc(item->jid);
|
||||
if (muc_active(item->barejid)) {
|
||||
ProfWin *roomwin = (ProfWin*)wins_get_muc(item->barejid);
|
||||
if (roomwin) {
|
||||
int num = wins_get_num(roomwin);
|
||||
win_vprint(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (win %d)", num);
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <glib.h>
|
||||
#include <glib/gstdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "log.h"
|
||||
#include "config/preferences.h"
|
||||
|
@ -103,7 +103,7 @@ bookmark_add(const char *jid, const char *nick, const char *password, const char
|
||||
}
|
||||
|
||||
Bookmark *bookmark = malloc(sizeof(Bookmark));
|
||||
bookmark->jid = strdup(jid);
|
||||
bookmark->barejid = strdup(jid);
|
||||
if (nick) {
|
||||
bookmark->nick = strdup(nick);
|
||||
} else {
|
||||
@ -171,16 +171,16 @@ bookmark_join(const char *jid)
|
||||
|
||||
char *account_name = session_get_account_name();
|
||||
ProfAccount *account = accounts_get_account(account_name);
|
||||
if (!muc_active(bookmark->jid)) {
|
||||
if (!muc_active(bookmark->barejid)) {
|
||||
char *nick = bookmark->nick;
|
||||
if (!nick) {
|
||||
nick = account->muc_nick;
|
||||
}
|
||||
presence_join_room(bookmark->jid, nick, bookmark->password);
|
||||
muc_join(bookmark->jid, nick, bookmark->password, FALSE);
|
||||
presence_join_room(bookmark->barejid, nick, bookmark->password);
|
||||
muc_join(bookmark->barejid, nick, bookmark->password, FALSE);
|
||||
account_free(account);
|
||||
} else if (muc_roster_complete(bookmark->jid)) {
|
||||
ui_room_join(bookmark->jid, TRUE);
|
||||
} else if (muc_roster_complete(bookmark->barejid)) {
|
||||
ui_room_join(bookmark->barejid, TRUE);
|
||||
account_free(account);
|
||||
}
|
||||
|
||||
@ -259,13 +259,13 @@ _bookmark_result_id_handler(xmpp_stanza_t *const stanza, void *const userdata)
|
||||
child = xmpp_stanza_get_next(child);
|
||||
continue;
|
||||
}
|
||||
const char *jid = xmpp_stanza_get_attribute(child, STANZA_ATTR_JID);
|
||||
if (!jid) {
|
||||
const char *barejid = xmpp_stanza_get_attribute(child, STANZA_ATTR_JID);
|
||||
if (!barejid) {
|
||||
child = xmpp_stanza_get_next(child);
|
||||
continue;
|
||||
}
|
||||
|
||||
log_debug("Handle bookmark for %s", jid);
|
||||
log_debug("Handle bookmark for %s", barejid);
|
||||
|
||||
char *nick = NULL;
|
||||
xmpp_stanza_t *nick_st = xmpp_stanza_get_child_by_name(child, "nick");
|
||||
@ -285,31 +285,16 @@ _bookmark_result_id_handler(xmpp_stanza_t *const stanza, void *const userdata)
|
||||
autojoin_val = TRUE;
|
||||
}
|
||||
|
||||
autocomplete_add(bookmark_ac, jid);
|
||||
autocomplete_add(bookmark_ac, barejid);
|
||||
Bookmark *bookmark = malloc(sizeof(Bookmark));
|
||||
bookmark->jid = strdup(jid);
|
||||
bookmark->barejid = strdup(barejid);
|
||||
bookmark->nick = nick;
|
||||
bookmark->password = password;
|
||||
bookmark->autojoin = autojoin_val;
|
||||
g_hash_table_insert(bookmarks, strdup(jid), bookmark);
|
||||
g_hash_table_insert(bookmarks, strdup(barejid), bookmark);
|
||||
|
||||
if (autojoin_val) {
|
||||
Jid *room_jid;
|
||||
|
||||
char *account_name = session_get_account_name();
|
||||
ProfAccount *account = accounts_get_account(account_name);
|
||||
if (nick == NULL) {
|
||||
nick = account->muc_nick;
|
||||
}
|
||||
|
||||
log_debug("Autojoin %s with nick=%s", jid, nick);
|
||||
room_jid = jid_create_from_bare_and_resource(jid, nick);
|
||||
if (!muc_active(room_jid->barejid)) {
|
||||
presence_join_room(jid, nick, password);
|
||||
muc_join(jid, nick, password, TRUE);
|
||||
}
|
||||
jid_destroy(room_jid);
|
||||
account_free(account);
|
||||
sv_ev_bookmark_autojoin(bookmark);
|
||||
}
|
||||
|
||||
child = xmpp_stanza_get_next(child);
|
||||
@ -325,7 +310,7 @@ _bookmark_destroy(Bookmark *bookmark)
|
||||
return;
|
||||
}
|
||||
|
||||
free(bookmark->jid);
|
||||
free(bookmark->barejid);
|
||||
free(bookmark->nick);
|
||||
free(bookmark->password);
|
||||
free(bookmark);
|
||||
@ -354,9 +339,9 @@ _send_bookmarks(void)
|
||||
Bookmark *bookmark = curr->data;
|
||||
xmpp_stanza_t *conference = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(conference, STANZA_NAME_CONFERENCE);
|
||||
xmpp_stanza_set_attribute(conference, STANZA_ATTR_JID, bookmark->jid);
|
||||
xmpp_stanza_set_attribute(conference, STANZA_ATTR_JID, bookmark->barejid);
|
||||
|
||||
Jid *jidp = jid_create(bookmark->jid);
|
||||
Jid *jidp = jid_create(bookmark->barejid);
|
||||
if (jidp->localpart) {
|
||||
xmpp_stanza_set_attribute(conference, STANZA_ATTR_NAME, jidp->localpart);
|
||||
}
|
||||
|
@ -264,8 +264,8 @@ iq_autoping_check(void)
|
||||
unsigned long seconds_elapsed = elapsed * 1.0;
|
||||
gint timeout = prefs_get_autoping_timeout();
|
||||
if (timeout > 0 && seconds_elapsed >= timeout) {
|
||||
cons_show("Autoping response timed out afer %u seconds.", timeout);
|
||||
log_debug("Autoping check: timed out afer %u seconds, disconnecting", timeout);
|
||||
cons_show("Autoping response timed out after %u seconds.", timeout);
|
||||
log_debug("Autoping check: timed out after %u seconds, disconnecting", timeout);
|
||||
session_autoping_fail();
|
||||
autoping_wait = FALSE;
|
||||
g_timer_destroy(autoping_time);
|
||||
|
@ -686,6 +686,11 @@ _handle_carbons(xmpp_stanza_t *const stanza)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (g_strcmp0(name, "private") == 0) {
|
||||
log_info("Carbon received with private element.");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((g_strcmp0(name, "received") != 0) && (g_strcmp0(name, "sent") != 0)) {
|
||||
log_warning("Carbon received with unrecognised stanza name: %s", name);
|
||||
return TRUE;
|
||||
|
@ -78,7 +78,7 @@ typedef enum {
|
||||
} jabber_invite_t;
|
||||
|
||||
typedef struct bookmark_t {
|
||||
char *jid;
|
||||
char *barejid;
|
||||
char *nick;
|
||||
char *password;
|
||||
gboolean autojoin;
|
||||
|
@ -71,6 +71,7 @@ int main(int argc, char* argv[]) {
|
||||
PROF_FUNC_TEST(send_disable_carbons),
|
||||
PROF_FUNC_TEST(receive_carbon),
|
||||
PROF_FUNC_TEST(receive_self_carbon),
|
||||
PROF_FUNC_TEST(receive_private_carbon),
|
||||
|
||||
PROF_FUNC_TEST(send_receipt_request),
|
||||
PROF_FUNC_TEST(send_receipt_on_request),
|
||||
|
@ -118,3 +118,33 @@ receive_self_carbon(void **state)
|
||||
|
||||
assert_true(prof_output_regex("me: .+self sent carbon"));
|
||||
}
|
||||
|
||||
void
|
||||
receive_private_carbon(void **state)
|
||||
{
|
||||
prof_input("/carbons on");
|
||||
|
||||
prof_connect();
|
||||
assert_true(stbbr_received(
|
||||
"<iq id='*' type='set'><enable xmlns='urn:xmpp:carbons:2'/></iq>"
|
||||
));
|
||||
|
||||
stbbr_send(
|
||||
"<presence to='stabber@localhost' from='buddy1@localhost/mobile'>"
|
||||
"<priority>10</priority>"
|
||||
"<status>On my mobile</status>"
|
||||
"</presence>"
|
||||
);
|
||||
assert_true(prof_output_exact("Buddy1 (mobile) is online, \"On my mobile\""));
|
||||
prof_input("/msg Buddy1");
|
||||
assert_true(prof_output_exact("unencrypted"));
|
||||
|
||||
stbbr_send(
|
||||
"<message type='chat' to='stabber@localhost/profanity' from='buddy1@localhost/mobile'>"
|
||||
"<body>Private carbon</body>"
|
||||
"<private xmlns='urn:xmpp:carbons:2'/>"
|
||||
"</message>"
|
||||
);
|
||||
|
||||
assert_true(prof_output_regex("Buddy1/mobile: .+Private carbon"));
|
||||
}
|
||||
|
@ -3,4 +3,5 @@ void connect_with_carbons_enabled(void **state);
|
||||
void send_disable_carbons(void **state);
|
||||
void receive_carbon(void **state);
|
||||
void receive_self_carbon(void **state);
|
||||
void receive_private_carbon(void **state);
|
||||
|
||||
|
@ -62,7 +62,7 @@ void cmd_bookmark_shows_usage_when_no_args(void **state)
|
||||
|
||||
static void _free_bookmark(Bookmark *bookmark)
|
||||
{
|
||||
free(bookmark->jid);
|
||||
free(bookmark->barejid);
|
||||
free(bookmark->nick);
|
||||
free(bookmark);
|
||||
}
|
||||
@ -70,7 +70,7 @@ static void _free_bookmark(Bookmark *bookmark)
|
||||
static gboolean
|
||||
_cmp_bookmark(Bookmark *bm1, Bookmark *bm2)
|
||||
{
|
||||
if (strcmp(bm1->jid, bm2->jid) != 0) {
|
||||
if (strcmp(bm1->barejid, bm2->barejid) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
if (strcmp(bm1->nick, bm2->nick) != 0) {
|
||||
@ -91,23 +91,23 @@ void cmd_bookmark_list_shows_bookmarks(void **state)
|
||||
window.type = WIN_CONSOLE;
|
||||
|
||||
Bookmark *bm1 = malloc(sizeof(Bookmark));
|
||||
bm1->jid = strdup("room1@conf.org");
|
||||
bm1->barejid = strdup("room1@conf.org");
|
||||
bm1->nick = strdup("bob");
|
||||
bm1->autojoin = FALSE;
|
||||
Bookmark *bm2 = malloc(sizeof(Bookmark));
|
||||
bm2->jid = strdup("room2@conf.org");
|
||||
bm2->barejid = strdup("room2@conf.org");
|
||||
bm2->nick = strdup("steve");
|
||||
bm2->autojoin = TRUE;
|
||||
Bookmark *bm3 = malloc(sizeof(Bookmark));
|
||||
bm3->jid = strdup("room3@conf.org");
|
||||
bm3->barejid = strdup("room3@conf.org");
|
||||
bm3->nick = strdup("dave");
|
||||
bm3->autojoin = TRUE;
|
||||
Bookmark *bm4 = malloc(sizeof(Bookmark));
|
||||
bm4->jid = strdup("room4@conf.org");
|
||||
bm4->barejid = strdup("room4@conf.org");
|
||||
bm4->nick = strdup("james");
|
||||
bm4->autojoin = FALSE;
|
||||
Bookmark *bm5 = malloc(sizeof(Bookmark));
|
||||
bm5->jid = strdup("room5@conf.org");
|
||||
bm5->barejid = strdup("room5@conf.org");
|
||||
bm5->nick = strdup("mike");
|
||||
bm5->autojoin = FALSE;
|
||||
|
||||
|
120
travis-build.sh
Executable file
120
travis-build.sh
Executable file
@ -0,0 +1,120 @@
|
||||
#!/bin/bash
|
||||
|
||||
error_handler()
|
||||
{
|
||||
ERR_CODE=$?
|
||||
echo
|
||||
echo "Error $ERR_CODE with command '$BASH_COMMAND' on line ${BASH_LINENO[0]}. Exiting."
|
||||
echo
|
||||
exit $ERR_CODE
|
||||
}
|
||||
|
||||
trap error_handler ERR
|
||||
|
||||
./bootstrap.sh
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --enable-notifications --enable-icons --enable-otr --enable-pgp --enable-plugins --enable-c-plugins --enable-python-plugins --with-xscreensaver"
|
||||
echo
|
||||
./configure --enable-notifications --enable-icons --enable-otr --enable-pgp --enable-plugins --enable-c-plugins --enable-python-plugins --with-xscreensaver
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-notifications --disable-icons --disable-otr --disable-pgp --disable-plugins --disable-c-plugins --disable-python-plugins --without-xscreensaver"
|
||||
echo
|
||||
./configure --disable-notifications --disable-icons --disable-otr --disable-pgp --disable-plugins --disable-c-plugins --disable-python-plugins --without-xscreensaver
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-notifications"
|
||||
echo
|
||||
./configure --disable-notifications
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-icons"
|
||||
echo
|
||||
./configure --disable-icons
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-otr"
|
||||
echo
|
||||
./configure --disable-otr
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-pgp"
|
||||
echo
|
||||
./configure --disable-pgp
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-pgp --disable-otr"
|
||||
echo
|
||||
./configure --disable-pgp --disable-otr
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-plugins"
|
||||
echo
|
||||
./configure --disable-plugins
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-python-plugins"
|
||||
echo
|
||||
./configure --disable-python-plugins
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-c-plugins"
|
||||
echo
|
||||
./configure --disable-c-plugins
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --disable-c-plugins --disable-python-plugins"
|
||||
echo
|
||||
./configure --disable-c-plugins --disable-python-plugins
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure --without-xscreensaver"
|
||||
echo
|
||||
./configure --without-xscreensaver
|
||||
make
|
||||
./profanity -v
|
||||
make clean
|
||||
|
||||
echo
|
||||
echo "--> Building with ./configure"
|
||||
echo
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
./profanity -v
|
||||
make clean
|
||||
|
Loading…
Reference in New Issue
Block a user