Giter VIP home page Giter VIP logo

rule110-io / surge Goto Github PK

View Code? Open in Web Editor NEW
411.0 411.0 47.0 35.46 MB

Surge is a p2p filesharing app designed to utilize blockchain technologies to enable 100% anonymous file transfers. Surge is end-to-end encrypted, decentralized and open source.

Home Page: https://getsurge.io

License: Apache License 2.0

JavaScript 7.95% Vue 33.70% CSS 0.34% Go 38.66% Inno Setup 1.33% SCSS 13.92% TypeScript 0.02% Shell 0.93% NSIS 3.15%
anonymity decentralized file-sharing nkn p2p privacy

surge's People

Contributors

dependabot[bot] avatar freebelarusicons avatar lightmyfire17 avatar mutsimutsi avatar wizardofcodez avatar yilunzhang 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

surge's Issues

[Bug] Duplicate remote sources

Describe the bug
Duplicate seeder for a single file

To Reproduce
Steps to reproduce the behavior:

  1. Run client
  2. Watch remote file listings

Expected behavior
Remote sources need to be unique for every file

Screenshots
image

Add all files in Folder, or even better add a "watch path"

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

So imagine you want to share 200 or 1,000 or even more files, well it is going to take you a long time to add the files 1 by 1

Describe the solution you'd like
A clear and concise description of what you want to happen.

Ability to select a folder and have Surge auto add all files inside the folder.

An even better or Option to the above would be a Watch folder.

For example I create a Directory called SurgeShares there could be many nested sub directories etc, any files added to any of the folders would be automatically added to Surge.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

If the above is a lot of work at first, maybe an option where you could take a list of filenames with full paths and add to Surge Que via the command line, That in itself would reduce greatly the time it takes to add a lot of files in the short term.

One other option, might be to have any ini file or whatever you insert the file listings for Surge to add.

Additional context
Add any other context or screenshots about the feature request here.

[Feature] Loading indicator when adding large file

Is your feature request related to a problem? Please describe.
Currently when adding large files nothing happens at the beginning. After a while file appears in surge. That happens because secure hashing takes some time depending on the machine surge is run on.

Describe the solution you'd like
Raise a message when hashing starts, raise a message when hashing ended.

Possible text
Surge makes your file now ready for sharing. To make the process as safe as possible we're now creating a hash of the full file that makes it impossible to tamper with it. You can close this modal. We will inform you when everything is done and your file is ready for seeding.

File Share Button

The + at the bottom to add a file should read "Share File" instead of the plus. Baby-proof the thing. I know you have a tour but 90% will skip that shit and then it's not obvious. Possibly add "icons / text" option for the UI under settings? Icons keeps much as it is, Text would replace icons with the words for everything? Nice to have the option. If no option to switch between, or 'add labels' via settings, that plus should just say "Share File".

Media player embedded into Surge client

Is your feature request related to a problem? Please describe.
Quite often file sharing is used for audio/video files. It will be convenient to start playing a video or music while still downloading. I hope it is not too difficult since Surge is built on web technology and can find media player plug-ins.

[Feature] Dynamic Window size

Is your feature request related to a problem? Please describe.
On some devices with scale ratios and small displays surge window is too big for the screen.

Describe the solution you'd like
Be free to change display window size, minimize and maximize

Surge does not run on Ubuntu 20.04-LTS desktop

Describe the bug
It seems surge need higher version of glibc 2.32 than Ubuntu 20.04-LTS (2.31)

./surge
./surge: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./surge)

./apt install libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.31-0ubuntu9.1).
libc6 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

[Feature] Show file hash in local files

Is your feature request related to a problem? Please describe.
Would be nice to show the file hash in local files too so a user could copy it out and tell others that this is the one they should download

[Bug] More than 100% download completion

Describe the bug
A download can be marked as more than 100% completed, in this scenario the download also never finishes.

To Reproduce
Steps to reproduce the behavior:

  1. Download a file
  2. A chunk was not received on time, a new request gets sent out
  3. Both the initial and retried chunk are received and counted towards progress

Expected behavior
Dont double count a chunk. Dont check for incoming bytes but rather chunk bitmap for file progress/completion.

Screenshotsimage

[Feature] NAS support

Is your feature request related to a problem? Please describe.
In order for more surge instances to run globally, it will be most useful to run them on home NAS devices such as Synology, QNAP, Asustor and etc. Or WiFi router with USB disk, or other connected home devices with reasonable CPU, RAM, and storage.

UI Sizing

If the app is going to be fixed window size at the moment (forever?), please either shrink the majority of the title text down so more than only a few items show at once, or add a few display options (i.e. list, detailed list, icons, text size). It'd be nice to have some options available, but if it's too much faff to have options, just make it all a bit smaller pls. Super limited use of screen real-estate.

Files Page

Files page should most likely just be called "Transfers".

Not a fan of the layout of the page, it's messy and doesn't really make sense. See below for what I reckon it could be changed to.

Maybe best if I quickly mock this in Photoshop to show it a bit better than text.

[Bug] Download stopped, no more remote connections.

Describe the bug
User from China reports dropping all connections during a download, this causes the download to stop and workers to be deallocated.

To Reproduce
Steps to reproduce the behavior:

  1. Run Surge client in China
  2. Download file of moderate size (eg; 100MB) and wait

Expected behavior
Even if there are chunks timed out, we should recover from lost connections and restart the session.

[Bug] Startup exception: Unable to get property '_' of undefined or null reference

Describe the bug
Frontend exception on first time running surge: Unable to get property '_' of undefined or null reference.
This error will only occur when surge is ran for the first time.

To Reproduce
Steps to reproduce the behavior:

  1. Fresh install of surge on windows 10
  2. Startup surge

Screenshots
image

Desktop (please complete the following information):

  • Win10
  • 2.0.1-beta

Wrong Download folder Windows10

Surge is downloading to: C:\Users*user*\Downloads\surge_remote
The problem is my Downloads directory was moved accordingly to another folder on a different drive. All other programs respect that except Surge.

The expected behaviour would be that surge uses a dynamic folder "link" that Windows provides.

Desktop:

  • Windows 10 2h2h
  • Firefox 83
  • Surge 0.2.0-beta

Only first download is appearing in the File Transfers page

Describe the bug
The first file I downloaded showed up in the File Transfers page without problems, together with status updates etc.
Subsequent downloads are not showing up, even though they are are downloading without problems, are are shown the "alarm" drop down.

To Reproduce
Steps to reproduce the behavior:

  1. Pick a file
  2. Click download
  3. Go to "File Transfers" screen
  4. Nothing has been added, but first successful download is still showing

Expected behavior
Each file should show in the "File Transfer" list

Screenshots
surgedownloads

Desktop (please complete the following information):

  • OS: openSUSE Tumbleweed 20210110

Additional context
This is the first and only time I have run Surge so far.

Export hashes to Virustotal?

Is your feature request related to a problem? Please describe.
You currently have hashes in the GUI (bit difficult to tell if I've selected the whole hash or not, due to ellipsis and popup). However, I can find no way of indicating "trusted" peers, or reliable sources. Opening the program shows a list of seeded files (PDFs, JPEGs, Movies) any of which could be viruses. The magnet link implementation will help, as I'll know what site I got the magnet from. But currently, I can't really use it. Would it be possible to implement a way of exporting hashes directly to Virustotal? or perhaps getting rid of the ellipsis, so that it doesn't look like it's replacing half the hash? or a way of trusting/untrusting peers?

Search directly for a file hash

I want to be able to put a hash number into the search and find the file that way.

I tried it with the current 0.2.0-beta and it doesn't work.

Also currently you cannot just copy a hash from the files you upload.

Simple as that.

Generic dependency on webkit not hardcoded

./surge-0.2.0-beta 
./surge-0.2.0-beta: error while loading shared libraries: libwebkit2gtk-4.0.so.37: cannot open shared object file: No such file or directory

My gentoo system has already

dev-qt/qtwebengine-5.15.1
dev-qt/qtwebkit-5.212.0_pre20200309-r1

Would be great for user to have a choice.

[Bug] Internet Connectivity Handling

Describe the bug
When the application runs and internet connection drops there is no recovery, additionally starting up the app without internet connectivity also is unhandled.

To Reproduce
Steps to reproduce the behavior:

  1. Drop internet connection

Expected behavior
Hold processes and await internet connectivity.

Recent Files Icon / List

Recent Files green 'icon' for the file is massive. Fails to display the file's name, and is generally just dead space. This should be in a list view and not icons, surely? Different small icons for different file extensions, and simply have that page just show rows of
'icon - filename - size - status'.

[Bug] Terminate on long runtime

Describe the bug
When running the client overnight it was terminated without dumping to a panic log.

To Reproduce
Steps to reproduce the behavior:

  1. Run client for a long duration eg; 24 hours.

Expected behavior
All exceptions currently terminate the application, this is to be expected to force a lot of debug info to be provided so we can catch our issues rather then letting these go unnoticed, however a panic dump should be created at all times with terminations.

BUG downloading into negative %

Describe the bug
The download was added and it keeps on increasing into the negative %. It jumps to zero here and there and downloads back to negative %

Screenshots
surge minus

Desktop (please complete the following information):

  • OS: Windows 10
  • Version 0.2.1 beta

[Bug] UI window too big for 13" Macbook Pro

Describe the bug
On my Macbook Pro 13", the bottom part of the UI window is cut off, so I cannot see completely the bottom menu as well as the stats. There is no way to resize the window.

To Reproduce
Steps to reproduce the behavior:

  1. Just need to launch the Surge app on Macbook Pro 13

Expected behavior
The bottom of the screen is cut off.

Screenshots
attached screenshot

Desktop (please complete the following information):

  • OS: [Mac OS 10.15.6]
  • Browser [N.A.]
  • Version [0.0.1 Alpha]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

[Bug] Install as specific user on windows

Describe the bug
When installing surge on windows, and choosing the option for a specific user, the default download location is odd: "\AppData\Local\Programs\Surge"

During installation the following error is produced:
image

To Reproduce
Steps to reproduce the behavior:

  1. Run installer on windows
  2. Choose a user instead of all users
  3. Continue as normal

Expected behavior
Program files dir as default and no registry error.

Desktop (please complete the following information):

  • Win 10 pro

[Bug] Search field is not working on MacOS

Describe the bug
The "Search for remote files..." input does not return any results no matter what is typed. Issue only happens on MacOS.

To Reproduce
Steps to reproduce the behavior:

  1. Type something into the search field
  2. no results

Expected behavior
Remote files list should be filtered

Desktop (please complete the following information):

  • OS: MacOS Big Sur

Hi

When coibaise? and 32bit Win version

Search Box

The search box occupies a large area at the top, which is fine, but the actual box to be clicked in is tiny. This should far taller to fill that space, and roughly twice as long.

You have a search icon (magnifying glass) but it's unrelated to the search box, so it neither selects the search box nor searches once clicked. By clicking it, it actually de-focuses the search. This should be set to select the search box if clicked, as plenty will do that first before typing, or like myself, type something, then wonder if you have to click it and when you do it just deselects the search input box.

Add title and description

Search Page (change)
On the file search page, add the date and time to files.
Search by title and description, continued below.

File Page/Sharing page (new)
The page has a title, description, file information and a download button.

p.s. thx, this a good project!

[Feature] Add usage stats

Is your feature request related to a problem? Please describe.
It would be really useful to add usage stats to Surge client, e.g. showing how much bandwidth I have used both for uplink and downlink, which files that I seeded gets requested etc.

Also it will be useful to have some kind of leader board for remote files: which file is most seeded, which file is most downloaded, etc.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Use last connected nodes as seed nodes to solve RPC timeout

Some areas in the world (e.g. China) has really unstable connections to the seed nodes. To be more specific, a lot of RPC call will timeout randomly, and NKN clients will sometimes fail to create because creating a client relies on one RPC call to the seed node. We've tried all major VPS (AWS, GCP, DO, etc) and nothing works out reliably. This makes most of the errors we have seen during our Surge tests in China.

The solution we came up with for nMobile is to save last connected nodes. When creating clients next time, load and pass those nodes as seed nodes, together with the official seed node as back up. This is by far the most reliable and decentralized solution we have tried, and can eliminate most RPC timeout.

The current SDK already has all API needed, the implementation should be pretty straightforward:

Save nodes:

  1. Use https://pkg.go.dev/github.com/nknorg/nkn-sdk-go#MultiClient.GetClients to get all clients of a multiclient
  2. Use https://pkg.go.dev/github.com/nknorg/nkn-sdk-go#Client.GetNode to get the node of each client
  3. Save the RPCAddr of each node

Use nodes:

  1. Load all saved RPCAddr
  2. When creating multiclient, pass a ClientConfig with SeedRPCServerAddr set to all saved RPCAddr (you probably need to add http:// prefix), with an additional http://seed.nkn.org:30003 at the end as fallback

Make sure you are using the latest SDK version (v1.3.5+) so the RPC is trying seed node in order rather than random.

Surge quit unexpectedly after running for around 1 day

Describe the bug

I left Surge running since I tried to replicate the bug #52 and when I checked it a few minutes ago, it had quit.
See attached log file log.zip
xxx.xxx.xxx.xxx is my desktop's public IP address

To Reproduce
?

Expected behavior
Surge should not quit unless asked :)

Screenshots
None, it had quit when I found it.

Desktop (please complete the following information):

  • OS: openSUSE Tumbleweed 20210110
  • Version: v0.3.2-beta

Additional context
There were some "go" errors on my console, but sadly I did not capture them. Hopefully the log file is enough.
I have started surge again to see if it does the same thing during the next day or so.
If it does, I will save the console output too.

Main Menu

Menu icon for Files page should really have a file or folder icon and not play symbol. Play implies video alone.

Please add tool-tip popups for the buttons. They're tiny compared to everything else and nothing's labelled.

Add mobile device support

Is your feature request related to a problem? Please describe.
Nowadays most people use their smartphones for everything, so it will be useful to provide a Surge Lite edition on mobile devices (Android, iOS) that can download files but not necessarily run as a seed provider.

[Bug] 0 Seeders in Remote Files

Describe the bug
The Remote Files list can show 0 seeders if the only seeder available deletes the file and stays online

To Reproduce
Steps to reproduce the behavior:

  1. Seeder: Seed file
  2. Seeder: Remove file
  3. Leecher: Check file listing

Expected behavior
Should not be shown in the remote files list.

Dead?

Describe the solution you'd like
This was a promising project,is it officially dead?

Notification Box

Notifications popup should be at least twice as wide. It's tiny. There's also no need to have a button to clear them, it should clear just from opening notifications.

Constant crazy network upload

Describe the bug
While Surge shows no file transfers active, all of them are at 0 bytes / s, if I look at the task manager, Surge is constantly uploading at 30mbit (max of my bandwidth).
surge_bug 30mbit upload.log

I had 20 clients connected, and could see about 50 "remote files" being offered. I restarted Surge and now it's kinda weird, 6 clients connected and I can't see any "Remote Files" but one. NO MORE crazy uploading this time. At least not yet.
surge restart can't see remote files.log

After another restart, Surge found the remote files and is running 5 connected clients and no crazy upload. But I can't see all the remote files I saw when I had the max upload bug at the start. I only see 20 files being shared.
surge another restart I can see files.log

Expected behavior
It's not supposed saturate my whole bandwidth, while IDLE.

Desktop (please complete the following information):

  • Windows 10 2020h
  • Firefox
  • Surge 0.2.1 beta

[Bug] High cpu usage on linux

Describe the bug
Process /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitWebProcess uses a lot of system CPU resources when running surge.

image

Additional info
It has not been confirmed whether this is due to docker, or whether this is also true for running surge natively on a linux system.

Search doesn't find items in "file transfers"

Search seems not to look for items you already downloaded / are sharing. Also items downloaded already don't appear in the "remote files" tab. I take it that's by design.

Would be nice to quickly find items in the "file transfers" tab via search.

Surge 0.3.0 beta Random stuff I noticed

surge download difference
I'm not sure what's causing this difference in download. Might be something weird.
2.
surge right after removing a download job I just added
I added a download and deleted it right after that and this warning showed.
3.
surge p1
surge p3
In "file transfers", if you arrange them by file AKA filename items on page one get arranged by filename and when you switch to page 2 they get arranged by name separately and so on. All the items should be arranged by name and then presented, not just items currently on the page.

If it were up to me I'd get rid of these pages and just have one place to show all items and then just scroll up or down to see them all.
4.
surge cpu usage
This laptops CPU is certainly not fast, but 10% usage seems a bit high, while Surge isn't really doing much, zero downloads/uploads. The number is 2-3% smaller if Surge is minimized. 21 items seeding.

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.