updteas.
authorPekka Riikonen <priikone@silcnet.org>
Fri, 23 Mar 2001 12:36:49 +0000 (12:36 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Fri, 23 Mar 2001 12:36:49 +0000 (12:36 +0000)
CHANGES
doc/draft-riikonen-silc-pp-01.nroff
doc/draft-riikonen-silc-spec-01.nroff
lib/silccore/silccommand.h
lib/silccore/silcmode.h
lib/silccore/silcnotify.h

diff --git a/CHANGES b/CHANGES
index f6bc838f95cc49a1146251f22951f0fd2728df66..c6c440a78453c4647ab84801c1380d5cc1da2edd 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,25 @@
+Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Redefined the INVITE command.  The same command can be used to
+         invite individuals to the channel but also to manage the invite
+         list of the channel (to add to and remove from the invite list).
+         Updated the protocol specs.
+
+       * Added new command SILC_COMMAND_BAN that can be used to manage
+         the ban list of the channel.  Updated the protocol specs.
+
+       * Removed the channel modes: the SILC_CMODE_BAN and the 
+         SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
+         in the CMODE command.  The equivalent features are now available
+         using INVITE and BAN commands.  Updated the protocol specs.
+
+       * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
+         in the network about change in the current ban list.  The notify
+         type is not used by the client.
+
+       * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to 
+         support the invite lists.
+
 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
 
        * Added new function silc_string_regexify that converts string
index 72cacb809c55d8b3c5617f76b8e141682fadeaf0..1c8374fd2c2aaf7a1d191214f5ae9471e746144c 100644 (file)
@@ -1123,14 +1123,25 @@ ID's sent in arguments are sent inside ID Payload.
 
 1     SILC_NOTIFY_TYPE_INVITE
 
-      Sent when receiver has been invited to a channel.  This type must be
-      sent directly to the invited client.
+      Sent when an client is invited to a channel.  This is also sent
+      when the invite list of the channel is changed.  This notify type
+      is sent between routers and if the <Client ID> is argument is
+      provided to the client as well.
 
-      Max Arguments:  2
-          Arguments:  (1) <Client ID>  (2) <Channel ID>
+      Max Arguments:  4
+          Arguments:  (1) [<Client ID>]       (2) <Channel ID>
+                      (3) [<adding client>]   (4) [<removing client>]
+
+      The <Client ID> is the client which was invited to the channel.
+      The <Channel ID> is the channel.  The <adding client> and the
+      <removing client> indicates the added or removed client from the
+      channel's invite list.  The format of the <adding client and the
+      <removing client> is defined in the [SILC1] with SILC_COMMAND_INVITE
+      command.
 
-      The <Client ID> is the client who invites the receiver of this type 
-      to channel indicated by <Channel ID>.
+      The <adding client> and <removing client> is never sent to the
+      client indicated by the <Client ID>.  Also note that the lists
+      include the <Client ID> already.
 
 
 2     SILC_NOTIFY_TYPE_JOIN
@@ -1142,10 +1153,14 @@ ID's sent in arguments are sent inside ID Payload.
       broadcast it to the network.
 
       Max Arguments:  2
-          Arguments:  (1) <Client ID>  (2) <Channel ID>
+          Arguments:  (1) [<Client ID>]       (2) <Channel ID>
 
       The <Client ID> is the client that joined to the channel indicated
-      by the <Channel ID>.
+      by the <Channel ID>.  The <adding client> and <removing client>
+      indicates the added or removed client in the current invite list.
+      The format of the <adding client> and the <removing client> is
+      defined in the [SILC1] with SILC_COMMAND_INVITE command.  If the
+      <Client ID> is not provided then this
 
 
 3     SILC_NOTIFY_TYPE_LEAVE
@@ -1313,6 +1328,23 @@ ID's sent in arguments are sent inside ID Payload.
       The <Client ID> is the client which mode was changed.  The <mode mask>
       is the new mode mask.
 
+
+15    SILC_NOTIFY_TYPE_BAN
+
+      Sent when the ban list of the channel is changed.  This type is sent
+      only between routers as broadcast packet.
+
+      Max Arguments:  3
+          Arguments:  (1) <Channel ID>         (2) [<adding client>]
+                      (3) [<removing client>]
+
+      The <Channel ID> is the channel which ban list was changed.  The
+      <adding client> is used to indicate the a ban was added and the
+      <removing client> is used to indicate that a ban was removed from
+      the ban list.  The format of the <adding client> and the 
+      <removing client> is defined in the [SILC1] with SILC_COMMAND_BAN
+      command.
+
 .in 3
 
 Notify types starting from 16384 are reserved for private notify
index 4913b100096bed7612feb3fb3babf7e8f7424c88..2f6582887c555fd8078272b7b213248bc54847e5 100644 (file)
@@ -2263,17 +2263,43 @@ List of all defined commands in SILC follows.
 
    7    SILC_COMMAND_INVITE
 
-        Max Arguments:  2
-            Arguments:  (1) <Client ID>  (2) <Channel ID>
+        Max Arguments:  4
+            Arguments:  (1) [<Client ID>]      (2) [<Channel ID>]
+                        (3) [<adding client>]  (4) [<removing client>]
 
         This command is used to invite other clients to join to the
         channel.  The <Client ID> argument is the target client's ID that
         is being invited.  The <Channel ID> is the Channel ID of the
         requested channel.  The sender of this command must be on the
-        channel.  This command must fail if the requested channel does
-        not exist, the requested client is already on the channel or if
-        the channel is invite only channel and the caller of this command
-        does not have at least channel operator privileges.
+        channel.  The server must also send the notify type
+        SILC_NOTIFY_TYPE_INVITE to its primary router and then to the
+        client indicated by the <Client ID>.
+
+        The <adding client> and <removing client> can be used to add to
+        and remove from the invite list.  The format of the <adding client>
+        and <removing client> is as follows:
+
+            [<nickname>[@<server>]!][<username>]@[<hostname>]
+
+        When adding to or removing from the invite list the server must
+        send the notify type SILC_NOTIFY_TYPE_INVITE to its primary router
+        and must not send it to the client which was added to the list.
+        The client which executes this command must have at least channel
+        operator privileges to be able to add to or remove from the invite
+        list.  The wildcards may be used with this command.  If adding or
+        removing from than one clients then the lists are an comma (`,')
+        separated list.
+
+        Note that the <Client ID> provided must be resolved into correct
+        nickname and hostname and add to the invite list before sending
+        the notify packet.
+        
+        When this command is given without any arguments then the command
+        merely returns the invite list of the channel.   This command must
+        fail if the requested channel does not exist, the requested
+        <Client ID> is already on the channel or if the channel is invite
+        only channel and the caller of this command does not have at least
+        channel operator privileges.
 
         Reply messages to the command:
 
@@ -2653,11 +2679,10 @@ List of all defined commands in SILC follows.
 
    17   SILC_COMMAND_CMODE
 
-        Max Arguments:  8
+        Max Arguments:  6
             Arguments:  (1) <Channel ID>    (2) <channel mode mask>
                         (3) [<user limit>]  (4) [<passphrase>]
-                        (5) [<ban mask>]    (6) [<invite list>]
-                        (7) [<cipher>]      (8) [<hmac>]
+                        (5) [<cipher>]      (6) [<hmac>]
 
         This command is used by client to set or change channel flags on
         a channel.  Channel has several modes that set various properties
@@ -2785,46 +2810,7 @@ List of all defined commands in SILC follows.
               to set/unset this mode.
 
 
-           0x0080    SILC_CMODE_BAN
-
-              Ban mask has been set to the channel.  The ban mask
-              may be used to ban specific clients to join the channel.
-              The <ban mask> argument is the set ban mask.  When
-              unsetting a ban mask the mask must be provided as
-              argument.  Channel founder and channel operator may
-              set/unset this mode.  Channel founder may not be
-              added to the ban list.  <ban mask> is an comma (`,')
-              separated list of banned clients in the following format:
-
-                [<nickname>[@<server>]!][<username>]@[<hostname>]
-
-              Wildcards maybe used when banning clients.
-
-              Typical implementation would use [+|-]b on user interface
-              to set/unset this mode.
-
-
-           0x0100    SILC_CMODE_INVITE_LIST
-
-              Invite list has been set to the channel.  The invite list
-              can be used to mark the clients that is able to join
-              channel without being invited when the channel is set to
-              be invite-only channel.  The <invite list> argument is the
-              set invite mask.  When unsetting entry from the invite list
-              the entry must be provided as argument.  Channel founder and
-              channel operator may set/unset this mode.  The <invite list>
-              is command (`,') separated list of invited clients in the
-              following format:
-
-                [<nickname>[@<server>]!][<username>]@[<hostname>]
-
-              Wildcards maybe used when setting the invite list.
-
-              Typical implementation would use [+|-]I on user interface
-              to set/unset this mode.
-
-        
-           0x0200    SILC_CMODE_CIPHER
+           0x0080    SILC_CMODE_CIPHER
 
               Sets specific cipher to be used to protect channel
               traffic.  The <cipher> argument is the requested cipher.
@@ -2837,7 +2823,7 @@ List of all defined commands in SILC follows.
               to set/unset this mode.
 
 
-           0x0400    SILC_CMODE_HMAC
+           0x0100    SILC_CMODE_HMAC
 
               Sets specific hmac to be used to compute the MACs of the
               channel message.  The <hmac> argument is the requested hmac.
@@ -2878,7 +2864,7 @@ List of all defined commands in SILC follows.
             SILC_STATUS_ERR_NO_SUCH_CLIENT_ID
 
 
-   19   SILC_COMMAND_CUMODE
+   18   SILC_COMMAND_CUMODE
 
         Max Arguments:  3
             Arguments:  (1) <Channel ID>  (2) <mode mask>
@@ -3173,7 +3159,54 @@ List of all defined commands in SILC follows.
             SILC_STATUS_ERR_NOT_ON_CHANNEL
 
 
-   26 - 199
+   26   SILC_COMMAND_BAN
+
+        Max Arguments:  3
+            Arguments:  (1) [<Channel ID>]       (2) [<adding client>]
+                        (3) [<removing client>]
+
+        This command is used to manage the ban list of the channel
+        indicated by the <Channel ID>.  A client that is banned from
+        channel is no longer able to join the channel.  The client which
+        is executing this command must have at least channel operator
+        privileges on the channel.
+
+        The <adding client> and <removing client> are used to add to and
+        remove from the ban list.  The format of the <adding client> and
+        the <removing client> is of following format:
+
+            [<nickname>[@<server>]!][<username>]@[<hostname>]
+
+        The server must send the notify type SILC_NOTIFY_TYPE_BAN to its
+        primary router after adding to or removing from the ban list.
+        The wildcards may be used with this command.  If adding or removing
+        from than one clients then the lists are an comma (`,') separated
+        list.
+
+        If this command is executed without any arguments the command
+        merely replies with the current ban list.
+
+
+        Reply messages to the command:
+
+        Max Arguments:  3
+            Arguments:  (1) <Status Payload>  (2) <Channel ID>
+                        (3) [<ban list>]
+
+        This command replies with the <Channel ID> of the channel and
+        the current <ban list> of the channel if it exists.
+
+        Status messages:
+
+            SILC_STATUS_OK
+            SILC_STATUS_ERR_NOT_REGISTERED
+            SILC_STATUS_ERR_TOO_MANY_PARAMS
+            SILC_STATUS_ERR_NO_SUCH_CHANNEL_ID
+            SILC_STATUS_ERR_NOT_ON_CHANNEL
+            SILC_STATUS_ERR_NO_CHANNEL_PRIV
+
+
+   27 - 199
 
         Currently undefined commands.
 
index dd20052dc81cf22d6e4470ca41260045616831a0..acd3b1cb421bed5a709ed57fc425c60887985a7a 100644 (file)
@@ -85,6 +85,7 @@ typedef enum {
 #define SILC_COMMAND_SILCOPER          23
 #define SILC_COMMAND_LEAVE             24
 #define SILC_COMMAND_USERS             25
+#define SILC_COMMAND_BAN               26
 
 /* Reserved */
 #define SILC_COMMAND_RESERVED           255
index 6949845bc08c545c07755fb3276cbd8c8edabdc3..9a5c4a08de0480a081d68b0bf4873ef1b17ef4ed 100644 (file)
 #define SILC_CHANNEL_MODE_TOPIC       0x0010 /* topic setting by operator */
 #define SILC_CHANNEL_MODE_ULIMIT      0x0020 /* user limit set */
 #define SILC_CHANNEL_MODE_PASSPHRASE  0x0040 /* passphrase set */
-#define SILC_CHANNEL_MODE_BAN         0x0080 /* ban list set */
-#define SILC_CHANNEL_MODE_INVITE_LIST 0x0100 /* invite list set */
-#define SILC_CHANNEL_MODE_CIPHER      0x0200 /* sets cipher of the channel */
-#define SILC_CHANNEL_MODE_HMAC        0x0400 /* sets hmac of the channel */
+#define SILC_CHANNEL_MODE_CIPHER      0x0080 /* sets cipher of the channel */
+#define SILC_CHANNEL_MODE_HMAC        0x0100 /* sets hmac of the channel */
 
 /* User modes on channel */
 #define SILC_CHANNEL_UMODE_NONE       0x0000 /* Normal user */
index 3b42fbaa368baa9b0fa6275b386e5a1bdad9930f..08a2fc918c4125d625f00db7c984bff796b3e54b 100644 (file)
@@ -30,7 +30,7 @@ typedef unsigned short SilcNotifyType;
 /* SILC notify types. Server may send these notify types to client to
    notify of some action. */
 #define SILC_NOTIFY_TYPE_NONE            0 /* no specific type */
-#define SILC_NOTIFY_TYPE_INVITE          1 /* "invites you to channel" */
+#define SILC_NOTIFY_TYPE_INVITE          1 /* invites/invite list change */
 #define SILC_NOTIFY_TYPE_JOIN            2 /* "has joined channel" */
 #define SILC_NOTIFY_TYPE_LEAVE           3 /* "has left channel" */
 #define SILC_NOTIFY_TYPE_SIGNOFF         4 /* "signoff" */
@@ -44,6 +44,7 @@ typedef unsigned short SilcNotifyType;
 #define SILC_NOTIFY_TYPE_KICKED          12 /* Kicked from channel */
 #define SILC_NOTIFY_TYPE_KILLED          13 /* Killed from the network */
 #define SILC_NOTIFY_TYPE_UMODE_CHANGE    14 /* user mode was changed */
+#define SILC_NOTIFY_TYPE_BAN             15 /* ban list change */
 
 /* Prototypes */
 SilcNotifyPayload silc_notify_payload_parse(SilcBuffer buffer);