From 12a7131cd379c7df201dd7b33ea1482880ed2f08 Mon Sep 17 00:00:00 2001 From: Dave West Date: Sun, 27 Jul 2008 11:25:50 +0000 Subject: [PATCH] Added a directory and a text file for comments on how to do a good method of synchronising servers over the wire. Please add thoughts etc to the TODO.txt file --- citadel/modules/sync/TODO.txt | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 citadel/modules/sync/TODO.txt diff --git a/citadel/modules/sync/TODO.txt b/citadel/modules/sync/TODO.txt new file mode 100644 index 000000000..326402e50 --- /dev/null +++ b/citadel/modules/sync/TODO.txt @@ -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. -- 2.30.2