aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2013-05-01 14:55:50 -0400
committerWilmer van der Gaast <wilmer@gaast.net>2013-05-01 14:55:50 -0400
commitf539d6ecaa67f154839669ed6d2a7fe9d24e4ab8 (patch)
tree9819ea58158bf1a9dbec8e0bee0971df4ed1049d
parentdd95ce431b5c85eb6d74e501a7796e8a6016ec70 (diff)
parentc2a863db316ef3297bf91608854d8b16c1000f2b (diff)
Merge from vmiklos.
-rw-r--r--protocols/skype/README83
-rw-r--r--protocols/skype/skype.c15
-rw-r--r--protocols/skype/skyped.py2
-rw-r--r--protocols/skype/t/away-set-bitlbee.mock10
-rw-r--r--protocols/skype/t/away-set-skyped.mock20
-rw-r--r--protocols/skype/t/group-add-bitlbee.mock14
-rw-r--r--protocols/skype/t/group-add-skyped.mock38
-rw-r--r--protocols/skype/t/groupchat-msg-bitlbee.mock11
-rw-r--r--protocols/skype/t/groupchat-msg-skyped.mock60
-rw-r--r--protocols/skype/t/groupchat-topic-bitlbee.mock10
-rw-r--r--protocols/skype/t/groupchat-topic-skyped.mock60
-rwxr-xr-xprotocols/skype/test.py12
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()