./silcd -f <config file>
-Working Commands
-================
-
-Following commands has been, at least partly, implemented:
+SILC Commands
+=============
/SERVER [<server>[:<port>]]
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
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
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
========