Giter Site home page Giter Site logo

landrop's Introduction

LANdrop

LANdrop is a fast, dead-simple utility to send files to people over LAN. No registration, no IP addresses, no cloud...just open the dialog, drag the file over to their name, and you're done!

LANdrop started as a small student project, but it was so useful that we've decided to expand and release it. We're rewriting it in C# to build a killer UX, but the protocol will be open to allow other native clients, too.

This version is currently under development and isn't really usable yet.

Roadmap

Note: Move these items to issues whenever possible.

  • Create a SQLite database where Peers and FileCaches may be stored over time.
  • Hammer out the different peer sources (Multicast, PeerExchange, ManuallyAdd, Clipboard), and figure out the process for each's development.
    • Fix peer activity icons
  • Automatically analyze IPs that are copied to the clipboard
  • Settings...
    • Let the user set the downloads directory.
    • Let the user to enable file logs as well as to set the log directory.
  • Implement an "always accept transfers from this user" system using RSA keys to ensure somebody's identity.
    • For now, save the client's RSA private key in the Configuration file. We can encrypt it using a basic password (eg, "LANdrop") so that at least file sniffers won't see it - but anyone who knows that password (anyone with the source, obviously) can decrypt it - but that should suffice for most users.
      • Maybe we can add an option later that encrypts the private key with a passphrase, which much be entered at startup.
  • Encrypted transfers - encrypt all data in transit. Sender creates a shared session key, encrypts with receiver's public key.
  • Rewrite protocol to use JSON and/or ProtoBuff for cross-platform compatibility
  • Drop Codes - a simple password that you can set; anyone with the password can send you a file without having to wait for you to accept it (also useful for sending files for yourself).
  • Log off, shut down, or hibernate after transfer is complete.
  • Automatically resume an earlier transfer that failed (receiver reads to end of what it's got, sends byte count and checksum)
  • Automatic updating, Chrome-style.
  • Automatic exception reporting.
  • Instead of opening a new window for every transfer, create a "transfers" window.
  • Sending multiple files.
  • Sending to multiple recipients.
  • Command line version!
  • Tray icon, run at startup.
  • Ways to block unwanted peers.
  • Support for transferring files that are themselves being transferred. That way you can start a download on one computer and stream it to another.
  • Statistics - number of transfers failed, succeeded, bytes transferred, average speed. Stats on website. For fun, all opt-in.

Credits

Developed by Phillip Cohen. Icons from the excellent FatCow Icons Pack.

landrop's People

Contributors

phillco avatar texaswilliam avatar thomas-joiner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

landrop's Issues

Automatic updating

This will be very simple at first. First, we need a "Switcher" app that simply swaps the two executables.

Here's what the LANdrop update module will do:

  1. Check landrop.net/version.json for any changes
  2. If there are any, download the latest version and the latest switcher, to LANdrop/Update
  3. Once both complete successfully, create a marker file in LANdrop/Update.
  4. Alert the UI to add cues (like Chrome and the Windows 7 "shutdown" button) that tells the user an update is ready. These simply restart LANdrop.
  5. On program startup, check if the marker file is there. If it is, run switcher and quit.

Here's what Switcher does:

  1. Check for both the update EXE and the marker
  2. Wait for LANdrop.exe to quit
  3. Swap the files
  4. Delete the marker file
  5. Start LANdrop

Create build deployment server

  • Automatically check GitHub for updates
  • Build a release version (tag with build number first)
  • ilmerge any bundled assemblies
  • Deploy the EXE to landrop.net
  • Update landrop.net/version.json

Handle in-communication errors

Any SocketExceptions or IOExceptions that occur during a communication completely crash LANdrop. They shouldn't, since they're natural - ie, a peer closes his app during a WhosThere.

Add first-run experience

Show a "LANdrop is ready to go!" screen that briefs the user on how to use the app.

"Installation" options:

  • Show the option (checked at start?) to copy to the user's dir (like Chrome).
  • Show the option (checked at start) to run at startup.
  • Show the option (checked at start) to create a start menu shortcut.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.