Coder Social home page Coder Social logo

mat-sz / filedrop Goto Github PK

View Code? Open in Web Editor NEW
674.0 15.0 60.0 2.65 MB

📲 WebRTC E2E encrypted file transfer - React + node.js

Home Page: https://drop.lol

License: BSD 3-Clause Clear License

HTML 0.55% TypeScript 84.19% Dockerfile 0.37% SCSS 14.53% Shell 0.36%
react typescript webrtc webrtc-experiments websockets file-sharing javascript

filedrop's Introduction

filedrop

Available at: https://drop.lol/

Easy end-to-end encrypted, peer-to-peer file transfer.

Features:

  • Fully end-to-end encrypted, including metadata and chat.
  • Peer-to-peer wherever possible (using WebRTC).
  • Simple chat function with copy and paste.
  • Minimalist user interface.
  • Available as a Progressive Web Application.

Screenshot

Docs

filedrop's People

Contributors

mat-sz avatar rehanone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

filedrop's Issues

Reported as unsafe website

Hi team, just to let you know that on macOS Microsoft Edge, the page was marked as unsafe page. Should it be still considered as safe website?

Thanks for the work of this project, I really love it!

Here is the screenshot of it:
image

[Feature request] File previews

Really neat project.

Though would it be possible for multimedia files (or at least for images) to have the sending device generate a small preview (that maybe can replace the generic file type icon)?
It's a feature I really miss from other services such as sharedrop, but it would be a very nice to have feature to be actually able to see what it is before you download.

Two minor issues with mobile browsers

There are two minor issues with mobile browsers(kiwi browser and firefox). One is that the transfer from the computer to the phone is fast, but the transfer from the phone to the computer is very slow. The second is that there are some problems with the transmission speed display on the mobile browser.
Screenshot_Kiwi_Browser_20200325-203753

question

this is a really helpful tool.
but i wann know does it necessary to use the node.js to run ws code on my webserver.
my web server really poor of raw and cpu(a vps only has 200m raw and one core cpu ),
so are there any way i can build filedrop's web and ws as static files , so that i can place it in my vps and use nginx to proxy the file, and run js on client browsers. so that i can save a lot of raw to run others services.
forgive me as a freshman putting this question,thanks a lot.

Filesize Limit?

Hi,

very cool project. Is there a file size limit? a little PDF worked like a charm, a bigger .wave (I know old format :-) failed right after around 2-3 MB.

I read the README and found nothing about a size limit, sorry If I wasn't narrow enough with my research.

Adding swipe gesture to scroll the page

First of all, thanks for building this amazing service.

I'm an Android user and I'm trying to find a way that allows sending pictures between iPhone and Android phones without downloading any apps and the signing up stuff. Basically I'm finding a way to do what Airdrop does. This one get the best experience of all the stuff I've been tried.

I noticed that I can't scroll the page by swiping the screen , the only way to scroll the page is to drag the scroll bar.
I've tried three different browsers, Samsung Internet, Chrome and Brave , it shows the same behavior.

So I was wondering if you could add swiping into the methods of scrolling the page?

[Feature Request] Share Text String without Sending a File

First of all, thanks for such a great project! It seems really well done and has worked very well for me.

Is there anyway that a feature could be added where you could just send text without a file? I'm thinking something like Snapdrop's right-click (or long-press on mobile) to send a message. I'm not sure how it would work exactly once the message is received, but even just being able to tap or click on the message to copy the text would be great.

If you don't feel this would be worth the effort I totally understand. Thanks again!

drop.lol as PWA

I installed drop.lol on my phone but I would really like it to show a proper icon. Would you be interested in a PR that turns the client into a PWA?

Edit:
Lighthouse report:

  • Manifest does not contain a 'name' or 'short_name' field
  • Manifest does not contain a suitable icon - PNG, SVG or WebP format of at least 144 px is required, the sizes attribute must be set, and the purpose attribute, if set, must include "any".
  • No matching service worker detected. You may need to reload the page, or check that the scope of the service worker for the current page encloses the scope and start URL from the manifest.
  • No supplied icon is at least 144 px square in PNG, SVG or WebP format, with the purpose attribute unset or set to "any"

