Here is a schema showing the client-side architecture:
Handles the basic commandline arguments, creates the Manager, and depending on the argument creates a ConsoleApplication or Application.
Handles all the generic behavior of Nuxeo Drive: auto-updates, bind of an engine, declaration of different engine types, tracker.
Handles one server synchronization. It creates all the synchronization structure: QueueManager, LocalWatcher, RemoteWatcher, DAO. It can be extended to customize the behavior.
Abstraction for accessing the SQLite database. Each Engine has its own DAO and so database.
Handles the local scan on startup and then the FS events, updating the States stored in DAO, and if needed queueing the State to be processed.
Handles the remote scan for the first synchronization and then the incremental polling from the server.
Handles the different types of Processor to process any remote or local modification.
Specialized thread in uploading document
Specialized thread in create remote folder
Specialized thread in download document
Specialized thread in create local folder
If the queue is big, some additional Processors will be launched by the QueueManager to either download or upload document.
Handles the auto-update polling and the update download process.
Used for Analytics, anonymous report of usage.
Console behavior implementation
OperatingSystem GUI handles the creation of windows, systray and message.
Loads labels translation and offers the translation service as static method.
QT is heavily used in the new client. Here is a diagram of the signals/slots connections:
We recommend you to always have an up-to-date version of Nuxeo Drive.
Nuxeo Drive use a token-based authentication. It first authenticates the user through a server authentication page so it uses the same authentication mechanism as your Nuxeo instance.
Once the authentication is done, Nuxeo generates a token and sends it to the Drive module.
The token is stored inside the user profile Nuxeo Drive database. We recommend that you encrypt UserProfile with the OS mechanism.
Nuxeo Drive will access the following folders:
.nuxeo-drive, inside user profile
Nuxeo Driveor the root folder for synchronization
Nuxeo Drive applicationfor the autoupdate mechanism
Nuxeo Drive uses only HTTP(S) connection and doesn't bind any sockets.
The auto-update module initiates connection to the update website (community.nuxeo.com by default) at regular intervals specified in the client configuration.
Each Nuxeo Drive engine initiates HTTP connection to your Nuxeo Server based on the URL you provided. If you mapped with SSL the connection will be secured.
The auto-lock feature uses the
SE_DEBUG_PRIVILEGE to list every processes for the current user and their opened handlers.
The Drive process runs under user rights, so it is bound to the same restrictions on the OS and filesystem.