1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
|
= Skype plugin for BitlBee
Miklos Vajna <vmiklos-at-vmiklos-dot-hu>
== Status
[quote, Wilmer van der Gaast (author of BitlBee)]
____
Okay, this exists now, with lots of thanks to vmiklos for his *excellent*
work!!
It's not in the main BitlBee and it'll never be for various reasons, but
because it's a plugin that shouldn't be a problem.
____
One day I browsed the BitlBee bugtracker and found
http://bugs.bitlbee.org/bitlbee/ticket/82[this] ticket. Then after a while I
returned and saw that it was still open. So I wrote it.
It's pretty stable (one day I wanted to restart it because of an upgrade
and just noticed it was running for 2+ months without crashing), I use
it for my daily work. Being a plug-in, no patching is required, you can
just install it after installing BitlBee itself.
NOTE: You will see that this implementation of the Skype plug-in still requires
a Skype instance to be running. This is because I'm not motivated to reverse
engineer Skype's
http://en.wikipedia.org/wiki/Skype_Protocol#Obfuscation_Layer[obfuscation
layer]. (Not mentioning that you should ask your lawyer about if it is legal or
not..)
== Requirements
* Skype >= 1.4.0.99. The latest version I've tested is 4.1.0.20.
* BitlBee >= 3.0. The latest version I've tested is @BITLBEE_VERSION@. Use
old versions (see the NEWS file about which one) if you have older BitlBee
installed.
* Skype4Py >= 0.9.28.7. Previous versions won't work due to API changes.
The latest version I've tested is 1.0.32.0.
* Python >= 2.5. Skype4Py does not work with 2.4.
* OS: `bitlbee-skype` has been tested under Linux and Mac OS X. The plugin part
has been tested under Free/Open/NetBSD as well. The daemon part has been
tested on Windows, too.
== How to set it up
Before you start. The setup is the following: BitlBee can't connect directly to
Skype servers (the company's ones). It needs a running Skype client to do so.
In fact BitlBee will connect to `skyped` (a tcp server, provided in this
package) and `skyped` will connect to to your Skype client.
The benefit of this architecture is that you can run Skype and `skyped`
on a machine different to the one where you run BitlBee (it can be even
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
Either use your package manager to install the Skype plugin, using something
like:
----
# apt-get install skyped bitlbee-plugin-skype
----
Or install http://sourceforge.net/projects/skype4py/[Skype4Py], and build
BitlBee with `--skype=1`.
=== Configuring
See the manpage of `skyped`.
== Setting up Skype in a VNC server (optional)
Optionally, if you want to run Skype on a server, you might want to setup up
a `VNC` server as well. I used `tightvnc` but probably other `VNC` servers will
work, too.
First run
----
$ vncpasswd ~/.vnc/passwd
----
and create a password. You will need it at least once.
Now create `~/.vnc/xstartup` with the following contents:
----
#!/bin/sh
blackbox
----
Adjust the permissions:
----
$ chmod +x ~/.vnc/xstartup
----
Then start the server:
----
$ vncserver
----
Then connect to it, start an `xterm`, set up Skype (username, password,
enable X11 API and allow the `Skype4Py` client), quit from Skype, and
start `skyped`. If you want to watch its traffic, enable debug messages
and foreground mode:
----
$ skyped -n -d
----
== Features
- Download nicks and away statuses from Skype
- Noticing joins / parts while we're connected
- Sending messages
- Receiving messages
- Receiving away status changes
- `skyped` (the tcp daemon that is a gateway between Skype and tcp)
- Error handling when `skyped` is not running and when it exits
- Marking received messages as seen so that Skype won't say there are unread messages
- Adding / removing contacts
- Set away state when you do a `/away`.
- When you `account off`, Skype will set status to `Offline`
- When you `account on`, Skype will set status to `Online`
- Detect when somebody wants to add you and ask for confirmation
- Detect when somebody wants to transfer a file
- Group chat support:
* Detect if we're invited
* Send / receive group chat messages
* Invite others (using `/invite <nick>`)
* Part from group chats
* Starting a group chat (using `/j #nick`)
- Topic changes in group chats:
* Show the current topic (if any) on join
* Notice when someone changes the topic
* Support changing the topic using `/topic`
- Viewing the profile using the `info` command.
- Handling skype actions (when the `CHATMESSAGE` has `EMOTED` type)
- Setting your display name using the `nick` command.
- Running Skype on a machine different to BitlBee is possible, the
communication is encrypted.
- Managing outgoing calls (with call duration at the end):
* `/ctcp nick call`
* `/ctcp nick hangup`
- Managing outgoing SkypeOut or conference calls:
* `account skype set call +18005551234`
* `account skype set call nick1 nick2`
* `account skype set -del call`
- Managing incoming calls via questions, just like when you add / remove
contacts.
- Querying the current SkypeOut balance:
* `account skype set balance query`
- For debug purposes, it's possible to send any command to `skyped`. To
achieve this, you need to:
* `account skype set skypeconsole true`
* then writing `skypeconsole: <command>` will work in the control
channel.
* `account skype set skypeconsole_receive true` will make the
`skypeconsole` account dump all the received raw traffic for you
- If you want to automatically join bookmarked groupchats right after
you logged in, do:
* `account skype set auto_join true`
- Edited messages are shown with the `EDIT:` prefix. If you don't like
this, you can set your own prefix using:
* `account skype set edit_prefix "updated message:"`
- The `echo123` test account is hidden by default. If you want to see it:
* `account skype set test_join true`
- Mood texts are not shown by default.
* If you want to see them: `account skype set show_moods true`
* If you want to change your mood text: `account skype set mood_text 'foo bar'`
- Group support:
* To enable: `account skype set read_groups true`
* Skype groups are told to BitlBee
* The usual `/invite` in a group channel adds the buddy to the group in skype
as well (and if necessary, it creates a new group in Skype)
== What needs to be done (aka. TODO)
- Notice if foo invites bar. Currently you can see only that bar joined.
- Public chats. See
link:https://developer.skype.com/jira/browse/SCL-381[this feature
request], this is because it is still not possible (under Linux) to
`join_chat` to a public chat..
- Add yasrd (Yet Another Skype-Related Daemon) to allow using a public
server for users who are behind NAT.
== I would like to have support for ...
If something does not work and it's not in the TODO section, then please
contact me! Please also try the bzr version before reporting a bug, your
problem may be already fixed there.
In fact, of course, I wrote this documentation after figured out how to do this
setup, so maybe I left out some steps. If you needed 'any' additional tricks,
then it would be nice to include them here.
== Known bugs
- File transfers are view-only from BitlBee. Quoting the
https://developer.skype.com/Docs/ApiDoc/FILETRANSFER_object[relevant
documentation]: 'File transfers cannot be initiated nor accepted via
API commands.' So it's not something I can add support for, sadly.
== Screenshots
You can reach some screenshots link:shot[here].
== Additional resources
The Skype API documentation is
http://developer.skype.com/resources/public_api_ref.zip[here] if you're
interested.
== Testimonials
----
00:56 < scathe> I like your skype plugin :)
----
----
It's really working great so far.
Good Job and thank you!
Sebastian
----
----
Big respect for your work, i really appreciate it.
Martin
----
----
Thanks for bitlbee-skype. As a blind Linux user, I cannot use the
skype GUI client because qt apps ar not accessible yet with the
available screen readers. bitlbee-skype allows me to make use of skype
without having to interact much with the GUI client, which helps me a
lot.
Lukas
----
----
02:12 < newton> i must say, i love this little bee ;)
02:15 < newton> tried it out today with the skype plugin, good work!
----
----
18:10 < miCSu> it works fine
----
----
13:56 < seo> i just want to thank you :)
13:56 < seo> for bitlbee-skype
13:57 < seo> it's working very well, so, again, thank you for your work, and for sharing it
----
----
22:16 < ecraven> vmiklos: thanks a lot for the skype plugin for bitlbee!
----
----
I'm blind and so I have to use a screen reader, in my case Gnome-Orca.
But since Skype is written in QT, while Orca uses gtk+, I have no direct
access to the Skype interface. That's why I desided to use Skyped and
Erc.
The text console is fully accessible.
Thank you very much.
Hermann
----
----
i love that bitlbeeplugin. big thx for that.
michael
----
----
23:47 < krisfremen> thanks for creating this fabulous piece of software vmiklos :)
----
== Thanks
to the following people:
* people in link:AUTHORS[AUTHORS] for their contributions
* Arkadiusz Wahlig, author of skype4py, for making suggestions to skyped
* Gabor Adam Toth (tg), for noticing extra code is needed to handle multiline
messages
* Cristobal Palmer (tarheelcoxn), for helping to testing the plugin in a
timezone different to mine
* people on `#bitlbee` for feedback
Back to my link:/projects[projects page].
// vim: ft=asciidoc
|