-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Internet Transfers #144
Comments
This would be a very helpful feature! We certainly would appreciate your efforts. How do you think of implementing this? |
Yeah room name would match the vocab in the server, so let's go with that. I have some hesitations to making the internet room automatically created (implied by permanently visible?)
I think most people are familiar with sharing files using links, so I propose we focus on that as the primary interface. The bottom message could be extended to have 2 options (it looks like a link to me already so we could make it a dropdown):
The second bit of UI that I propose would be a line of text (much like the This line should be visible regardless of it there are LAN peers online or not. Does that seem reasonable? |
I also was thinking that brute forcing room names wouldn't be too much of a concern for the reasons you mentioned. However, I like your idea of incorporating the I am not sure with the sharing link:
So I believe that it must at least be possible to enter the room name from within the app. Is the What are your thoughts, @RobinLinus ? |
What also needs to be considered: We do not have TURN server. That means this feature will not work for people that are behind a symmetric NAT. |
Related: #38 |
@willstott101 thanks a lot for your suggestions! I agree with almost all your perspectives. Paul and I just scribbled a possible UI here Basic idea is that you have two types of rooms:
You’re always exactly in one room. Internet rooms have a random 6-digit room number.
What do you think about these drafts? |
Looks good to me, I'm a little hesitant about preventing being in multiple rooms at once, but possibly just cause of the way cookies are used atm (preventing multi-tab usage #64). I think you should be able to share on LAN, and the internet in different rooms at the same time.... but possibly just in separate tabs, the UI would be too complicated to support multiple rooms in one tab I think.
|
Hmn... I would not want to optimize for multi tab usage since there’s not much value in adding that complexity.
Good question. Maybe prevent switching rooms while transfering?
Yep, it’s a good idea to have such an invite link. Maybe you can copy it via another icon in the header. |
I'm not sure there is any complexity to supporting multiple tabs (I mean native browser tabs), afaict the only change necessary is to remove the cookie with the uuid, instead using SessionStorage to store it and adding it to another header rather than as a cookie. Then multiple browser tabs will be completely independent. Yeah we can just prevent switching rooms mid-transfer, instead users could make a new tab to share files to someone else :) |
okay, let's try that! |
honestly, i think 6 digits is way to low. As far as i know, there is no anti-brute-fore mechanism right now. Also anyone could just "hangout" in every room or at least in a decent number of rooms at the same time (sure there is a limit on the server side - depending on how many connections it can hold open at any time). Just by chance a bad actor will catch a naive user that way. How can is see this feature being implemented?
A proof of work could be done through a sha-3 hash of a random string, where only part of the random string is given to the client: Please let me know what i might have overseen or where i made a false assumption. Thanks you! |
Here's a concept: Add an option to allow the viewing of all devices on the website in or out of the LAN in the config. (This would be opt-in oc) as a sort of stop-gap until this gets implemented |
Is there a Figma/Adobe XD/ Sketch file we can see? |
@najtin I appreciate your concern about sitting in loads of rooms, and I'm sure it'd be worth investing a bit more thought than we have RE security. I propose a simple solution to drastically improve security from the original sketches, but without complicating anything too much.
If this still doesn't seem satisfactory... I'm not sure I can get on board with enforcing link-sharing over short read-able secrets. Being next to someone on 5G shouldn't require establishing a connection beyond your keyboards to join the room IMO. So... we could decouple the room name from the connection secret - but I think this would drastically reduce usability. In that system users could be given a room name and an "Invite" button, which would show a short-lived secret (in readable and linkable form). Secrets would be valid for only around 1 minute perhaps, and the UI would reflect invalidation of secrets kinda like discord invites (if they still do that). After a secret is used it would not re-appear as a secret for some amount of time, to prevent slow users from accidentally joining other rooms. |
Just for reference/inspiration: The folks from ShareDrop have implemented the room feature in a quite nice and minimalistic way ( |
Yeah, like regen the secret every minute, and delete the secret once the popup window is closed. |
it's done today! |
…SnapDrop#144. Implement a 6 digits room system for Internet transfer as mentioned in SnapDrop#144. And some style modification.
Implement a 6 digits room system for Internet transfer as mentioned in RobinLinus#144.
looks super cool! @laukeng |
* 修复异常垂直滚动及垂直滚动条 * 将随机名称改为四位随机数字 * Update styles.css Fix image too wide bug. * WulinGate Modification * Update ui.js * Update index.html * Update index.html * Update index.js * Update index.js * Update network.js * Update network.js * Update manifest.json * Update manifest.json * misc update * Session storage for peerId (as discussed in SnapDrop#144) SnapDrop#158 * Update index.js * Update network.js * Update styles.css * Update styles.css * Implement a 6 digits room system for Internet transfer as mentioned in SnapDrop#144. Implement a 6 digits room system for Internet transfer as mentioned in SnapDrop#144. And some style modification. * Restore messed up things. * Update styles.css * Add browser compatibility alert and tip text info. * Update network.js * Prevent to show the client itself. And minor style adjustment. * Prevent to show # symbol on address bar when switch theme * Prevent to show # symbol on address bar when click notification icon. * Add a recent received messages list. * Update README.md * Restore listening port to 3000. * Update network.js * Fix notification click to copy function. * Update styles.css Co-authored-by: yjmp14 <[email protected]>
I agree that this is the case when target peer and sending peer are two different people. Then again I often want to quickly send a URL or file accross my own devices. I would love to have a url to entry a room instantly to speed up the user flow by one step. This way, I could bookmark this one (long) url and connect all my devices in different networks even faster. Maybe the two approaches can also be combined:
This way we would resolve the conflict of security vs. simplicity mentioned by @yjmp14 in #214 (comment)_ |
I gave it a try as a pull request to a working snapdrop fork that already included rooms: yjmp14#12 @RobinLinus are you open to include an (optional) Turn server to snapdrop in order to implement rooms outside of the local network? |
@RobinLinus has this feature been abandoned? |
This project is far more simple than most related WebRTC file transfer projects, which is awesome.
However the limitation of LAN-only transfers seems a little unnecessary to me.
Would you accept a PR that allows internet transfers, where the receiving side would need some (out-of-band) secret from the sending side to establish the connection?
The text was updated successfully, but these errors were encountered: