<?xml version="1.0"?>
<!DOCTYPE article SYSTEM "./../dtd/docbookx.dtd">

	<book>
		<title>ysmICQ client Users' Guide</title>
	  
		<!-- Empieza el BOOK INFO, el FRONT PAGE -->
		<bookinfo>
			<subtitle>Pointing Instant Messaging users in the right direction</subtitle>
			<author>rad2k at mail dot ru.</author>
			<copyright>
				<year>2003</year>
				<holder>rad2k at mail dot ru.</holder>
			</copyright>
			<date>Apr 1, 2003</date>
		</bookinfo>
		<!-- Fin the BOOK INFO, FRONT PAGE -->
	  
	  
	  
		<!-- Primer Capitulo INTRODUCTION TO YSM -->
		
		<chapter id="introductiontoysm">
			<title>Introduction to ysm</title>
			<para>A description of the project aimed to provide enough information to
			visitors as well as to new ysm users.</para>
			
			<sect1 id="whatisysm">
				<title>What is ysm?</title>
				<para>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.</para>
				
				<para>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.</para>
				
				<para>YSM was (proudly) the first ICQ clone to download and upload server-side contact lists.</para>
				
				<para>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.
				</para>
				
			</sect1>
			
			
			<sect1 id="availablefeatures">
				<title>Available features</title>
				<para>These are the list of available features the last release of ysm provides:</para>
				<para>
				<itemizedlist>
				<listitem><para>Plaintext and AES encrypted ICQ messages sending/receiving.</para></listitem>
				<listitem><para>Plaintext and AES encrypted File transfers.</para></listitem>
				<listitem><para>Downloading and Uploading of serverside contact lists.</para></listitem>
				<listitem><para>Fingerprinting of remote ICQ clients.</para></listitem>
				<listitem><para>Sending/Receiving of URLs and contacts.</para></listitem>
				<listitem><para>Ignore, Visible and Invisible lists management.</para></listitem>
				<listitem><para>and more features.. alert, forwarding, seen, afk, etc..</para></listitem>
				</itemizedlist>
				</para>
			</sect1>
			
			<sect1 id="supportedplatforms">
				<title>Supported Platforms</title>
				<para>At the moment of writing this document, ysm is known to run on RISC and CISC
				microprocessors. Tested platforms include:</para>
				<itemizedlist>
				<listitem><para>Ms.Windows 9x/NT/2k/XP - x86</para></listitem>
				<listitem><para>Linux distributions - x86</para></listitem>
				<listitem><para>BSD (open,net,free) - x86</para></listitem>
				<listitem><para>QNX - x86</para></listitem>
				<listitem><para>Solaris - x86</para></listitem>
				<listitem><para>BeOS - x86</para></listitem>
				<listitem><para>Solaris - ultra sparc 64</para></listitem>
				<listitem><para>Irix64 - MIPS</para></listitem>
				</itemizedlist>
				<para>If you know of any other non listed tested platform, please let me know.</para>
			</sect1>
			
			
			<sect1 id="vocabulary">
				<title>Vocabulary</title>
				<para>The following are a list of words used in ysm which may not have an obvious meaning:
				</para>
				
				<segmentedlist>
				<segtitle>SLAVE</segtitle>
				<segtitle>AFK</segtitle>
				<segtitle>MOOD</segtitle>
				<seglistitem>
				<seg>an ICQ contact.</seg>
				<seg><para>(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. </para>
				<para>When AFK is activated, the following steps are followed:</para>
				<itemizedlist>
				<listitem><para>An automatic response message is sent to whoever messages you.</para></listitem>
				<listitem><para>The message is logged. (readable using the 'readafk' command.)</para></listitem>
				</itemizedlist>
				</seg>
				<seg>ICQ status [ONLINE, AWAY, DND, NA, OCCUPIED, FREECHAT, INVISIBLE]</seg>
				</seglistitem>
				</segmentedlist>
			</sect1>		
		</chapter>
		
		<!-- Segundo CAPITULO -> INSTALLING YSM -->

		<chapter id="installingysm">
			<title>Installing ysm</title>
			<para>A step by step chapter that will guide you through the process of downloading
				and installing ysm.</para>
			
			<sect1 id="wheredoigetysm">
				<title>Where do I get ysm?</title>
				<para>Sources as well as binary versions of ysm can be downloaded from 
				<ulink url="http://ysmv7.sourceforge.net">the project's 
				official sourceforge space.</ulink></para>
				<para>For an updated list of download mirrors check 
				<ulink url="http://www.ysm.com.ar">ysm's website.</ulink></para>
				<para>ysm is also available in many popular systems package Ports. check yours!</para>
			</sect1>
						
			<sect1 id="systemrequirements">
				<title>System requirements</title>
				<para>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.</para>
				<sect2 id="compilingrequirements">
					<title>Compiling requirements</title>
					<para>
						<segmentedlist>
						<segtitle>Microsoft Windows systems</segtitle>
						<segtitle>Other systems</segtitle>
						<seglistitem>
						<seg>Visual c++ </seg>
						<seg>cc and make</seg>
						</seglistitem>
						</segmentedlist>
					</para>
				</sect2>
				<sect2 id="runningrequirements">
					<title>Running requirements</title>
					<para>None. Tested to run just great on old systems.</para>
				</sect2>
				<sect2 id="noteonthreads">
					<title>Note on threads</title>
					<para><warning>This note is only important for non win32 users, since MS.Windows
					has its own threads implementation, supported by ysm.</warning></para>
					<para>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.</para>
				</sect2>
			</sect1>
			
			<sect1 id="installingfromsources">
				<title>Installing ysm from sources</title>
				<para></para>
				<sect2 id="precompilenotes">
					<title>Pre-compile notes</title>
					<para>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.</para>
				</sect2>
				
				<sect2 id="precompileconfiguration">
					<title>Pre-compile configuration</title>
					<para>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.</para>
					
					<para>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:</para>
					<para>
					<itemizedlist>
					<listitem><para>YSM_SILENT_SLAVES_STATUS</para></listitem>
					<listitem><para>COMPACT_DISPLAY</para></listitem>
					<listitem><para>YSM_MONOCHROME</para></listitem>
					<listitem><para>YSM_WAR_MODE</para></listitem>
					</itemizedlist>
					</para>
				</sect2>
				
				<sect2 id="compilingsteps">
					<title>Compiling steps</title>
					<para>Win32 and non Win32 users will need to proceed in two different ways.</para>
					
					<para>Win32 systems:</para>
					<orderedlist numeration="arabic">
						<listitem><para>Use an uncompression tool (i.e: Winzip) with the downloaded sources file.</para></listitem>
						<listitem><para>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.</para></listitem>
						<listitem><para>Press 'f7' on your keyboard to start compiling.</para></listitem>
						<listitem><para>You will find the ysm binary in the Debug/ or Release/ directories of the project's directory.</para></listitem>
					</orderedlist>
					
					<para>Non Win32 systems:</para>
					<orderedlist numeration="arabic">
						<listitem><para>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.</para></listitem>
						<listitem><para>Run 'tar xvf filename.tar' to finish uncompressing the downloaded sources.</para></listitem>
						<listitem><para>Enter the new directory and run './configure'.</para></listitem>
						<listitem><para>Now run 'make'.</para></listitem>
						<listitem><para>Optionally, as root, run 'make install' to install the binary and manpage.</para></listitem>
					</orderedlist>
					
					
				</sect2>
				<sect2 id="postcompilenotes">
					<title>Post-compile notes</title>
					<para>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.</para>
					<para>The default name for the configuration file is 'ysm-cfg'.</para>
					<para>The default directory where the configuration file will be stored differs on Win32 and
					non Win32 systems:</para>
					<itemizedlist>
						<listitem><para>In Win32 systems, the directory will be called 'ysm' and it will be created
						inside $USERPROFILE (nt/2k/xp/+) or C:\ (9x).</para></listitem>
						<listitem><para>In non Win32 systems, the directory will be called '.ysm' and it will be created
						inside the user's home directory.</para></listitem>
					</itemizedlist>
					<para><note>when running ysm, you can also specify a '-c' parameter followed by a name in order
					to use a local configuration file named as specified. This will override the default directory and
					configuration file name settings, creating the configuration file in the local directory.</note></para>
				</sect2>
			</sect1>
			
			
			<sect1 id="installingfrombinaries">
				<title>Installing ysm from binaries</title>
				<para>Please refer to the 'Post-compile notes' in the previous section for instructions.</para>
			</sect1>		
		</chapter>


		<!-- Tercer Capitulo CONFIGURING YSM -->
		
		<chapter id="configuringysm">
			<title>Configuring ysm</title>
			<para>A detailed description of the settings found in a configuration file as well as an overview of ysm
			client configuration related commands.</para>
			
			<sect1 id="ysmconfigurationfile">
				<title>ysm Configuration file</title>
				<para>The slaves list and configurable settings are stored in the configuration file.</para>
				<para>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.</para>
				<para>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.</para>
				<para>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.</para>
				<para>For example, an entry 'rad:63873081::' would mean a slave called rad, with an icq # 63873081,
				no encryption key set and no flags set.</para>
				
				<sect2 id="icqaccountsettings">
					<title>ICQ account settings</title>
					<para>The following settings carry the information needed to login with your account.
					<variablelist>
					
					<varlistentry>
					<term>UIN></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>PASSWORD></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
				<sect2 id="icqserversettings">
					<title>ICQ server settings</title>
					<para>The following settings carry the information needed to connect to the ICQ server.
					<variablelist>
					
					<varlistentry>
					<term>SERVER></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>SERVERPORT></term>
					<listitem><para>This is the port of the remote ICQ server. You shouldn't worry about
					setting this parameter. The default used is 5190.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="defaultloginstatus">
					<title>Default login status</title>
					<para>This is the default status you will show up with right after logging in.
					<variablelist>
					
					<varlistentry>
					<term>STATUS></term>
					<listitem><para>The default value is ONLINE, you can select any of the following:
					</para><para>
					<itemizedlist>
						<listitem><para>ONLINE</para></listitem>
						<listitem><para>AWAY</para></listitem>
						<listitem><para>NA</para></listitem>
						<listitem><para>DND</para></listitem>
						<listitem><para>OCCUPIED</para></listitem>
						<listitem><para>FREECHAT</para></listitem>
						<listitem><para>INVISIBLE</para></listitem>
					</itemizedlist>
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
				<sect2 id="afkmodeconfiguration">
					<title>AFK mode configuration</title>
					<para>The following settings control the behaviour of the automatic AFK mode as well as of
					other AFK related commands.
					<variablelist>
					
					<varlistentry>
					<term>IDLETIME></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>AFKMESSAGE></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>AFKMAXSHOWN></term>
					<listitem><para>The amount of messages shown on every page displayed by the
					"readafk" command. The default value is '3'.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="proxyconfiguration">
					<title>Proxy configuration</title>
					<para>ysm supports HTTP and HTTPS proxy settings with or without auth negotiation.
					<variablelist>
					
					<varlistentry>
					<term>PROXY></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>PROXY_PORT></term>
					<listitem><para>This is the port number where the proxy is listening.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>PROXY_HTTPS></term>
					<listitem><para>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'.
					</para></listitem>
					</varlistentry>
										
					<varlistentry>
					<term>PROXY_AUTH></term>
					<listitem><para>This flag tells ysm if your proxy requires auth negotiation.
					If it does, set the value to '1', otherwise set it to '0'.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>PROXY_USERNAME></term>
					<listitem><para>This is the username to use during an auth negotiation with your proxy.
					</para></listitem>
					</varlistentry>
						
					<varlistentry>
					<term>PROXY_PASSWORD></term>
					<listitem><para>This is the password to use during an auth negotiation with your proxy.
					</para></listitem>
					</varlistentry>
						
					</variablelist>
					</para>
				</sect2>
				
				
				<sect2 id="eventsalertsettings">
					<title>Events Alert settings</title>
					<para>The following settings take care of alerting the user when certain events are triggered.
					(Arrival of messages, alert on a user, etc.)
					<variablelist>
					
					<varlistentry>
					<term>BEEP></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>WINALERT></term>
					<listitem><para>This setting is only available in win32 systems.  You may select from 3 available
					alerting modes, the default is mode 3 :</para>
					<para>
						<orderedlist numeration="arabic">
						<listitem><para>Popup the console window</para></listitem>
						<listitem><para>Blink the tray bar</para></listitem>
						<listitem><para>Popup and Blink</para></listitem>
						</orderedlist>
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
				<sect2 id="eventsactionsettings">
					<title>Events Action settings</title>
					<para>The following settings take care of executing commands or shellscripts when:
					<itemizedlist>
					<listitem>a message is received</listitem>
					<listitem>a message is sent</listitem>
					<listitem>a slave goes online</listitem>
					<listitem>a slave goes offline</listitem>
					<listitem>you logoff</listitem>
					</itemizedlist>
					<para>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</para>
					
					<variablelist>
					
					<varlistentry>
					<term>EXEC_INCOMING></term>
					<listitem><para>A command or shellscript to be executed on the arrival of a message.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>EXEC_OUTGOING></term>
					<listitem><para>A command or shellscript to be executed after a message is sent.
					</para></listitem>
					</varlistentry>
					
					
					<varlistentry>
					<term>EXEC_ONCOMING></term>
					<listitem><para>A command or shellscript to be executed when a slave goes online.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>EXEC_OFFGOING></term>
					<listitem><para>A command or shellscript to be executed when a slave goes offline.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>EXEC_LOGOFF></term>
					<listitem><para>A command or shellscript to be executed when you issue a quit command.
					</para></listitem>
					</varlistentry>
					</variablelist>
					</para>
				</sect2>
				
				
				
				<sect2 id="eventssoundsettings">
					<title>Events Sound settings</title>
					<para>The following settings take care of configuring ysm's sound support.
					<para>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.</para>
					
					<variablelist>
					
					<varlistentry>
					<term>SOUNDS></term>
					<listitem><para>Enable or disable sounds globally. To enable use '1' and to disable '0'.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>SOUNDS_PROGRAM></term>
					<listitem><para>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
					</para></listitem>
					</varlistentry>
					
					
					<varlistentry>
					<term>SOUND_INCOMING></term>
					<listitem><para>Enable (1) or disable (0) the playing of the incoming message sound.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>SOUND_OUTGOING></term>
					<listitem><para>Enable (1) or disable (0) the playing of the outgoing message sound.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>SOUND_ONCOMING></term>
					<listitem><para>Enable (1) or disable (0) the playing of the oncoming slave sound.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>SOUND_OFFGOING></term>
					<listitem><para>Enable (1) or disable (0) the playing of the offgoing slave sound.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>SOUND_LOGOFF></term>
					<listitem><para>Enable (1) or disable (0) the playing of the logging off sound.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="executingcommandsfromafile">
					<title>Executing commands from a file</title>
					<para>ysm allows the user to specify a file from where to run commands, making possible
					a layer of remote account administration.
					<variablelist>
					
					<varlistentry>
					<term>COMMANDSFILE></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="charsetconvertion">
					<title>Charset convertion</title>
					<para>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.</para>
					<para>Win32 users have a list of supported charsets in the registry under the following key:
					HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NIs\CodePage</para>
					<para>Non win32 users can issue an 'iconv -l' command.</para>
					
					<para>
					
					<variablelist>
					
					<varlistentry>
					<term>CHARSET_TRANS></term>
					<listitem><para>This is the charset name to use for transfering and receiving of messages.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>CHARSET_LOCAL></term>
					<listitem><para>This is the charset name to use for inputting and displaying messages.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="browserconfiguration">
					<title>Browser configuration</title>
					<para>You may configure a browser to be triggered from inside ysm when browsing
					websites (i.e.: using the 'burl' command).
					<variablelist>
					
					<varlistentry>
					<term>BROWSER></term>
					<listitem><para>This is the full path to the browser that will handle urls.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="verbosityconfiguration">
					<title>Verbosity configuration</title>
					<para>ysm lets you change the verbosity output level for debugging purposes.
					<variablelist>
					
					<varlistentry>
					<term>VERBOSE></term>
					<listitem><para>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:
					</para><para>
					<para>- Remote status changes -> 0</para>
					<para>- Remote connecting information -> 1</para>
					<para>+ Add direct connections information -> 20</para>
					<para>+ Add data checking information -> 21</para>
					<para>+ Add incoming/outgoing packets dump -> 22</para>
					<para>+ Add slaves downloading processing -> 23</para>
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="up2datecheckconfiguration">
					<title>Up-to-date check configuration</title>
					<para>ysm allows an up-to-date check everytime you start it. It just compares your current
					version with the lastest release version, it never downloads anything.
					<variablelist>
					
					<varlistentry>
					<term>VERSION_CHECK></term>
					<listitem><para>You may specify '0' as value to disable version checking on startup.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="globalloggingconfiguration">
					<title>Global logging configuration</title>
					<para>By enabling global logging, all normal messages from/to any slave will be logged.
					Global logging is enabled by default since its the base of the well known message history
					(readable using the 'hist' command.)
					<variablelist>
					
					<varlistentry>
					<term>LOGALL></term>
					<listitem><para>You may specify '0' as value to disable global logging.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="messagesdisplayingmodes">
					<title>Messages displaying modes</title>
					<para>ysm supports different ways of displaying new incoming messages.
					<variablelist>
					
					<varlistentry>
					<term>MSG_KIND></term>
					<listitem><para>The default mode is '2'. The list of available modes is:
					</para><para>
					<para>[0] - Oneline mode</para>
					<para>[1] - Verbose mode</para>
					<para>[2] - IRC style mode</para>
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="antisocialspamprotectionmode">
					<title>Antisocial SPAM protection mode</title>
					<para>The antisocial mode makes possible the blocking of unexpected messages from
					users who aren't in our slaves list. It only blocks messages and allows the receiving of 
					authorization requests. This way you get protected against the well known SPAM messages
					and you can still communicate with users outside your list.
					<variablelist>
					
					<varlistentry>
					<term>ANTISOCIAL></term>
					<listitem><para>You can enable the antisocial mode by specifying '1' as value and disable it
					by using '0' as value.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="directconnectionssettings">
					<title>Direct connection settings</title>
					<para>ysm by default has direct connections enabled. DC allows you to establish
					peer to peer connections and to send/receive plain-text/encrypted file transfers.
					<variablelist>
					
					<varlistentry>
					<term>DC_DISABLE></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>DC_LAN></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>DC_PORT1></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>DC_PORT2></term>
					<listitem><para>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.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="semiautomaticupdateofslavenicknames">
					<title>Semi-automatic update of slave nicknames</title>
					<para>This mode allows an update of your slave nicknames with their current ones.
					The update isn't global nor automatic. It will take effect when running the 'whois' command
					against a slave. If their current nick differs with the one shown in the whois information,
					it will automatically be updated.
					<variablelist>
					
					<varlistentry>
					<term>UPDATENICKS></term>
					<listitem><para>You can enable this mode by specifying '1' as value and disable it
					by using '0' as value. This mode is enabled by default.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
				<sect2 id="win32popuphotkey">
					<title>Win32 popup Hotkey configuration</title>
					<para>This mode allows unminimizing a minimized ysm console window.
					By pressing CTRL + ALT + a key you will specify below, the minimized console window
					will popup from the tray bar and get active. This is a solution I came up with when
					I got tired of cycling through my windows with ALT + TAB. I hope you find it as much
					useful as I have!.
					<variablelist>
					
					<varlistentry>
					<term>WINHOTKEY></term>
					<listitem><para>You can specify a key to use with CTRL + ALT + key in order to 
					popup the ysm console window. The default key is 's'.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
			</sect1>
			
			<sect1 id="ysmconfigurationcommands">
				<title>ysm Configuration commands</title>
				<para>An overview of ysm client configuration related commands.</para>
								
				<sect2 id="reloadingtheconfiginruntime">
					<title>Reloading the configuration file in runtime</title>
					<para>By using this command, the user can load in ysm any modifications he made to
					the configuration file without having to restart the client.
					<variablelist>
	
					<varlistentry>
					<term>loadconfig</term>
					<listitem><para>This command doesn't require any parameters.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="autoafkmodesettingsinruntime">
					<title>Changing Automatic AFK mode settings in runtime</title>
					<para>By using this command, the user can turn the Automatic AFK mode ON or OFF
					and set the amount of minutes to wait before triggering the Automatic AFK mode. Note, 
					the changes made using this command are temporary and won't be saved in the configuration
					file. For making permanent changes please refer to the section about the configuration file.
					<variablelist>
	
					<varlistentry>
					<term>afkset [on|off]</term>
					<listitem><para>By specifying 'on', the Automatic AFK mode will be enabled. 'off' will disable it.
					</para></listitem>
					</varlistentry>
			
					<varlistentry>
					<term>afkset [minutes]]</term>
					<listitem><para>This way the user may specify the amount of minutes before triggering the
					Automatic AFK mode.
					</para></listitem>
					</varlistentry>
										

					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="beepsettingsruntime">
					<title>BEEP settings in runtime</title>
					<para>This command can enable or disable Beeping. Note, the changes made using
					this command are temporary and not saved in the configuration file.
					<variablelist>
	
					<varlistentry>
					<term>beep [on|off]</term>
					<listitem><para>By specifying 'on', Beeping will be enabled. 'off' will disable it.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
				<sect2 id="soundsettingsruntime">
					<title>SOUND settings in runtime</title>
					<para>This command can globally enable or disable sounds. Note, the changes made using
					this command are temporary and not saved in the configuration file.
					<variablelist>
	
					<varlistentry>
					<term>sounds [on|off]</term>
					<listitem><para>By specifying 'on', sounds will be enabled. 'off' will disable them.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				<sect2 id="loggingseetingsruntime">
					<title>Logging settings in runtime</title>
					<para>This command can enable or disable logging on a specific slave as well as
					enable or disable global logging. 
					<variablelist>
	
					<varlistentry>
					<term>log [on|off]</term>
					<listitem><para>By specifying 'on', global logging will be enabled. 'off' will disable it.
					</para></listitem>
					</varlistentry>
					
					<varlistentry>
					<term>log [slavename]</term>
					<listitem><para>By specifying a slavename, logging will be enabled or disabled on the
					specified slave, depending on its current setting.
					</para></listitem>
					</varlistentry>
					
					</variablelist>
					</para>
				</sect2>
				
				
			</sect1>
			
		</chapter>

		<chapter id="aboutthisguide">
		<title>About this guide</title>
			<para>A few comments I have on this guide. Might be useful to someone.</para>
			<para>I wrote this guide during a recovery period (about 48 hours) after an insignificant surgery I had.</para>
			
			<sect1 id="aboutdocbook">
				<title>About DocBook</title>
				<para>As some people might have noticed, I made use of an XML DTD called DocBook in order
				to organize the contents of this guide.</para>
				<para>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.</para>
				<para>For those of you who are interested in writing DocBook, here are a couple of links:</para>
				
				<para><ulink url="http://www.cbxtrain.com/xml/docbook/tutorial/gettingstarted/">setting the DocBook
				environment in win32 and a small DocBook introduction</ulink>
				</para>
				
				<para><ulink url="http://www.sagehill.net/xml/docbookxsl/">Using the DocBook XSL Stylesheets</ulink></para>
				
				<para><ulink url="http://developers.cogentrts.com/cogent/prepdoc/pd-axfrequentlyuseddocbooktags.html">Frequently used DocBook tags</ulink></para>
				
				<para><ulink url="http://www.w3schools.com/xml/xml_dtd.asp">XML DTD validation</ulink></para>
		
				<para>I used a win32 environment and had to replace the XT proc. with XSLTPROC.</para>
			</sect1>
			
		</chapter>
	</book>
	