diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/jabber/sasl.c | 6 | ||||
| -rw-r--r-- | protocols/oscar/oscar.c | 6 | ||||
| -rw-r--r-- | protocols/skype/README | 83 | ||||
| -rw-r--r-- | protocols/skype/skype.c | 15 | ||||
| -rw-r--r-- | protocols/skype/skyped.py | 2 | ||||
| -rw-r--r-- | protocols/skype/t/away-set-bitlbee.mock | 10 | ||||
| -rw-r--r-- | protocols/skype/t/away-set-skyped.mock | 20 | ||||
| -rw-r--r-- | protocols/skype/t/group-add-bitlbee.mock | 14 | ||||
| -rw-r--r-- | protocols/skype/t/group-add-skyped.mock | 38 | ||||
| -rw-r--r-- | protocols/skype/t/groupchat-msg-bitlbee.mock | 11 | ||||
| -rw-r--r-- | protocols/skype/t/groupchat-msg-skyped.mock | 60 | ||||
| -rw-r--r-- | protocols/skype/t/groupchat-topic-bitlbee.mock | 10 | ||||
| -rw-r--r-- | protocols/skype/t/groupchat-topic-skyped.mock | 60 | ||||
| -rwxr-xr-x | protocols/skype/test.py | 12 | ||||
| -rw-r--r-- | protocols/twitter/twitter.c | 15 | ||||
| -rw-r--r-- | protocols/twitter/twitter_http.c | 2 | ||||
| -rw-r--r-- | protocols/twitter/twitter_lib.h | 2 | 
17 files changed, 270 insertions, 96 deletions
| diff --git a/protocols/jabber/sasl.c b/protocols/jabber/sasl.c index 450b5b28..12111fc7 100644 --- a/protocols/jabber/sasl.c +++ b/protocols/jabber/sasl.c @@ -482,7 +482,7 @@ static gboolean sasl_oauth2_remove_contact( gpointer data, gint fd, b_input_cond  	return FALSE;  } -static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token ); +static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token, const char *error );  int sasl_oauth2_get_refresh_token( struct im_connection *ic, const char *msg )  { @@ -513,7 +513,7 @@ int sasl_oauth2_refresh( struct im_connection *ic, const char *refresh_token )  	                            refresh_token, sasl_oauth2_got_token, ic );  } -static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token ) +static void sasl_oauth2_got_token( gpointer data, const char *access_token, const char *refresh_token, const char *error )  {  	struct im_connection *ic = data;  	struct jabber_data *jd; @@ -526,7 +526,7 @@ static void sasl_oauth2_got_token( gpointer data, const char *access_token, cons  	if( access_token == NULL )  	{ -		imcb_error( ic, "OAuth failure (missing access token)" ); +		imcb_error( ic, "OAuth failure (%s)", error );  		imc_logout( ic, TRUE );  		return;  	} diff --git a/protocols/oscar/oscar.c b/protocols/oscar/oscar.c index 05be086d..021792b3 100644 --- a/protocols/oscar/oscar.c +++ b/protocols/oscar/oscar.c @@ -980,7 +980,7 @@ static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_  		char *src;  		if (args->icbmflags & AIM_IMFLAGS_UNICODE) -			src = "UNICODEBIG"; +			src = "UCS-2BE";  		else  			src = "ISO8859-1"; @@ -1768,7 +1768,7 @@ static int oscar_buddy_msg(struct im_connection *ic, char *name, char *message,  			if ((ret = do_iconv("UTF-8", "ISO8859-1", message, s, len, BUF_LONG)) >= 0) {  				args.flags |= AIM_IMFLAGS_ISO_8859_1;  				len = ret; -			} else if ((ret = do_iconv("UTF-8", "UNICODEBIG", message, s, len, BUF_LONG)) >= 0) { +			} else if ((ret = do_iconv("UTF-8", "UCS-2BE", message, s, len, BUF_LONG)) >= 0) {  				args.flags |= AIM_IMFLAGS_UNICODE;  				len = ret;  			} else { @@ -2405,7 +2405,7 @@ void oscar_chat_msg(struct groupchat *c, char *message, int msgflags)  		if ((ret = do_iconv("UTF-8", "ISO8859-1", message, s, len, BUF_LONG)) >= 0) {  			flags |= AIM_CHATFLAGS_ISO_8859_1;  			len = ret; -		} else if ((ret = do_iconv("UTF-8", "UNICODEBIG", message, s, len, BUF_LONG)) >= 0) { +		} else if ((ret = do_iconv("UTF-8", "UCS-2BE", message, s, len, BUF_LONG)) >= 0) {  			flags |= AIM_CHATFLAGS_UNICODE;  			len = ret;  		} else { diff --git a/protocols/skype/README b/protocols/skype/README index b9f22481..f780ca32 100644 --- a/protocols/skype/README +++ b/protocols/skype/README @@ -57,90 +57,17 @@ a public server) and/or your IRC client.  NOTE: The order is important. First `skyped` starts Skype. Then `skyped`  connects to Skype, finally BitlBee can connect to `skyped`. -=== Installing under Frugalware or Debian +=== Installing -- Install the necessary packages: - ----- -# pacman-g2 -S bitlbee-skype ----- - -or +Either use your package manager to install the Skype plugin, using something +like:  ----  # apt-get install skyped bitlbee-plugin-skype  ---- -(the later from the unstable repo) - -and you don't have to compile anything manually. - -=== Installing under OS X - -- Install the necessary packages from ports: - -NOTE: You have to edit the Portfile manually to include the install-dev target, -just append install-dev after install-etc. - ----- -# port -v install bitlbee ----- - -and you have to install `bitlbee-skype` and `skype4py` from -source. - -=== Installing from source - -NOTE: bitlbee-skype by default builds and installs skyped and the -plugin. In case you just want to install the plugin for a public server -or you want to use skyped with a public server (like -`bitlbee1.asnetinc.net`), you don't need both. - -- You need the latest stable BitlBee release (unless you want to use a -  public server): - ----- -$ wget http://get.bitlbee.org/src/bitlbee-@BITLBEE_VERSION@.tar.gz -$ tar xf bitlbee-@BITLBEE_VERSION@.tar.gz -$ cd bitlbee-@BITLBEE_VERSION@ ----- - -- Now compile and install it: - ----- -$ ./configure -$ make -# make install install-dev ----- - -- To install http://skype4py.sourceforge.net/[Skype4Py] from source -  (unless you want to install the plugin for a public server): - ----- -$ tar -zxvf Skype4Py-x.x.x.x.tar.gz -$ cd Skype4Py-x.x.x.x -# python setup.py install ----- - -- Get the plugin code (in an empty dir, or whereever you want, it does -  not matter): - ----- -$ wget http://vmiklos.hu/project/bitlbee-skype/bitlbee-skype-@VERSION@.tar.gz -$ tar xf bitlbee-skype-@VERSION@.tar.gz -$ cd bitlbee-skype-@VERSION@ ----- - -- Compile and install it: - ----- -$ ./configure -$ make -# make install ----- - -This will install the plugin to where BitlBee expects them, which is -`/usr/local/lib/bitlbee` if you installed BitlBee from source. +Or install http://sourceforge.net/projects/skype4py/[Skype4Py], and build +BitlBee with `--skype=1`.  === Configuring diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c index 7ce562d4..714babf4 100644 --- a/protocols/skype/skype.c +++ b/protocols/skype/skype.c @@ -343,11 +343,11 @@ static void skype_parse_user(struct im_connection *ic, char *line)  	*ptr = '\0';  	ptr++;  	if (!strncmp(ptr, "ONLINESTATUS ", 13)) { -			if (!strcmp(user, sd->username)) -				return; -			if (!set_getbool(&ic->acc->set, "test_join") +		if (!strlen(user) || !strcmp(user, sd->username)) +			return; +		if (!set_getbool(&ic->acc->set, "test_join")  				&& !strcmp(user, "echo123")) -				return; +			return;  		ptr = g_strdup_printf("%s@skype.com", user);  		imcb_add_buddy(ic, ptr, skype_group_by_username(ic, user));  		if (strcmp(status, "OFFLINE") && (strcmp(status, "SKYPEOUT") || @@ -1015,7 +1015,10 @@ static void skype_parse_chat(struct im_connection *ic, char *line)  			sd->adder = NULL;  		}  	} else if (!strncmp(info, "MEMBERS ", 8) || !strncmp(info, "ACTIVEMEMBERS ", 14) ) { -		info += 8; +		if (!strncmp(info, "MEMBERS ", 8)) +			info += 8; +		else +			info += 14;  		gc = bee_chat_by_title(ic->bee, ic, id);  		/* Hack! We set ->data to TRUE  		 * while we're on the channel @@ -1563,7 +1566,7 @@ static void skype_init(account_t *acc)  	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;  	s = set_add(&acc->set, "mood_text", NULL, skype_set_mood_text, acc); -	s->flags |= ACC_SET_NOSAVE | ACC_SET_ONLINE_ONLY; +	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY;  	s = set_add(&acc->set, "call", NULL, skype_set_call, acc);  	s->flags |= SET_NOSAVE | ACC_SET_ONLINE_ONLY; diff --git a/protocols/skype/skyped.py b/protocols/skype/skyped.py index 86b1e96a..c9bb103b 100644 --- a/protocols/skype/skyped.py +++ b/protocols/skype/skyped.py @@ -272,7 +272,7 @@ def dprint(msg):  		if options.log:  			sock = open(options.log, "a") -			sock.write(prefix + ": " + sanitized) +			sock.write("%s: %s\n" % (prefix, sanitized))  			sock.close()  		sys.stdout.flush() diff --git a/protocols/skype/t/away-set-bitlbee.mock b/protocols/skype/t/away-set-bitlbee.mock new file mode 100644 index 00000000..bf073400 --- /dev/null +++ b/protocols/skype/t/away-set-bitlbee.mock @@ -0,0 +1,10 @@ +>> NOTICE AUTH +<< NICK alice +<< USER alice alice localhost :Alice +>> PRIVMSG &bitlbee +<< PRIVMSG &bitlbee :account add skype alice foo +<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true +<< PRIVMSG &bitlbee :account skype on +>> PRIVMSG &bitlbee :skype - Logging in: Logged in +<< AWAY :work +>> PRIVMSG &bitlbee :alice: USERSTATUS AWAY diff --git a/protocols/skype/t/away-set-skyped.mock b/protocols/skype/t/away-set-skyped.mock new file mode 100644 index 00000000..0c2cc494 --- /dev/null +++ b/protocols/skype/t/away-set-skyped.mock @@ -0,0 +1,20 @@ +>> SEARCH GROUPS CUSTOM +<< GROUPS 48, 49 +>> SEARCH FRIENDS +<< USERS echo123, bob +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> GET USER echo123 ONLINESTATUS +<< USER echo123 ONLINESTATUS ONLINE +>> GET USER echo123 FULLNAME +<< USER echo123 FULLNAME Echo / Sound Test Service +>> GET USER bob ONLINESTATUS +<< USER bob ONLINESTATUS ONLINE +>> GET USER bob FULLNAME +<< USER bob FULLNAME Bob +>> SET USERSTATUS AWAY +<< USERSTATUS AWAY +<< USER alice ONLINESTATUS AWAY +<< USERSTATUS AWAY diff --git a/protocols/skype/t/group-add-bitlbee.mock b/protocols/skype/t/group-add-bitlbee.mock new file mode 100644 index 00000000..05c9f987 --- /dev/null +++ b/protocols/skype/t/group-add-bitlbee.mock @@ -0,0 +1,14 @@ +>> NOTICE AUTH +<< NICK alice +<< USER alice alice localhost :Alice +>> PRIVMSG &bitlbee +<< PRIVMSG &bitlbee :account add skype alice foo +<< PRIVMSG &bitlbee :account skype set read_groups true +<< PRIVMSG &bitlbee :account skype on +>> :bob!bob@skype.com JOIN :&bitlbee +>> :cecil!cecil@skype.com JOIN :&bitlbee +>> :daniel!daniel@skype.com JOIN :&bitlbee +<< JOIN &family +>> 353 alice = &family :@alice +bob +cecil @root +<< INVITE daniel &family +>> :daniel!daniel@skype.com JOIN :&family diff --git a/protocols/skype/t/group-add-skyped.mock b/protocols/skype/t/group-add-skyped.mock new file mode 100644 index 00000000..c47f6629 --- /dev/null +++ b/protocols/skype/t/group-add-skyped.mock @@ -0,0 +1,38 @@ +>> SEARCH GROUPS CUSTOM +<< GROUPS 70, 71 +>> SEARCH FRIENDS +<< USERS echo123, bob, cecil, daniel, emily +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> GET GROUP 70 DISPLAYNAME +<< GROUP 70 DISPLAYNAME Family +>> GET GROUP 70 USERS +<< GROUP 70 USERS bob, cecil +>> GET GROUP 71 DISPLAYNAME +<< GROUP 71 DISPLAYNAME Work +>> GET GROUP 71 USERS +<< GROUP 71 USERS daniel, emily +>> GET USER echo123 ONLINESTATUS +<< USER echo123 ONLINESTATUS ONLINE +>> GET USER echo123 FULLNAME +<< USER echo123 FULLNAME Echo / Sound Test Service +>> GET USER bob ONLINESTATUS +<< USER bob ONLINESTATUS ONLINE +>> GET USER bob FULLNAME +<< USER bob FULLNAME Bob +>> GET USER cecil ONLINESTATUS +<< USER cecil ONLINESTATUS ONLINE +>> GET USER cecil FULLNAME +<< USER cecil FULLNAME Cecil +>> GET USER daniel ONLINESTATUS +<< USER daniel ONLINESTATUS ONLINE +>> GET USER daniel FULLNAME +<< USER daniel FULLNAME Daniel +>> GET USER emily ONLINESTATUS +<< USER emily ONLINESTATUS OFFLINE +>> GET USER emily FULLNAME +<< USER emily FULLNAME Emily +>> ALTER GROUP 70 ADDUSER daniel +<< ALTER GROUP 70 ADDUSER daniel diff --git a/protocols/skype/t/groupchat-msg-bitlbee.mock b/protocols/skype/t/groupchat-msg-bitlbee.mock new file mode 100644 index 00000000..d6fac10d --- /dev/null +++ b/protocols/skype/t/groupchat-msg-bitlbee.mock @@ -0,0 +1,11 @@ +>> NOTICE AUTH +<< NICK alice +<< USER alice alice localhost :Alice +>> PRIVMSG &bitlbee +<< PRIVMSG &bitlbee :account add skype alice foo +<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true +<< PRIVMSG &bitlbee :account skype on +>> JOIN :##cecil/$bob;4d8cc9965791 +>> 353 alice = ##cecil/$bob;4d8cc9965791 :@alice bob cecil @root +<< PRIVMSG ##cecil/$bob;4d8cc9965791 :hello +>> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP diff --git a/protocols/skype/t/groupchat-msg-skyped.mock b/protocols/skype/t/groupchat-msg-skyped.mock new file mode 100644 index 00000000..e939585c --- /dev/null +++ b/protocols/skype/t/groupchat-msg-skyped.mock @@ -0,0 +1,60 @@ +>> SEARCH GROUPS CUSTOM +<< GROUPS 48, 49 +>> SEARCH FRIENDS +<< USERS echo123, bob, cecil +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> GET USER echo123 ONLINESTATUS +<< USER echo123 ONLINESTATUS ONLINE +>> GET USER echo123 FULLNAME +<< USER echo123 FULLNAME Echo / Sound Test Service +>> GET USER bob ONLINESTATUS +<< USER bob ONLINESTATUS OFFLINE +>> GET USER bob FULLNAME +<< USER bob FULLNAME Bob +>> GET USER cecil ONLINESTATUS +<< USER cecil ONLINESTATUS OFFLINE +>> GET USER cecil FULLNAME +<< USER cecil FULLNAME Cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9 +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHATMEMBER 186 ROLE USER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice +<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196 +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHATMESSAGE 188 STATUS RECEIVED +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +>> GET CHATMESSAGE 188 FROM_HANDLE +<< CHATMESSAGE 188 FROM_HANDLE bob +>> GET CHATMESSAGE 188 BODY +<< CHATMESSAGE 188 BODY  +>> GET CHATMESSAGE 188 TYPE +<< CHATMESSAGE 188 TYPE ADDEDMEMBERS +>> GET CHATMESSAGE 188 CHATNAME +<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9 +<< CHATMESSAGE 189 STATUS READ +<< CHATMESSAGE 189 STATUS READ +<< CHATMEMBER 186 IS_ACTIVE TRUE +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice +<< CHATMESSAGE 190 STATUS SENT +>> CHATMESSAGE #cecil/$bob;4d8cc9965791c6b9 hello +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVITY_TIMESTAMP 1364652882 diff --git a/protocols/skype/t/groupchat-topic-bitlbee.mock b/protocols/skype/t/groupchat-topic-bitlbee.mock new file mode 100644 index 00000000..637e4d98 --- /dev/null +++ b/protocols/skype/t/groupchat-topic-bitlbee.mock @@ -0,0 +1,10 @@ +>> NOTICE AUTH +<< NICK alice +<< USER alice alice localhost :Alice +>> PRIVMSG &bitlbee +<< PRIVMSG &bitlbee :account add skype alice foo +<< PRIVMSG &bitlbee :account skype on +>> JOIN :##cecil/$bob;4d8cc9965791 +>> 353 alice = ##cecil/$bob;4d8cc9965791 :@alice bob cecil @root +<< TOPIC ##cecil/$bob;4d8cc9965791 :topic +>> TOPIC ##cecil/$bob;4d8cc9965791 :topic diff --git a/protocols/skype/t/groupchat-topic-skyped.mock b/protocols/skype/t/groupchat-topic-skyped.mock new file mode 100644 index 00000000..26c4b53b --- /dev/null +++ b/protocols/skype/t/groupchat-topic-skyped.mock @@ -0,0 +1,60 @@ +>> SEARCH GROUPS CUSTOM +<< GROUPS 48, 49 +>> SEARCH FRIENDS +<< USERS echo123, bob, cecil +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> GET USER echo123 ONLINESTATUS +<< USER echo123 ONLINESTATUS ONLINE +>> GET USER echo123 FULLNAME +<< USER echo123 FULLNAME Echo / Sound Test Service +>> GET USER bob ONLINESTATUS +<< USER bob ONLINESTATUS OFFLINE +>> GET USER bob FULLNAME +<< USER bob FULLNAME Bob +>> GET USER cecil ONLINESTATUS +<< USER cecil ONLINESTATUS OFFLINE +>> GET USER cecil FULLNAME +<< USER cecil FULLNAME Cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9 +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHATMEMBER 186 ROLE USER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice +<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196 +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHATMESSAGE 188 STATUS RECEIVED +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC  +>> GET CHATMESSAGE 188 FROM_HANDLE +<< CHATMESSAGE 188 FROM_HANDLE bob +>> GET CHATMESSAGE 188 BODY +<< CHATMESSAGE 188 BODY  +>> GET CHATMESSAGE 188 TYPE +<< CHATMESSAGE 188 TYPE ADDEDMEMBERS +>> GET CHATMESSAGE 188 CHATNAME +<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9 +<< CHATMESSAGE 189 STATUS READ +<< CHATMESSAGE 189 STATUS READ +<< CHATMEMBER 186 IS_ACTIVE TRUE +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice +<< CHATMESSAGE 190 STATUS SENT +>> ALTER CHAT #cecil/$bob;4d8cc9965791c6b9 SETTOPIC topic +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC topic diff --git a/protocols/skype/test.py b/protocols/skype/test.py index 63652f76..233c41c8 100755 --- a/protocols/skype/test.py +++ b/protocols/skype/test.py @@ -112,6 +112,12 @@ class Test(unittest.TestCase):  	def testGroupchatLeave(self):  		self.mock("groupchat-leave") +	def testGroupchatMsg(self): +		self.mock("groupchat-msg") +	 +	def testGroupchatTopic(self): +		self.mock("groupchat-topic") +	  	def testCalledYes(self):  		self.mock("called-yes") @@ -124,11 +130,17 @@ class Test(unittest.TestCase):  	def testGroupRead(self):  		self.mock("group-read") +	def testGroupAdd(self): +		self.mock("group-add") +  	def testCtcpHelp(self):  		self.mock("ctcp-help")  	def testSetMoodText(self):  		self.mock("set-mood-text") +	 +	def testAwaySet(self): +		self.mock("away-set")  if __name__ == '__main__':  	setupSkyped() diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index db61ba7c..4626cf55 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -157,8 +157,13 @@ static const struct oauth_service *get_oauth_service(struct im_connection *ic)  static void twitter_oauth_start(struct im_connection *ic)  {  	struct twitter_data *td = ic->proto_data; +	const char *url = set_getstr(&ic->acc->set, "base_url");  	imcb_log(ic, "Requesting OAuth request token"); +	 +	if (!strstr(url, "twitter.com") && !strstr(url, "identi.ca")) +		imcb_log(ic, "Warning: OAuth only works with identi.ca and " +		             "Twitter.");  	td->oauth_info = oauth_request_token(get_oauth_service(ic), twitter_oauth_callback, ic); @@ -177,7 +182,7 @@ static gboolean twitter_oauth_callback(struct oauth_info *info)  	td = ic->proto_data;  	if (info->stage == OAUTH_REQUEST_TOKEN) { -		char name[strlen(ic->acc->user) + 9], *msg; +		char *name, *msg;  		if (info->request_token == NULL) {  			imcb_error(ic, "OAuth error: %s", twitter_parse_error(info->http)); @@ -185,11 +190,12 @@ static gboolean twitter_oauth_callback(struct oauth_info *info)  			return FALSE;  		} -		sprintf(name, "%s_%s", td->prefix, ic->acc->user); +		name = g_strdup_printf("%s_%s", td->prefix, ic->acc->user);  		msg = g_strdup_printf("To finish OAuth authentication, please visit "  				      "%s and respond with the resulting PIN code.",  				      info->auth_url);  		imcb_buddy_msg(ic, name, msg, 0, 0); +		g_free(name);  		g_free(msg);  	} else if (info->stage == OAUTH_ACCESS_TOKEN) {  		const char *sn; @@ -282,13 +288,16 @@ static void twitter_init(account_t * acc)  	set_t *s;  	char *def_url;  	char *def_tul; +	char *def_mentions;  	if (strcmp(acc->prpl->name, "twitter") == 0) {  		def_url = TWITTER_API_URL;  		def_tul = "20"; +		def_mentions = "true";  	} else {		/* if( strcmp( acc->prpl->name, "identica" ) == 0 ) */  		def_url = IDENTICA_API_URL;  		def_tul = "0"; +		def_mentions = "false";  	}  	s = set_add(&acc->set, "auto_reply_timeout", "10800", set_eval_int, acc); @@ -301,7 +310,7 @@ static void twitter_init(account_t * acc)  	s = set_add(&acc->set, "fetch_interval", "60", set_eval_int, acc);  	s->flags |= ACC_SET_OFFLINE_ONLY; -	s = set_add(&acc->set, "fetch_mentions", "true", set_eval_bool, acc); +	s = set_add(&acc->set, "fetch_mentions", def_mentions, set_eval_bool, acc);  	s = set_add(&acc->set, "message_length", "140", set_eval_int, acc); diff --git a/protocols/twitter/twitter_http.c b/protocols/twitter/twitter_http.c index 0f1ab518..f7ab6e18 100644 --- a/protocols/twitter/twitter_http.c +++ b/protocols/twitter/twitter_http.c @@ -77,7 +77,7 @@ struct http_request *twitter_http(struct im_connection *ic, char *url_string, ht  	}  	// Make the request. -	g_string_printf(request, "%s %s%s%s%s HTTP/1.0\r\n" +	g_string_printf(request, "%s %s%s%s%s HTTP/1.1\r\n"  			"Host: %s\r\n"  			"User-Agent: BitlBee " BITLBEE_VERSION " " ARCH "/" CPU "\r\n",  			is_post ? "POST" : "GET", diff --git a/protocols/twitter/twitter_lib.h b/protocols/twitter/twitter_lib.h index f59c81ef..e593d229 100644 --- a/protocols/twitter/twitter_lib.h +++ b/protocols/twitter/twitter_lib.h @@ -28,7 +28,7 @@  #include "nogaim.h"  #include "twitter_http.h" -#define TWITTER_API_URL "http://api.twitter.com/1.1" +#define TWITTER_API_URL "https://api.twitter.com/1.1"  #define IDENTICA_API_URL "https://identi.ca/api"  /* Status URLs */ | 
