updates.
[silc.git] / README
diff --git a/README b/README
index 9b94d5ca5b5fa78f8db2b458b3066a783a44fd41..da6a575df12abb756270da6a78f890a3cb593923 100644 (file)
--- a/README
+++ b/README
@@ -17,7 +17,7 @@ Description
 SILC (Secure Internet Live Conferencing) is a protocol which provides
 secure conferencing services in the Internet over insecure channel.
 SILC is IRC like softwarre although internally they are very different.
-Biggest similiarity between SILC and IRC is that they both provide
+Biggest similarity between SILC and IRC is that they both provide
 conferencing services and that SILC has almost same commands as IRC.  Other
 than that they are nothing alike.  Biggest differences are that SILC is 
 secure what IRC is not in any way.  The network model is also entirely
@@ -43,10 +43,8 @@ To run SILC server
        ./silcd -f <config file>
 
 
-Working Commands
-================
-
-Following commands has been, at least partly, implemented:
+SILC Commands
+=============
 
 
        /SERVER [<server>[:<port>]]
@@ -57,7 +55,7 @@ Following commands has been, at least partly, implemented:
 
                Changes/sets nickname.  Note that in SILC there can be
                multiple same nicknames.  However, the logic on working
-               with multiple nicknams on user interface is pretty much
+               with multiple nicknames on user interface is pretty much
                still missing.  Also note that nicknames in SILC are
                case-sensitive.
 
@@ -71,9 +69,80 @@ Following commands has been, at least partly, implemented:
                Leaves the channel.  If /leave * is given the client
                leaves the current channel.
 
-       /NAMES  <channel>
+       /CMODE  <channel> +|-<modes> [{ <arguments>}]
+
+               Changes/sets channel mode.  Most of the modes require
+               special privileges, such as channel operator or channel
+               founder privileges to work.  The mode is added by adding
+               + before the option(s) and removed by adding - before
+               the option(s).  Following modes are available:
+
+               p               Set/unset channel as private channel
+               s               Set/unset channel as secret channel
+               k               Set/unset that channel uses private channel key
+               i               Set/unset channel as invite only channel
+               t               Set/unset that only channel operator or 
+                               founder may set channel topic
+               l <limit>       Set/unset channel's user limit
+               a <passphrase>  Set/unset passphrase for channel that must
+                               be provided when joining to the channel.
+               c <cipher>      Set/unset channel's cipher
+               h <hmac>        Set/unset channel's hmac
+               f <-pubkey|<password>
+                               Set/unset channel founder authentication.
+                               Channel founder may set this mode so that
+                               if the client leaves the channel it can
+                               claim the founder rights when it returns
+                               to the channel.  If -pubkey is set then
+                               the authentication will be done using the
+                               client's public key.  You can claim the
+                               founder rights using the CUMODE command.
+
+               Multiple modes can be set/unset at once if the modes does not
+               require any arguments.  If mode requires an argument then only
+               one mode can be set at once.
+
+       /CUMODE <channel> +|-<modes> <nickname>[@<server>] [-pubkey|<passwd>]
+
+               Changes/set user's mode on a channel.  Most of the modes 
+               require that the client who changes some client's mode must
+               be channel founder or channel operator.  Following channel
+               user modes are available:
+
+               a <nickname>[@<server>]
+
+                               Set/unset all modes (cannot be used to set
+                               both founder and operator rights, can be used
+                               only to remove both modes at once).
+
+               f <nickname>[@<server>] [-pubkey|<password>]
+
+                               Set/Unset channel founder.  If the -pubkey
+                               option or <password> is provided then the
+                               client is claiming the founder rights by
+                               providing the channel founder authentication
+                               data.  If the -pubkey is provided then the
+                               authentication is performed using the
+                               client's public key.  If you are channel
+                               founder you can set the channel founder
+                               authentication using CMODE command.
+
+               o <nickname>[@<server>]
+
+                               Set/unset channel operator.  Requires that 
+                               you are channel operator or channel founder.
+
+       /UMODE  +|-<modes>
+
+               Sets/unsets user mode.  Note that some of the modes the
+               client cannot set itself.  The following user modes are
+               available:
+
+               a       Unset all modes
+               s       Unset server operator privileges
+               r       Unset router operator privileges
+               g       Set/unset to be gone (or use /AWAY command)
 
-               Lists clients currently joined to the channel.
 
        /MSG    <nickname> <message>
 
@@ -87,11 +156,50 @@ Following commands has been, at least partly, implemented:
                handling multiple same nicknames with this command is
                still missing.
 
