16 ms·
Show HN: LANDrop – A cross-platform AirDrop-like file transfer tool
- taylorfinley 5y agoFirst impression, this looks nice! But on Linux dragging a folder into the file box doesn't work, that's a pretty simple but important feature IMO. Good work!
- yvbbrjdr 5y agoI'm not sure why it didn't work on your machine.. It works on mine..
- chetangoti 5y agoThis looks good. There is similar tool which web based and opensource Snapdrop[0](https://snapdrop.net/ https://snapdrop.net/) which works on the same network. [0] https://github.com/RobinLinus/snapdrop https://github.com/RobinLinus/snapdrop
- yamrzou 5y agoAlso ShareDrop: https://www.sharedrop.io/ https://www.sharedrop.io/ https://github.com/szimek/sharedrop https://github.com/szimek/sharedrop
- plibither8 5y agoAlso FilePizza: https://file.pizza/ https://file.pizza/ https://github.com/kern/filepizza https://github.com/kern/filepizza
- anaganisk 5y agoI was never able to make file.pizza work either on lan or over the web.
- jerrygoyal 5y agoto point out this is different and needs network data to upload and download files.
- dzhiurgis 5y agoTried using Sharedrop and it was super slow. Way quicker to just upload to wetransfer.
- crossroadsguy 5y agoHaving actual apps go a long way. Especially if it’s trying to be an AirDrop like app and these apps not being electron apps is such an added bonus.
- nguyenkien 5y agoI prefer PWA like snapdrop. All you need is a browser.
- edwinyzh 5y agoTried snapdrop, but it didn't work. Not sure if it's related to the GFW....
- luke2m 5y agoEasily self hostable as well
- yvbbrjdr 5y agoYeah I've also done my research and found a lot of similar stuff. The problem with this particular one is it requires Internet* to work. I don't feel good about WebRTC and having to share my public IP address for such a task. Also, it requires you to open a webpage every time you use it. I'd really like the user experience of AirDrop that you need to do nothing to receive files. So I made LANDrop a daemon-like stuff. * It has a mode that you can save the page offline, but that doesn't work with iOS.
- integricho 5y agoThanks for not making another Electron based desktop app. Amazing work, congrats!
- n3storm 5y agoIs there a directive, good practice, neuroscience advantage I am not aware of in not publishing screenshots or screencapture of sofware?
- yvbbrjdr 5y agoJust lazy and not having the time to do this yet. Making a screenshot work with the webpage takes a lot of effort.
- tjohns 5y agoFirst off, this looks like a nice project. So please take this as constructive criticism: 1. This really should have screenshots published. Especially when comparing with something polished like AirDrop, the UX is important. You even call this out as one of the features, so it's really odd not seeing the screenshots to support that statement. 2. "Uses state-of-the-art cryptography algorithm" isn't very reassuring. It would be nice to know what standards your using, maybe some details about the underlying protocol. 3. For Android, please consider publishing in Google Play or other stores. I'm not going to enable "untrusted sources" and install a random APK off the Internet.
- faeyanpiraat 5y agoApp seems to be using this: https://libsodium.gitbook.io/doc/secret-key_cryptography/aead/chacha20-poly1305/ietf_chacha20-poly1305_construction https://libsodium.gitbook.io/doc/secret-key_cryptography/aea... I have little experience with cryptography, and have no idea whether it is a good choice or not. If it is, how would you convince regular people that the state of the art “something something sodium chachacha” crypto algorithm in the app is the best for them? It might be better not to mention the name. Some stats would be nice, like: your files would take X years to decrypt if stolen (backed by some trusted sources).
- _1tan 5y agolibsodium is a solid choice.
- tjohns 5y ago> If it is, how would you convince regular people that the state of the art “something something sodium chachacha” crypto algorithm in the app is the best for them? Personally, I'd make a separate page with more details for the subset of folks who are interested. It doesn't need to be on the main page, but at least something to reassure technical users that the project hasn't rolled it's own DIY crypto would help. :) (And yes, libsodium is a great choice.)
- GordonS 5y agoYou could have "state-of-the-art cryptography algorithm" as a link to a page with more details. Or just put the name of the algorithm in brackets afterwards, e.g. "state-of-the-art cryptography algorithm (ChaCha blah AES blah)".
- sgt 5y agoDoes it work over WiFi direct.. meaning I can send a file to someone on Android without them being on the same WiFi network? That is the primary reason I find AirDrop so useful.
- yvbbrjdr 5y agoNo :) iOS wouldn't let apps do this.
- jlanger 5y agoI agree completely with @tjohns first point, if you're calling out UX as a top point then you really should have screenshots. You should have screenshots anyway.. I dislike having to download something just to see what it looks like. Not having screenshots just makes the barrier to entry higher. Second point, you really need to make sure spelling is correct (i.e. "celluar" should be "cellular"), that degrades the perceived quality of the product. If I see spelling mistakes on the landing page then I assume there might be other kinds of mistakes... like in the codebase for instance.
- yvbbrjdr 5y agoSry about the spelling. Will fix it soon!
- sm4rk0 5y agoHow does this compare to LanXchange? https://github.com/tfg13/LanXchange https://github.com/tfg13/LanXchange
- rvz 5y agoLanXchange: Uses Java, no iOS support and I see nothing around if there is any use of encryption.
- fulafel 5y agoGlancing at your crypto implementation[1], it seems to contain newbie mistakes - eg no public key crypto involved in your public keys, usage of low level raw crypto algorithm primitives from libsodium without session, replay etc related security concerns, no signs of design requiremnts re what security guarantees it's trying to provide, no PK key management, etc. You're also hand rolling wire protocol code in C++, manipulating raw bytes and lengths, which is a receipe for memory safety vulnerabilities. Use an pre vetted implementation of a good security protocol for this, or if this is a hobby project, spend some time reading up on crypto protocol design. [1] https://github.com/LANDrop/LANDrop/blob/master/LANDrop/crypto.cpp https://github.com/LANDrop/LANDrop/blob/master/LANDrop/crypt...
- _1tan 5y agoAny pointers to good sources on crypto protocol design?
- fulafel 5y agohttps://blog.cryptographyengineering.com/useful-cryptography-resources/ https://blog.cryptographyengineering.com/useful-cryptography... this link page is from 2012, but still pretty good.
- _1tan 5y agoThank you
- api 5y agoA great starting point to learn about crypto is to first study current best practices until you understand exactly why they are best practices. Then go through a list of vulnerabilities that have been found in flawed algorithms or constructions and try to understand how each of these vulnerabilities works. Keep digging into these rabbit holes until you feel like you have a grasp on what a good construction looks like and common pitfalls.
- eps 5y agoIf you feel like throwing "newbie" accusations around, it'd be prudent to back your list of grievances up with more than a single link to crypto.cpp. Chances are you misread the code, didn't grok what the op was doing, etc. As it stands your comment reads like a common variety abrasive and dismissive gatekeeping... rant, basically, which is unfortunately so popular in crypto circles. Edit - the project does dearly need a crypto spec. "Uses state-of-the-art cryptography algorithm" claim begs to be described to be valid.
- jimmydorry 5y agoSharing from win10 to iPadOS (14.4.2) was very flakey. Installed the app on PC and tablet easily, however win10 couldn't see the tablet unless I restarted the app each time. After understanding the workflow, sending files was pretty slick, but janky. I suspect the iPadOS app is only announcing when it opens for the first time.
- yvbbrjdr 5y agoIt's possible that the iPad failed to bind to the discovery port. It should show you a banner when that happens. Did it?
- jacobmischka 5y agoLooks neat, nice work. I would suggest changing the download links to have more affordances that they're clickable, it just looked like a table of version numbers to me at first and I didn't realize they were links at all.
- yvbbrjdr 5y agoGreat advice. Thanks!
- quyleanh 5y agoDoes it support M1 Mac?
- yvbbrjdr 5y agoYes! Apart from the desktop version, you can even run the mobile app on your M1 Mac.
- mixcocam 5y agoJust "python -m http.server" If the network is trusted.
- byteface 5y agoimport os from flask import Flask, request, render_template, redirect import requests import shutil app = Flask(__name__) @app.route('/handle_form', methods=['POST']) def handle_form(): f = request.files['file'] f.save(os.getcwd()+'/files/'+f.filename) return redirect("/", 302); @app.route("/") def index(): return render_template("index.html"); if __name__ == "__main__": app.run(host='0.0.0.0', port=8080, debug=True) # <!-- index.html --> # <!DOCTYPE html> # <html> # <head> # <title>Send File</title> # </head> # <body> # <h1>Send File</h1> # <form action="handle_form" method="post" enctype="multipart/form-data"> # <input type="file" name="file"> # <input type="submit" value="Upload"> # </form> # </body> # </html>
- byteface 5y agonever tried to post code on here. didn't realise it wouldn't render.
- grandchild 5y agoif you want a proper version of that with some handy complimentary features, then have a look at https://github.com/sebageek/servefile https://github.com/sebageek/servefile
- rvz 5y agoThank goodness for this. A true cross platform alternative to AirDrop, Dukto and Dropcopy that actually works everywhere. Not a dreadful Electron app and also works on mobile devices as well and best of all is open source. No walled gardens, no subscriptions and no deliberate limitations on number of devices. Well done.
- edwinyzh 5y agoVery useful! Tried the iPhone and Windows clients and they works!
- maxloh 5y agoWill the Flutter app be open sourced too?
- yvbbrjdr 5y agoNo :). I might charge the app for like $0.99 in the future.
- smir 5y agolooks polished, how this is different from Syncthing? a true question, not an argument.
- Shish2k 5y agoSyncthing requires setup on both ends, and then automatically keeps two complete folders in sync across a network (local or internet), conceptually similar to a network file system. This only requires having the app installed on both ends, and then manually send & receive individual files on-demand (over the local network). It’s more on the level of peer-to-peer instant-messaging.
- 12ian34 5y agoGreat effort here. Agree with others re UX and the unsigned APK. I currently use Syncthing to fulfil my LAN file transfer needs. It's not quite the same but it does have a bunch of other use cases which I like, plus it's well-known, well-supported, also open, and I trust it.
- yvbbrjdr 5y agoAPK will be signed soon! I just didn't have the bandwidth to generate a keypair :).
- 2mia 5y agois the passing badge hardcoded fo always green? - https://github.com/LANDrop/LANDrop/blob/master/README.md https://github.com/LANDrop/LANDrop/blob/master/README.md - https://github.com/LANDrop/LANDrop/workflows/Package/badge.svg https://github.com/LANDrop/LANDrop/workflows/Package/badge.s...
- tenryuu 5y agoNo, it does link to a file in the repo at all. It will change based on the outcome of the workflow name specified in the URL. https://docs.github.com/en/actions/managing-workflow-runs/adding-a-workflow-status-badge https://docs.github.com/en/actions/managing-workflow-runs/ad...
- huhtenberg 5y agoThere's gotta be a rule that requires a "Show HN" poster to engage in the comments. Because a post like this one with ZERO comments from the OP in a presence of questions that need answering is plain ridiculous.
- smichel17 5y agoIt would be more realistic to make it a soft rule: make the story downranked on the front page if OP does not engage in the comments.
- forgotpwd16 5y agoMaybe they posted it to come back a few hours later or even tomorrow. The good thing about forums is that they are asynchronous.
- bennyp101 5y agoLooking at Github, it says they are in CA, so thats 03:59 currently - maybe they posted it and then fell asleep.
- arkitaip 5y agoThat's like making major code updates on a Friday afternoon after a really long and hectic dev cycle.
- arkitaip 5y agoI don't get the mindset where you finally ship but botch the launch marketing. The window of opportunity is so small and rarely comes back, that you really need to get the basics right, e.g. closely monitor launch posts, answer within minutes, be truthful, thank people if they provide useful feedback, etc.
- yvbbrjdr 5y agoSry! New to HN here. I posted it right before bedtime and didn't know a lot of people would be interested :).
- forgotpwd16 5y agoThere're a few such tools, e.g. TrebleShot and NitroShare. Does this improve something over the current solutions or is an alternative? Also Snapdrop and ShareDrop are two web apps offering similar functionality. Good choices in case someone doesn't want to install anything.
- yvbbrjdr 5y agoI've done my research and also found a lot of similar stuff. They are all not as convenient as AirDrop, so I wanted to make a thing that's close enough.
- GekkePrutser 5y agoSome things I'm missing are: - Who is behind this? A company or is it completely free? - Is there any cloud service used? - What does the UI look like? And please fix the "celluar" spelling mistakes (in different places), it just makes it look less professional :)
- yvbbrjdr 5y ago- It's mainly me and some friends that does non-code stuff. No companies involved at this moment. - No cloud service is used. Your app doesn't connect to the Internet. See the privacy policy. - :) will post screenshots when I have time. Will fix the typo!
- GekkePrutser 5y agoAh cool, no company involvement makes it much more interesting to me. Because sooner or later they'll always want to monetise and that has privacy impacts generally. I missed the internet part, sorry! It doesn't say so explicitly, just that the info is not collected. But how do the peers find each other then?
- yvbbrjdr 5y agoIt doesn't use the Internet, but it does send broadcasts to your local network for discovery.
- AM1010101 5y agoJust tested out with my iPhone to Ubuntu 20.04. Works nicely with photos. Tried to sending some videos (iPhone to Linux) and some of them fail. A short 30 second video worked fine but longer 4 and 8 minute ones failed. Those longer videos may have also been stored on iCloud and not locally. Within the iOS app it doesn’t “select” the longer video files to be able to send them. Hope this helps. Nice tool and I can see myself using this if these issues are sorted.
- api 5y agoDoes this work on ZeroTier? Most LAN things do.
- usui 5y agoSome good comments on cryptography that I will probably bookmark and use to study in the future, but as an end-user, I've been hoping for years on a local-network-only solution that basically works on all platforms. Functionality-wise, cryptography can shape up in time whereas I can use these non-trivial features today. Bravo for the privacy-conscious approach and development of apps closer to native. I tested it in these directions and double checked with sha256sum: - Mac <==> Mac (Wireless) - Mac <==> Mac (Thunderbolt 4 Bridge) - Mac <==> Android - Mac <==> iOS - iOS <==> Android Features I'd have interest in: - Choose interface/IP address to listen on by default instead of all interfaces (can still be first-time default). This helps prevent accidentally sending over a not fully-trusted network. I imagine that with the next iPad supporting Thunderbolt 4, it could be easy to send over wire. This also helps smoothen someone's lack of confidence in the network security of the app. You also probably already thought of this since there is an "Advanced" section which currently supports changing the port - Have some way to verify the target's IP address for the Flutter app on iOS and Android prior to sending - A command-line interface to automate sending and receiving - A way to donate if you're open to that (@yvbbrjdr go bears!)
- yvbbrjdr 5y agoGo bears!
- vort3 5y agoWhat does it do that https://www.sharedrop.io/ https://www.sharedrop.io/ and https://snapdrop.net/ https://snapdrop.net/ don't do?
- alinspired 5y agoI used Resilio Sync (ex BTSync) to transfer between devices, but it's not open source and by default allows to use "relay" servers: https://www.resilio.com/individuals/ https://www.resilio.com/individuals/