Wiki

Clone wiki

pysksync / Home

Welcome

Pure Python (partial) implementation of SK Sync protocol http://www.sktechnology.net/android/sksync/

Currently supports talking to original SK Sync server version 1.0.01 and a original SK Sync (android) client can talk to Python SK Sync server using the direction setting of "from server (use time)" with recursive set to either yes or no.

pysksync implements some optional basic security enhancements that can be used even with the old Android client. There are also more advanced security enhancements that are not backwards compatible with the original implementation.

Supported Sync types

  • SKSYNC_PROTOCOL_TYPE_FROM_SERVER_USE_TIME

From server will ensure new/modified files are on both client and server.

  • Deleted (server side) files, stay on the client.
  • Renamed (server side) files, end up as duplicates on the client.
  • Moved (server side) files, end up as duplicates on the client.

Currently SKSYNC_PROTOCOL_TYPE_FROM_SERVER_USE_TIME is implemented.

The following are implemented but the testsuite does not have full tests SKSYNC_PROTOCOL_TYPE_TO_SERVER_USE_TIME - there are tests for this - this may be as well tested as FROM_SERVER SKSYNC_PROTOCOL_TYPE_BIDIRECTIONAL_USE_TIME - implemented and hand tested

The following are not (yet?) implemented:

  • wildcard_NO_TIME - should be trivial, just remove timestamp checks.
    • SKSYNC_PROTOCOL_TYPE_FROM_SERVER_NO_TIME - should be trivial, just remove timestamp checks.

Enhancements

  • (JSON formatted) user editable config file
  • full control over used ports
  • only allow sync with directories specified by the server, prevents clients from accessing the entire server machine
  • TLS/SSL support - encryption and optional certificate check for both client and server
  • Authenticated clients via Secure Remote Password protocol (SRP-6a) support, see http://srp.stanford.edu/
  • Compression support https://bitbucket.org/clach04/pysksync/branch/compression - for my use case (many small text files) negligible benefit
  • Checksum support to detect comms errors
  • different file protection methods to avoid destroying existing files in case of (comms) errors and other interuptions

To Do

Implement a gui (around) https://github.com/ponty/psidialogs (currently a very basic and limited demo around EasyDialogs is implemented that runs under Windows and Android).

Updated