]> code.citadel.org Git - citadel.git/blobdiff - citadel/techdoc/protocol.txt
* implemented a postfix tcp-dict table, first draft.
[citadel.git] / citadel / techdoc / protocol.txt
index be84eb2cbd2bf50a75fe8b0ac17cf91e5c6d2f67..75b8bac48a6d97cacc3a83c74b3524a2f388ba2c 100644 (file)
@@ -293,6 +293,8 @@ room access controls:
   
  The sixth field is the user's current view for the room. (See VIEW command)
  The seventh field is the *default* view for the room. (See VIEW command)
+ The eigth field is a unix timestamp which reflects the last time the room
+  was modified (created, edited, posted in, deleted from, etc.)
  
  
  LKRO   (List Known Rooms with Old [no new] messages)
@@ -608,26 +610,31 @@ anywhere from a null listing to an infinite number of lines, to allow later
 backward compatibility.  The current implementation defines the following
 parts of the listing:
 
- Line 1  - Your unique session ID on the server
- Line 2  - The node name of the Citadel server
- Line 3  - Human-readable node name of the Citadel server
- Line 4  - The fully-qualified domain name (FQDN) of the server
- Line 5  - The name of the server software, i.e. "Citadel 4.00"
- Line 6  - (The revision level of the server code) * 100
- Line 7  - The geographical location of the site (city and state if in the US)
- Line 8  - The name of the system administrator
- Line 9  - A number identifying the server type (see below)
- Line 10 - The text of the system's paginator prompt
- Line 11 - Floor Flag.  1 if the system supports floors, 0 otherwise.
- Line 12 - Paging level.  0 if the system only supports inline paging,
+ Line 0  - Your unique session ID on the server
+ Line 1  - The node name of the Citadel server
+ Line 2  - Human-readable node name of the Citadel server
+ Line 3  - The fully-qualified domain name (FQDN) of the server
+ Line 4  - The name of the server software, i.e. "Citadel 4.00"
+ Line 5  - (The revision level of the server code) * 100
+ Line 6  - The geographical location of the site (city and state if in the US)
+ Line 7  - The name of the system administrator
+ Line 8  - A number identifying the server type (see below)
+ Line  - The text of the system's paginator prompt
+ Line 10 - Floor Flag.  1 if the system supports floors, 0 otherwise.
+ Line 11 - Paging level.  0 if the system only supports inline paging,
            1 if the system supports "extended" paging (check-only and
            multiline modes).  See the SEXP command for further information.
- Line 13 - The "nonce" for this session, for support of APOP-style
+ Line 12 - The "nonce" for this session, for support of APOP-style
            authentication.  If this field is present, clients may authenticate
            in this manner.
- Line 14 - Set to nonzero if this server supports the QNOP command.
- Line 15 - Set to nonzero if this server is capable of connecting to a
+ Line 13 - Set to nonzero if this server supports the QNOP command.
+ Line 14 - Set to nonzero if this server is capable of connecting to a
            directory service using LDAP.
+ Line 15 - Set to nonzero if this server does *not* allow self-service
+           creation of new user accounts.
+ Line 16 - The default timezone for calendar items which do not have any
+           timezone specified and are not flagged as UTC.  This will be a
+           zone name from the Olsen database.
 
  *** NOTE! ***   The "server type" code is intended to promote global
 compatibility in a scenario in which developers have added proprietary
@@ -885,19 +892,21 @@ which will tell the client whether the file needs to be read (see GOTO above).
 
  DELE   (DELEte a message)
 
- Delete a message from the current room.  The one argument that should be
-passed to this command is the message number of the message to be deleted.
-The return value will be OK if the message was deleted, or an ERROR code.
-If the delete is successful, the message's reference count is decremented, and
-if the reference count reaches zero, the message is removed from the message
-base.
+ Delete one or more messages from the current room.  The one argument that
+should be passed to this command is a message number, or a list of message
+numbers separated by commas, to be deleted.
+
+ The return value will be OK if one or more messages were deleted, or an ERROR
+code.  If the delete is successful, the messages' reference counts are
+decremented, and if the reference count reaches zero, the messages are removed
+from the message base.
 
 
  MOVE   (MOVE or copy a message to a different room)
 
  Move or copy a message to a different room.  This command expects to be
 passed three arguments:
- 0: the message number of the message to be moved or copied.
+ 0: the message number(s) of the message to be moved or copied.
  1: the name of the target room.
  2: flag: 0 to move the message, 1 to copy it without deleting from the
     source room.
@@ -905,6 +914,9 @@ passed three arguments:
  This command never creates or deletes copies of a message; it merely moves
 around links.  When a message is moved, its reference count remains the same.
 When a message is copied, its reference count is incremented.
+ You can move/copy multiple messages with a single command by separating the
+message numbers with commas; for example:  MOVE 112,113,114|Trash|0
 
 
  KILL   (KILL current room)
@@ -1662,6 +1674,14 @@ otherwise, it returns OK followed by a number representing the current state
 of the flag.
 
 
+ HALT   (HALT the server without shutting it down)
+ Identical to the DOWN command, except instead of exiting, the server process
+cleans up and then suspends indefinitely.  This could potentially be useful for
+shutdown scripts that don't want init to automatically respawn another citserver
+process.
+
+
  EMSG   (Enter a system MeSsaGe)
 
  This is the opposite of the MESG command - it allows the creation and editing
@@ -1869,6 +1889,8 @@ fails for any reason, ERROR is returned.
  46. Flag (0 or 1) - perform journaling of email messages
  47. Flag (0 or 1) - perform journaling of non-email messages
  48. Address to which journalized messages are to be sent
+ 49. Default time zone (Olsen database name) for unzoned calendar items
+ 50. Port number for Postfix TCP Dict (http://www.postfix.org/tcp_table.5.html)
 
  CONF also accepts two additional commands: GETSYS and PUTSYS followed by an
 arbitrary MIME type (such as application/x-citadel-internet-config) which
@@ -2139,15 +2161,30 @@ may be issued:
   ERROR codes will be returned.
  
  ICAL sgi|<bool>
+  Readers who are paying attention will notice that there is no subcommand to
+  send out meeting invitations.  This is because that task can be handled
+  automatically by the Citadel server.  Issue this command with <bool> set to 1
+  to enable Server Generated Invitations.  In this mode, when an event is saved
+  to the user's Calendar> room and it contains attendees, Citadel will
+  automatically turn the event into calendar REQUEST messages and mail them
+  out to all listed attendees.  If for some reason the client needs to disable
+  Server Generated Invitations, the command may be sent again with <bool> = 0.
+ ICAL getics
+  Output the contents of the entire calendar (assuming we are in a calendar
+  room) as one big data stream.  All of the events (or tasks, etc.) in the room
+  are combined into a single VCALENDAR object, which is then serialized and
+  transmitted to the client.  This is suitable for subscribing to a calendar
+  in third-party software.  This command will output LISTING_FOLLOWS followed
+  by the calendar data stream, or ERROR if the requested operation is not
+  permitted.
  
- Readers who are paying attention will notice that there is no subcommand to
-send out meeting invitations.  This is because that task can be handled
-automatically by the Citadel server.  Issue this command with <bool> set to 1
-to enable Server Generated Invitations.  In this mode, when an event is saved
-to the user's Calendar> room and it contains attendees, Citadel will
-automatically turn the event into vCalendar REQUEST messages and mail them
-out to all listed attendees.  If for some reason the client needs to disable
-Server Generated Invitations, the command may be sent again with <bool> = 0.
+ ICAL putics
+  Delete the entire contents of a calendar room and replace it with the calendar
+  supplied by a client-input data stream.  This is suitable for publishing a
+  calendar from third-party software.  This command will output SEND_LISTING and
+  then expect the client to transmit the calendar data stream.  Alternatively,
+  it will return ERROR if the requested operation is not permitted.
 
 
 
@@ -2238,6 +2275,7 @@ only in rooms to which the user does not have access.
 guaranteed to continue to exist in this form.
 
 
+
 EUID   (get message number using an EUID)}
 
  Returns the message number, if present, of the message in the current room