+       /WHOWAS  <nickname>[@<server>] [<count>]
+
+               Gives a little history information about a client.
+
+       /INVITE <channel> [<nickname>[@server>]
+               [+|-[<nickname>[@<server>[!<username>[@hostname>]]]]]
+
+               Invites client to a channel or manages the invite list of
+               the channel.  The first <nickname> argument is used if an
+               client is invited to the channel.  The second +|-<nickname>
+               argument is used to either add or delete invite from the
+               channel's invite list.  Wildcards may be used with this
+               command.
+
+       /BAN    <channel> [+|-[<nickname>[@<server>[!<username>[@hostname>]]]]]
+
+               Manages the ban list of the channel.  Wildcards may be used
+               with this command.  You must be channel operator to be
+               able to use this command.
+
+        /KICK   <channel> <nickname>[@<server>] [<comment>]
+
+                Kicks client from channel. You have to be at least channel
+               operator to be able to kick client from channel.  Note:
+               you cannot kick channel founder even if you are channel
+               operator.
+
        /PING   [<server>]
 
                Pings server.  Only locally connected server may be 
                pinged.
 
+       /INFO   [<server>]
+
+               Requests information about a server.  If argument is
+               not specified current server is used.
+
+       /AWAY   [<message>]
+
+               Sets away message.  When private message is received and
+               away message is set the client automatically replies to
+               the sender with the away message.  To remove away message
+               give the command without arguments.
+
        /QUIT
 
                Quits session.  Connection to remote server is closed.
@@ -100,6 +208,144 @@ Following commands has been, at least partly, implemented:
 
                Clears current screen.
 
+       /VERSION
+
+               Shows client version.
+
+       /OPER   <username> [<public key>]
+
+               Obtains server operator privileges.
+
+       /SILCOPER <username> [<public key>]
+
+               Obtains router operator privileges.
+
+       /KILL   <nickname> [<comment>]
+
+               Router operator can use this command to remove an client
+               from the SILC Network temporarily.
+
+       /CONNECT <server> [<port>]
+
+               Connects to server the remote <server>.  You must be
+               server operator to be able to do this.
+
+
+       /CLOSE  <server> [<port>]
+
+               Closes connection to the <server>.  You must be server
+               operator to be able to do this.
+
+       /SHUTDOWN
+
+               Shutdowns the server.  You must be server operator to be
+               able to do this.
+
+       /MOTD   [<server>]
+
+               Display the MOTD of the server.  If server is not specified
+               the current server is used.
+
+       /LIST   [<channel>]
+
+               Lists all channels in the current server, or the channel
+               specified.  If the channel cannot be found then all
+               channels are listed.
+
+       /KEY    msg|channel <nickname|channel> 
+               set|unset|list|agreement|negotiate [<arguments>]
+
+               This command is used to set and unset private keys for
+               channels, set and unset private keys for private messages
+               with remote clients and to send key agreement requests and
+               negotiate the key agreement protocol with remote client.
+               The key agreement is supported only to negotiate private
+               message keys, it currently cannot be used to negotiate
+               private keys for channels, as it is not convenient for that
+               purpose.
+
+               Types:          
+
+               msg     The command is performed for private messages
+                       affecting the <nickname>.
+
+               channel The command is performed for channel affecting
+                       the <channel>.
+
+
+               Commands:
+
+               set     [<key> [<cipher>] [<hmac>]]
+
+                       Set the key into use.  If the <key> is provided it
+                       is used as the key material.  If the <key> is not
+                       provided the negotiated key material is used.  If
+                       the negotiation has not been performed this command
+                       has no effect.
+
+                       If the type is `msg' and the <key> is `*' then
+                       random key will be generated automatically.
+
+                       The <cipher> may be set for both private message
+                       and channel private keys and the <hmac> may be set
+                       only to the channel private keys.
+
+               unset   [<number>]
+
+                       Unset the key.  The private key is not used after
+                       this command.  The key must be set again or the key
+                       material must be re-negotiated to be able to use
+                       the private keys again.
+
+                       The channel may have several private keys set.  The
+                       <number> can be used to indicate what key is being
+                       unset.  If it is not provided all keys are removed.
+
+
+               list    List all private keys that has been set.
+
+                       If the type is `msg' and the <nickname> is ยด*' then
+                       all private message keys that you've set will be
+                       listed.
+
+               agreement [<hostname> [<port>]]
+
+                       Send key agreement request to remote client.  If
+                       the <hostname> is provided it is sent in the request.
+                       The receiver may use the hostname to start the
+                       key agreement.  If the <port> is also provided your
+                       key agreement protocol server is bound to that
+                       port.  Note that it cannot be privileged port (<1023).
+                       If the <hostname> and <port> is not provided then
+                       the receiver will never initiate the key agreement.
+                       In this case you must start the key agreement after
+                       receiving the reply to the request, by giving the
+                       /KEYAGR start command.
+
+                       This command may be used to send reply to the
+                       remote client.  When receiving empty key agreement
+                       you can reply to the sender with the hostname and
+                       port of your key agreement server with this command.
+
+               negotiate [<hostname> [<port>]]
+
+                       This may be called to start the key agreement with
+                       <nickname>.  This command has effect only if the
+                       <nickname> has replied to your key agreement request.
+                       You will see a notify on the screen when the reply
+                       arrives.  The <hostname> and <port> is the hostname
+                       and port of the remote client's key agreement
+                       server.
+
+       /ME     <channel> <action message>
+
+               This command is used to send an action to the channel.
+               This equals to CTCP's ACTION (IRC's /ME) command.
+
+       /NOTICE <channel> <message>
+
+               This command is used to send for example informational
+               notice messages to the channel.
 
 Features
 ========
@@ -203,8 +449,8 @@ Contact
 Feedback and comments are welcome.  You can reach me in the following
 Address. 
 
-[Note that generally bug reports should not be sent just yet as the 
-Developer's Version is full of them and the bug hunt has not even started 
-yet.]
+Official SILC project web site is   : http://silc.pspt.fi
+FTP archive for SILC project is     : ftp://silc.pspt.fi/pub/silc/
+Development mailing list address is : silc-devel@lists.sourceforge.net
 
                                Pekka Riikonen <priikone@poseidon.pspt.fi>