Added a directory and a text file for comments on how to do a good
authorDave West <davew@uncensored.citadel.org>
Sun, 27 Jul 2008 11:25:50 +0000 (11:25 +0000)
committerDave West <davew@uncensored.citadel.org>
Sun, 27 Jul 2008 11:25:50 +0000 (11:25 +0000)
method of synchronising servers over the wire.

Please add thoughts etc to the TODO.txt file

citadel/modules/sync/TODO.txt [new file with mode: 0644]

diff --git a/citadel/modules/sync/TODO.txt b/citadel/modules/sync/TODO.txt
new file mode 100644 (file)
index 0000000..326402e
--- /dev/null
@@ -0,0 +1,61 @@
+This will be a module to synchronise two Citadel servers.
+
+We should add comments here for features that are needed
+
+
+The initial plan is that this module will provide services to allow
+a new Citadel server to collect all data from an existing Citadel server
+resulting in the new server being a complete duplicate of the original.
+
+All data must be transfered over the wire.
+The data synchronised should include the log in/out messages and anyfiles 
+in a room not just the content of the message base.
+
+I think we should structure this as a series of commands that can be issued
+in any order with the exception of one command that forces the exporting
+server to go "single user" to ensure the system doesn't change during the sync.
+
+These are the commands I can think of at the moment.
+
+SNGL   Go single user.
+This will prevent new logins from happening and also prevent inbound messages
+from SMTP, IMAP RSS and IGNET etc.
+This command should allow real user to complete what they are doing and should
+probably give them a message to say the system wants to go single user.
+This command should take two arguments. The first is the time to wait for the
+system to go single user. The second argument is the time to expire single user
+mode if the requesting server disappears.
+
+ESNG   End single user mode.
+
+SYNC   Main command for all synchronisation options.
+This is to be followed by 2 or more arguments.
+Argument 1 is the type of Citadel data to be worked with eg. rooms, files
+messages, users etc.
+Argument 2 is the action to carry out on the specified data.
+
+
+So a sequence might go something like this:
+
+Unconfigured server.                           Old server
+SNGL 120|500                                   Goes single user within 120
+                                               seconds. Reverts to normal
+                                               operation if no activity
+                                               for 500 seconds.
+
+SYNC users|info                                        Send back info on the system
+                                               users. A CRC and a few other
+                                               items so that the requesting
+                                               server can determine if its
+                                               user data is out of sync.
+
+SYNC users|getall                              Send back all users info.
+
+ESNG                                           Revert back to multi user mode.
+
+
+Obviously there is lots to be worked out here. It may be a good idea to 
+timestamp every thing to determine the need for updates.
+
+If we do this right this module could replace IGNET and ARTV and could be used
+clients to sync mailboxes and calendars etc.