updates.
[silc.git] / README
diff --git a/README b/README
index e9237fd3481232bbe20d13d45e95a71f083b788f..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>]]
@@ -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,6 +69,81 @@ Following commands has been, at least partly, implemented:
                Leaves the channel.  If /leave * is given the client
                leaves the current 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)
+
+
        /MSG    <nickname> <message>
 
                Sends private message to remote client.  Support for
@@ -83,6 +156,33 @@ 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 
@@ -112,6 +212,140 @@ 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> [<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
 ========
@@ -215,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>