No file picker

It is impossible (or very not obvious how) to use this service without a graphical file manager. Most websites usually have a "Drag file here or click to choose one."

suggetion, Enabling Swift Cross-Platform Media Transfer.

Hi
One of the key benefits our project provides, as expressed by me and my peers, is the swift cross-platform transfer of text and files between two personal devices. The essence of this usage lies in the concept that "I trust myself with my files, and I desire the fastest possible transfer".

Currently, beyond text, the transfer of any file type requires the "upload" and "download" process. Let's consider a scenario where one wishes to transfer a picture from one device to another and embed it in a "Word" document. The process includes uploading the picture via a dialog box, downloading it on the target device through another dialog, saving it in a temporary folder, and finally, going back to the Word document to "insert" the picture through yet another dialog box. This can be time-consuming.

My proposition is to streamline this process by incorporating a "paste" feature for media on the source device, allowing pre-copied media like photos to be quickly transferred. Coupled with the recently added "auto-accept" feature on the target device, it would expedite the process significantly.
Moreover, enabling a "copy" feature directly from the thumbnail would be useful as the full picture data is already available in the memory.

A suitable comparison would be the ease of copying and pasting within a dialogue on WhatsApp Web between two devices.
Thanks

Tyles are not focusable

First of all, thanks for this awesome project! It works great, having done a quick and dirty test to transfer a file from my PC to iOS.

However, I am finding difficulties with the tyle system. I am totally blind, and I use a screen reader to access this PC and my phone (they come in tablets, some TVs, etc.). In Mac and iOS this software is called VoiceOver (you can enable it in settings or in VoiceOver utility in Mac), in Linux Orca, and in Windows there are several alternatives (I've heard Narrator is pretty good in Windows 10, but I use another, called NVDA, which is also free).

The problem I'm having is that tyles are not accessible. Instead of using a native file picker (the ones where a browse button is shown) you use an alternative which is not focussable, meaning that, in iOS for example, the screen reader cannot focus it (on Windows you can press enter on it but you must know what you are looking for). I honestly don't know how to improve this, but googling "accessible file picker" gives some interesting results. Plus, native file pickers do work (the ones in many pages, like conversion-tool do work properly.

ssl

Can you please share your ssl settings? Although I tried many methods, it persistently wants to work in http mode. I think there are parts I missed. Thanks. By the way, your project rock!

Suggestions

Very cool project!

I have few features suggestions:

  • Console which shows what program tries to do and why it isn't working.
  • Multithreaded filetransfer - I reached only half of my upload speed (reciver side was fast). I guess this might be related to how ISP limit internet speed. Upload speed grows from 0 to over max upload speed, then falls down to zero and it repeats.
  • Continue file transfer if internet connection was lost.
  • Screenshare, audio share. Take a look at https://github.com/adamyordan/laplace | https://laplace.adamjordan.id . Has few issues but they originate from webrtc design. I can describe them in details if you are up to this functionality.

[Request] - Bulk upload support

Hi,
thanks for this piece of software, I used Sharedrop.io for a long time but stumbled upon yours recently and started using it frequently. It seems to have a similar issue (well not necessarily and issue, more of a shortcoming) with Sharedrop and that is that it doesn't seem to support sending multiple files at once (maybe I'm wrong).
I think having bulk upload support would be a great feature for it.

Best!

names are not sync in all devices

In my mobile, my name is 'Salty Lemon'.

image

but on my computer is appears to be 'Acidic Cactus' (I recognized the device by the purple color)
image

[Feature suggestion] Save all

First off, thank you for creating this amazing open source and privacy friendly file sharing platform! Stumbled upon it on HackerNews and must say it's really as good as how other users described it. Personally, way better and easier to use than DropBox and co!

The only thing which might be missing would be a "Save all" button (or something similar?). At least when sharing photos with my friends they note that it's cumbersome to click accept on all photos. Especially on a mobile device...

But it's nothing mayor, just a small suggestion if you ever wonder what to add as a new feature. I'm already glad and happy with the current version! Keep it up mate and have a nice day 😄

some issue related to "localNetworkNames" in the main.xxx.js file

Hi
While trying to run on Docker, i am getting an error in the browser console:

ypeError: Cannot read properties of undefined (reading 'filter')
at main.cc1ec017.js:2:255383
at e (main.cc1ec017.js:2:154208)
at main.cc1ec017.js:2:154413
at Object.useSyncExternalStore (main.cc1ec017.js:2:78270)
at t.useSyncExternalStore (main.cc1ec017.js:2:145742)
at t.useSyncExternalStoreWithSelector (main.cc1ec017.js:2:154483)
at main.cc1ec017.js:2:156142
at Fo (main.cc1ec017.js:2:255357)
at ki (main.cc1ec017.js:2:71227)
at xs (main.cc1ec017.js:2:128467)
dl @ main.cc1ec017.js:2
n.callback @ main.cc1ec017.js:2
Fa @ main.cc1ec017.js:2
ws @ main.cc1ec017.js:2
bs @ main.cc1ec017.js:2
ys @ main.cc1ec017.js:2
(anonymous) @ main.cc1ec017.js:2
Su @ main.cc1ec017.js:2
ou @ main.cc1ec017.js:2
E @ main.cc1ec017.js:2
R @ main.cc1ec017.js:2
main.cc1ec017.js:2 Uncaught TypeError: Cannot read properties of undefined (reading 'filter')
at main.cc1ec017.js:2:255383
at e (main.cc1ec017.js:2:154208)
at main.cc1ec017.js:2:154413
at Object.useSyncExternalStore (main.cc1ec017.js:2:78270)
at t.useSyncExternalStore (main.cc1ec017.js:2:145742)
at t.useSyncExternalStoreWithSelector (main.cc1ec017.js:2:154483)
at main.cc1ec017.js:2:156142
at Fo (main.cc1ec017.js:2:255357)
at ki (main.cc1ec017.js:2:71227)
at xs (main.cc1ec017.js:2:128467)

Screen is Black an nothings appeares.
while trying to point to the error in the main.js, it jumps to this section:

e.localNetworkNames.filter((t=>t!==e.networkName))));return 0===n.length?null:(0,We.jsxs)

i am not sure, but if i am searchinf for "NetworkNames" in the code, it is point me to out to:
filedrop-web\src\sections\OtherNetworks\index.tsx
ChatGPT [ ;) ] says it is related to the setion:

const localNetworkNames = useSelector((store: StateType) =>
store.localNetworkNames.filter(name => name !== store.networkName)
);

if (localNetworkNames.length === 0) {
return null;
}


triyng to use chatGPT advise replacing this with another code,

const localNetworkNames = useSelector((store: StateType) => {
if (!store.localNetworkNames) return [];
return store.localNetworkNames.filter(name => name !== store.networkName);
});

"resolve" the issue but created another one, the website loded with no "errors" in the console, but nothing worked acctually.

Kindly please advise.
best regards.

Can't access from WAN

Hey, maybe there's something i'm not seeing, but when I try to access the server from outside my LAN, i can't get it to work, it doesn't even connect.

I'm using the docker compose file for deployment, set the port to 32768 and allowed it through the firewall, I've tried accessing with my public ip and exposing that port and also through the nginx reverse proxy with the config you provided (except the http3 part as my built doesn't have that module).

Is there anything I'm missing here? Thanks in advance.

Refactoring

Making this issue just to track the potential problems from the migration to monorepo/vite.

Also:

@rehanone I've changed a lot in the repository, could you check if the Docker image still builds/works as expected? Note that the env variable names have been changed too.

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.