diff --git a/.github/workflows/deploy.yml b/.github/workflows/.deploy.yml similarity index 100% rename from .github/workflows/deploy.yml rename to .github/workflows/.deploy.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1c857dd8..a8f70c02 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,11 @@ -on: [pull_request] +on: + pull_request: + paths-ignore: + - '**.md' + - 'docs/**' + - 'LICENSE' + - '.gitignore' + - 'CHANGELOG.md' name: Test jobs: diff --git a/README.md b/README.md index cbecadde..a3a83471 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,82 @@ -[![Build Status](https://travis-ci.com/skycoin/dmsg.svg?branch=master)](https://travis-ci.com/skycoin/dmsg) +[![Go Report Card](https://goreportcard.com/badge/github.com/skycoin/dmsg)](https://goreportcard.com/report/github.com/skycoin/dmsg) +![Test](https://github.com/skycoin/dmsg/actions/workflows/test.yml/badge.svg) +![Release](https://github.com/skycoin/dmsg/actions/workflows/release.yml/badge.svg) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/skycoin/dmsg/badge)](https://api.securityscorecards.dev/projects/github.com/skycoin/dmsg) +[![go.mod](https://img.shields.io/github/go-mod/go-version/skycoin/dmsg.svg)](https://github.com/skycoin/dmsg) +[![skywire](https://img.shields.io/aur/version/skywire?color=1793d1&label=skywire&logo=arch-linux)](https://aur.archlinux.org/packages/skywire/) +[![skywire-bin](https://img.shields.io/aur/version/skywire-bin?color=1793d1&label=skywire-bin&logo=arch-linux)](https://aur.archlinux.org/packages/skywire-bin/) # dmsg +`dmsg` (read as *D-message*) is an anonymous relay system and encrypted transport layer used as the control plane for [Skywire](https://github.com/skycoin/skywire). It provides public key-based routing between clients relayed by servers, with end-to-end encryption via the Noise Protocol (ChaCha20-Poly1305 / secp256k1). -`dmsg` is a distributed messaging system comprised of three types of services: -- `dmsg.Client` represents a user/client that wishes to use the dmsg network to establish `dmsg.Session`s and `dmsg.Stream`s. -- `dmsg.Server` represents a service that proxies `dmsg.Stream`s between `dmsg.Client`s. -- `dmsg.Discovery` acts like a *DNS* of `dmsg.Server`s and `dmsg.Client`s, identifying them via their public keys. +## Architecture + +The dmsg network is comprised of three types of services: + +- **`dmsg.Discovery`** — identifies servers and clients by their `secp256k1` public keys, similar to DNS for the dmsg network. +- **`dmsg.Server`** — relays encrypted streams between clients. Servers connect to each other so that clients on different servers can communicate. +- **`dmsg.Client`** — connects to one or more servers to establish sessions and streams with other clients. ``` [D] - S(1) S(2) + S(1) ←——→ S(2) // \\ // \\ // \\ // \\ C(A) C(B) C(C) C(D) ``` Legend: -- ` [D]` - `dmsg.Discovery` -- `S(X)` - `dmsg.Server` -- `C(X)` - `dmsg.Client` +- `[D]` — `dmsg.Discovery` +- `S(X)` — `dmsg.Server` +- `C(X)` — `dmsg.Client` +- `←——→` — server-to-server connection (enables cross-server relay) + +Clients and servers are identified via `secp256k1` public keys and store records of themselves in the discovery. Client records include the public keys of servers they are delegated to. + +## Key Concepts + +- **Session** — the connection between a client and a server (noise-encrypted TCP + yamux/smux multiplexing). +- **Stream** — a connection between two clients, relayed via one or more servers. Each stream has its own noise handshake for end-to-end encryption. The relay servers cannot read the stream contents. +- **Server-to-Server Relay** — servers connect to each other so that a client on one server can reach a client on another server. A stream is relayed through at most two servers (the client's server and the destination's server). + +## Server-to-Server Connections + +By default, dmsg servers automatically discover and connect to all other servers registered in the same dmsg discovery. This means clients connected to different servers can reach each other transparently — the stream request is relayed through the server-to-server connection. + +Servers can also be configured to connect to specific servers via static config, which is useful for environments without discovery (e.g., direct clients): + +```json +{ + "peers": [ + {"public_key": "02abc...", "address": "1.2.3.4:8081"} + ] +} +``` + +When a client dials a destination that is not on its own server, the following order is used: +1. Try existing sessions to the destination's delegated servers (direct relay) +2. Try existing sessions to any other connected server (cross-server relay) +3. Establish a new session to the destination's delegated server (last resort) -`dmsg.Client`s and `dmsg.Server`s are identified via `secp256k1` public keys, and store records of themselves in the `dmsg.Discovery`. Records of `dmsg.Client`s also includes public keys of `dmsg.Server`s that are delegated to proxy data between it and other `dmsg.Client`s. +## Dmsg Tools and Libraries -The connection between a `dmsg.Client` and `dmsg.Server` is called a `dmsg.Session`. A connection between two `dmsg.Client`s (via a `dmsg.Server`) is called a `dmsg.Stream`. A data unit of the dmsg network is called a `dmsg.Frame`. +- [`dmsgcurl`](./docs/dmsgcurl.md) — simplified `curl` over `dmsg`. +- [`dmsgpty`](./docs/dmsgpty.md) — simplified `SSH` over `dmsg`. +- `dmsgweb` — HTTP and raw TCP port forwarding over `dmsg`, with a resolving SOCKS5 proxy for `.dmsg` domains. +- `dmsghttp` — HTTP file server over `dmsg`. +- `dmsg-socks5` — SOCKS5 proxy server and client over `dmsg`. -## Dmsg tools and libraries +## Additional Resources -- [`dmsgcurl`](./docs/dmsgcurl.md) - Simplified `curl` over `dmsg`. -- [`dmsgpty`](./docs/dmsgpty.md) - Simplified `SSH` over `dmsg`. -## Additional resources -- [`dmsg` examples.](./examples) -- [`dmsg.Discovery` documentation.](./cmd/dmsg-discovery/README.md) -- [Starting a local `dmsg` environment.](./integration/README.md) +- [`dmsg` examples](./examples) +- [`dmsg.Discovery` documentation](./cmd/dmsg-discovery/README.md) +- [Starting a local `dmsg` environment](./integration/README.md) ## Dependency Graph -made with [goda](https://github.com/loov/goda) +Made with [goda](https://github.com/loov/goda): ``` go run github.com/loov/goda@latest graph github.com/skycoin/dmsg/... | dot -Tsvg -o docs/dmsg-goda-graph.svg diff --git a/docs/dmsg-goda-graph.svg b/docs/dmsg-goda-graph.svg index 4047bfb1..1a716d91 100644 --- a/docs/dmsg-goda-graph.svg +++ b/docs/dmsg-goda-graph.svg @@ -1,47 +1,47 @@ - - - + + G - + github.com/skycoin/dmsg - -github.com/skycoin/dmsg -12 / 253B + +github.com/skycoin/dmsg +12 / 253B github.com/skycoin/dmsg/cmd/dmsg/commands - - -github.com/skycoin/dmsg/cmd/dmsg/commands -138 / 3.8KB + + +github.com/skycoin/dmsg/cmd/dmsg/commands +113 / 3.2KB github.com/skycoin/dmsg:e->github.com/skycoin/dmsg/cmd/dmsg/commands - - + + github.com/skycoin/dmsg/cmd/conf - -github.com/skycoin/dmsg/cmd/conf -12 / 261B + +github.com/skycoin/dmsg/cmd/conf +12 / 261B @@ -49,57 +49,57 @@ github.com/skycoin/dmsg/cmd/conf/commands - -github.com/skycoin/dmsg/cmd/conf/commands -28 / 0.8KB + +github.com/skycoin/dmsg/cmd/conf/commands +28 / 0.8KB github.com/skycoin/dmsg/cmd/conf:e->github.com/skycoin/dmsg/cmd/conf/commands - - + + - + github.com/skycoin/dmsg/pkg/dmsg - - -github.com/skycoin/dmsg/pkg/dmsg -2607 / 75.8KB + + +github.com/skycoin/dmsg/pkg/dmsg +2969 / 87.5KB github.com/skycoin/dmsg/cmd/conf/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgclient - - -github.com/skycoin/dmsg/pkg/dmsgclient -534 / 20.8KB + + +github.com/skycoin/dmsg/pkg/dmsgclient +549 / 21.2KB github.com/skycoin/dmsg/cmd/conf/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + github.com/skycoin/dmsg/cmd/dial - -github.com/skycoin/dmsg/cmd/dial -12 / 261B + +github.com/skycoin/dmsg/cmd/dial +12 / 261B @@ -107,193 +107,209 @@ github.com/skycoin/dmsg/cmd/dial/commands - -github.com/skycoin/dmsg/cmd/dial/commands -162 / 5.8KB + +github.com/skycoin/dmsg/cmd/dial/commands +162 / 5.8KB github.com/skycoin/dmsg/cmd/dial:e->github.com/skycoin/dmsg/cmd/dial/commands - - + + - + github.com/skycoin/dmsg/pkg/disc - - -github.com/skycoin/dmsg/pkg/disc -856 / 27.1KB + + +github.com/skycoin/dmsg/pkg/disc +864 / 27.3KB github.com/skycoin/dmsg/cmd/dial/commands:e->github.com/skycoin/dmsg/pkg/disc - - + + github.com/skycoin/dmsg/cmd/dial/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/cmd/dial/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + github.com/skycoin/dmsg/cmd/dmsg - -github.com/skycoin/dmsg/cmd/dmsg -12 / 262B + +github.com/skycoin/dmsg/cmd/dmsg +12 / 262B github.com/skycoin/dmsg/cmd/dmsg:e->github.com/skycoin/dmsg/cmd/dmsg/commands - - + + github.com/skycoin/dmsg/cmd/dmsg-discovery - -github.com/skycoin/dmsg/cmd/dmsg-discovery -12 / 291B + +github.com/skycoin/dmsg/cmd/dmsg-discovery +12 / 291B github.com/skycoin/dmsg/cmd/dmsg-discovery/commands - - -github.com/skycoin/dmsg/cmd/dmsg-discovery/commands -464 / 16.1KB + + +github.com/skycoin/dmsg/cmd/dmsg-discovery/commands +448 / 15.4KB github.com/skycoin/dmsg/cmd/dmsg-discovery:e->github.com/skycoin/dmsg/cmd/dmsg-discovery/commands - - + + - + +github.com/skycoin/dmsg/pkg/cmdutil + + +github.com/skycoin/dmsg/pkg/cmdutil +141 / 4.7KB + + + + + +github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/cmdutil + + + + + github.com/skycoin/dmsg/pkg/direct - - -github.com/skycoin/dmsg/pkg/direct -186 / 5.7KB + + +github.com/skycoin/dmsg/pkg/direct +186 / 5.7KB - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/direct - - + + - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/disc/metrics - - -github.com/skycoin/dmsg/pkg/disc/metrics -44 / 1.5KB + + +github.com/skycoin/dmsg/pkg/disc/metrics +44 / 1.5KB - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/disc/metrics - - + + - + github.com/skycoin/dmsg/pkg/discovery/api - - -github.com/skycoin/dmsg/pkg/discovery/api -536 / 17.8KB + + +github.com/skycoin/dmsg/pkg/discovery/api +536 / 17.8KB - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/discovery/api - - + + - + github.com/skycoin/dmsg/pkg/discovery/store - - -github.com/skycoin/dmsg/pkg/discovery/store -512 / 16.2KB + + +github.com/skycoin/dmsg/pkg/discovery/store +524 / 16.5KB - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/discovery/store - - + + - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/pkg/dmsghttp - - -github.com/skycoin/dmsg/pkg/dmsghttp -199 / 5.7KB + + +github.com/skycoin/dmsg/pkg/dmsghttp +200 / 5.7KB - + github.com/skycoin/dmsg/cmd/dmsg-discovery/commands:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + github.com/skycoin/dmsg/cmd/dmsg-server - -github.com/skycoin/dmsg/cmd/dmsg-server -12 / 282B + +github.com/skycoin/dmsg/cmd/dmsg-server +12 / 282B @@ -301,607 +317,637 @@ github.com/skycoin/dmsg/cmd/dmsg-server/commands - -github.com/skycoin/dmsg/cmd/dmsg-server/commands -39 / 1.3KB + +github.com/skycoin/dmsg/cmd/dmsg-server/commands +39 / 1.3KB - + github.com/skycoin/dmsg/cmd/dmsg-server:e->github.com/skycoin/dmsg/cmd/dmsg-server/commands - - + + github.com/skycoin/dmsg/cmd/dmsg-server/commands/config - -github.com/skycoin/dmsg/cmd/dmsg-server/commands/config -54 / 1.5KB + +github.com/skycoin/dmsg/cmd/dmsg-server/commands/config +54 / 1.5KB - + github.com/skycoin/dmsg/cmd/dmsg-server/commands:e->github.com/skycoin/dmsg/cmd/dmsg-server/commands/config - - + + github.com/skycoin/dmsg/cmd/dmsg-server/commands/start - - -github.com/skycoin/dmsg/cmd/dmsg-server/commands/start -137 / 4.7KB + + +github.com/skycoin/dmsg/cmd/dmsg-server/commands/start +118 / 3.9KB - + github.com/skycoin/dmsg/cmd/dmsg-server/commands:e->github.com/skycoin/dmsg/cmd/dmsg-server/commands/start - - + + - + github.com/skycoin/dmsg/cmd/dmsg-server/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/pkg/dmsgserver - - -github.com/skycoin/dmsg/pkg/dmsgserver -287 / 9.0KB + + +github.com/skycoin/dmsg/pkg/dmsgserver +295 / 9.3KB - + github.com/skycoin/dmsg/cmd/dmsg-server/commands/config:e->github.com/skycoin/dmsg/pkg/dmsgserver - - + + + + + +github.com/skycoin/dmsg/cmd/dmsg-server/commands/start:e->github.com/skycoin/dmsg/pkg/cmdutil + + - + github.com/skycoin/dmsg/cmd/dmsg-server/commands/start:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/cmd/dmsg-server/commands/start:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsg/metrics - - -github.com/skycoin/dmsg/pkg/dmsg/metrics -111 / 3.9KB + + +github.com/skycoin/dmsg/pkg/dmsg/metrics +111 / 3.9KB - + github.com/skycoin/dmsg/cmd/dmsg-server/commands/start:e->github.com/skycoin/dmsg/pkg/dmsg/metrics - - + + - + github.com/skycoin/dmsg/cmd/dmsg-server/commands/start:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/cmd/dmsg-server/commands/start:e->github.com/skycoin/dmsg/pkg/dmsgserver - - + + github.com/skycoin/dmsg/cmd/dmsg-socks5 - -github.com/skycoin/dmsg/cmd/dmsg-socks5 -12 / 282B + +github.com/skycoin/dmsg/cmd/dmsg-socks5 +12 / 282B github.com/skycoin/dmsg/cmd/dmsg-socks5/commands - - -github.com/skycoin/dmsg/cmd/dmsg-socks5/commands -243 / 8.0KB + + +github.com/skycoin/dmsg/cmd/dmsg-socks5/commands +275 / 9.2KB - + github.com/skycoin/dmsg/cmd/dmsg-socks5:e->github.com/skycoin/dmsg/cmd/dmsg-socks5/commands - - + + + + + +github.com/skycoin/dmsg/cmd/dmsg-socks5/commands:e->github.com/skycoin/dmsg/pkg/cmdutil + + - + github.com/skycoin/dmsg/cmd/dmsg-socks5/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsg-socks5/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/conf/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dial/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsg-discovery/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsg-server/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsg-socks5/commands - - + + github.com/skycoin/dmsg/cmd/dmsgcurl/commands - -github.com/skycoin/dmsg/cmd/dmsgcurl/commands -392 / 12.7KB + +github.com/skycoin/dmsg/cmd/dmsgcurl/commands +392 / 12.7KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsgcurl/commands - - + + github.com/skycoin/dmsg/cmd/dmsghttp/commands - - -github.com/skycoin/dmsg/cmd/dmsghttp/commands -276 / 7.6KB + + +github.com/skycoin/dmsg/cmd/dmsghttp/commands +283 / 8.0KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsghttp/commands - - + + github.com/skycoin/dmsg/cmd/dmsgip/commands - -github.com/skycoin/dmsg/cmd/dmsgip/commands -117 / 3.9KB + +github.com/skycoin/dmsg/cmd/dmsgip/commands +117 / 3.9KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsgip/commands - - + + github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands - - -github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands -189 / 5.5KB + + +github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands +188 / 5.5KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands - - + + github.com/skycoin/dmsg/cmd/dmsgpty-host/commands - - -github.com/skycoin/dmsg/cmd/dmsgpty-host/commands -322 / 9.9KB + + +github.com/skycoin/dmsg/cmd/dmsgpty-host/commands +329 / 10.3KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsgpty-host/commands - - + + github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands - -github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands -60 / 2.1KB + +github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands +60 / 2.1KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands - - + + github.com/skycoin/dmsg/cmd/dmsgweb/commands - - -github.com/skycoin/dmsg/cmd/dmsgweb/commands -1079 / 33.7KB + + +github.com/skycoin/dmsg/cmd/dmsgweb/commands +1100 / 34.7KB - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/cmd/dmsgweb/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsg/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + github.com/skycoin/dmsg/cmd/dmsgcurl - -github.com/skycoin/dmsg/cmd/dmsgcurl -12 / 273B + +github.com/skycoin/dmsg/cmd/dmsgcurl +12 / 273B - + github.com/skycoin/dmsg/cmd/dmsgcurl:e->github.com/skycoin/dmsg/cmd/dmsgcurl/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsgcurl/commands:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/cmd/dmsgcurl/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsgcurl/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/cmd/dmsgcurl/commands:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + github.com/skycoin/dmsg/cmd/dmsghttp - -github.com/skycoin/dmsg/cmd/dmsghttp -12 / 285B + +github.com/skycoin/dmsg/cmd/dmsghttp +12 / 285B - + github.com/skycoin/dmsg/cmd/dmsghttp:e->github.com/skycoin/dmsg/cmd/dmsghttp/commands - - + + + + + +github.com/skycoin/dmsg/cmd/dmsghttp/commands:e->github.com/skycoin/dmsg/pkg/cmdutil + + - + github.com/skycoin/dmsg/cmd/dmsghttp/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsghttp/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + github.com/skycoin/dmsg/cmd/dmsgip - -github.com/skycoin/dmsg/cmd/dmsgip -12 / 271B + +github.com/skycoin/dmsg/cmd/dmsgip +12 / 271B - + github.com/skycoin/dmsg/cmd/dmsgip:e->github.com/skycoin/dmsg/cmd/dmsgip/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsgip/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsgip/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + github.com/skycoin/dmsg/cmd/dmsgpty-cli - -github.com/skycoin/dmsg/cmd/dmsgpty-cli -12 / 282B + +github.com/skycoin/dmsg/cmd/dmsgpty-cli +12 / 282B - + github.com/skycoin/dmsg/cmd/dmsgpty-cli:e->github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/pkg/dmsgpty - - -github.com/skycoin/dmsg/pkg/dmsgpty -1840 / 50.2KB + + +github.com/skycoin/dmsg/pkg/dmsgpty +1862 / 50.9KB - + github.com/skycoin/dmsg/cmd/dmsgpty-cli/commands:e->github.com/skycoin/dmsg/pkg/dmsgpty - - + + github.com/skycoin/dmsg/cmd/dmsgpty-host - -github.com/skycoin/dmsg/cmd/dmsgpty-host -12 / 285B + +github.com/skycoin/dmsg/cmd/dmsgpty-host +12 / 285B - + github.com/skycoin/dmsg/cmd/dmsgpty-host:e->github.com/skycoin/dmsg/cmd/dmsgpty-host/commands - - + + + + + +github.com/skycoin/dmsg/cmd/dmsgpty-host/commands:e->github.com/skycoin/dmsg/pkg/cmdutil + + - + github.com/skycoin/dmsg/cmd/dmsgpty-host/commands:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-host/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-host/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-host/commands:e->github.com/skycoin/dmsg/pkg/dmsgpty - - + + github.com/skycoin/dmsg/cmd/dmsgpty-ui - -github.com/skycoin/dmsg/cmd/dmsgpty-ui -12 / 279B + +github.com/skycoin/dmsg/cmd/dmsgpty-ui +12 / 279B - + github.com/skycoin/dmsg/cmd/dmsgpty-ui:e->github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/cmd/dmsgpty-ui/commands:e->github.com/skycoin/dmsg/pkg/dmsgpty - - + + github.com/skycoin/dmsg/cmd/dmsgweb - -github.com/skycoin/dmsg/cmd/dmsgweb -12 / 270B + +github.com/skycoin/dmsg/cmd/dmsgweb +12 / 270B - + github.com/skycoin/dmsg/cmd/dmsgweb:e->github.com/skycoin/dmsg/cmd/dmsgweb/commands - - + + + + + +github.com/skycoin/dmsg/cmd/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/cmdutil + + - + github.com/skycoin/dmsg/cmd/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/cmd/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/cmd/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + - + github.com/skycoin/dmsg/pkg/ioutil - - -github.com/skycoin/dmsg/pkg/ioutil -38 / 1.1KB + + +github.com/skycoin/dmsg/pkg/ioutil +38 / 1.1KB - + github.com/skycoin/dmsg/cmd/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/ioutil - - + + github.com/skycoin/dmsg/examples/basics - -github.com/skycoin/dmsg/examples/basics -111 / 3.5KB + +github.com/skycoin/dmsg/examples/basics +111 / 3.5KB - + github.com/skycoin/dmsg/examples/basics:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/basics:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/examples/dmsgcurl/dmsg-example-http-server - -github.com/skycoin/dmsg/examples/dmsgcurl/dmsg-example-http-server -80 / 2.1KB + +github.com/skycoin/dmsg/examples/dmsgcurl/dmsg-example-http-server +80 / 2.1KB - + github.com/skycoin/dmsg/examples/dmsgcurl/dmsg-example-http-server:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/dmsgcurl/dmsg-example-http-server:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/examples/dmsgcurl/gen-keys - -github.com/skycoin/dmsg/examples/dmsgcurl/gen-keys -10 / 215B + +github.com/skycoin/dmsg/examples/dmsgcurl/gen-keys +10 / 215B @@ -909,81 +955,81 @@ github.com/skycoin/dmsg/examples/dmsghttp - -github.com/skycoin/dmsg/examples/dmsghttp -133 / 4.3KB + +github.com/skycoin/dmsg/examples/dmsghttp +133 / 4.3KB - + github.com/skycoin/dmsg/examples/dmsghttp:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/dmsghttp:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/examples/dmsghttp-client - -github.com/skycoin/dmsg/examples/dmsghttp-client -46 / 1.3KB + +github.com/skycoin/dmsg/examples/dmsghttp-client +46 / 1.3KB - + github.com/skycoin/dmsg/examples/dmsghttp-client:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/examples/dmsghttp-client:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + - + github.com/skycoin/dmsg/examples/dmsghttp-client:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + github.com/skycoin/dmsg/examples/dmsgtcp - -github.com/skycoin/dmsg/examples/dmsgtcp -144 / 4.5KB + +github.com/skycoin/dmsg/examples/dmsgtcp +144 / 4.5KB - + github.com/skycoin/dmsg/examples/dmsgtcp:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/examples/dmsgtcp:e->github.com/skycoin/dmsg/pkg/dmsgclient - - + + github.com/skycoin/dmsg/examples/dmsgweb - -github.com/skycoin/dmsg/examples/dmsgweb -39 / 1.5KB + +github.com/skycoin/dmsg/examples/dmsgweb +39 / 1.5KB @@ -991,43 +1037,43 @@ github.com/skycoin/dmsg/examples/dmsgweb/commands - -github.com/skycoin/dmsg/examples/dmsgweb/commands -342 / 10.4KB + +github.com/skycoin/dmsg/examples/dmsgweb/commands +342 / 10.4KB - + github.com/skycoin/dmsg/examples/dmsgweb:e->github.com/skycoin/dmsg/examples/dmsgweb/commands - - + + - + github.com/skycoin/dmsg/examples/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/examples/dmsgweb/commands:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + github.com/skycoin/dmsg/examples/gen-keys - -github.com/skycoin/dmsg/examples/gen-keys -10 / 211B + +github.com/skycoin/dmsg/examples/gen-keys +10 / 211B @@ -1035,9 +1081,9 @@ github.com/skycoin/dmsg/examples/http - -github.com/skycoin/dmsg/examples/http -30 / 0.7KB + +github.com/skycoin/dmsg/examples/http +30 / 0.7KB @@ -1045,31 +1091,31 @@ github.com/skycoin/dmsg/examples/proxified - -github.com/skycoin/dmsg/examples/proxified -97 / 3.3KB + +github.com/skycoin/dmsg/examples/proxified +97 / 3.3KB - + github.com/skycoin/dmsg/examples/proxified:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/proxified:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/examples/tcp - -github.com/skycoin/dmsg/examples/tcp -37 / 0.8KB + +github.com/skycoin/dmsg/examples/tcp +37 / 0.8KB @@ -1077,31 +1123,31 @@ github.com/skycoin/dmsg/examples/tcp-multi-proxy-dmsg - -github.com/skycoin/dmsg/examples/tcp-multi-proxy-dmsg -146 / 4.7KB + +github.com/skycoin/dmsg/examples/tcp-multi-proxy-dmsg +146 / 4.7KB - + github.com/skycoin/dmsg/examples/tcp-multi-proxy-dmsg:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/tcp-multi-proxy-dmsg:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/examples/tcp-proxy - -github.com/skycoin/dmsg/examples/tcp-proxy -73 / 1.8KB + +github.com/skycoin/dmsg/examples/tcp-proxy +73 / 1.8KB @@ -1109,53 +1155,53 @@ github.com/skycoin/dmsg/examples/tcp-proxy-dmsg - -github.com/skycoin/dmsg/examples/tcp-proxy-dmsg -219 / 7.1KB + +github.com/skycoin/dmsg/examples/tcp-proxy-dmsg +219 / 7.1KB - + github.com/skycoin/dmsg/examples/tcp-proxy-dmsg:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/tcp-proxy-dmsg:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/examples/tcp-reverse-proxy-dmsg - -github.com/skycoin/dmsg/examples/tcp-reverse-proxy-dmsg -222 / 7.0KB + +github.com/skycoin/dmsg/examples/tcp-reverse-proxy-dmsg +222 / 7.0KB - + github.com/skycoin/dmsg/examples/tcp-reverse-proxy-dmsg:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/examples/tcp-reverse-proxy-dmsg:e->github.com/skycoin/dmsg/pkg/dmsg - - + + github.com/skycoin/dmsg/internal/e2e - -github.com/skycoin/dmsg/internal/e2e -0 / 0B + +github.com/skycoin/dmsg/internal/e2e +0 / 0B @@ -1163,219 +1209,219 @@ github.com/skycoin/dmsg/internal/e2e/testserver - -github.com/skycoin/dmsg/internal/e2e/testserver -43 / 1.2KB + +github.com/skycoin/dmsg/internal/e2e/testserver +43 / 1.2KB - + github.com/skycoin/dmsg/pkg/direct:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/direct:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/discovery/api:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/discovery/api:e->github.com/skycoin/dmsg/pkg/disc/metrics - - + + - + github.com/skycoin/dmsg/pkg/discovery/api:e->github.com/skycoin/dmsg/pkg/discovery/store - - + + - + github.com/skycoin/dmsg/pkg/discovery/api:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/discovery/store:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/discovery/store:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsg:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/dmsg:e->github.com/skycoin/dmsg/pkg/dmsg/metrics - - + + - + github.com/skycoin/dmsg/pkg/noise - - -github.com/skycoin/dmsg/pkg/noise -702 / 19.5KB + + +github.com/skycoin/dmsg/pkg/noise +834 / 23.8KB - + github.com/skycoin/dmsg/pkg/dmsg:e->github.com/skycoin/dmsg/pkg/noise - - + + - + github.com/skycoin/dmsg/pkg/dmsgclient:e->github.com/skycoin/dmsg/pkg/direct - - + + - + github.com/skycoin/dmsg/pkg/dmsgclient:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/dmsgclient:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgclient:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + - + github.com/skycoin/dmsg/pkg/dmsgclient:e->github.com/skycoin/dmsg/pkg/ioutil - - + + - + github.com/skycoin/dmsg/pkg/dmsgctrl - - -github.com/skycoin/dmsg/pkg/dmsgctrl -179 / 4.0KB + + +github.com/skycoin/dmsg/pkg/dmsgctrl +179 / 4.0KB - + github.com/skycoin/dmsg/pkg/dmsgctrl:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgcurl - - -github.com/skycoin/dmsg/pkg/dmsgcurl -346 / 10.0KB + + +github.com/skycoin/dmsg/pkg/dmsgcurl +351 / 10.1KB - + github.com/skycoin/dmsg/pkg/dmsgcurl:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/dmsgcurl:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgcurl:e->github.com/skycoin/dmsg/pkg/dmsghttp - - + + - + github.com/skycoin/dmsg/pkg/dmsghttp:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/dmsghttp:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgpty:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgserver:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/dmsgserver:e->github.com/skycoin/dmsg/pkg/dmsg/metrics - - + + - + github.com/skycoin/dmsg/pkg/dmsgtest - - -github.com/skycoin/dmsg/pkg/dmsgtest -211 / 6.1KB + + +github.com/skycoin/dmsg/pkg/dmsgtest +211 / 6.1KB - + github.com/skycoin/dmsg/pkg/dmsgtest:e->github.com/skycoin/dmsg/pkg/disc - - + + - + github.com/skycoin/dmsg/pkg/dmsgtest:e->github.com/skycoin/dmsg/pkg/dmsg - - + + - + github.com/skycoin/dmsg/pkg/noise:e->github.com/skycoin/dmsg/pkg/ioutil - - + +