IPFS-Manager : Download, install, manage, debug your IPFS node

Download, install, manage, debug your IPFS node


https://github.com/RHazDev/IPFS-Manager

Features

  • Automatically downloads go-ipfs

  • Can connect to an already running IPFS node

  • Can start a new IPFS node

  • Supports all IPFS actions

  • Command-Line + Graphical

  • You can create scripts and tasks in Kotlin

  • Modify your IPFS configuration

  • Drag and drop files

  • Publish to IPNS

  • Create IPNS keys

  • Generates QR codes

  • Clear & Minimalist UI

Screenshots



Videos

Download

https://github.com/RHazDev/IPFS-Manager#Download

2 Likes

Scripting

Scripts and tasks are written in Kotlin, an awesome programming language for manipulating nullable objects, callbacks, and types.

You can learn it here: http://try.kotlinlang.org/koans

They use Java-IPFS-API for interacting with IPFS

You can compile them easily with Kotlin-Compiler-GUI

Here is a video: IPFS-Manager #1 : Compiling & Running a script

Scripts

A script is a simple class that is enabled when the manager is connected

import fr.rhaz.ipfs.KScript
import fr.rhaz.ipfs.append

public class ExampleScript: KScript("script"){

    override fun onEnabled() = log.append("Hello world!")

}

This script will write “Hello world!” to the console

Tasks

A task is a script that can be run when you type its name in the console

You can use tasks to automate actions like adding files, retrieve domains, publish IPNS, …

import fr.rhaz.ipfs.Task
import fr.rhaz.ipfs.append

public class ExampleTask: Task("example"){

    override fun onEnabled() = log.append("ExampleTask enabled!")

    override fun onCall(line: String){

        val version = ipfs.version() ?: return
        // Request the version. If there is an error, do not continue
        log.append(version)
        // Write the version

        val args = line.split(" ")
        // Split the line in multiple arguments
        if(args.size > 1) log.append(args[1])
        // If there is at least two arguments (the command + the first argument)
        // then write the first argument
    }
}

This task writes “ExampleTask enabled!” in the console when the manager is connected

When you type “example” (its name), it writes the IPFS version

When you type “example anything” (“anything” can be anything), it will write the IPFS version followed by what you wrote

This is really cool I was working on something in Python & C# that did a chunk of this in the end I thought that it might be better to build a package that ran client based in a web browser. check it out here it you want. http://ipfs.jefflubbers.com/#ecosystem

A feature that I used to had in my python/c# applications was to package files into .ipfs files that could either be download packages or would automatically launch the web browser. This would make it easier for people to share files with each other. Any thought about incorporating something like that?

You mean a file with the hash inside it?

Exactly the OS becomes responsive to the file extension and it launches the management program which then processes the hash / file. The structure that I used was a JSON array so multiple things could be packaged into a single file.
Action “website” launched the browser and “download” downloaded files.

[
    {
    "action": "website",
    "type": "ipfs", 
    "link": "/", 
    "hash": "QmasbjWR8jcjDXRriDtdG77v2meD2zjWBgzxpXPGZGkh8J"
    }
]

I thought that having part of the ecosystem develope to function with this type of sharing could help adopt users.

Much respect for a desktop application. I’m so sick of these browser and JavaScript based “apps”
It’s not super pretty but it’s very functional. Bonus respect for basing it on a type-safe functional language.