source: skype/README @ 77aa416

Last change on this file since 77aa416 was 77aa416, checked in by Miklos Vajna <vmiklos@…>, at 2010-12-11T15:16:47Z

Cleanup, now we handle certs generated by openssl-1.0

  • Property mode set to 100644
File size: 12.5 KB
Line 
1= Skype plugin for BitlBee
2Miklos Vajna <vmiklos-at-vmiklos-dot-hu>
3
4== Status
5
6[quote, Wilmer van der Gaast (author of BitlBee)]
7____
8Okay, this exists now, with lots of thanks to vmiklos for his *excellent*
9work!!
10
11It's not in the main BitlBee and it'll never be for various reasons, but
12because it's a plugin that shouldn't be a problem.
13____
14
15One day I browsed the BitlBee bugtracker and found
16http://bugs.bitlbee.org/bitlbee/ticket/82[this] ticket. Then after a while I
17returned and saw that it was still open. So I wrote it.
18
19It's pretty stable (one day I wanted to restart it because of an upgrade
20and just noticed it was running for 2+ months without crashing), I use
21it for my daily work. Being a plug-in, no patching is required, you can
22just install it after installing BitlBee itself.
23
24NOTE: You will see that this implementation of the Skype plug-in still requires
25a Skype instance to be running. This is because I'm not motivated to reverse
26engineer Skype's
27http://en.wikipedia.org/wiki/Skype_Protocol#Obfuscation_Layer[obfuscation
28layer]. (Not mentioning that you should ask your lawyer about if it is legal or
29not..)
30
31== Requirements
32
33* Skype >= 1.4.0.99. The latest version I've tested is 2.1.0.81.
34* BitlBee >= 1.2.6. The lastest version I've tested is @BITLBEE_VERSION@. Use
35  old versions (see the NEWS file about which one) if you have older BitlBee
36  installed.
37* Skype4Py >= 0.9.28.7. Previous versions won't work due to API changes.
38  The latest version I've tested is 1.0.32.0.
39
40* Python >= 2.5. Skype4Py does not work with 2.4.
41* PyGObject >= 2.8.0. Older versions are part of PyGTK. (And you don't want to
42  install GTK for nothing, right?)
43
44`bitlbee-skype` has been tested under Linux and Mac OS X. The plugin part has
45been tested under NetBSD and FreeBSD as well. Skype and Skype4py is available
46under Windows, too, so it probably works, but this has not been tested.
47
48== How to set it up
49
50Before you start. The setup is the following: BitlBee can't connect directly to
51Skype servers (the company's ones). It needs a running Skype client to do so.
52In fact BitlBee will connect to `skyped` (a tcp server, provided in this
53package) and `skyped` will connect to to your Skype client.
54
55The benefit of this architecture is that you can run Skype and `skyped`
56on a machine different to the one where you run BitlBee (it can be even
57a public server) and/or your IRC client.
58
59NOTE: The order is important. First `skyped` starts Skype. Then `skyped`
60connects to Skype, finally BitlBee can connect to `skyped`.
61
62=== Installing under Frugalware or Debian
63
64- Install the necessary packages:
65
66----
67# pacman-g2 -S bitlbee-skype
68----
69
70or
71
72----
73# apt-get install skyped bitlbee-plugin-skype
74----
75
76(the later from the unstable repo)
77
78and you don't have to compile anything manually.
79
80=== Installing under OS X
81
82- Install the necessary packages from ports:
83
84NOTE: You have to edit the Portfile manually to include the install-dev target,
85just append install-dev after install-etc.
86
87----
88# port -v install bitlbee
89# port -v install py25-gobject
90----
91
92and you have to install `bitlbee-skype` and `skype4py` from
93source.
94
95=== Installing from source
96
97NOTE: bitlbee-skype by default builds and installs skyped and the
98plugin. In case you just want to install the plugin for a public server
99or you want to use skyped with a public server (like
100`bitlbee1.asnetinc.net`), you don't need both.
101
102- You need the latest stable BitlBee release (unless you want to use a
103  public server):
104
105----
106$ wget http://get.bitlbee.org/src/bitlbee-@BITLBEE_VERSION@.tar.gz
107$ tar xf bitlbee-@BITLBEE_VERSION@.tar.gz
108$ cd bitlbee-@BITLBEE_VERSION@
109----
110
111- Now compile and install it:
112
113----
114$ ./configure
115$ make
116# make install install-dev
117----
118
119- To install http://skype4py.sourceforge.net/[Skype4Py] from source
120  (unless you want to install the plugin for a public server):
121
122----
123$ tar -zxvf Skype4Py-x.x.x.x.tar.gz
124$ cd Skype4Py-x.x.x.x
125# python setup.py install
126----
127
128- Get the plugin code (in an empty dir, or whereever you want, it does
129  not matter):
130
131----
132$ wget http://vmiklos.hu/project/bitlbee-skype/bitlbee-skype-@VERSION@.tar.gz
133$ tar xf bitlbee-skype-@VERSION@.tar.gz
134$ cd bitlbee-skype-@VERSION@
135----
136
137- Compile and install it:
138
139----
140$ ./configure
141$ make
142# make install
143----
144
145This will install the plugin to where BitlBee expects them, which is
146`/usr/local/lib/bitlbee` if you installed BitlBee from source.
147
148=== Configuring
149
150- Set up `~/.skyped/skyped.conf`: Create the `~/.skyped` directory, copy
151  `skyped.conf` and `skyped.cnf` from
152  `/usr/local/etc/skyped/skyped.conf` to `~/.skyped`, adjust `username`
153  and `password`. The `username` should be your Skype login and the
154  `password` can be whatever you want, but you will have to specify that
155  one when adding the Skype account to BitlBee (see later).
156
157NOTE: Here, and later - `/usr/local/etc` can be different on your installation
158if you used the `--sysconfdir` switch when running bitlbee-skype's `configure`.
159
160- Generate the SSL pem files:
161
162----
163# cd ~/.skyped
164# openssl req -new -x509 -days 365 -nodes -config skyped.cnf -out skyped.cert.pem \
165        -keyout skyped.key.pem
166----
167
168NOTE: Maybe you want to adjust the permissions in the `~/.skyped`
169dir. For example make it readable by just your user.
170
171- Start `skyped` (the tcp server):
172
173----
174$ skyped
175----
176
177- Start your `IRC` client, connect to BitlBee and add your account:
178
179----
180account add skype <user> <pass>
181account skype set server localhost
182----
183
184<user> should be your Skype account name, <pass> should be the one you declared
185in `skyped.conf`. If you want to run skyped on a remote machine, replace
186`localhost` with the name of the machine.
187
188If you are running skyped on a custom port:
189
190----
191account skype set port <port>
192----
193
194If you want to set your full name (optional):
195
196----
197account skype set display_name "John Smith"
198----
199
200If you want to see your skypeout contacts online as well (they are
201offline by default):
202
203----
204account skype set skypeout_offline false
205----
206
207== Setting up Skype in a VNC server (optional)
208
209Optionally, if you want to run Skype on a server, you might want to setup up
210a `VNC` server as well. I used `tightvnc` but probably other `VNC` servers will
211work, too.
212
213First run
214
215----
216$ vncpasswd ~/.vnc/passwd
217----
218
219and create a password. You will need it at least once.
220
221Now create `~/.vnc/xstartup` with the following contents:
222
223----
224#!/bin/sh
225
226blackbox
227----
228
229Adjust the permissions:
230
231----
232$ chmod +x ~/.vnc/xstartup
233----
234
235Then start the server:
236
237----
238$ vncserver
239----
240
241Then connect to it, start an `xterm`, set up Skype (username, password,
242enable X11 API and allow the `Skype4Py` client), quit from Skype, and
243start `skyped`. If you want to watch its traffic, enable debug messages
244and foreground mode:
245
246----
247$ skyped -n -d
248----
249
250== Features
251
252- Download nicks and away statuses from Skype
253
254- Noticing joins / parts while we're connected
255
256- Sending messages
257
258- Receiving messages
259
260- Receiving away status changes
261
262- `skyped` (the tcp daemon that is a gateway between Skype and tcp)
263
264- Error handling when `skyped` is not running and when it exits
265
266- Marking received messages as seen so that Skype won't say there are unread messages
267
268- Adding / removing contacts
269
270- Set away state when you do a `/away`.
271
272- When you `account off`, Skype will set status to `Offline`
273
274- When you `account on`, Skype will set status to `Online`
275
276- Detect when somebody wants to add you and ask for confirmation
277
278- Detect when somebody wants to transfer a file
279
280- Group chat support:
281
282  * Detect if we're invited
283
284  * Send / receive group chat messages
285
286  * Invite others (using `/invite <nick>`)
287
288  * Part from group chats
289
290  * Starting a group chat (using `/j #nick`)
291
292- Topic changes in group chats:
293
294  * Show the current topic (if any) on join
295
296  * Notice when someone changes the topic
297
298  * Support changing the topic using `/topic`
299
300- Viewing the profile using the `info` command.
301
302- Handling skype actions (when the `CHATMESSAGE` has `EMOTED` type)
303
304- Setting your display name using the `nick` command.
305
306- Running Skype on a machine different to BitlBee is possible, the
307  communication is encrypted.
308
309- Managing outgoing calls (with call duration at the end, including
310  SkypeOut calls if you use a phone number instead of a nick):
311
312  * `account skype set call nick`
313  * `account skype set -del skype/call`
314
315- Managing incoming calls via questions, just like when you add / remove
316  contacts.
317
318- Querying the current SkypeOut balance:
319
320  * `account skype set balance query`
321
322- For debug purposes, it's possible to send any command to `skyped`. To
323  achieve this, you need to:
324
325  * `account skype set skypeconsole true`
326
327  * then writing `skypeconsole: <command>` will work in the control
328    channel.
329
330  * `account skype set skypeconsole_receive true` will make the
331    `skypeconsole` account dump all the recieved raw traffic for you
332
333- If you want to automatically join bookmarked groupchats right after
334  you logged in, do:
335
336  * `account skype set auto_join true`
337
338- Edited messages are shown with the `EDIT:` prefix. If you don't like
339  this, you can set your own prefix using:
340
341  * `account skype set edit_prefix "updated message:"`
342
343- The `echo123` test account is hidden by default. If you want to see it:
344
345  * `account skype set test_join true`
346
347- Mood texts are not shown by default. If you want to see it:
348
349  * `account skype set show_moods true`
350
351== What needs to be done (aka. TODO)
352
353- Notice if foo invites bar. Currently you can see only that bar joined.
354
355- Public chats. See
356  link:https://developer.skype.com/jira/browse/SCL-381[this feature
357  request], this is because it is still not possible (under Linux) to
358  `join_chat` to a public chat..
359
360- Add yasrd (Yet Another Skype-Related Daemon) to allow using a public
361  server for users who are behind NAT.
362
363== I would like to have support for ...
364
365If something does not work and it's not in the TODO section, then please
366contact me! Please also try the link:HACKING[git version] before reporting a bug, your
367problem may be already fixed there.
368
369In fact, of course, I wrote this documentation after figured out how to do this
370setup, so maybe I left out some steps. If you needed 'any' additional tricks,
371then it would be nice to include them here.
372
373== Known bugs
374
375- File transfers are view-only from BitlBee. Quoting the
376  https://developer.skype.com/Docs/ApiDoc/FILETRANSFER_object[relevant
377  documentation]: 'File transfers cannot be initiated nor accepted via
378  API commands.' So it's not something I can add support for, sadly.
379
380== Screenshots
381
382You can reach some screenshots link:shot[here].
383
384== Additional resources
385
386You can reach the Changelog link:Changelog[here], and a gitweb interface
387http://vmiklos.hu/gitweb/?p=bitlbee-skype.git[here].
388
389The Skype API documentation is
390http://developer.skype.com/resources/public_api_ref.zip[here] if you're
391interested.
392
393
394== Testimonials
395
396----
39700:56 < scathe> I like your skype plugin :)
398----
399
400----
401It's really working great so far.
402
403Good Job and thank you!
404Sebastian
405----
406
407----
408Big respect for your work, i really appreciate it.
409
410Martin
411----
412
413----
414Thanks for bitlbee-skype. As a blind Linux user, I cannot use the
415skype GUI client because qt apps ar not accessible yet with the
416available screen readers. bitlbee-skype allows me to make use of skype
417without having to interact much with the GUI client, which helps me a
418lot.
419
420Lukas
421----
422
423----
42402:12 < newton> i must say, i love this little bee ;)
42502:15 < newton> tried it out today with the skype plugin, good work!
426----
427
428----
42918:10 < miCSu> it works fine
430----
431
432----
43313:56 < seo> i just want to thank you :)
43413:56 < seo> for bitlbee-skype
43513:57 < seo> it's working very well, so, again, thank you for your work, and for sharing it
436----
437
438----
43922:16 < ecraven> vmiklos: thanks a lot for the skype plugin for bitlbee!
440----
441
442----
443I'm blind and so I have to use a screen reader, in my case Gnome-Orca.
444But since Skype is written in QT, while Orca uses gtk+, I have no direct
445access to the Skype interface. That's why I desided to use Skyped and
446Erc.
447The text console is fully accessible.
448Thank you very much.
449
450Hermann
451----
452
453----
454i love that bitlbeeplugin. big thx for that.
455
456michael
457----
458
459----
46023:47 < krisfremen> thanks for creating this fabulous piece of software vmiklos :)
461----
462
463== Thanks
464
465to the following people:
466
467* Wilmer van der Gaast, for answering questions about the BitlBee plugin interface
468
469* Arkadiusz Wahlig, author of skype4py, for making suggestions to skyped
470
471* Gabor Adam Toth (tg), for noticing extra code is needed to handle multiline
472  messages
473
474* Cristobal Palmer (tarheelcoxn), for helping to testing the plugin in a
475  timezone different to mine
476
477* Risko Gergely, for his SkypeOut ideas
478
479* people on `#bitlbee` for feedback
480
481Back to my link:/projects[projects page].
482
483// vim: ft=asciidoc
Note: See TracBrowser for help on using the repository browser.