diff options
-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 |
12 files changed, 250 insertions, 85 deletions
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() |