All Projects → adishegde → media_hub

adishegde / media_hub

Licence: MIT license
Decentralized file sharing over LAN

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to media hub

Transfer.sh
Easy file sharing from your Android device!
Stars: ✭ 14 (-44%)
Mutual labels:  file-sharing
zipline
A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!
Stars: ✭ 215 (+760%)
Mutual labels:  file-sharing
yogurl
Serve files and code over HTTP in one command. The CLI for http://yogurl.io
Stars: ✭ 45 (+80%)
Mutual labels:  file-sharing
Ozzillate
Data over sound file transfer web application
Stars: ✭ 124 (+396%)
Mutual labels:  file-sharing
CombinedPrivacyBlockLists
Ad-blocking hosts files, IP block lists, PAC filters, and ABP / uBO subscriptions, all merged from multiple reputable sources, combined with my own research. Also, script-based utilities to help you create such things yourself. Updated at least once a week, often more frequently.
Stars: ✭ 131 (+424%)
Mutual labels:  file-sharing
hostr
⤴️ Share anything. Simply.
Stars: ✭ 18 (-28%)
Mutual labels:  file-sharing
Shareaza
Shareaza is a peer-to-peer client for Windows that allows you to download any file-type found on several popular P2P networks.
Stars: ✭ 103 (+312%)
Mutual labels:  file-sharing
onionbox
Send and receive files securely through Tor.
Stars: ✭ 39 (+56%)
Mutual labels:  file-sharing
sync
The main repository for P2P-Sync
Stars: ✭ 15 (-40%)
Mutual labels:  file-sharing
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (+236%)
Mutual labels:  file-sharing
snapdrop-android
Android client for local file sharing via https://snapdrop.net/
Stars: ✭ 488 (+1852%)
Mutual labels:  file-sharing
torrenttools
Commandline tool for inspecting, creating and editing BitTorrent metafiles.
Stars: ✭ 125 (+400%)
Mutual labels:  file-sharing
etiquette
WIP tag-based file organizer & search
Stars: ✭ 27 (+8%)
Mutual labels:  file-sharing
zeeka
Secure global file sharing using tcp tunnels. Currently tunneling through localtunnel's public servers. Zeeka dedicated servers coming soon.
Stars: ✭ 21 (-16%)
Mutual labels:  file-sharing
JamTools
JamTools是一个跨平台的小工具集,包含了截屏、录屏、文字识别、各种格式转换、鼠标键盘动作录制播放、文件传输、聊天机器人等功能
Stars: ✭ 73 (+192%)
Mutual labels:  file-sharing
fipes
Plumbings to share files with your friends.
Stars: ✭ 50 (+100%)
Mutual labels:  file-sharing
cpomf
Pomf API compatible file host written in Crystal - The software behind nya.is.
Stars: ✭ 36 (+44%)
Mutual labels:  file-sharing
marketplace
A file sharing website using Laravel 5.5
Stars: ✭ 19 (-24%)
Mutual labels:  file-sharing
pste
Just a simple file hosting application inspired by the likes of pomf.se and teknik.io.
Stars: ✭ 22 (-12%)
Mutual labels:  file-sharing
fibr
Web File Browser
Stars: ✭ 37 (+48%)
Mutual labels:  file-sharing

Lan based file sharing application.

Home Window Search Results Audio Streaming Downloads

Introduction

A distributed file sharing application that works out of the box. Simply download the app and start sharing files over LAN. Features that set Media Hub apart:

  • Video and audio streaming
  • Fuzzy matching for improved searching
  • Flexible configuration options to share only required files
  • Support for meta data like "number of downloads", "file size" and "description"
  • Multicast and broadcast support
  • Easy to use core API for building other applications

Installation

Download the latest release for your operating system from the release. Once installed the app will notify all future updates.

To build from source:

  • Clone the repository.
  • Run yarn install to install all dependencies.
  • Run yarn bundle to bundle the Javascript code.
  • Run yarn package to create an application that will be placed in the dist directory.

Working

Media Hub basically has 2 parts: client and server.

The client is responsible for making search requests and downloading data. Search requests are UDP messages currently made through multicast but the core library supports both broadcast and multicast. Files and their meta data are requested via HTTP.

The server handles all incoming requests. It has a UDP service that handles the incoming search requests and a HTTP server that serves files and meta data.

The core library supports a lot of flexibility with respect to configuration however minimal support has been added to GUI as of v0.1.0.

Contributing

The entire code base is split into 3 parts: core, GUI and CLI.

Core

This is where media hub actually lives. It consists of 2 parts:

  • daemon: The daemon is the server that handles incoming UDP and HTTP requests. The UDP and HTTP services are managed by instances of the UDPService and HTTPService respectively. The code for the services can be found under src/core/daemon/services.

There is also a file indexer that keeps track of shared files and maintains related meta data. The related files can be found in src/core/daemon/fileIndex. The classes exported from fileIndex are dependent on each other i.e. FileIndex MetaData and SearchHandler are coupled and not completely independent.

Finally the entire daemon logic is abstracted away by the Server class exported from src/core/daemon/server.js. This makes it easy to use the daemon everywhere else.

  • client: The client provides support for UDP search requests. Making HTTP requests are left to the GUI or CLI apps. The Client class can be found under src/core/client/client.js.

GUI

This contains the code for electron. src/app/main.js is the entry point for electron's main process. src/app/render/index.js is the entry point for electron's renderer process and the React App.

The structure of the render directory is similar to a React-Redux web app.

src/app/utils/client.js exports the client logic by extending upon the Client provided by core. src/app/utils/fileDownloader.js implements a file downloader which is used by client to actually download files.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].