Copyright © 2003 rad2k at mail dot ru.
Table of Contents
Table of Contents
A description of the project aimed to provide enough information to visitors as well as to new ysm users.
The acronym 'ysm' stands for 'You Sick Me', an ironic name I came up with while surfing the 'I Seek You' (ICQ) protocol. YSM is a portable open source console ICQ client written in the C language, under the GPL license.
YSM is one of the new generation clients due to the sudden modifications the ICQ protocol suffered after Mirabilis joined the dark-side of the force (AOL). This is the reason why most ICQ clients ended up with malfunctions or unable to use the IM network at all.
YSM was (proudly) the first ICQ clone to download and upload server-side contact lists.
The idea behind ysm is to have a portable-quickcompiling console client which lacks of strict library dependencies. The environment around ysm is ment to be fun and comfortable.
These are the list of available features the last release of ysm provides:
Plaintext and AES encrypted ICQ messages sending/receiving.
Plaintext and AES encrypted File transfers.
Downloading and Uploading of serverside contact lists.
Fingerprinting of remote ICQ clients.
Sending/Receiving of URLs and contacts.
Ignore, Visible and Invisible lists management.
and more features.. alert, forwarding, seen, afk, etc..
At the moment of writing this document, ysm is known to run on RISC and CISC microprocessors. Tested platforms include:
Ms.Windows 9x/NT/2k/XP - x86
Linux distributions - x86
BSD (open,net,free) - x86
QNX - x86
Solaris - x86
BeOS - x86
Solaris - ultra sparc 64
Irix64 - MIPS
If you know of any other non listed tested platform, please let me know.
The following are a list of words used in ysm which may not have an obvious meaning:
SLAVE: an ICQ contact.
AFK:
(Away from keyboard), is one of the features ysm provides. AFK may either be activated manually or triggered automatically when a specified amount of minutes with no keyboard input is reached.
When AFK is activated, the following steps are followed:
An automatic response message is sent to whoever messages you.
The message is logged. (readable using the 'readafk' command.)
MOOD: ICQ status [ONLINE, AWAY, DND, NA, OCCUPIED, FREECHAT, INVISIBLE]
Table of Contents
A step by step chapter that will guide you through the process of downloading and installing ysm.
Sources as well as binary versions of ysm can be downloaded from the project's official sourceforge space.
For an updated list of download mirrors check ysm's website.
ysm is also available in many popular systems package Ports. check yours!
One of the ideas behind ysm was to preserve the code portability and to eliminate strict library dependencies. This is the principal reason for the short amount of requirements needed to compile and run ysm.
ysm is compatible with Posix Threads (pthreads). If your system lacks of pthread libraries ysm will build without problems but features which require threads (such as direct connections) will be disabled.
You will first need to download the lastest version of ysm. You will find a file with a .tgz extension (tar+gz compression) or .tar.bzip extension (tar+bzip2 compression). This file includes the sources for all supported systems. Once you have downloaded the sources proceed to the following subsection.
YSM provides a set of features which may be enabled or disabled before compiling. These features can be found inside the file 'YSM_Config.h' in the src/ directory.
A complete description of each feature as well as indications on how to enable/disable them is specified inside that file. I will only name the available features without a description:
YSM_SILENT_SLAVES_STATUS
COMPACT_DISPLAY
YSM_MONOCHROME
YSM_WAR_MODE
Win32 and non Win32 users will need to proceed in two different ways.
Win32 systems:
Use an uncompression tool (i.e: Winzip) with the downloaded sources file.
Double click on 'ysm.dsp' or open Visual c++ and choose File, then Open Project, browse through the uncompressed directory and double click on the 'ysm.dsp' file.
Press 'f7' on your keyboard to start compiling.
You will find the ysm binary in the Debug/ or Release/ directories of the project's directory.
Non Win32 systems:
Run 'gunzip filename.tgz' if the downloaded file has a .tgz extension or 'bzip2 -d filename.tar.bz2' if the downloaded file has a .tar.bz2 extension.
Run 'tar xvf filename.tar' to finish uncompressing the downloaded sources.
Enter the new directory and run './configure'.
Now run 'make'.
Optionally, as root, run 'make install' to install the binary and manpage.
The first time you run ysm you will be prompted with the Configuration Wizard which will ask you a set of questions in order to create your configuration file.
The default name for the configuration file is 'ysm-cfg'.
The default directory where the configuration file will be stored differs on Win32 and non Win32 systems:
In Win32 systems, the directory will be called 'ysm' and it will be created inside $USERPROFILE (nt/2k/xp/+) or C:\ (9x).
In non Win32 systems, the directory will be called '.ysm' and it will be created inside the user's home directory.
Table of Contents
A detailed description of the settings found in a configuration file as well as an overview of ysm client configuration related commands.
The slaves list and configurable settings are stored in the configuration file.
A setting can be placed anywhere between the beginning of the file and the [SLAVES] tag found at the end of the file along with your slaves.
A setting consists of a case insensitive name and a value separated by a '>' symbol (i.e.: 'NAME>VALUE'.) In several settings, a value of '1' is considered ENABLE and a value of '0' is considered DISABLE. In settings where a string is required as value, leaving the value empty will be considered DISABLE.
A slave entry (found between the [SLAVES] tag and the EOF) consists of a series of parameters separated by a ':' symbol. These parameters, in order, are: NICK:UIN:ENCRYPTIONKEY:FLAGS.
For example, an entry 'rad:63873081::' would mean a slave called rad, with an icq # 63873081, no encryption key set and no flags set.
The UIN Number is your ICQ number. This setting shouldn't be of your worry since YSM takes care of filling the parameter after asking you the first time you run YSM.
This is the password for the previously specified ICQ number (or UIN.) Instead of specifying your plaintext password, you may leave this setting empty and YSM will prompt you for your password everytime it starts.
This is the address of the remote ICQ server. In case you need to use another server, just replace the default address (login.icq.com) with the one you want.
This is the port of the remote ICQ server. You shouldn't worry about setting this parameter. The default used is 5190.
The default value is ONLINE, you can select any of the following:
ONLINE
AWAY
NA
DND
OCCUPIED
FREECHAT
INVISIBLE
The amount of minutes to wait with no keyboard input before triggering the Automatic AFK mode. You can disable the Automatic AFK mode by specifying 0 minutes.
This will be the default message sent in the auto-reply message. The message will be used either when AFK is turned on manually and no message is specified or when the Automatic AFK mode is triggered.
The amount of messages shown on every page displayed by the "readafk" command. The default value is '3'.
This is the IP address of the HTTP/HTTPS proxy to use. If you don't wish to use a proxy server, just specify a '0' as value.
This is the port number where the proxy is listening.
This flag tells ysm wether your proxy is an HTTPS proxy or not. If your proxy is HTTPS, set the value to '1', otherwise set it to '0'.
This flag tells ysm if your proxy requires auth negotiation. If it does, set the value to '1', otherwise set it to '0'.
This is the username to use during an auth negotiation with your proxy.
This is the password to use during an auth negotiation with your proxy.
This is the most used alert signal. You may disable beeping by specifying '0' as value. By specifying a value other than '0' you can choose the amount of times to beep when an event is triggered.
This setting is only available in win32 systems. You may select from 3 available alerting modes, the default is mode 3 :
Popup the console window
Blink the tray bar
Popup and Blink
Besides whatever arguments you specify, ysm will call the given command/shellscript adding useful information. The result would be: [your_line] $remote_uin $remote_nick $msg_length $msg_data
A command or shellscript to be executed on the arrival of a message.
A command or shellscript to be executed after a message is sent.
A command or shellscript to be executed when a slave goes online.
A command or shellscript to be executed when a slave goes offline.
A command or shellscript to be executed when you issue a quit command.
ysm has support for 'soundpacks'. These soundpacks are downloadable from ysm's website and include a set of wave audio files to be played when the previously described 'Event Actions' are triggered.
Enable or disable sounds globally. To enable use '1' and to disable '0'.
Only for non win32 users. Specify a path to a program that will handle the playing of the wave files. I.e. : /usr/bin/play
Enable (1) or disable (0) the playing of the incoming message sound.
Enable (1) or disable (0) the playing of the outgoing message sound.
Enable (1) or disable (0) the playing of the oncoming slave sound.
Enable (1) or disable (0) the playing of the offgoing slave sound.
Enable (1) or disable (0) the playing of the logging off sound.
The path to a file from where ysm will run commands every 15 seconds. The lines inside will get executed one after the other without pause and behaving the same way as if they were user input. After all lines were executed, the file will be cleared.
ysm makes possible charset convertion under both win32 and non win32 systems. libiconv is used for non-win32 systems and the win32 api provides enough support.
Win32 users have a list of supported charsets in the registry under the following key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NIs\CodePage
Non win32 users can issue an 'iconv -l' command.
This is the charset name to use for transfering and receiving of messages.
This is the charset name to use for inputting and displaying messages.
This is the full path to the browser that will handle urls.
The default verbosity level is '5'. You can select a lower number to REMOVE output and a higher number to ADD output. Here is a list of available levels:
- Remote status changes -> 0
- Remote connecting information -> 1
+ Add direct connections information -> 20
+ Add data checking information -> 21
+ Add incoming/outgoing packets dump -> 22
+ Add slaves downloading processing -> 23
You may specify '0' as value to disable version checking on startup.
You may specify '0' as value to disable global logging.
The default mode is '2'. The list of available modes is:
[0] - Oneline mode
[1] - Verbose mode
[2] - IRC style mode
You can enable the antisocial mode by specifying '1' as value and disable it by using '0' as value.
You can disable Direct connections by specifying '1' as value. Direct connections are enabled by default. By disabling direct connections you hide your internal ip address and the client doesn't bind the DC port.
This setting makes ysm speed up DC negotiations inside a LAN (Local Area Network) by making ysm try the internal ip address first, and once connect fails, the external. You can enable it by specifying '1' as value or disable it with '0'. DC_LAN is disabled by default.
By specifying a value, you can force ysm to bind to a specific port in order to listen for incoming DC negotiations. This is useful for allowing file transfers in machines behind a firewall or for redirecting incoming handshakes behind NAT. Leave it empty for a random port.
By specifying a value, you can force ysm to bind to a specific port in order to initiate File Transfers. This is useful for allowing file transfers in machines behind a firewall or for redirecting incoming handshakes behind NAT. Leave it empty for a random port.
You can enable this mode by specifying '1' as value and disable it by using '0' as value. This mode is enabled by default.
You can specify a key to use with CTRL + ALT + key in order to popup the ysm console window. The default key is 's'.
An overview of ysm client configuration related commands.
This command doesn't require any parameters.
By specifying 'on', the Automatic AFK mode will be enabled. 'off' will disable it.
This way the user may specify the amount of minutes before triggering the Automatic AFK mode.
By specifying 'on', Beeping will be enabled. 'off' will disable it.
By specifying 'on', sounds will be enabled. 'off' will disable them.
By specifying 'on', global logging will be enabled. 'off' will disable it.
By specifying a slavename, logging will be enabled or disabled on the specified slave, depending on its current setting.
Table of Contents
A few comments I have on this guide. Might be useful to someone.
I wrote this guide during a recovery period (about 48 hours) after an insignificant surgery I had.
As some people might have noticed, I made use of an XML DTD called DocBook in order to organize the contents of this guide.
I recommend DocBook since it's intended to be a solution for technical documentation and, even though setting the environment to write DocBook can be a little boring, it's a quickly learnable markup language.
For those of you who are interested in writing DocBook, here are a couple of links:
setting the DocBook environment in win32 and a small DocBook introduction
Using the DocBook XSL Stylesheets
I used a win32 environment and had to replace the XT proc. with XSLTPROC.