Syncthing client implementation in Python, a dumb study

Hi everyone,

I got really interested in Syncthing, proudly running it on my raspberry pi. I did a simple, dumb implementation of the protocol (v0.11) in Python using sockets as a way to learn about distributed applications and cryptography, right now it is able to connect to a single Syncthing instance and download all files to a local folder (hopefully) and keep updating them according index updates.

Be aware that it doesn’t check for errors, don’t use it with personal data!

Hopefully that’s gonna help out people to learn about the protocol and to continue doing awesome stuff.

My next step is to implement the discovery system :smile: .

6 Likes

That’s neat! Apart from being a nice exercise, this might be the “simple backup destination” feature people keep asking for. Just don’t implement support for deletes.

1 Like

Cool! I just did that, hope you guys find it useful, instead of removing files it renames them with a timestamp.

It’s been pretty good to work with the documentation, the protocol is very well explained, thanks. The code now is supporting local and global discovery and I think the next step is lz4 compression.

On the process I’m learning Go, hopefully I’ll be able to contribute to the project in the future.

1 Like