adishegde / media_hub Goto Github PK
View Code? Open in Web Editor NEWDecentralized file sharing over LAN
Home Page: https://adishegde.github.io/media_hub/
License: MIT License
Decentralized file sharing over LAN
Home Page: https://adishegde.github.io/media_hub/
License: MIT License
Shared directories are available in the results (due to file indexing) but can't be downloaded due to restrictions placed by HTTP service.
I think it makes more sense to allow download of the entire shared directory. The HTTP service should be modified accordingly.
Running a command ./client list <file-url>
displays the error URL does not correspond to directory
but it does not terminate the program.
This is most probably due to the HTTP request not being terminated.
The core supports a lot of flexibility, however, the GUI does not provide an interface to make use of it. The following options need to be added:
The settings page can have these options segregated by the subheadings with a small description available on hover. Adding each of the above subheadings can be a separate PR.
A file which has been downloaded has incorrect file size associated. Restarting the app fixes the error.
Currently the download counter increments for any request at the file URL irrespective of whether a partial range is requested or the entire file. It also increments if the download is cancelled by the client.
This leads to highly incorrect download values in the metadata.
The current logo is an extremely basic one and is intended as a placeholder for a better-designed logo. The new logo can also be used as the app icon instead of the default electron icon.
Sharing a large number of files causes the GUI to lag and eventually might even lead to a crash.
The reason for the GUI lag is due to the load on the main process. Creating a subprocess should reduce the load on the main process and make the GUI work properly.
The following are few more areas which have the possibility of optimization:
DB: Currently everything is being stored in the leveldb instance which might lead to slower data retrieval and write times. Maintaining some kind of index in memory or using a database like nedb which keeps the entire database in memory might improve performance. But the size of the meta data has to be considered.
Using a full blown text search engine like Lucene to improve performance. (Thanks to @adityathiru and @vik-y for suggesting this)
Currently, only the path of downloaded files is shown. It would be nice to have a feature to view the parent directory as suggested by @satu0king.
The features I can think about are:
Downloading some files leads to a 500 response from HTTP service for no apparent reason.
Currently, the search results are not sorted by strength of the match. Each node sorts the files by match score and then sends the page requested but the results aggregated from multiple nodes are not sorted and are instead displayed in the order received.
It would be helpful to maybe reuse fuse.js
to sort the results in a particular page.
A config option to match file names when indexing, so that matched files will be ignored, will be helpful for not sharing hidden files and directories. The ignored files will not be indexed nor served.
The config option could be an array of regex strings. If a file name matches with any of the regex expressions it should be ignored.
Currently, files are not being served with proper error handling. There might be a lot of possibilities for incorrect headers and requests to result in fatal errors. Thus the HTTP service needs to be cleaned up and proper error handling has to be done.
Currently, the server responds even if the search request is from the same machine. This seems unnecessary and leads to clutter.
The server should not respond if the request is from the same machine. There should be an option to toggle this.
Currently, read and write permissions are not being checked for any file-based operation. Availability of permissions needs to be checked for the following:
There might not be a need to restrict or change many of the above services. But it needs to be verified nevertheless.
Currently the default broadcast IP is 255.255.255.255. Although this works it's better if the broadcast address is calculated from the subnet of the local IP address. This ensures that router forwards the broadcast packet.
I'm not sure if this can be done efficiently but it is worth looking into.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.