Git Product home page Git Product logo

hadouken's Introduction

Overview

ℹ️ Hadouken is out of date in many ways and is currently not being worked on at all.

I recommend trying to switch to Porla (https://github.com/porla/porla) which can solve some interesting problems in easy ways. Otherwise, there are alternatives that may be more attractive.

Getting started

To get started, head over to the releases and download a binary for your platform. If none exists, you might need to build one yourself.

Once Hadouken is installed, access the web interface by heading to http://localhost:7070/gui/index.html.

Please refer to the documentation for more information on how to configure and run Hadouken on your platform.

For developers

If you're interested in contributing, we recommend reading through the contribution guidelines.

For further documentation regarding plugins or the JSONRPC API, please refer to the developer documentation.

hadouken's People

Contributors

ellisgeek avatar gitter-badger avatar matjos avatar olegtarasov avatar patriksvensson avatar pavildon avatar rextremendae avatar robo210 avatar ryangrange avatar steven-kleist avatar tinamil avatar vktr 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hadouken's Issues

Hadouken needs a fresh icon/logo!

We need a new and fresh icon/logo for Hadouken to show off the awesomeness. Since Hadouken is a fireball attack from Street Fighter and a torrent is a fast flowing stream, the logotype should probably be a fireball shaped like a drop of water and blue to the color.

Make separate x86 and x64 releases

We must separate the build into two releases, one for x86 and one for x64. Apart from building two times and changing platform on each project, the only external library not compatible with this change is SQLite. Luckily, an x64 version exists in NuGet, so should be an easy conditional check when compiling.

Change interface IPlugin to abstract class Plugin

In order to prepare for the new plugin API we must move from the interface based plugin system with IPlugin to an abstract class called Plugin which should look something like this,

public abstract class Plugin
{
    public Plugin() { }

    protected IMessageBus MessageBus { get; internal set; }

    public abstract void OnLoad();

    public virtual void OnUnload();
}

RSS Plugin

Hi there i just came across hdkn, looks very promising.

I installed the master branch 1.4.2 but can't seem to find the rss option.
Am i overlooking it, or is it not ready yet?

Modify IPluginEngine and IPluginManager to proxy all calls through a WCF service to the IPluginHost

IPluginEngine and IPluginManager should proxy all function calls through a WCF service to the IPluginHost. This is so we can manage our plugins which are hosted in a separate process.

Pseudo code for the implementation of IPluginManager.Reload where the Host is the WCF host connected to the plugin host in a separate process.

public void Reload()
{
    _pluginEngine.Host.Reload(name, version);
}

AutoAdd plugin

As a user of Hadouken I want to be able to set up a set of watched folders which will be monitored for torrent files according to regular expression filters I've specified.

The filter should set the save path and label accordingly.

Files which are added to Hadouken should be removed from the folder.

The option to auto start downloads per filter is nice to have.

JS API for browsing file system

A clean JS API for browsing the file system. Something like,

var dialog = new SelectFolderDialog();
dialog.addEvent("onfolderselected", function(path) {
    alert("Path: " + path);
});
dialog.show();

This should be quite easy to do with the help of a few supporting HTTP API actions.

Monitoring folders for .torrent files?

Hi, I’ve just installed this and it looks like just what I was looking. Thanks for providing it.
There’s one feature which may or may not already be in the app. In the past I’ve installed µTorrent as a service and have been able to tell it to monitor a local folder for .torrent files. When I drop one in there it ingests it and starts the download. That was my preferred method of getting my ‘always on’ machine to download things I found when using a laptop/other computer.
Is there a comparable feature for monitoring folders in Hadouken? If not, please can I request if as a future enhancement.

Thanks

Rob

"Report bug" button in the Web UI

Since we're still in quite early stages of development, there should be a "Report bug" button in the Web UI which gathers data from users experiencing problems.

Data collected should be,

  • Version
  • Time
  • Text describing the problem
  • Attached log file

This data should be posted to a URL somewhere. That page should just gather this information for later use.

Problem building from source

I cloned the v1.x-branch of hadouken and tried to build it from source using the Ruby-commands you speficied in the readme but it fails for me on building the test-cases.

Http\HttpServerTests.cs(11,21): error CS0234: The type or namespace name 'HttpServer' does not exist in the namespace 'Hadouken.Http' (are you missing an assembly reference?)[I:\Development\GitHub\hdkn\src\Tests\Hadouken.UnitTests\Hadouken.UnitTests.csproj]

Building it from inside VS works fine though and all the tests will complete without any hickups if run that way, any idea to why this happens? Also, whats the gain of building using Ruby instead of just building it from VS?

Revise torrent metadata model

Implement such things as saving trackers, per-torrent specific settings not yet supported. Should be a few more migrations to adapt database model and then some code for saving and loading this data.

Plugin engine should rely on the directed graph for plugin relationships

The plugin engine contains both a dictionary of plugin managers, and a directed graph with plugin relationships.

When loading the plugin engine we should use the graph to resolve all relationships and load all plugins in the correct order.

When upgrading a plugin, we should first use the graph to calculate the plugins we need to unload before upgrading that plugin. Then we should load plugins in the reverse order.

When unloading a plugin, also unload all plugins which depends on it.

When loading a plugin, also load all dependencies.

When unloading the plugin engine, calculate the order we need to unload them.

Linux support

Let me be the first one (and most certainly not the last!) to request support for linux (debian/ubuntu ++), while Windows is great and all, most people run thire media servers (and many media players aswell, hint hint openelec.tv) on linux platforms

If you dont have any plans on a linux port I would suggest you make this clear in the README as I'm quite sure this will be a very requested feature to come

PS: I love the idea of this project, well done!

Hadouken fails to run from source in a fresh cloned repository

If you clone the repository and run it from Visual Studio it will fail in the DbConnection.CreateConnection() method since the output directory does not contain the directory Data.

There are two possible fixes,

  1. Change the data path to point to the root output directory.
  2. Create the Data directory on startup. In this case, all specified paths in the App.config should be created.

The quick fix until this is resolved is to create the folder ~/src/Hadouken/bin/Debug/Data.

Change default username and password

I have installed Hadouken on Windows 2012, while installing there was no questions about username and password, found them in wiki. But how can I change them now?

Implement a MSMQ based message bus.

In order to prepare for the new plugin API we should move to a pure MSMQ based message bus. This can be made using either NServiceBus3 or MassTransit.

Add plugin host process

A new application must be created in order to host our plugins in a separate process. This should be a simple console application which will be started from the IPluginEngine implementation.

Pseudo code

public static void Main(string[] args)
{
    // Where should we connect the named pipe?
    var wcfHost = args[0];

    // Load the assemblies with implementations
    Kernel.Configure(AppDomain.Current.Load("Hadouken.Plugins.IpcPluginHost"));

    // Get host instance
    var host = Kernel.Get<IPluginHost>();

    // Connect the plugin host to the plugin engine, telling
    // it we are now online and ready for obeying orders.
    host.Connect(wcfHost);

    // Disconnect and shut down
    host.Disconnect();
}

AutoMove plugin

As a user of Hadouken I want some of my completed downloads moved to a different directory when they are finished. I want to be able to add label filters (regex's) and each time a download is completed, the files are moved to a destination path specified by me, where regex's substitutions are replaced by the matched values.

Eg. filter: "Foo.(.*)" , save path: C:\Temp$1

Ability to have "Incomplete" Folder

Not quite a bug, but having the ability to have currently downloading items in one folder, and then move to a completed folder after they're done would be nice.

Better logging

As a user, when Hadouken goes down, I want to be able to dig up a log file which contains all the relevant information regarding this event. Better to be verbose than silent. Doge agrees.

wow

Create torrent plugin

A simple plugin for creating torrents from files/folders running Hadouken. This should be released as a plugin.

Basic workflow:

  • Click "Create torrent" in toolbar
  • Select file/folder
  • Set some options (such as "Add to download queue")
  • Click "Create" to have Hadouken create the torrent and either stream it to the browser or save it on the computer running Hadouken (or both).

[enhancement] Enable creation of new torrents from web UI

It would be great if I could create and download a torrent based on files on the filesystem of the machine running Hadouken server. I do this regularly to distribute copies of family photos to my sister at college, parents, etc.

rutorrent is a great example of this functionality

Change the IPluginManager interface

The interface below is pure speculation but should provide a somewhat clear picture of what we are trying to achieve.

public interface IPluginManager
{
    void Load();
    void Unload();

    void Install();
    void Uninstall();

    byte[] GetResource(string name);

    string Name { get; }
    Version Version { get; }
}

The MSI package should include a production config file

When you build the MSI package, it will incorrectly use the configuration file in the build/binaries directory. This configuration file is not suited for the MSI package since the installer puts the plugins in another directory, and the installed version of Hadouken should put its logfiles elsewhere.

Create a new configuration file in config/Release/Hadouken.Service.exe.config with file logging to ProgramData/Hadouken/Logs/ and plugin loading from ProgramData/Hadouken/Plugins. This file should be used when building the MSI package.

Explicit event handlers

The Problem

Hadouken does not know about event handlers and if they throw exceptions or not. Event handlers executes in any order SignalR seem fit. Also, the user is given no opportunity to decide in which order the event handlers should execute.

The Solution

In vNext for manifest.json, implement a new element called eventHandlers which is dictionary that maps event names to JSONRPC services in the running plugin.

The core.events.publish JSONRPC service should get a list of event mappings and then call them one by one, reporting any errors if they occur.

This also gives the user an opportunity to sort the event handlers for a given event, or even disable them if necessary.

Removing SignalR

SignalR was never intended to be a core component. With this change, we can move SignalR to a separate plugin and have its manifest.json look something like this,

"eventHandlers": {
  "<all>": "signalr.hub.publish"
}

The JSONRPC service signalr.hub.publish will then handle the incoming data and publish it to the SignalR clients.

By removing SignalR from the core we reduce complexity and can focus on keeping Hadouken small and lean.

Installer does not ask for account information but starting a service fails

Hi!

I tried to install Hadouken using the installer (version hdkn-1.3.3.4000-x64) on 64-Bit machine, and the installer does not ask for any user account information anymore.

However, when installing the Windows service, an error message is shown:

Service 'Hadouken' (Hadouken) failed to start. Verify that you have sufficient privileges to start system services.

I do allow execution via the UAC prompt, and the Administrator account should have sufficient privileges.

Notify on new version

The web interface should show a dismissable alert when a new version of Hadouken is available. The alert should include a link to download the latest installer.

Build a DTK Nuget package

When we build the zip and MSI package, we should also build a Development Toolkit package for Nuget. This Nuget should contain a working version of Hadouken, same as the zip package.

Installing this package should reference Hadouken.Framework and other required assemblies, as well as setting project startup to "Run external program" and point to the Hadouken.Service executable with the output path as a --plugin parameter.

This will enable F5 debugging for plugins.

Portable Hadouken does not run

The portable version of Hadouken (the packaged zip file) does not run. The App.config file has incorrect settings for a portable application. In fact, the App.config is the one we use for the installed version of Hadouken.

This can be resolved by creating another App.config for the portable version in ~/src/Configuration/Hadouken.exe.config-portable and use that when packaging the zip file.

The portable configuration file should have the following <appSettings>,

<appSettings>
  <add key="Path:Data" value="Data" />
  <add key="Path:Logs" value="Logs"/>
  <add key="Path:Web" value="Web/web.zip" />
</appSettings>

Log entries sort order

Log entries should be listed from most to least recent (reverse order). This makes it more intuitive and easier to read.

Implement download queue

The MonoTorrentEngine should have a queue for downloading torrents. A setting, eg bt.transfers.maxConcurrentTransfers should control how many torrents should be downloaded at the same time.

A new function called ForceStart() should be added to ITorrentManager and if called, will start downloading the torrent regardless of the current active downloads. When called, a new property named Forced should be set to true.

To be able to represent a forced torrent in the UI, the Forced property should be included in the /api/torrents HTTP GET method.

Path to plugins is wrong?

GET http://localhost:7890/manage/plugins/settings/config 404 (Not Found) jquery-1.11.0.min.js:4
GET http://localhost:7890/manage/plugins/settings/web 404 (Not Found) 
GET http://localhost:7890/plugins/config/js/factory.js 404 (Not Found) jquery.js:6
GET http://localhost:7890/plugins/torrents/js/factory.js 404 (Not Found) 

Something wrong?

RSS plugin

As a user of Hadouken I want to be able to download torrents from a RSS/Atom feed. The torrents should only be downloaded if it matches any one the regular expression filters I've added for that feed.

Depending on the filter a torrent is matched by, the label and save path should be set accordingly.

Auto starting of a torrent by filter is nice to have.

For feeds which requires authentication, it would be nice to have the option of specifying a cookie which is transmitted with each feed request.

Feed poll interval should also be configurable per feed, but not more often than 15 minutes.

Ratio plugin

As a user of Hadouken I want to automatically control torrents seeding time based on ratio. I want to be able to specify for each torrent individually or a specific label on which ratio I want to stop 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.