updates.
[silc.git] / README
diff --git a/README b/README
index d396d704c019fb265cdf34806324d094a65f01a5..da6a575df12abb756270da6a78f890a3cb593923 100644 (file)
--- a/README
+++ b/README
@@ -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>]]
@@ -88,18 +86,23 @@ Following commands has been, at least partly, implemented:
                l <limit>       Set/unset channel's user limit
                a <passphrase>  Set/unset passphrase for channel that must
                                be provided when joining to the channel.
-               b <username!nickname@server>    
-                               Add client to/remove client from ban list
-               I <username!nickname@server>    
-                               Add client to/remove client from invite list
-               c <cipher>[:<keylen>]
-                               Set/unset channel's cipher
+               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>]
+       /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
@@ -107,17 +110,40 @@ Following commands has been, at least partly, implemented:
                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>]
-                               Unset channel founder.  Channel founder rights
-                               cannot be set by user (only by server) so this
-                               can be used only to unset the mode.
+
+               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)
+
+
        /MSG    <nickname> <message>
 
                Sends private message to remote client.  Support for
@@ -130,6 +156,26 @@ 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
@@ -166,13 +212,26 @@ Following commands has been, at least partly, implemented:
 
                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>
+       /CLOSE  <server> [<port>]
 
                Closes connection to the <server>.  You must be server
                operator to be able to do this.
@@ -182,6 +241,111 @@ Following commands has been, at least partly, implemented:
                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
 ========