All Projects → aler9 → dctk

aler9 / dctk

Licence: BSD-3-Clause license
Direct Connect client library (ADC and NMDC) for the Go programming language

Programming Languages

go
31211 projects - #10 most used programming language
Dockerfile
14818 projects
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to dctk

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 (+586.67%)
Mutual labels:  peer-to-peer, direct-connect
network
Monorepo containing all the main components of Streamr Network.
Stars: ✭ 522 (+3380%)
Mutual labels:  peer-to-peer
Crdt Playground
Stars: ✭ 215 (+1333.33%)
Mutual labels:  peer-to-peer
sublime
Repository for the Tandem Sublime Plugin
Stars: ✭ 22 (+46.67%)
Mutual labels:  peer-to-peer
Zebus
A lightweight Peer to Peer Service Bus
Stars: ✭ 222 (+1380%)
Mutual labels:  peer-to-peer
trystero
🤝 Serverless WebRTC matchmaking for painless P2P — Make any site multiplayer in a few lines — Use BitTorrent, IPFS, or Firebase
Stars: ✭ 512 (+3313.33%)
Mutual labels:  peer-to-peer
Erpc
An efficient, extensible and easy-to-use RPC framework.
Stars: ✭ 2,274 (+15060%)
Mutual labels:  peer-to-peer
geesome-node
🦈 Your self-hosted decentralized Messenger, Social network, Media file storage on top of IPFS! Freely communicate in encrypted chat groups, share images, video, text or any data without a risk of censorship or blocking.
Stars: ✭ 90 (+500%)
Mutual labels:  peer-to-peer
pinecone
Peer-to-peer overlay routing for the Matrix ecosystem
Stars: ✭ 361 (+2306.67%)
Mutual labels:  peer-to-peer
N2n
Peer-to-peer VPN
Stars: ✭ 3,424 (+22726.67%)
Mutual labels:  peer-to-peer
Kinectron
Electron + Kinect + PeerJS = Kinect data broadcast to browsers
Stars: ✭ 249 (+1560%)
Mutual labels:  peer-to-peer
Otunnel
peer-to-peer tunnel tool
Stars: ✭ 224 (+1393.33%)
Mutual labels:  peer-to-peer
haskell-ricochet
(WIP/Experimental) Ricochet implementation as Haskell Library.
Stars: ✭ 22 (+46.67%)
Mutual labels:  peer-to-peer
Redwood
A highly-configurable, distributed, realtime database that manages a state tree shared among many peers.
Stars: ✭ 218 (+1353.33%)
Mutual labels:  peer-to-peer
tool-db
A peer-to-peer decentralized database
Stars: ✭ 15 (+0%)
Mutual labels:  peer-to-peer
Fastcast
🌊 Stream peer-to-peer audio and video content
Stars: ✭ 202 (+1246.67%)
Mutual labels:  peer-to-peer
Cratetorrent
A BitTorrent V1 engine library for Rust (and currently Linux)
Stars: ✭ 233 (+1453.33%)
Mutual labels:  peer-to-peer
gofast
High performance transport protocol for distributed applications.
Stars: ✭ 19 (+26.67%)
Mutual labels:  peer-to-peer
orbit-db-cli
CLI for orbit-db
Stars: ✭ 60 (+300%)
Mutual labels:  peer-to-peer
sage
💸 Download from your banks and credit cards straight to your computer
Stars: ✭ 51 (+240%)
Mutual labels:  direct-connect

dctk

Test Lint CodeCov PkgGoDev

dctk implements the client part of the Direct Connect peer-to-peer system (ADC and NMDC protocols) in the Go programming language. It includes:

  • a library, that allows the creation of clients capable of interacting with hubs and other clients;
  • a series of command line utilities that make use of the library.

Direct Connect is semi-centralized peer-to-peer system in which peers connect to servers (hubs) and exchange textual messages and files. Files are indexed by computing their Tiger Tree Hash (TTH), provided by users through their file list, and searchable on a hub-basis. There exist two variants, one based on the traditional NMDC protocol (NeoModus Direct Connect) and the other based on the newer ADC protocol (Advanced Direct Connect).

This project is based on the go-dc project, that provides a base layer for building DC-related software.

Features:

  • ADC and NMDC transparent protocol support
  • Active and passive mode
  • Hub: connection with configurable try count, password authentication, keepalive, compression, encryption
  • Chat: bidirectional public and private chat
  • File search: by name or TTH, reply to requests
  • File download: by name or TTH, full or partial, on ram or disk, multiple in parallel, compression, encryption, configurable download slots, validation via TTH, client fingerprint validation
  • File upload: upload from personal share, asynchronous file indexing system, file list generation and serving, compression, encryption, configurable upload slots, tthl extension support, client fingerprint validation
  • Examples provided for every feature, comprehensive test suite, continuous integration

Note: this project uses the rolling release development model, as it is used in a production environment which requires the latest updates. The public API may suffer minor changes. The master branch is to be considered stable.

Table of contents

Library

Installation

Go ≥ 1.17 is required, and modules must be enabled (there must be a go.mod file in your project folder, that can be created with the command go mod init main). To install the library, it is enough to write its name in the import section of the source files that will use it. Go will take care of downloading the needed files:

import (
    "github.com/aler9/dctk"
)

Examples

API Documentation

https://pkg.go.dev/github.com/aler9/dctk#pkg-index

Testing

If you want to edit this library and test the results, you can you automated tests with:

make test

Command-line utilities

Installation

Go ≥ 1.17 is required. Download, compile and install the binaries with:

go get github.com/aler9/dctk/cmd/...

Usage

dc-tth [<flags>] <filepath>

Compute the Tiger Tree Hash (TTH) of a given file.
dc-search --hub=HUB --nick=NICK [<flags>] <query>

Search files and directories by name in a given hub.
dc-download --hub=HUB --nick=NICK --outdir=OUTDIR [<flags>] <user> <fpath>

Download a file or a directory from a user in a given hub.
dc-share --hub=HUB --nick=NICK [<flags>] <share>

Share a directory in a given hub.

Links

Related projects

Hubs

Other clients

Other libraries

Standards

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].