aboutsummaryrefslogtreecommitdiffstats
path: root/protocols
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2013-02-10 12:48:32 +0000
committerWilmer van der Gaast <wilmer@gaast.net>2013-02-10 12:48:32 +0000
commite4f5ca868fc4313a6a9a00c5eda0a03767abc703 (patch)
tree990e1ec4fc29662e1966ccef09447dd625712b8b /protocols
parentbe98957a88f66215ab6fb84810a1b2d394eac879 (diff)
parent875ba16b0224b9bf50a0ea15aa96fe545c76b845 (diff)
Merge from vmiklos. Adds a "group info" command to list members of a group.
Diffstat (limited to 'protocols')
-rw-r--r--protocols/skype/README57
-rw-r--r--protocols/skype/skype.c23
-rw-r--r--protocols/skype/skyped.txt32
-rw-r--r--protocols/skype/t/filetransfer-bitlbee.mock10
-rw-r--r--protocols/skype/t/filetransfer-skyped.mock33
-rw-r--r--protocols/skype/t/group-read-bitlbee.mock14
-rw-r--r--protocols/skype/t/group-read-skyped.mock26
-rwxr-xr-xprotocols/skype/test.py6
8 files changed, 144 insertions, 57 deletions
diff --git a/protocols/skype/README b/protocols/skype/README
index 06e608ff..2e45727f 100644
--- a/protocols/skype/README
+++ b/protocols/skype/README
@@ -144,62 +144,7 @@ This will install the plugin to where BitlBee expects them, which is
=== Configuring
-- Set up `~/.skyped/skyped.conf`: Create the `~/.skyped` directory, copy
- `skyped.conf` and `skyped.cnf` from
- `/usr/local/etc/skyped/skyped.conf` to `~/.skyped`, adjust `username`
- and `password`. The `username` should be your Skype login and the
- `password` can be whatever you want, but you will have to specify that
- one when adding the Skype account to BitlBee (see later).
-
-NOTE: Here, and later - `/usr/local/etc` can be different on your installation
-if you used the `--sysconfdir` switch when running bitlbee-skype's `configure`.
-
-- Generate the SSL pem files:
-
-----
-# cd ~/.skyped
-# openssl req -new -x509 -days 365 -nodes -config skyped.cnf -out skyped.cert.pem \
- -keyout skyped.key.pem
-----
-
-NOTE: Maybe you want to adjust the permissions in the `~/.skyped`
-dir. For example make it readable by just your user.
-
-- Start `skyped` (the tcp server):
-
-----
-$ skyped
-----
-
-- Start your `IRC` client, connect to BitlBee and add your account:
-
-----
-account add skype <user> <pass>
-account skype set server localhost
-----
-
-<user> should be your Skype account name, <pass> should be the one you declared
-in `skyped.conf`. If you want to run skyped on a remote machine, replace
-`localhost` with the name of the machine.
-
-If you are running skyped on a custom port:
-
-----
-account skype set port <port>
-----
-
-If you want to set your full name (optional):
-
-----
-account skype set display_name "John Smith"
-----
-
-If you want to see your skypeout contacts online as well (they are
-offline by default):
-
-----
-account skype set skypeout_offline false
-----
+See the manpage of `skyped`.
== Setting up Skype in a VNC server (optional)
diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c
index 8f0d9b1c..b3d29dab 100644
--- a/protocols/skype/skype.c
+++ b/protocols/skype/skype.c
@@ -45,6 +45,8 @@ enum {
enum {
SKYPE_FILETRANSFER_NEW = 1,
+ SKYPE_FILETRANSFER_TRANSFERRING,
+ SKYPE_FILETRANSFER_COMPLETED,
SKYPE_FILETRANSFER_FAILED
};
@@ -80,6 +82,8 @@ struct skype_data {
int call_out;
/* Same for file transfers. */
int filetransfer_status;
+ /* Path of the file being transferred. */
+ char *filetransfer_path;
/* Using /j #nick we want to have a groupchat with two people. Usually
* not (default). */
char *groupchat_with;
@@ -782,6 +786,15 @@ static void skype_parse_filetransfer(struct im_connection *ic, char *line)
skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n",
id);
sd->filetransfer_status = SKYPE_FILETRANSFER_FAILED;
+ } else if (!strcmp(info, "STATUS COMPLETED")) {
+ skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n", id);
+ sd->filetransfer_status = SKYPE_FILETRANSFER_COMPLETED;
+ } else if (!strcmp(info, "STATUS TRANSFERRING")) {
+ skype_printf(ic, "GET FILETRANSFER %s PARTNER_HANDLE\n", id);
+ sd->filetransfer_status = SKYPE_FILETRANSFER_TRANSFERRING;
+ } else if (!strncmp(info, "FILEPATH ", 9)) {
+ info += 9;
+ sd->filetransfer_path = g_strdup(info);
} else if (!strncmp(info, "PARTNER_HANDLE ", 15)) {
info += 15;
if (!sd->filetransfer_status)
@@ -795,6 +808,16 @@ static void skype_parse_filetransfer(struct im_connection *ic, char *line)
imcb_log(ic, "Failed to transfer file from user %s.",
info);
break;
+ case SKYPE_FILETRANSFER_COMPLETED:
+ imcb_log(ic, "File transfer from user %s completed.", info);
+ break;
+ case SKYPE_FILETRANSFER_TRANSFERRING:
+ if (sd->filetransfer_path) {
+ imcb_log(ic, "File transfer from user %s started, saving to %s.", info, sd->filetransfer_path);
+ g_free(sd->filetransfer_path);
+ sd->filetransfer_path = NULL;
+ }
+ break;
}
sd->filetransfer_status = 0;
}
diff --git a/protocols/skype/skyped.txt b/protocols/skype/skyped.txt
index c27cfada..0f11f093 100644
--- a/protocols/skype/skyped.txt
+++ b/protocols/skype/skyped.txt
@@ -19,7 +19,37 @@ is done via SSL.
== CONFIGURATION
-See the README for information about how to configure this daemon.
+- Set up `~/.skyped/skyped.conf`: Create the `~/.skyped` directory, copy
+ `skyped.conf` and `skyped.cnf` from `/usr/local/etc/skyped/` to `~/.skyped`,
+ adjust `username` and `password`. The `username` should be your Skype login and
+ the `password` can be whatever you want, but you will have to specify that one
+ when adding the Skype account to BitlBee (see later).
+
+NOTE: Here, and later - `/usr/local/etc` can be different on your installation
+if you used the `--sysconfdir` switch when running the `configure` of BitlBee.
+
+- Generate the SSL pem files:
+
+----
+$ cd ~/.skyped
+$ openssl req -new -x509 -days 365 -nodes -config skyped.cnf -out skyped.cert.pem \
+ -keyout skyped.key.pem
+----
+
+- Start `skyped` (the TCP server), initially without detaching and enabling debug messages:
+
+----
+$ skyped -d -n
+----
+
+- Start your `IRC` client, connect to BitlBee and add your account:
+
+----
+account add skype <user> <pass>
+----
+
+`<user>` should be your Skype account name, `<pass>` should be the one you declared
+in `skyped.conf`.
== OPTIONS
diff --git a/protocols/skype/t/filetransfer-bitlbee.mock b/protocols/skype/t/filetransfer-bitlbee.mock
new file mode 100644
index 00000000..a08e52bc
--- /dev/null
+++ b/protocols/skype/t/filetransfer-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
+>> :bob!bob@skype.com JOIN :&bitlbee
+>> PRIVMSG &bitlbee :skype - The user bob offered a new file for you.
+>> PRIVMSG &bitlbee :skype - File transfer from user bob started, saving to /home/alice/text.odt.
+>> PRIVMSG &bitlbee :skype - File transfer from user bob completed.
diff --git a/protocols/skype/t/filetransfer-skyped.mock b/protocols/skype/t/filetransfer-skyped.mock
new file mode 100644
index 00000000..850c4c31
--- /dev/null
+++ b/protocols/skype/t/filetransfer-skyped.mock
@@ -0,0 +1,33 @@
+>> 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 bob ONLINESTATUS
+<< USER bob ONLINESTATUS ONLINE
+<< FILETRANSFER 208 TYPE INCOMING
+<< FILETRANSFER 208 PARTNER_HANDLE bob
+<< FILETRANSFER 208 PARTNER_DISPNAME bob
+<< FILETRANSFER 208 FILENAME text.odt
+<< FILETRANSFER 208 STATUS NEW
+<< FILETRANSFER 208 FILESIZE 83534193
+<< FILETRANSFER 208 STARTTIME 1358458276
+<< FILETRANSFER 208 FINISHTIME 0
+<< FILETRANSFER 208 BYTESPERSECOND 0
+<< FILETRANSFER 208 BYTESTRANSFERRED 0
+<< FILETRANSFER 208 FILESIZE 83534193
+>> GET FILETRANSFER 208 PARTNER_HANDLE
+<< FILETRANSFER 208 PARTNER_HANDLE bob
+<< FILETRANSFER 208 FILEPATH /home/alice/text.odt
+<< FILETRANSFER 208 STATUS CONNECTING
+<< FILETRANSFER 208 STATUS TRANSFERRING
+>> GET FILETRANSFER 208 PARTNER_HANDLE
+<< FILETRANSFER 208 PARTNER_HANDLE bob
+<< FILETRANSFER 208 STATUS COMPLETED
+>> GET FILETRANSFER 208 PARTNER_HANDLE
+<< FILETRANSFER 208 PARTNER_HANDLE bob
diff --git a/protocols/skype/t/group-read-bitlbee.mock b/protocols/skype/t/group-read-bitlbee.mock
new file mode 100644
index 00000000..0f001400
--- /dev/null
+++ b/protocols/skype/t/group-read-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
+<< JOIN &work
+>> 353 alice = &work :@alice +daniel @root
diff --git a/protocols/skype/t/group-read-skyped.mock b/protocols/skype/t/group-read-skyped.mock
new file mode 100644
index 00000000..4a7a2299
--- /dev/null
+++ b/protocols/skype/t/group-read-skyped.mock
@@ -0,0 +1,26 @@
+>> 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 bob ONLINESTATUS
+<< USER bob ONLINESTATUS ONLINE
+>> GET USER cecil ONLINESTATUS
+<< USER cecil ONLINESTATUS ONLINE
+>> GET USER daniel ONLINESTATUS
+<< USER daniel ONLINESTATUS ONLINE
+>> GET USER emily ONLINESTATUS
+<< USER emily ONLINESTATUS OFFLINE
diff --git a/protocols/skype/test.py b/protocols/skype/test.py
index 3c35a5c0..9f4c13ce 100755
--- a/protocols/skype/test.py
+++ b/protocols/skype/test.py
@@ -96,5 +96,11 @@ class Test(unittest.TestCase):
def testCalledNo(self):
self.mock("called-no")
+ def testFiletransfer(self):
+ self.mock("filetransfer")
+
+ def testGroupRead(self):
+ self.mock("group-read")
+
if __name__ == '__main__':
unittest.main()