shoop
shoop copied to clipboard
support shooping TO the server, not just shooping FROM
The easiest way to implement this with current code would be to start shoop in daemon mode on the server (much like sshd) and upon incomming connection, it would decide in which mode to start the transfer - you'd need to send direction information before the file transfer that would indicate the direction - INCOMMING or OUTGOING. Then the daemon could start the transfer either in server or in client mode.
Well, shoop in server mode already daemonizes while it's sending the file. But you're right, unless I'm mistaken I think all we need to do is have a command-line flag in server mode to distinguish "serve from" or "receive to", and then refactor the code a bit so either the server or client can run that "recv_file" or "send_file" method.
Yes, true, but I meant for the shoop server to be ON all the time, much like sshd, so you could shoop TO/FROM the server anything anytime (if you have the ssh key ofc..), but this would require some form of authentication...
Yep, right now shoop's authentication approach is "use SSH" since it's something that sysadmins already have setup. The authentication is then carried on through NaCl's secret-key authenticated encryption (XSalsa20/Poly1305). The way that it's not ideal is that the SSH handshake is super slow.
If we were to support our own authentication scheme, I think I'd probably move all our crypto fun to go with @trevp's Noise protocol, which already has a rust implementation too.
I heard my name! - Happy to give advice on Noise, the rust lib (screech) needs some API cleanup, which I should get to in a few weeks...
What is the delta (from the wished state) towards a two way sync?
@nickma82 To be honest, I'd like to rewrite shoop using Tokio. Now that async File I/O is stable there, it's a no-brainer. Because of this wish, I haven't put a lot of effort into adding new features to shoop in the mean time.
However, I think the delta for two-way sync wouldn't be very insane but I don't have a specific task list for you. The code is kind of already set up to drop in the other-way sync functionality though in the right places.