|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| de/ | H | 20-Mar-2010 | - | 2,470 | 2,458 |
| es/ | H | 20-Mar-2010 | - | 1,026 | 1,002 |
| fr/ | H | 20-Mar-2010 | - | 1,262 | 1,116 |
| it/ | H | 20-Mar-2010 | - | 140 | 136 |
| pt_BR/ | H | 20-Mar-2010 | - | 1,934 | 1,921 |
| ru/ | H | 20-Mar-2010 | - | 2,068 | 2,051 |
| se/ | H | 20-Mar-2010 | - | 2,144 | 2,130 |
| sk/ | H | 20-Mar-2010 | - | 1,716 | 1,705 |
| sr/ | H | 20-Mar-2010 | - | 1,417 | 1,403 |
| uk/ | H | 20-Mar-2010 | - | 661 | 647 |
| COPYING-GPLv2 | H A D | 20-Mar-2010 | 17.6 KiB | 341 | 281 |
| ChangeLog.old | H A D | 20-Mar-2010 | 114.3 KiB | 2,626 | 2,399 |
| Makefile.am | H A D | 20-Mar-2010 | 1.9 KiB | 76 | 56 |
| Makefile.in | H A D | 20-Mar-2010 | 42.7 KiB | 1,174 | 1,071 |
| README.BeOS | H A D | 20-Mar-2010 | 1.2 KiB | 24 | 16 |
| README.NONLINUX | H A D | 20-Mar-2010 | 2.9 KiB | 79 | 59 |
| README.i18n | H A D | 20-Mar-2010 | 4.3 KiB | 88 | 72 |
| README.logformat | H A D | 20-Mar-2010 | 1.1 KiB | 40 | 33 |
| README.ssl | H A D | 20-Mar-2010 | 2.5 KiB | 64 | 41 |
| README.tcl | H A D | 20-Mar-2010 | 10.9 KiB | 390 | 244 |
| climm.1 | H A D | 20-Mar-2010 | 4.9 KiB | 196 | 193 |
| climm.desktop | H A D | 20-Mar-2010 | 354 | 14 | 13 |
| climmcmds.7 | H A D | 20-Mar-2010 | 37.8 KiB | 1,574 | 1,571 |
| climmrc.5 | H A D | 20-Mar-2010 | 12.6 KiB | 552 | 549 |
| example-climm-event-script | H A D | 20-Mar-2010 | 4 KiB | 124 | 117 |
README.BeOS
1climm 0.4.10.2, released 2003-03-07.
2
3climm is (c) Matt Smith, Rüdiger Kuhlmann, and released under version 2 of the GPL.
4
5Note: This package requires libiconv. Get it from <URL:http://www.bebits.com/app/2971/>.
6
7Note 2: This package requires a properly set locale. If you don't understand this, enter
8"export LC_ALL=en_US.UTF-8" before you start climm, or edit your climmrc to contain
9a line "encoding local UTF-8".
10
11Note 3: I do develop climm, but I am not a BeOS developer. If you have BeOS-specific
12questions, ask someone else. If you're a BeOS developer, you might want to help porting.
13
14Note 4: There is a mailing list for climm, go to <URL:http://www.climm.org/> and subscribe.
15
16Note 5: Don't ask me to make a version for SKELETONs. Access to this software is illegal
17for me. If you do have access, then you're able to compile from source. Consider note 4.
18
19Note 6: Don't ask me to make a GUI for this program, or whine that it's not a native BeOS
20application. It is command-line only, and it comes from Linux. If you don't understand this,
21come up with a commonly-used GUI toolkit that works under BeOS, AmigaOS, Linux, *BSD,
22commercial Unices and Windows. Then make one yourself.
23
24If you don't accept any of these notes, then please do not install this software.
README.NONLINUX
1
2HPUX:
3 Please use GNU libiconv. Otherwise, if even ISO-8859-1 won't work,
4 try --disable-iconv.
5
6Windows (MingW):
7 The binary was created by cross-compiling with the
8 mingw-cross compiler packaged by Debian:
9
10 ii mingw32 3.4.2.20040916.1-2 Minimalist GNU win32 (cross) compiler
11 ii mingw32-binutils 2.15.94-20050118.1-1 Minimalist GNU win32 (cross) binutils
12 ii mingw32-runtime 3.7-1 Minimalist GNU win32 (cross) runtime
13
14 Additionally, libiconv was installed from a W32 Gimp Gtk installer,
15 packaged as follows:
16
17 ii mingw32-libiconv 0.0-1 iconv for cross-compiling with mingw32 (runtime)
18 ii mingw32-libiconv-dev 0.0-1 iconv for cross-compiling with mingw32 (developer)
19
20 It was configured as follows:
21
22 ./configure --host=i586-mingw32msvc --build=i686-pc-linux-gnu CFLAGS=-O4 --disable-ssl --disable-tcl
23
24 The binary was stripped afterwards.
25
26 NOTE since 0.5.0.3+ for previous users:
27 * the climmrc file is now taken from %USERPROFILE% (if defined), %HOME% (if defined),
28 {HKEY_CURRENT_USER\Software\climm\InstallationDirectory}\etc (if key is set),
29 {HKEY_LOCAL_MACHINE\Software\climm\InstallationDirectory}\etc (if key is set),
30 the directory etc under the directory where climm.exe is located (if w32 gives this info),
31 or C:\climm\etc\.
32
33 NOTE:
34 * This binary is still HIGHLY EXPERIMENTAL.
35 * It does, unfortunately, not run under WINE.
36 * Use %LC_ALL% or -i option to set locale to e.g. de.CP437
37 * load ANSI.SYS; see
38 http://mysite.verizon.net/jialpert/Computrs/ANSI_COM.htm
39 http://www.nthelp.com/40/ansiNT.htm
40 http://www.robvanderwoude.com/ansi.html
41 http://www.xs4all.nl/~robw/files/ansi.zip
42
43 The following features do not work:
44 * no remote-control via a FIFO (no FIFOs on this platform)
45 * the socket is not(!) non-blocking - help is needed here
46
47Windows (Cygwin):
48 You need a Cygwin installation with libiconv and openssl.
49
50 NOTE for previous users:
51 * see Windows (MingW)
52
53 The following features do not work:
54 * no remote-control via a FIFO (no FIFOs on this platform)
55
56Playstation 2 / Linux:
57 The binary was contributed by J. Grant. Here's a note he wants to have displayed:
58 -
59 Sony PS2 GNU/Linux default locale is broken, please make file in your
60 home dir called .i18n with the following locale variables. If you do
61 not correct his error you will only see "????" instead of Japanese.
62 LANG=ja
63 LC_CTYPE=ja
64 -
65
66AmigaOS:
67 The following features do not work in AmigaOS:
68 * only buildin iconv() support (no system iconv() available)
69 * no remote-control via a FIFO (no FIFOs on this platform)
70 - if you want to code an AREXX port instead, let me know
71
72BeOS:
73 The last climm build is quite outdated. If you want to create a newer,
74 feel free to contribute.
75
76MacOS X:
77 You need a Fink environment; see http://fink.sourceforge.net/ for details.
78
79
README.i18n
1
2FILE FORMAT
3
4The *.i18n files follow a simple file format. All empty lines or lines
5starting with a hash sign (#) are comments and thus ignored. All other lines
6should be translation entries, that consist of a four digit number, a colon
7or dot, and the translated string. The order of the strings does not matter
8for climm, but it does matter for the scripts updating these files. The first
910 entries contain meta data:
10
11 1000: character encoding used for this file.
12 1001: the ISO 3166 country code, e.g. de for German.
13 1002: the current locale, e.g. de_DE for German/Germany.
14 1003: climm version this file was last updated for, e.g. 0-4-9-4.
15 1004: maintainers and contributors to this translation
16 1005: maintainer who last updated this file
17 1006: date of last update
18 1007: reserved (was character encoding)
19 1008: reserved
20 1009: reserved
21
22CREATING A NEW TRANSLATION WITHOUT CVS
23
24If you want to make a new translation, lets assume for Danish (language
25code: da), you start by copying the C.i18n file from the latest climm source
26package to a new file, da.i18n. Add a hash sign in front of every line of
27this file. Then translate each line, and for each line done, remove the
28leading hash sign. This way, all untranslated lines are commented out, while
29all translated lines are not. When you've done a significant part of the
30file, simply mail it to me (i18n@ruediger-kuhlmann.de, ICQ # 82274703). You
31may want to contact me when you start working on a translation as well. From
32this on, follow the directions for translation updates.
33
34UPDATING A TRANSLATION WITHOUT CVS
35
36Download the current translation file from the climm web page, namely from
37<URL:http://www.climm.org/documentation.shtml>, which is for the example
38given the file <URL:http://www.climm.org/doc/da.i18n>. DO THIS EVEN IF YOU
39HAVE A PREVIOUS VERSION OF THIS FILE. If I have made changes since you sent
40me the file the last time that you don't agree with, undo them now, but for
41heavens sake work on the file you downloaded from climm.org. Then update
42whatever needs updating. Often, same strings have changed. Then, instead of
43your translation, the file will now contain three lines: a line preceded by
44"#-#" containing your previous translation, a line preceded by "+"
45containing the previous English string, and a line preceded by "# #"
46containing the current English string. Thus, you can see what exactly has
47changed in the English string and whether any change and which is necessary
48for your translation. If, e.g., a typo in the English string is fixed, your
49translation doesn't need to be changed, but it needs to be checked anyway.
50When finished, mail the file to me as usual.
51
52CREATING A NEW TRANSLATION WITH CVS
53
54Get the newest CVS check-out from climm. Type "./i18n-template <cc>.i18n",
55where <cc> is the language code of the language you're going to translate
56to.
57
58UPDATING A TRANSLATION WITH CVS
59
60Update your CVS checkout to the current version. Watch for conflicts in the
61file you're maintaining, as you're the one who needs to fix them. Type
62"./i18n-template <cc>.i18n" to update the translation file; any <cc>.i18n~
63file needs to be removed first. See the section for updating without CVS
64about changed English strings. When finished updating, type "./i18n-format
65<cc>.i18n" to check for format string errors; any differences will be
66printed. You may want to remove all .*.fmt files if the output seems bogus.
67If there are still differences, you need to fix them. Remember: the order of
68format string interpolates cannot be changed! When you're done, check the
69file in (if you have CVS write access), send me a diff (cvs diff -u
70<cc>.i18n, DO NOT SEND ME ANY OTHER DIFF NOT GENERATED THIS WAY) or
71otherwise the complete file.
72
73PROGRAMMERS INFORMATION
74
75The scripts i18n-extract and i18n-number extract the current set of strings
76into C.i18n resp. number new strings without a number. They're usually
77called by typing "make lang" in the src/ subdirectory after new strings have
78been added. These script create backups.
79
80To add a new string to be translated, add
81 i18n (###, "new string")
82
83in your new code. Please never use tabs ("\t") and color codes (COLNONE,
84COL<whatever>), and use trailing white space only if you *absolutely* need
85them. Newlines ("\n") are fine. Never add an untranslated string. It is okay
86for patches to contain unnumbered new strings. It is not okay to have
87numbers that do not have the same english string.
88
README.logformat
1
2marker ::= "#" stamp [ "/" [ "-" ] offset ] SPACE spec
3 [ SPACE range ] [ SPACE "(" type ")" ]
4range ::= "+" count | "-" delim | "/" indent
5ident ::= [ nick ] "[" origin "]" [ "!" addr ]
6 | [ [ nick ] "[" origin "]" "!"] addr
7origin ::= ( "tcp" | "icq" ) [ version ] ":" uin [ "+" stat ]
8addr ::= user "@" host
9
10spec ::= ident SPACE event SPACE ident
11
12version: [0-9]+
13indent: [0-9]+
14count: [0-9]*
15delim: [-*=@;,+~0-9a-zA-Z]+
16stamp: [0-9]{14}
17offset: [0-9]+
18host: [a-zA-Z0-9]([-.]?[a-zA-Z0-9])*
19user: [a-zA-Z][-_.a-zA-Z0-9]*
20nick: [a-zA-Z][a-zA-Z0-9]*
21type: [0-9]+
22
23event description
24---------- ------------
25-> sent message
26<- received message
27:: status change
28:! status report
29:? status guess
30:- went offline
31:+ went online
32<# ACK to message
33<* added to contact list by someone
34*> added someone to contact list
35=> automatic message
36
37# time/delay NICK[icq:UIN]!USER@HOST <- NICK[icq:UIN+STAT] +9
38# time/delay ... -delim
39
40
README.ssl
1This document describes the behaviour and implementation details of climm's SSL
2support. A small FAQ can be found at the end.
3
4
5*** COMPILATION ***
6
7To enable SSL support in climm, gnutls from www.gnutls.org needs to be installed
8on your system.
9
10Specify the command line option --enable-ssl when running configure.
11
12
13*** BEHAVIOUR / USING SSL ***
14
15Whenever climm opens a direct connection to another peer, it tries to start
16SSL encryption if the peer is considered to be SSL capable. climm detects SSL
17capability of licq peers by the licq specific timestamp flag, and of SIM
18(*yuck*) peers by it's CAP_NEWSIM. climm peers are expected to support SSL
19anyway. Why this does not raise problems with older climm peers that indeed
20do not support SSL will be explained below.
21
22In contrary if the direct connection is incoming from another peer, climm does
23not try to start SSL for two reasons. First we want to avoid mutual SSL
24start trials among climm and other "auto-start-ssl" clients. Second this gives a
25behaviour as usual for the licq user.
26
27The climm user can force the starting of SSL encryption anyway by issuing the
28"peer ssl <contact>" command, if not done so by the peer.
29
30
31*** IMPLEMENTATION ***
32
33SSL encryption is started after establishing a direct connection by sending
34a special ICQ packet to the peer. This packet is designed like a common simple
35text message as depicted in
36http://www.stud.uni-karlsruhe.de/~uck4/ICQ/Packets/Peer/Msg/2
37
38The message type field is set to 0x00EF and its content is empty. The response
39must be a similar message with content set to "1". These details are taken from
40licq.
41
42If the peer does not answer at all (there are bad guys out there) or responds
43with a "NACK" (Not acknowledged), SSL handshake will not be started.
44
45Licq also supports stopping SSL encryption on a direct connection. But climm
46never sends a SSL stop request and closes the direct connection upon receiving
47one.
48
49
50*** FAQ ***
51
52Q: I'm connected to a licq peer, but SSL is established upon explicit command
53only (peer ssl <contact>). Why is SSL not activated upon connection immediately?
54
55A: climm only establishes SSL encryption on its own if the direct connection is
56going from climm to the peer, not vice versa. This inhibits mutual SSL handshake
57attempts between ICQ clients starting SSL on their own.
58
59
60Q: Why did you not use OpenSSL instead of gnutls? My software distribution
61provides OpenSSL but no gnutls. This leads to inconvenience!
62
63A: OpenSSL's licence is no strict GPL.
64
README.tcl
1
21. Preface.
3
4Tcl is easy yet powerful scripting language. climm provides Tcl support
5both for evaluating Tcl constructions from climm command line and
6writing Tcl "hooks" to handle different events (incoming messages,
7status changes, etc). This short HOWTO provides an introduction to
8writing Tcl scripts for climm. I assume the reader has basic knowledge
9of Tcl itself - just like I have. ;)
10
11Why this HOWTO? When trying to implement a simple hook I discovered
12that the documentation for this climm functionality is rather sparse
13and then I had to study climm sources to get my task done. As not
14everybody can read C source code freely (well, at least I cannot) I
15decided to try to cover the theme. Hope my efforts will help somebody.
16
17Ah, and of course comments and additions are welcome. Reach me at
18jeff < at > macloue.com.
19
202. Prerequisites - compiling climm with Tcl support.
21
22If your system contains a usable Tcl 8.4 installation climm build
23system will detect it and use automatically. However you can disable
24Tcl support with --disable-tcl switch - this may give your build a
25small performance boost.
26
273. Basics.
28
29When climm is compiled with Tcl support it creates an internal Tcl
30interpreter upon startup. The user can use this interpreter to execute
31tcl code by using one of the following commands at climm promt:
32
33 tcl <command>
34
35Executes inline Tcl <command> in climm Tcl interpreter.
36
37Arbitrary Tcl commands can be used, for example:
38
39climm> tcl puts [expr 1+2]
403
41climm>
42
43Unlike tclsh climm doesn't automatically echo the result of evaluation
44so the following command prints nothing:
45
46climm> tcl expr 1+2
47climm>
48
49So remember to "puts" the result of your calculations!
50
51 tclscript <file>
52
53Executes <file> as a Tcl script in scope of climm Tcl interpreter.
54
55Supposing that the following script is stored in $HOME/.climm/hello.tcl:
56
57puts "Hello, world"
58
59the following command will provide:
60
61climm> tclscript .climm/hello.tcl
62Hello, world
63climm>
64
65You can also execute Tcl script upon climm startup by adding option
66"tclscript" to "[General]" section of your climmrc file. In this case
67script path can be given relative to climm base directory (usually
68$HOME/.climm).
69
704. Tcl extensions provided by climm.
71
72As most application do, climm provides some extensions to common Tcl
73syntax. The extension command is "climm" and you can get a short usage
74description by "climm help" ("tcl climm help" or even "tcl help" from
75the climm prompt). I will describe "climm" subcommands in slightly more
76depth below, following Tcl man pages syntax.
77
78 climm exec <cmd>
79
80Executes <cmd> as if it is given at climm command prompt. So, the
81following code:
82
83climm exec "msg Commander Good day, commander!"
84
85will send message "Good day, commander!" to Commander contact.
86
87 climm nick <uin>
88
89Finds contact name for <uin>. For example, this code:
90
91climm nick 48130434
92
93will return my nickname in your contact list (or empty string if I'm
94not there).
95
96The following commands deal with hooks that can be installed into
97climm. I will describe them later.
98
99 climm receive <script> ?<contact>?
100
101Installs message hook <script>, invoked on every incoming message or if
102<contact> is given - on incoming messages from <contact>.
103
104 climm unreceive ?<contact>?
105
106Removes global message hook or message hook for <contact>.
107
108[NB: Actually you need to provide exactly the same arguments as to
109"climm receive" command to successfully remove the hook.]
110
111 climm event <script>
112
113Installs an event hook.
114
115 climm unevent
116
117Removes event hook.
118
119[NB: Actually you need to provide exactly the same arguments as to
120"climm event" command to successfully remove the hook.]
121
122 climm hooks
123
124Returns list (in Tcl meaning, see list(n)) of hooks installed. The list
125consists of two-element lists with first element being a hook type
126(either "event hook" for event hook or contact name for receive hooks)
127and second showing the script which is executed.
128
1295. Hooks - basic ideas and examples.
130
131When compiled with Tcl support climm can execute different Tcl commands
132upon certain events. As said above, "climm receive" command can be used
133to make given <script> to be executed upon incoming message arrival.
134Actually as far as I can guess from climm source code climm just
135executes the following construct:
136
137 <script> <uin> <message>
138
139when message <message> is received from UIN <uin>. This requires
140<script> to be no more than a name of procedure accepting two
141parameters - or a construction like that:
142
143puts "some string"; return;
144
145This will make the code executed as follows:
146
147puts "some string"; return; 48130434 {Hello!}
148
149and hook arguments are ignored - simple but ugly, isn't it? And not as
150flexible as a procedure too - isn't it useful to know whom we received
151a message from?
152
153But enough chit-chat, let's try to write some hooks already!
154
1555.1. Message hooks
156
157Message hooks are simple. Unlike event hooks there are always two
158arguments to the script. Let's write a simple procedure and attach it
159as a message hook.
160
161proc msghook {uin message} {puts "Oh, message from $uin!"}
162climm receive msghook
163
164In climm prompt this will look as follows:
165
166climm> tcl proc msghook {uin message} {puts "Oh, message from $uin!"}
167climm> tcl climm receive msghook
168
169Let's try to test it:
170
171climm> msg 48130434 test
17214:39:13 48130434 {<< test
173Oh, message from 48130434!
17414:39:14 48130434 >>} test
175
176It works, doesn't it? Then let's try to remove the hook:
177
178climm> tcl climm unreceive msghook
179
180The hook is now removed.
181
182This hook was global, let's make it filter UINs.
183
184climm> tcl climm receive msghook Larry_Laffer
185climm> msg 48130434 test
18614:42:35 48130434 {<< test
18714:42:35 48130434 >>} test
188
189The hook is not executed. To remove it we need to give the following
190command:
191
192climm> tcl climm unreceive msghook Larry_Laffer
193
1945.2. Event hooks
195
196Event hooks are complex. At the moment of writing climm doesn't
197distinguish different event types - there is only one global event hook
198and it is called with variable number of parameters. The first is
199always an event type - so it's up to hook procedure to decide whether
200to continue processing or return. Second is always UIN of the contact
201who triggered the event. Other parameters can vary so precautions need
202to be made not to receive many error messages.
203
2045.2.1. Event: status change.
205
206Let's try to implement simple "status change" event handler. Status
207change event happens every time a contact changes its status
208(naturally) and executes the following Tcl code:
209
210 <event handler script> status <uin> <status>
211
212So, let's write something like this:
213
214proc evhandler {type uin args} {
215 if { $type != "status" } then return
216 set status [lindex $args 0]
217 set nick [climm nick $uin]
218 puts "$nick changes status to $status"
219}
220
221This procedure analyzes event type and if it is a status change event
222extracts status value and prints a message. Let's attach it as an event
223handler:
224
225climm event evhandler
226
227If the procedure is stored in file $HOME/.climm/evhandler.tcl the
228following commands will do the trick:
229
230climm> tclscript .climm/evhandler.tcl
231climm> tcl climm event evhandler
232
233Then, when a contact changes his/her status, we will get the following:
234
23515:17:46 Contact1 changed status to occupied.
236Contact1 changes status to occupied
237
238Or even:
239
24015:19:39 Contact2 logged off.
241Contact2 changes status to logged_off
242
243Going offline is also a status change.
244
2456. Hooks reference.
246
2476.1. Message hook.
248
249Install syntax:
250
251 climm receive <script> ?<contact>?
252
253Remove syntax:
254
255 climm unreceive <script> ?<contact>?
256
257Tcl code executed upon message arrival (from <contact> if specified):
258
259 <script> <uin> <message>
260
2616.2. Event hooks.
262
263Install syntax:
264
265 climm event <script>
266
267Remove syntax:
268
269 climm unevent <script>
270
271Tcl code executed upon event:
272
273 <script> <type> <uin> ?<arg1>? ...
274
275List of optional arguments depends on event <type>.
276
2776.2.1. Event: status change.
278
279When a contact <uin> changes his status to <status> the following Tcl
280code is executed:
281
282 <script> status <uin> <status>
283
2846.2.2. Event: message received.
285
286This event is triggered when incoming message arrives. Although it's
287better to use message hooks to handle events of this type you can
288handle messages through the event hook as well - it may useful in some
289cases because message and event hooks are invoked independently.
290
291When a message <message> is received from user <uin> the following Tcl
292code executed is as follows:
293
294 <script> message <uin> <message>
295
2966.2.3. Event: incoming file request.
297
298This event is triggered when file transfer request arrives. The
299following Tcl code is executed:
300
301 <script> file_request <uin> <file name> <bytes> <ref>
302
303FIXME: I don't know much about ICQ file transfers, so can somebody tell
304me what the <ref> is?
305
3066.2.4. Event: added to contact list.
307
308This event is triggered when you are added to somebody's contact list.
309When user <uin> adds you to his contact list the following Tcl code is
310executed:
311
312 <script> contactlistadded <uin>
313
3146.2.5. Event: authorization.
315
316Events of this group are triggered when authorization messages arrive.
317When auth message arrives from user <uin> the following Tcl code is
318executed:
319
320 <script> authorization <uin> <authtype>
321
322<authtype> can be:
323
324 - request - when incoming auth request is received from user <uin>;
325 - refused - if your auth request is refused by user <uin>;
326 - granted - if your auth request is granted by user <uin>.
327
3286.2.6. Event: Web message arrived.
329
330This event is triggered when you receive a message from ICQ web site
331("web message"). The following Tcl code is executed:
332
333 <script> web <uin> <t0> <t3> <t4> <t5>
334
335FIXME: add t0-t5 parameters description; not sure what <uin> is in this
336case.
337
3386.2.7. Event: Mail message arrived.
339
340This event is triggered when you receive a ICQ Mail message. The
341following Tcl code is executed:
342
343 <script> mail <uin> <t0> <t3> <t4> <t5>
344
345FIXME: add t0-t5 parameters description; not sure what <uin> is in this case
346
3476.2.8. Event: SSL.
348
349Events of this group are triggered at various stage of SSL connection setup.
350
351When it is detected that the user <uin>'s client doesn't support SSL
352channel the following Tcl code is executed:
353
354 <script> ssl <uin> no_candidate
355
356When it is detected that the user <uin>'s client supports SSL channel
357the following Tcl code is executed:
358
359 <script> ssl <uin> candidate
360
361When SSL connection is tried to user <uin>, the following Tcl code is
362executed if remote hasn't SSL connetion enabled:
363
364 <script> ssl <uin> failed precondition
365
366When SSL connection is tried to user <uin>, the following Tcl code is
367executed if SSL connection initialization fails:
368
369 <script> ssl <uin> failed init
370
371When SSL connection is tried to user <uin>, the following Tcl code is
372executed if SSL key exchange fails:
373
374 <script> ssl <uin> failed key
375
376When SSL connection is tried to user <uin>, the following Tcl code is
377executed if SSL handshake fails:
378
379 <script> ssl <uin> failed handshake
380
381And, finally, when SSL connection to user <uin> is successfully
382established the following Tcl code is executed:
383
384 <script> ssl <uin> ok
385
386If the SSL connection to <uin> fails at some stage finally the
387following Tcl code is executed:
388
389 <script> ssl <uin> incapable
390