ipfs

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2021 License: Apache-2.0, MIT, Apache-2.0, + 1 more Imports: 0 Imported by: 0

README

PGFS - ParaGliding File System

Project Description

This project is built as (self)tasked in the course PROG2005 Cloud Technologies for the Spring 2021 Semester. The project is suggested to be available as open source, for further work from external contributors after the project period has ended. This application is based IPFS (InterPlanetary File System), and is intended to be used by paragliders to share flight-info with each other, completely decentralized. The application in the current state is entirely backend-focused and is written in golang. Paraglider-flight files (in standardized format ".igc") are intended for sharing on a peer-to-peer basis.

This project is directly forked from the go-implementation of IPFS - located at go-ipfs
All licenses and dependencies from the original project has been preserved.

Further Project Progress Documentation is located further down in this README.

Features

The program is directly based on IPFS, and all features from the go-implementation of IPFS (go-ipfs) is still operational. Additional features (as described in the project description) include:

  • Uploading and downloading files is exclusive for files of the .igc-format (standardized file-format for paragliding flight-information)
  • Running the program initiates 3 PGFS-nodes for testing-purposes
  • Mother-node (main server bootstrap-node) is located on the internal NTNU-network. In practice, this means the program only works internally in the NTNU institutional network. To use your own server-node (for further development purposes), the bootstrap-node must be updated to coincide with your own server-node.

Deployment

This project is planned to be dockerized closer to due-date. More information coming soon!

The Development Process (for assessment purposes)

Original Project Plan
  • Brief description - may be redundant, as it is mostly stated in the project description and feature-set.
What went well
  • Here goes what has been implemented, what has the group learned from the experience?
What didn't go as expected
  • Here goes issues - what was hard (getting to know IPFS on a deep level was both challenging and rewarding + took a lot of time (way more than expected in the proposed timeframe), write a paragraph or two on this)
  • Some platform issues, we are a diverse group in terms of preferred OS. 1x Linux, 1x Windows, 1x macOS.
The most challenging aspects
  • Here goes aspects of the project the group deemed most challenging.
The learning outcome
  • What did we learn? IPFS being the obvious answer, but it may be worth adding stuff like interrogating a foreign repository to make it fit specialized needs.
Total work hours

For this project, a high focus on collaboration has been prioritized. For every week of the project period, the group has had 6-10 hours of collaborative work (usually 2-3 sessions per week). The sessions have mostly happened physically (on campus) and each session usually has had a specific purpose (some sprints, some commune problem solving). In addition to these teamwork-sessions, we also split some work, to increase the learning-outcome per individual group member. ----put some more later, but ground work has been laid ;)


Authored by
Yoav Weber
Milosz Antoni Wudarczyk
Kristian Amundsen Øhman-Norén
2021, Norwegian University of Science and Technology

Documentation

Overview

IPFS is a global, versioned, peer-to-peer filesystem

Index

Constants

View Source
const ApiVersion = "/go-ipfs/" + CurrentVersionNumber + "/"
View Source
const CurrentVersionNumber = "0.9.0-dev"

CurrentVersionNumber is the current application's version literal

Variables

View Source
var CurrentCommit string

CurrentCommit is the current git commit, this is set as a ldflag in the Makefile

View Source
var UserAgent = "go-ipfs/" + CurrentVersionNumber + "/" + CurrentCommit

UserAgent is the libp2p user agent used by go-ipfs.

Note: This will end in `/` when no commit is available. This is expected.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
Package assets generated by go-bindata.// sources: init-doc/about init-doc/contact init-doc/help init-doc/ping init-doc/quick-start init-doc/readme init-doc/security-notes dir-index-html/dir-index.html dir-index-html/knownIcons.txt File generated together with 'bindata.go' when running `go generate .` DO NOT EDIT.
Package assets generated by go-bindata.// sources: init-doc/about init-doc/contact init-doc/help init-doc/ping init-doc/quick-start init-doc/readme init-doc/security-notes dir-index-html/dir-index.html dir-index-html/knownIcons.txt File generated together with 'bindata.go' when running `go generate .` DO NOT EDIT.
blocks
blockstoreutil
Package blockstoreutil provides utility functions for Blockstores.
Package blockstoreutil provides utility functions for Blockstores.
cmd
ipfs
cmd/ipfs implements the primary CLI binary for ipfs
cmd/ipfs implements the primary CLI binary for ipfs
Package core implements the IpfsNode object and related methods.
Package core implements the IpfsNode object and related methods.
commands
Package commands implements the ipfs command interface Using github.com/ipfs/go-ipfs/commands to define the command line and HTTP APIs.
Package commands implements the ipfs command interface Using github.com/ipfs/go-ipfs/commands to define the command line and HTTP APIs.
coreapi
Package coreapi provides direct access to the core commands in IPFS.
Package coreapi provides direct access to the core commands in IPFS.
corehttp
Package corehttp provides utilities for the webui, gateways, and other high-level HTTP interfaces to IPFS.
Package corehttp provides utilities for the webui, gateways, and other high-level HTTP interfaces to IPFS.
fuse
ipns
package fuse/ipns implements a fuse filesystem that interfaces with ipns, the naming system for ipfs.
package fuse/ipns implements a fuse filesystem that interfaces with ipns, the naming system for ipfs.
mount
package mount provides a simple abstraction around a mount point
package mount provides a simple abstraction around a mount point
readonly
package fuse/readonly implements a fuse filesystem to access files stored inside of ipfs.
package fuse/readonly implements a fuse filesystem to access files stored inside of ipfs.
Package gc provides garbage collection for go-ipfs.
Package gc provides garbage collection for go-ipfs.
fsrepo
package fsrepo TODO explain the package roadmap...
package fsrepo TODO explain the package roadmap...
test
thirdparty
dir
notifier
Package notifier provides a simple notification dispatcher meant to be embedded in larger structures who wish to allow clients to sign up for event notifications.
Package notifier provides a simple notification dispatcher meant to be embedded in larger structures who wish to allow clients to sign up for event notifications.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL