mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-26 21:07:45 +08:00
commit
67220edaae
@ -56,7 +56,7 @@ executors:
|
||||
environment:
|
||||
<<: *default_environment
|
||||
NO_SANDBOX: true
|
||||
IPFS_REUSEPORT: false
|
||||
LIBP2P_TCP_REUSEPORT: false
|
||||
LIBP2P_ALLOW_WEAK_RSA_KEYS: 1
|
||||
E2E_IPFSD_TYPE: go
|
||||
dockerizer:
|
||||
@ -105,7 +105,22 @@ jobs:
|
||||
when: always
|
||||
command: bash <(curl -s https://codecov.io/bash) -cF unittests -X search -f coverage/unit_tests.coverprofile
|
||||
- run:
|
||||
command: go test -v ./...
|
||||
command: |
|
||||
# we want to test the examples against the current version of go-ipfs
|
||||
# however, that version might be in a fork so we need to replace the dependency
|
||||
|
||||
# backup the go.mod and go.sum files to restore them after we run the tests
|
||||
cp go.mod go.mod.bak
|
||||
cp go.sum go.sum.bak
|
||||
|
||||
# make sure the examples run against the current version of go-ipfs
|
||||
go mod edit -replace github.com/ipfs/go-ipfs=./../../..
|
||||
go mod tidy
|
||||
go test -v ./...
|
||||
|
||||
# restore the go.mod and go.sum files to their original state
|
||||
mv go.mod.bak go.mod
|
||||
mv go.sum.bak go.sum
|
||||
working_directory: ~/ipfs/go-ipfs/docs/examples/go-ipfs-as-a-library
|
||||
|
||||
- run:
|
||||
@ -201,7 +216,8 @@ jobs:
|
||||
- bin/ipfs
|
||||
- *store_gomod
|
||||
interop:
|
||||
executor: node
|
||||
docker:
|
||||
- image: cimg/go:1.16-node
|
||||
parallelism: 4
|
||||
steps:
|
||||
- *make_out_dirs
|
||||
@ -211,21 +227,33 @@ jobs:
|
||||
name: Installing dependencies
|
||||
command: |
|
||||
npm init -y
|
||||
npm install ipfs@^0.52.2
|
||||
npm install ipfs-interop@^4.0.0
|
||||
npm install ipfs@^0.59.1
|
||||
npm install ipfs/interop#master
|
||||
npm install mocha-circleci-reporter@0.0.3
|
||||
working_directory: ~/ipfs/go-ipfs/interop
|
||||
- run:
|
||||
name: Running tests
|
||||
command: |
|
||||
WORKDIR=$(pwd)
|
||||
cd /tmp
|
||||
git clone https://github.com/ipfs/js-ipfs.git
|
||||
cd js-ipfs
|
||||
git checkout 1dcac76f56972fc3519526e93567e39d685033dd
|
||||
npm install
|
||||
npm run build
|
||||
npm run link
|
||||
cd $WORKDIR
|
||||
mkdir -p /tmp/test-results/interop/
|
||||
export MOCHA_FILE="$(mktemp /tmp/test-results/interop/unit.XXXXXX.xml)"
|
||||
npx ipfs-interop -- -t node -f $(sed -n -e "s|^require('\(.*\)')$|test/\1|p" node_modules/ipfs-interop/test/node.js | circleci tests split) -- --reporter mocha-circleci-reporter
|
||||
working_directory: ~/ipfs/go-ipfs/interop
|
||||
environment:
|
||||
IPFS_REUSEPORT: false
|
||||
LIBP2P_TCP_REUSEPORT: false
|
||||
LIBP2P_ALLOW_WEAK_RSA_KEYS: 1
|
||||
IPFS_GO_EXEC: /tmp/circleci-workspace/bin/ipfs
|
||||
IPFS_JS_EXEC: /tmp/js-ipfs/packages/ipfs/src/cli.js
|
||||
IPFS_JS_MODULE: /tmp/js-ipfs/packages/ipfs/dist/cjs/src/index.js
|
||||
IPFS_JS_HTTP_MODULE: /tmp/js-ipfs/packages/ipfs-http-client/dist/cjs/src/index.js
|
||||
- store_test_results:
|
||||
path: /tmp/test-results
|
||||
go-ipfs-api:
|
||||
|
||||
124
.github/workflows/sync-release-assets.yml
vendored
Normal file
124
.github/workflows/sync-release-assets.yml
vendored
Normal file
@ -0,0 +1,124 @@
|
||||
name: Sync github release assets with dist.ipfs.io
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
concurrency:
|
||||
group: release-assets-dist-sync
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
sync-github-and-dist-ipfs-io:
|
||||
runs-on: "ubuntu-latest"
|
||||
steps:
|
||||
- name: Setup go
|
||||
uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: '1.16'
|
||||
- uses: actions/cache@v2
|
||||
with:
|
||||
path: |
|
||||
~/.cache/go-build
|
||||
~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
- name: Build go-ipfs binary
|
||||
run: go install github.com/ipfs/go-ipfs/cmd/ipfs@latest
|
||||
- name: Initialize go-ipfs and start daemon
|
||||
run: |
|
||||
sudo sysctl -w net.core.rmem_max=2500000
|
||||
ipfs init --profile flatfs,server
|
||||
ipfs daemon --enable-gc=false &
|
||||
while (! ipfs id --api "/ip4/127.0.0.1/tcp/5001"); do sleep 1; done
|
||||
- name: Wait for go-ipfs to be ready
|
||||
shell: pwsh
|
||||
run: |
|
||||
for ($i = 0; $i -lt 10; $i++) {
|
||||
$addrs = ipfs id | jq .Addresses;
|
||||
if ($addrs -eq "null") {
|
||||
sleep 1
|
||||
} else {
|
||||
echo "Successfully started the daemon"
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 14
|
||||
- name: Sync the latest 5 github releases
|
||||
uses: actions/github-script@v4
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs').promises
|
||||
const max_synced = 5
|
||||
|
||||
// fetch github releases
|
||||
resp = await github.repos.listReleases({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
page: 1,
|
||||
per_page: max_synced
|
||||
})
|
||||
const release_assets = [];
|
||||
num_synced = 0;
|
||||
for (const release of resp.data) {
|
||||
console.log("checking release tagged", release.tag_name)
|
||||
if (num_synced > max_synced) {
|
||||
console.log("done: synced", max_synced, "latest releases")
|
||||
break;
|
||||
}
|
||||
num_synced += 1
|
||||
|
||||
const github_assets = [];
|
||||
github_map = {};
|
||||
for (const asset of release.assets) {
|
||||
github_assets.push(asset.name);
|
||||
github_map[asset.name] = true;
|
||||
}
|
||||
|
||||
// fetch asset info from dist.ipfs.io
|
||||
p = '/ipns/dist.ipfs.io/go-ipfs/' + release.tag_name
|
||||
let stdout = ''
|
||||
const options = {}
|
||||
options.listeners = {
|
||||
stdout: (data) => {
|
||||
stdout += data.toString();
|
||||
}
|
||||
}
|
||||
await exec.exec('ipfs', ['ls', p], options)
|
||||
|
||||
const dist_assets = []
|
||||
missing_files = []
|
||||
for (const raw_line of stdout.split("\n")) {
|
||||
line = raw_line.trim();
|
||||
if (line.length != 0) {
|
||||
file = line.split(/(\s+)/).filter( function(e) { return e.trim().length > 0; } )[2]
|
||||
dist_assets.push(file)
|
||||
if (!github_map[file]) {
|
||||
missing_files.push(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if dist.ipfs.io has files not found in github, copy them over
|
||||
for (const file of missing_files) {
|
||||
console.log("fetching", file, "from dist.ipfs.io")
|
||||
await exec.exec('ipfs', ['get', p + '/' + file])
|
||||
const data = await fs.readFile(file, "binary")
|
||||
console.log("uploading", file, "to github release", release.tag_name)
|
||||
resp = await github.repos.uploadReleaseAsset({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
release_id: release.id,
|
||||
name: file,
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
// summary of assets on both sides
|
||||
release_assets.push({ tag: release.tag_name, github_assets: github_assets, dist_assets: dist_assets })
|
||||
}
|
||||
console.log(release_assets)
|
||||
return release_assets
|
||||
33
.github/workflows/testground-on-push.yml
vendored
Normal file
33
.github/workflows/testground-on-push.yml
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
name: Testground PR Checker
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
testground:
|
||||
runs-on: ubuntu-latest
|
||||
name: ${{ matrix.composition_file }}
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- backend_addr: ci.testground.ipfs.team
|
||||
backend_proto: https
|
||||
plan_directory: testplans/bitswap
|
||||
composition_file: testplans/bitswap/_compositions/small-k8s.toml
|
||||
- backend_addr: ci.testground.ipfs.team
|
||||
backend_proto: https
|
||||
plan_directory: testplans/bitswap
|
||||
composition_file: testplans/bitswap/_compositions/medium-k8s.toml
|
||||
- backend_addr: ci.testground.ipfs.team
|
||||
backend_proto: https
|
||||
plan_directory: testplans/bitswap
|
||||
composition_file: testplans/bitswap/_compositions/large-k8s.toml
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: testground run
|
||||
uses: coryschwartz/testground-github-action@v1.1
|
||||
with:
|
||||
backend_addr: ${{ matrix.backend_addr }}
|
||||
backend_proto: ${{ matrix.backend_proto }}
|
||||
plan_directory: ${{ matrix.plan_directory }}
|
||||
composition_file: ${{ matrix.composition_file }}
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "assets/dir-index-html"]
|
||||
path = assets/dir-index-html
|
||||
url = https://github.com/ipfs/dir-index-html.git
|
||||
807
CHANGELOG.md
807
CHANGELOG.md
@ -1,5 +1,812 @@
|
||||
# go-ipfs changelog
|
||||
|
||||
## v0.11.0 2021-12-08
|
||||
|
||||
We're happy to announce go-ipfs 0.11.0. This release comes with improvements to the UnixFS Sharding and PubSub experiments as well as support for Circuit-Relay v2 which sets the network up for decentralized hole punching support.
|
||||
|
||||
As usual, this release includes important fixes, some of which may be critical for security. Unless the fix addresses a bug being exploited in the wild, the fix will _not_ be called out in the release notes. Please make sure to update ASAP. See our [release process](https://github.com/ipfs/go-ipfs/tree/master/docs/releases.md#security-fix-policy) for details.
|
||||
|
||||
### 🛠 BREAKING CHANGES
|
||||
|
||||
- UnixFS sharding is now automatic and enabled by default
|
||||
- HAMT-based sharding is applied to large directories (i.e. those that would serialize into [block](https://docs.ipfs.io/concepts/glossary/#block) larger than ~256KiB)s. This means importing data via commands like `ipfs add -r <directory>` may result in different [CID](https://docs.ipfs.io/concepts/glossary/#cid)s due to the different [DAG](https://docs.ipfs.io/concepts/glossary/#dag) representations.
|
||||
- Support for `Experimental.ShardingEnabled` is removed.
|
||||
- go-ipfs can no longer act as a [Circuit Relay](https://docs.ipfs.io/concepts/glossary/#circuit-relay) v1
|
||||
- Node will refuse to start if `Swarm.EnableRelayHop` is set to `true`
|
||||
- If you depend on v1 relay service provider, see "Removal of v1 relay service" section for available migration options.
|
||||
- HTTP RPC wire format for experimental commands at `/api/v0/pubsub` changed.
|
||||
- If you use [js-ipfs-http-client](https://www.npmjs.com/package/ipfs-http-client) or [go-ipfs-http-client](https://github.com/ipfs/go-ipfs-http-client), just update to their latest version.
|
||||
- If you use something else, see "Multibase in PubSub" section below for migration details.
|
||||
|
||||
Keep reading to learn more details.
|
||||
|
||||
### 🔦 Highlights
|
||||
|
||||
#### 🗃 Automatic UnixFS sharding
|
||||
|
||||
Truly big directories can have so many items, that the root block with all of their names is too big to be exchanged with other peers. This was partially solved by [HAMT-sharding](https://docs.ipfs.io/concepts/glossary/#hamt-sharding), which was introduced a while ago as opt-in. The main downside of the implementation was that it was a global flag that sharded all imported directories (big and small).
|
||||
|
||||
This release solves that inconvenience by making UnixFS sharding smarter and applies it only to larger directories (i.e. directories that would be at least ~256KiB). This is now the default behavior in `ipfs add` and `ipfs files` commands, where UnixFS sharding works out-of-the-box.
|
||||
|
||||
#### 🔁 Circuit Relay v2
|
||||
|
||||
This release adds support for the [circuit relay v2](https://github.com/libp2p/specs/blob/master/relay/circuit-v2.md) protocol based on the reference implementation from [go-libp2p 0.16](https://github.com/libp2p/go-libp2p/releases/tag/v0.16.0).
|
||||
|
||||
This is the cornerstone for maximizing p2p connections between IPFS peers. Every publicly dialable peer can now act as a limited relay v2, which can be used for [hole punching](https://docs.ipfs.io/concepts/glossary/#hole-punching) and other decentralized signaling protocols.
|
||||
|
||||
##### Limited relay v2 configuration options
|
||||
|
||||
go-ipfs can now be configured to act as a [`RelayClient`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmrelayclient) that uses other peers for autorelay functionality when behind a NAT, or provide a limited [`RelayService`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#swarmrelayservice) to other peers on the network.
|
||||
|
||||
Starting with go-ipfs v0.11 every publicly dialable go-ipfs (based on AutoNAT determination) will start a limited `RelayService`. `RelayClient` remains disabled by default for now, as we want the network to update and get enough v2 service providers first.
|
||||
|
||||
Note: the limited Circuit Relay v2 provided with this release only allows low-bandwidth protocols (identify, ping, holepunch) over transient connections. If you want to relay things like bitswap sessions, you need to set up a v1 relay by some other means. See details below.
|
||||
|
||||
##### Removal of unlimited v1 relay service provider
|
||||
|
||||
Switching to v2 of the relay spec means removal or deprecation of configuration keys that were specific to v1.
|
||||
|
||||
- Relay transport and client support circuit-relay v2:
|
||||
- `Swarm.EnableAutoRelay` was replaced by `Swarm.RelayClient.Enable`.
|
||||
- `Swarm.DisableRelay` is deprecated, relay transport can be now disabled globally (both client and service) by setting `Swarm.Transports.Network.Relay` to `false`
|
||||
- Relay v1 service provider was replaced by v2:
|
||||
- `Swarm.EnableRelayHop` no longer starts an unlimited v1 relay. If you have it set to `true` the node will refuse to start and display an error message.
|
||||
- Existing users who choose to continue running a v1 relay should migrate their setups to relay v1 based on js-ipfs running in node, or the standalone [libp2p-relay-daemon](https://dist.ipfs.io/#libp2p-relay-daemon) [configured](https://github.com/libp2p/go-libp2p-relay-daemon/#configuration) with `RelayV1.Enabled` set to `true`. Be mindful that v1 relays are unlimited, and one may want to set up some ACL based either on PeerIDs or Subnets.
|
||||
|
||||
#### 🕳 Decentralized Hole Punching (DCUtR protocol client)
|
||||
|
||||
We are working towards enabling hole punching for NAT traversal when port forwarding is not possible.
|
||||
|
||||
[go-libp2p 0.16](https://github.com/libp2p/go-libp2p/releases/tag/v0.16.0) provides an implementation of the [DCUtR (decentralized hole punching)](https://github.com/libp2p/specs/blob/master/relay/DCUtR.md) protocol. It is hidden behind the `Swarm.EnableHolePunching` configuration flag.
|
||||
|
||||
When enabled, go-ipfs will coordinate with the counterparty using a [relayed v2 connection](https://github.com/libp2p/specs/blob/master/relay/circuit-v2.md), to [upgrade to a direct connection](https://github.com/libp2p/specs/blob/master/relay/DCUtR.md) through a NAT/firewall whenever possible.
|
||||
|
||||
This feature is disabled by default in this release, but we hope to enable it by default as soon the network updates to go-ipfs v0.11 and gains a healthy set of limited v2 relays.
|
||||
|
||||
#### 💬 Multibase in PubSub HTTP RPC API
|
||||
|
||||
This release fixed some edge cases that were reported by users of the PubSub experiment, getting it closer to becoming a stable feature of go-ipfs. Some PubSub users will notice that the plaintext limitation is lifted: one can now use line breaks in messages published to non-ascii topic names, or even publish arbitrary bytes to arbitrary topics. It required a change to the wire format used when pubsub commands are executed over the HTTP RPC API at `/api/v0/pubsub/*`, and also modified the behavior of the `ipfs pubsub pub` command, which now is publishing only a single pubsub message with data read from a file or stdin.
|
||||
|
||||
##### PubSub client migration tips
|
||||
|
||||
If you use the HTTP RPC API with the [go-ipfs-http-client](https://github.com/ipfs/go-ipfs-http-client) library, make sure to update to the latest version. The next version of [js-ipfs-http-client](https://www.npmjs.com/package/ipfs-http-client) will use the new wire format as well, so you don't need to do anything.
|
||||
|
||||
If you use `/api/v0/pubsub/*` directly or maintain your own client library, you must adjust your HTTP client code. Byte fields and URL args are now encoded in `base64url` [Multibase](https://docs.ipfs.io/concepts/glossary/#multibase). Encode/decode bytes using the `ipfs multibase --help` commands, or use the multiformats libraries ([js-multiformats](https://github.com/multiformats/js-multiformats#readme), [go-multibase](https://github.com/multiformats/go-multibase)).
|
||||
|
||||
Low level changes:
|
||||
- `topic` passed as URL `arg` in requests to `/api/v0/pubsub/*` must be encoded in URL-safe multibase (`base64url`)
|
||||
- `data`, `from`, `seqno` and `topicIDs` returned in JSON responses are now encoded in multibase
|
||||
- Peer IDs returned in `from` now use the same default text representation from go-libp2p and peerid encoder/decoder from libp2p. This means the same text representation as in as in `swarm peers`, which makes it possible to compare them without decoding multibase.
|
||||
- `/api/v0/pubsub/pub` no longer accepts `data` to be passed as URL, it has to be sent as `multipart/form-data`. This removes size limitations based on URL length, and enables regular HTTP clients to publish data to PubSub topics. For example, to publish `some-file` to topic named `test-topic` using vanilla `curl`, one would execute: `curl -X POST -v -F "stdin=@some-file" 'http://127.0.0.1:5001/api/v0/pubsub/pub?arg=$(echo -n test-topic | ipfs multibase encode -b base64url)'`
|
||||
- `ipfs pubsub pub` on the command line no longer accepts variadic `data` arguments. Instead, it expects a single file input or stream of bytes from stdin. This ensures arbitrary stream of bytes can be published, removing limitation around messages that include `\n` or `\r\n`.
|
||||
|
||||
#### ⚙ New configuration flags
|
||||
|
||||
- [`Addresses.AppendAnnounce`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#addressesappendannounce) is an array of multiaddrs, similar to `Addresses.Announce`, except it does not override inferred swarm addresses, but appends custom ones to the list.
|
||||
- Pubsub experiments can now be enabled via config, removing the need for CLI flag to be passed every time daemon starts:
|
||||
- [`Pubsub.Enabled`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#pubsubenabled) enables the pubsub system.
|
||||
- [`Ipns.UsePubsub`](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#ipnsusepubsub) enables IPFS over pubsub experiment for publishing IPNS records in real time.
|
||||
|
||||
#### 🔐 Support for DAG-JOSE IPLD codec
|
||||
|
||||
JOSE is a [standard](https://datatracker.ietf.org/wg/jose/documents/) for signing and encrypting JSON objects. [DAG-JOSE](https://ipld.io/specs/codecs/dag-jose/spec/) is an IPLD codec based on JOSE and represented in CBOR. Upon encountering the `dag-jose` multicodec indicator, implementations can expect that the block contains dag-cbor encoded data which matches the IPLD schema from the [DAG-JOSE spec](https://ipld.io/specs/codecs/dag-jose/spec/).
|
||||
|
||||
This work was [contributed](https://github.com/ipfs/go-ipfs/pull/8569) by [Ceramic](https://ceramic.network/) and acts as a template for future IPFS improvements driven by the real world needs of the IPFS community.
|
||||
|
||||
### Changelog
|
||||
|
||||
- github.com/ipfs/go-ipfs:
|
||||
- docs: update changelog for v0.11.0
|
||||
- Release v0.11.0-rc2
|
||||
- fix(corehttp): adjust peer counting metrics (#8577) ([ipfs/go-ipfs#8577](https://github.com/ipfs/go-ipfs/pull/8577))
|
||||
- Release v0.11.0-rc1
|
||||
- feat: Swarm.EnableHolePunching flag (#8562) ([ipfs/go-ipfs#8562](https://github.com/ipfs/go-ipfs/pull/8562))
|
||||
- feat: enabling pubsub and ipns-pubsub via config flags (#8510) ([ipfs/go-ipfs#8510](https://github.com/ipfs/go-ipfs/pull/8510))
|
||||
- Integrate go-dag-jose plugin (#8569) ([ipfs/go-ipfs#8569](https://github.com/ipfs/go-ipfs/pull/8569))
|
||||
- feat: Addresses.AppendAnnounce (#8177) ([ipfs/go-ipfs#8177](https://github.com/ipfs/go-ipfs/pull/8177))
|
||||
- fix: multibase in pubsub http rpc (#8183) ([ipfs/go-ipfs#8183](https://github.com/ipfs/go-ipfs/pull/8183))
|
||||
- refactor: remove dir-index-html submodule ([ipfs/go-ipfs#8555](https://github.com/ipfs/go-ipfs/pull/8555))
|
||||
- feat: hard deprecation of IPFS_REUSEPORT
|
||||
- feat: go-libp2p 0.16, UnixFS autosharding and go-datastore with contexts (#8563) ([ipfs/go-ipfs#8563](https://github.com/ipfs/go-ipfs/pull/8563))
|
||||
- chore: fix link in README.md (#8551) ([ipfs/go-ipfs#8551](https://github.com/ipfs/go-ipfs/pull/8551))
|
||||
- Updating release template based off some 0.10 learnings (#8491) ([ipfs/go-ipfs#8491](https://github.com/ipfs/go-ipfs/pull/8491))
|
||||
- fix: multiple subdomain gateways on same domain (#8556) ([ipfs/go-ipfs#8556](https://github.com/ipfs/go-ipfs/pull/8556))
|
||||
- Fix typos (#8548) ([ipfs/go-ipfs#8548](https://github.com/ipfs/go-ipfs/pull/8548))
|
||||
- Add support for multiple files to `ipfs files rm`.
|
||||
- add a docker-compose file (#8387) ([ipfs/go-ipfs#8387](https://github.com/ipfs/go-ipfs/pull/8387))
|
||||
- fix(sharness): use -Q option instead of pipe to tail cmd
|
||||
- Add Homebrew installation method. ([ipfs/go-ipfs#8545](https://github.com/ipfs/go-ipfs/pull/8545))
|
||||
- docs: fix ipfs files cp examples (#8533) ([ipfs/go-ipfs#8533](https://github.com/ipfs/go-ipfs/pull/8533))
|
||||
- fix(unixfs): check for errors before dereferencing the link ([ipfs/go-ipfs#8508](https://github.com/ipfs/go-ipfs/pull/8508))
|
||||
- chore: replace go-merkledag walk with go-ipld-prime traversal for dag export (#8506) ([ipfs/go-ipfs#8506](https://github.com/ipfs/go-ipfs/pull/8506))
|
||||
- test: add sharness test for reading ADLs with FUSE
|
||||
- fix: allow the levelds compression level to be unspecified
|
||||
- ([ipfs/go-ipfs#8457](https://github.com/ipfs/go-ipfs/pull/8457))
|
||||
- ([ipfs/go-ipfs#8482](https://github.com/ipfs/go-ipfs/pull/8482))
|
||||
- Added the missing heathcheck for the container (#8429) ([ipfs/go-ipfs#8429](https://github.com/ipfs/go-ipfs/pull/8429))
|
||||
- chore: update dir-index-html to v1.2.2
|
||||
- Update RELEASE_ISSUE_TEMPLATE.md
|
||||
- Update RELEASE_ISSUE_TEMPLATE.md
|
||||
- add more logging to flaky TestPeersTotal
|
||||
- Update RELEASE_ISSUE_TEMPLATE.md
|
||||
- Update RELEASE_ISSUE_TEMPLATE.md
|
||||
- Updating chocolatey to reference go-ipfs
|
||||
- chore: update changelog for v0.10.0
|
||||
- add testground plans to bitswap on CI
|
||||
- ci: move Docker image build to Actions (#8467) ([ipfs/go-ipfs#8467](https://github.com/ipfs/go-ipfs/pull/8467))
|
||||
- fix(cli): object add-link: do not allow blocks over BS limit (#8414) ([ipfs/go-ipfs#8414](https://github.com/ipfs/go-ipfs/pull/8414))
|
||||
- fuse: load unixfs adls as their dagpb substrates
|
||||
- enable the legacy mDNS implementation
|
||||
- change ipfs dag get flag name from format to output-codec ([ipfs/go-ipfs#8440](https://github.com/ipfs/go-ipfs/pull/8440))
|
||||
- change names of ipfs dag put flags to make changes clearer ([ipfs/go-ipfs#8439](https://github.com/ipfs/go-ipfs/pull/8439))
|
||||
- test: check behavior of loading UnixFS sharded directories with missing shards
|
||||
- ([ipfs/go-ipfs#8432](https://github.com/ipfs/go-ipfs/pull/8432))
|
||||
- feat: dag import --stats (#8237) ([ipfs/go-ipfs#8237](https://github.com/ipfs/go-ipfs/pull/8237))
|
||||
- feat: ipfs-webui v2.13.0 (#8430) ([ipfs/go-ipfs#8430](https://github.com/ipfs/go-ipfs/pull/8430))
|
||||
- feat(cli): add daemon option --agent-version-suffix (#8419) ([ipfs/go-ipfs#8419](https://github.com/ipfs/go-ipfs/pull/8419))
|
||||
- feat: multibase transcode command (#8403) ([ipfs/go-ipfs#8403](https://github.com/ipfs/go-ipfs/pull/8403))
|
||||
- fix: take the lock while listing peers
|
||||
- feature: 'ipfs swarm peering' command (#8147) ([ipfs/go-ipfs#8147](https://github.com/ipfs/go-ipfs/pull/8147))
|
||||
- chore: update IPFS Desktop testing steps (#8393) ([ipfs/go-ipfs#8393](https://github.com/ipfs/go-ipfs/pull/8393))
|
||||
- add more buttons; remove some sections covered in the docs; general cleanup ([ipfs/go-ipfs#8274](https://github.com/ipfs/go-ipfs/pull/8274))
|
||||
- Cosmetic fixups in examples (#8325) ([ipfs/go-ipfs#8325](https://github.com/ipfs/go-ipfs/pull/8325))
|
||||
- perf: use performance-enhancing FUSE mount options
|
||||
- ci: publish Docker images for bifrost-* branches
|
||||
- chore: add comments to peerlog plugin about being unsupported
|
||||
- test: add unit tests for peerlog config parsing
|
||||
- ci: preload peerlog plugin, disable by default
|
||||
- fix(mkreleaselog): specify the parent commit when diffing
|
||||
- update version to v0.11.0-dev
|
||||
- github.com/ipfs/go-bitswap (v0.4.0 -> v0.5.1):
|
||||
- Version 0.5.1
|
||||
- Change incorrect function name in README (#541) ([ipfs/go-bitswap#541](https://github.com/ipfs/go-bitswap/pull/541))
|
||||
- Version 0.5.0 (#540) ([ipfs/go-bitswap#540](https://github.com/ipfs/go-bitswap/pull/540))
|
||||
- feat: plumb through contexts (#539) ([ipfs/go-bitswap#539](https://github.com/ipfs/go-bitswap/pull/539))
|
||||
- sync: update CI config files (#538) ([ipfs/go-bitswap#538](https://github.com/ipfs/go-bitswap/pull/538))
|
||||
- fix: optimize handling for peers with lots of tasks ([ipfs/go-bitswap#537](https://github.com/ipfs/go-bitswap/pull/537))
|
||||
- Enable custom task prioritization logic ([ipfs/go-bitswap#535](https://github.com/ipfs/go-bitswap/pull/535))
|
||||
- feat: cache the materialized wantlist ([ipfs/go-bitswap#530](https://github.com/ipfs/go-bitswap/pull/530))
|
||||
- fix: reduce receive contention ([ipfs/go-bitswap#536](https://github.com/ipfs/go-bitswap/pull/536))
|
||||
- Fix ProviderQueryManager test timings ([ipfs/go-bitswap#534](https://github.com/ipfs/go-bitswap/pull/534))
|
||||
- fix: rename wiretap to tracer ([ipfs/go-bitswap#531](https://github.com/ipfs/go-bitswap/pull/531))
|
||||
- fix: fix race on "responsive" check ([ipfs/go-bitswap#528](https://github.com/ipfs/go-bitswap/pull/528))
|
||||
- fix: reduce log verbosity
|
||||
- github.com/ipfs/go-blockservice (v0.1.7 -> v0.2.1):
|
||||
- Version 0.2.1
|
||||
- Version 0.2.0 (#87) ([ipfs/go-blockservice#87](https://github.com/ipfs/go-blockservice/pull/87))
|
||||
- feat: add context to interfaces (#86) ([ipfs/go-blockservice#86](https://github.com/ipfs/go-blockservice/pull/86))
|
||||
- sync: update CI config files (#85) ([ipfs/go-blockservice#85](https://github.com/ipfs/go-blockservice/pull/85))
|
||||
- chore: update log ([ipfs/go-blockservice#84](https://github.com/ipfs/go-blockservice/pull/84))
|
||||
- github.com/ipfs/go-cid (v0.0.7 -> v0.1.0):
|
||||
- amend the CidFromReader slice extension math
|
||||
- implement CidFromReader
|
||||
- chore: fixups from running go vet, go fmt and staticcheck ([ipfs/go-cid#122](https://github.com/ipfs/go-cid/pull/122))
|
||||
- s/characters/bytes
|
||||
- Fix inaccurate comment for uvarint
|
||||
- coverage: more tests for cid
|
||||
- coverage: more tests for varint
|
||||
- coverage: more tests for builder
|
||||
- fix: make tests run with Go 1.15
|
||||
- Add the dagjose multiformat
|
||||
- github.com/ipfs/go-datastore (v0.4.6 -> v0.5.1):
|
||||
- Release v0.5.1
|
||||
- chore: add lots of interface assertions
|
||||
- fix: make NullDatastore satisfy the Batching interface again
|
||||
- Update version.json (#183) ([ipfs/go-datastore#183](https://github.com/ipfs/go-datastore/pull/183))
|
||||
- feat: add context to interfaces (#181) ([ipfs/go-datastore#181](https://github.com/ipfs/go-datastore/pull/181))
|
||||
- sync: update CI config files ([ipfs/go-datastore#182](https://github.com/ipfs/go-datastore/pull/182))
|
||||
- github.com/ipfs/go-ds-badger (v0.2.7 -> v0.3.0):
|
||||
- feat: plumb through contexts (#119) ([ipfs/go-ds-badger#119](https://github.com/ipfs/go-ds-badger/pull/119))
|
||||
- github.com/ipfs/go-ds-flatfs (v0.4.5 -> v0.5.1):
|
||||
- Update version.json
|
||||
- fix: add context to DiskUsage()
|
||||
- Version 0.5.0 (#99) ([ipfs/go-ds-flatfs#99](https://github.com/ipfs/go-ds-flatfs/pull/99))
|
||||
- feat: add contexts on datastore methods (#98) ([ipfs/go-ds-flatfs#98](https://github.com/ipfs/go-ds-flatfs/pull/98))
|
||||
- sync: update CI config files (#97) ([ipfs/go-ds-flatfs#97](https://github.com/ipfs/go-ds-flatfs/pull/97))
|
||||
- sync: update CI config files ([ipfs/go-ds-flatfs#96](https://github.com/ipfs/go-ds-flatfs/pull/96))
|
||||
- fix staticcheck ([ipfs/go-ds-flatfs#92](https://github.com/ipfs/go-ds-flatfs/pull/92))
|
||||
- fix typo in readme.go ([ipfs/go-ds-flatfs#89](https://github.com/ipfs/go-ds-flatfs/pull/89))
|
||||
- github.com/ipfs/go-ds-leveldb (v0.4.2 -> v0.5.0):
|
||||
- Version 0.5.0 (#58) ([ipfs/go-ds-leveldb#58](https://github.com/ipfs/go-ds-leveldb/pull/58))
|
||||
- feat: plumb through contexts (#57) ([ipfs/go-ds-leveldb#57](https://github.com/ipfs/go-ds-leveldb/pull/57))
|
||||
- sync: update CI config files (#56) ([ipfs/go-ds-leveldb#56](https://github.com/ipfs/go-ds-leveldb/pull/56))
|
||||
- fix closing of datastore in tests ([ipfs/go-ds-leveldb#52](https://github.com/ipfs/go-ds-leveldb/pull/52))
|
||||
- fix staticcheck ([ipfs/go-ds-leveldb#49](https://github.com/ipfs/go-ds-leveldb/pull/49))
|
||||
- fix typo in function documentation ([ipfs/go-ds-leveldb#46](https://github.com/ipfs/go-ds-leveldb/pull/46))
|
||||
- github.com/ipfs/go-ds-measure (v0.1.0 -> v0.2.0):
|
||||
- Version 0.2.0 (#39) ([ipfs/go-ds-measure#39](https://github.com/ipfs/go-ds-measure/pull/39))
|
||||
- feat: add contexts on datastore methods (#38) ([ipfs/go-ds-measure#38](https://github.com/ipfs/go-ds-measure/pull/38))
|
||||
- sync: update CI config files (#37) ([ipfs/go-ds-measure#37](https://github.com/ipfs/go-ds-measure/pull/37))
|
||||
- github.com/ipfs/go-fetcher (v1.5.0 -> v1.6.1):
|
||||
- Version 1.6.1
|
||||
- Version 1.6.0 (#29) ([ipfs/go-fetcher#29](https://github.com/ipfs/go-fetcher/pull/29))
|
||||
- feat: plumb through context changes (#28) ([ipfs/go-fetcher#28](https://github.com/ipfs/go-fetcher/pull/28))
|
||||
- sync: update CI config files (#27) ([ipfs/go-fetcher#27](https://github.com/ipfs/go-fetcher/pull/27))
|
||||
- add a fetcher constructor for the case where we already have a session ([ipfs/go-fetcher#26](https://github.com/ipfs/go-fetcher/pull/26))
|
||||
- github.com/ipfs/go-filestore (v0.0.3 -> v0.1.0):
|
||||
- feat: plumb through context changes (#56) ([ipfs/go-filestore#56](https://github.com/ipfs/go-filestore/pull/56))
|
||||
- github.com/ipfs/go-graphsync (v0.8.0 -> v0.11.0):
|
||||
- docs(CHANGELOG): update for v0.11.0 release
|
||||
- Merge branch 'release/v0.10.6'
|
||||
- update to context datastores (#275) ([ipfs/go-graphsync#275](https://github.com/ipfs/go-graphsync/pull/275))
|
||||
- feat!(requestmanager): remove request allocation backpressure (#272) ([ipfs/go-graphsync#272](https://github.com/ipfs/go-graphsync/pull/272))
|
||||
- message/pb: stop using gogo/protobuf (#277) ([ipfs/go-graphsync#277](https://github.com/ipfs/go-graphsync/pull/277))
|
||||
- mark all test helper funcs via t.Helper (#276) ([ipfs/go-graphsync#276](https://github.com/ipfs/go-graphsync/pull/276))
|
||||
- chore(queryexecutor): remove unused RunTraversal
|
||||
- chore(responsemanager): remove unused workSignal
|
||||
- chore(queryexecutor): fix tests for runtraversal refactor + clean up
|
||||
- feat(queryexecutor): merge RunTraversal into QueryExecutor
|
||||
- feat(responsemanager): QueryExecutor to separate module - use TaskQueue, add tests
|
||||
- Merge branch 'release/v0.10.5'
|
||||
- fix(responseassembler): dont hold block data reference in passed on subscribed block link (#268) ([ipfs/go-graphsync#268](https://github.com/ipfs/go-graphsync/pull/268))
|
||||
- sync: update CI config files (#266) ([ipfs/go-graphsync#266](https://github.com/ipfs/go-graphsync/pull/266))
|
||||
- Check IPLD context cancellation error type instead of string comparison
|
||||
- Use `context.CancelFunc` instead of `func()` (#257) ([ipfs/go-graphsync#257](https://github.com/ipfs/go-graphsync/pull/257))
|
||||
- fix: bail properly when budget exceeded
|
||||
- feat(requestmanager): report inProgressRequestCount on OutgoingRequests event
|
||||
- fix(requestmanager): remove failing racy test select block
|
||||
- feat(requestmanager): add OutgoingRequeustProcessingListener
|
||||
- Merge branch 'release/v0.10.4'
|
||||
- fix(allocator): prevent buffer overflow (#248) ([ipfs/go-graphsync#248](https://github.com/ipfs/go-graphsync/pull/248))
|
||||
- Merge branch 'release/v0.10.3'
|
||||
- Configure message parameters (#247) ([ipfs/go-graphsync#247](https://github.com/ipfs/go-graphsync/pull/247))
|
||||
- Stats! (#246) ([ipfs/go-graphsync#246](https://github.com/ipfs/go-graphsync/pull/246))
|
||||
- Limit simultaneous incoming requests on a per peer basis (#245) ([ipfs/go-graphsync#245](https://github.com/ipfs/go-graphsync/pull/245))
|
||||
- sync: update CI config files (#191) ([ipfs/go-graphsync#191](https://github.com/ipfs/go-graphsync/pull/191))
|
||||
- Merge branch 'release/v0.10.2'
|
||||
- test(responsemanager): fix flakiness TestCancellationViaCommand (#243) ([ipfs/go-graphsync#243](https://github.com/ipfs/go-graphsync/pull/243))
|
||||
- Fix deadlock on notifications (#242) ([ipfs/go-graphsync#242](https://github.com/ipfs/go-graphsync/pull/242))
|
||||
- Merge branch 'release/v0.10.1'
|
||||
- Free memory on request finish (#240) ([ipfs/go-graphsync#240](https://github.com/ipfs/go-graphsync/pull/240))
|
||||
- release: v1.10.0 ([ipfs/go-graphsync#238](https://github.com/ipfs/go-graphsync/pull/238))
|
||||
- Add support for IPLD prime's budgets feature in selectors (#235) ([ipfs/go-graphsync#235](https://github.com/ipfs/go-graphsync/pull/235))
|
||||
- feat(graphsync): add an index for blocks in the on new block hook (#234) ([ipfs/go-graphsync#234](https://github.com/ipfs/go-graphsync/pull/234))
|
||||
- Do not send first blocks extension (#230) ([ipfs/go-graphsync#230](https://github.com/ipfs/go-graphsync/pull/230))
|
||||
- Protect Libp2p Connections (#229) ([ipfs/go-graphsync#229](https://github.com/ipfs/go-graphsync/pull/229))
|
||||
- test(responsemanager): remove check (#228) ([ipfs/go-graphsync#228](https://github.com/ipfs/go-graphsync/pull/228))
|
||||
- feat(graphsync): give missing blocks a named error (#227) ([ipfs/go-graphsync#227](https://github.com/ipfs/go-graphsync/pull/227))
|
||||
- Add request limits (#224) ([ipfs/go-graphsync#224](https://github.com/ipfs/go-graphsync/pull/224))
|
||||
- Tech Debt Cleanup and Docs Update (#219) ([ipfs/go-graphsync#219](https://github.com/ipfs/go-graphsync/pull/219))
|
||||
- Release/v0.9.3 ([ipfs/go-graphsync#218](https://github.com/ipfs/go-graphsync/pull/218))
|
||||
- 0.9.2 release ([ipfs/go-graphsync#217](https://github.com/ipfs/go-graphsync/pull/217))
|
||||
- fix(requestmanager): remove main thread block on allocation (#216) ([ipfs/go-graphsync#216](https://github.com/ipfs/go-graphsync/pull/216))
|
||||
- feat(allocator): add debug logging (#213) ([ipfs/go-graphsync#213](https://github.com/ipfs/go-graphsync/pull/213))
|
||||
- fix: spurious warn log (#210) ([ipfs/go-graphsync#210](https://github.com/ipfs/go-graphsync/pull/210))
|
||||
- docs(CHANGELOG): update for v0.9.1 release (#212) ([ipfs/go-graphsync#212](https://github.com/ipfs/go-graphsync/pull/212))
|
||||
- fix(message): fix dropping of response extensions (#211) ([ipfs/go-graphsync#211](https://github.com/ipfs/go-graphsync/pull/211))
|
||||
- docs(CHANGELOG): update change log ([ipfs/go-graphsync#208](https://github.com/ipfs/go-graphsync/pull/208))
|
||||
- docs(README): add notice about branch rename
|
||||
- fix(graphsync): make sure linkcontext is passed (#207) ([ipfs/go-graphsync#207](https://github.com/ipfs/go-graphsync/pull/207))
|
||||
- Merge final v0.6.x commit history, and 0.8.0 changelog (#205) ([ipfs/go-graphsync#205](https://github.com/ipfs/go-graphsync/pull/205))
|
||||
- Fix broken link to IPLD selector documentation (#189) ([ipfs/go-graphsync#189](https://github.com/ipfs/go-graphsync/pull/189))
|
||||
- fix: check errors before defering a close (#200) ([ipfs/go-graphsync#200](https://github.com/ipfs/go-graphsync/pull/200))
|
||||
- chore: fix checks (#197) ([ipfs/go-graphsync#197](https://github.com/ipfs/go-graphsync/pull/197))
|
||||
- Merge the v0.6.x commit history (#190) ([ipfs/go-graphsync#190](https://github.com/ipfs/go-graphsync/pull/190))
|
||||
- Ready for universal CI (#187) ([ipfs/go-graphsync#187](https://github.com/ipfs/go-graphsync/pull/187))
|
||||
- fix(requestmanager): pass through linksystem (#166) ([ipfs/go-graphsync#166](https://github.com/ipfs/go-graphsync/pull/166))
|
||||
- fix missing word in section title (#179) ([ipfs/go-graphsync#179](https://github.com/ipfs/go-graphsync/pull/179))
|
||||
- github.com/ipfs/go-ipfs-blockstore (v0.1.6 -> v0.2.1):
|
||||
- fix: revert back to go-ipfs-ds-help@v0.1.1 (#92) ([ipfs/go-ipfs-blockstore#92](https://github.com/ipfs/go-ipfs-blockstore/pull/92))
|
||||
- feat: add context to interfaces & plumb through datastore contexts (#89) ([ipfs/go-ipfs-blockstore#89](https://github.com/ipfs/go-ipfs-blockstore/pull/89))
|
||||
- github.com/ipfs/go-ipfs-config (v0.16.0 -> v0.18.0):
|
||||
- Release v0.18.0 (#159) ([ipfs/go-ipfs-config#159](https://github.com/ipfs/go-ipfs-config/pull/159))
|
||||
- feat: add Addresses.AppendAnnounce (#135) ([ipfs/go-ipfs-config#135](https://github.com/ipfs/go-ipfs-config/pull/135))
|
||||
- feat: omitempty Swarm.EnableRelayHop for circuit v1 migration (#157) ([ipfs/go-ipfs-config#157](https://github.com/ipfs/go-ipfs-config/pull/157))
|
||||
- chore: omitempty Experimental.ShardingEnabled (#158) ([ipfs/go-ipfs-config#158](https://github.com/ipfs/go-ipfs-config/pull/158))
|
||||
- chore: update comment to match struct
|
||||
- Release v0.17.0 (#156) ([ipfs/go-ipfs-config#156](https://github.com/ipfs/go-ipfs-config/pull/156))
|
||||
- feat: add a flag to enable the hole punching service (#155) ([ipfs/go-ipfs-config#155](https://github.com/ipfs/go-ipfs-config/pull/155))
|
||||
- improve AutoRelay configuration, add config option for static relays ([ipfs/go-ipfs-config#154](https://github.com/ipfs/go-ipfs-config/pull/154))
|
||||
- feat: Swarm.RelayService (circuit v2) (#146) ([ipfs/go-ipfs-config#146](https://github.com/ipfs/go-ipfs-config/pull/146))
|
||||
- fix: String method on the OptionalString (#153) ([ipfs/go-ipfs-config#153](https://github.com/ipfs/go-ipfs-config/pull/153))
|
||||
- sync: update CI config files (#152) ([ipfs/go-ipfs-config#152](https://github.com/ipfs/go-ipfs-config/pull/152))
|
||||
- feat: OptionalString type and UnixFSShardingSizeThreshold (#149) ([ipfs/go-ipfs-config#149](https://github.com/ipfs/go-ipfs-config/pull/149))
|
||||
- feat: pubsub and ipns pubsub flags (#145) ([ipfs/go-ipfs-config#145](https://github.com/ipfs/go-ipfs-config/pull/145))
|
||||
- feat: add an OptionalDuration type (#148) ([ipfs/go-ipfs-config#148](https://github.com/ipfs/go-ipfs-config/pull/148))
|
||||
- github.com/ipfs/go-ipfs-exchange-interface (v0.0.1 -> v0.1.0):
|
||||
- Update version.json (#20) ([ipfs/go-ipfs-exchange-interface#20](https://github.com/ipfs/go-ipfs-exchange-interface/pull/20))
|
||||
- sync: update CI config files (#19) ([ipfs/go-ipfs-exchange-interface#19](https://github.com/ipfs/go-ipfs-exchange-interface/pull/19))
|
||||
- feat: add context to interface (#18) ([ipfs/go-ipfs-exchange-interface#18](https://github.com/ipfs/go-ipfs-exchange-interface/pull/18))
|
||||
- doc: add a lead maintainer
|
||||
- github.com/ipfs/go-ipfs-exchange-offline (v0.0.1 -> v0.1.1):
|
||||
- Version 0.1.1
|
||||
- Version 0.1.0 (#43) ([ipfs/go-ipfs-exchange-offline#43](https://github.com/ipfs/go-ipfs-exchange-offline/pull/43))
|
||||
- feat: plumb through contexts (#42) ([ipfs/go-ipfs-exchange-offline#42](https://github.com/ipfs/go-ipfs-exchange-offline/pull/42))
|
||||
- sync: update CI config files (#41) ([ipfs/go-ipfs-exchange-offline#41](https://github.com/ipfs/go-ipfs-exchange-offline/pull/41))
|
||||
- fix staticcheck ([ipfs/go-ipfs-exchange-offline#35](https://github.com/ipfs/go-ipfs-exchange-offline/pull/35))
|
||||
- chore(gx): remove gx
|
||||
- github.com/ipfs/go-ipfs-files (v0.0.8 -> v0.0.9):
|
||||
- sync: update CI config files ([ipfs/go-ipfs-files#40](https://github.com/ipfs/go-ipfs-files/pull/40))
|
||||
- fix: manually parse the content disposition to preserve directories ([ipfs/go-ipfs-files#42](https://github.com/ipfs/go-ipfs-files/pull/42))
|
||||
- fix: round timestamps down by truncating them to seconds ([ipfs/go-ipfs-files#41](https://github.com/ipfs/go-ipfs-files/pull/41))
|
||||
- sync: update CI config files ([ipfs/go-ipfs-files#34](https://github.com/ipfs/go-ipfs-files/pull/34))
|
||||
- Fix test failure on Windows caused by nil `sys` in mock `FileInfo` ([ipfs/go-ipfs-files#39](https://github.com/ipfs/go-ipfs-files/pull/39))
|
||||
- fix staticcheck ([ipfs/go-ipfs-files#35](https://github.com/ipfs/go-ipfs-files/pull/35))
|
||||
- fix linters ([ipfs/go-ipfs-files#33](https://github.com/ipfs/go-ipfs-files/pull/33))
|
||||
- github.com/ipfs/go-ipfs-pinner (v0.1.2 -> v0.2.1):
|
||||
- feat: plumb through context changes (#18) ([ipfs/go-ipfs-pinner#18](https://github.com/ipfs/go-ipfs-pinner/pull/18))
|
||||
- github.com/ipfs/go-ipfs-provider (v0.6.1 -> v0.7.1):
|
||||
- Fix go vet and staticcheck ([ipfs/go-ipfs-provider#40](https://github.com/ipfs/go-ipfs-provider/pull/40))
|
||||
- feat: plumb through datastore contexts (#39) ([ipfs/go-ipfs-provider#39](https://github.com/ipfs/go-ipfs-provider/pull/39))
|
||||
- github.com/ipfs/go-ipfs-routing (v0.1.0 -> v0.2.1):
|
||||
- Version 0.2.1
|
||||
- Bump version to 0.2.0 (#29) ([ipfs/go-ipfs-routing#29](https://github.com/ipfs/go-ipfs-routing/pull/29))
|
||||
- feat: plumb through context changes (#28) ([ipfs/go-ipfs-routing#28](https://github.com/ipfs/go-ipfs-routing/pull/28))
|
||||
- sync: update CI config files (#27) ([ipfs/go-ipfs-routing#27](https://github.com/ipfs/go-ipfs-routing/pull/27))
|
||||
- fix staticcheck ([ipfs/go-ipfs-routing#24](https://github.com/ipfs/go-ipfs-routing/pull/24))
|
||||
- github.com/ipfs/go-merkledag (v0.4.0 -> v0.5.1):
|
||||
- Version 0.5.1
|
||||
- Version 0.5.0 (#79) ([ipfs/go-merkledag#79](https://github.com/ipfs/go-merkledag/pull/79))
|
||||
- feat: plumb through contexts (#78) ([ipfs/go-merkledag#78](https://github.com/ipfs/go-merkledag/pull/78))
|
||||
- sync: update CI config files (#77) ([ipfs/go-merkledag#77](https://github.com/ipfs/go-merkledag/pull/77))
|
||||
- expose session construction to other callers
|
||||
- fix RawNode incomplete stats
|
||||
- github.com/ipfs/go-mfs (v0.1.2 -> v0.2.1):
|
||||
- Version 0.2.1
|
||||
- Version 0.2.0 (#96) ([ipfs/go-mfs#96](https://github.com/ipfs/go-mfs/pull/96))
|
||||
- support threshold based automatic sharding and unsharding of directories (#88) ([ipfs/go-mfs#88](https://github.com/ipfs/go-mfs/pull/88))
|
||||
- sync: update CI config files (#94) ([ipfs/go-mfs#94](https://github.com/ipfs/go-mfs/pull/94))
|
||||
- Fix lint errors ([ipfs/go-mfs#90](https://github.com/ipfs/go-mfs/pull/90))
|
||||
- remove Makefile ([ipfs/go-mfs#89](https://github.com/ipfs/go-mfs/pull/89))
|
||||
- github.com/ipfs/go-namesys (v0.3.1 -> v0.4.0):
|
||||
- Release v0.4.0
|
||||
- feat: plumb through datastore contexts
|
||||
- sync: update CI config files (#23) ([ipfs/go-namesys#23](https://github.com/ipfs/go-namesys/pull/23))
|
||||
- github.com/ipfs/go-path (v0.1.2 -> v0.2.1):
|
||||
- Version 0.2.1
|
||||
- Version 0.2.0 (#48) ([ipfs/go-path#48](https://github.com/ipfs/go-path/pull/48))
|
||||
- feat: plumb through context changes (#47) ([ipfs/go-path#47](https://github.com/ipfs/go-path/pull/47))
|
||||
- sync: update CI config files (#46) ([ipfs/go-path#46](https://github.com/ipfs/go-path/pull/46))
|
||||
- Revert "feat: plumb through context changes"
|
||||
- feat: plumb through context changes
|
||||
- github.com/ipfs/go-peertaskqueue (v0.4.0 -> v0.7.0):
|
||||
- feat: optimize checking if a new task is "better" ([ipfs/go-peertaskqueue#19](https://github.com/ipfs/go-peertaskqueue/pull/19))
|
||||
- Adds customizable prioritization logic for peertracker and peertaskqueue ([ipfs/go-peertaskqueue#17](https://github.com/ipfs/go-peertaskqueue/pull/17))
|
||||
- When priority is equal, use FIFO ([ipfs/go-peertaskqueue#16](https://github.com/ipfs/go-peertaskqueue/pull/16))
|
||||
- github.com/ipfs/go-unixfs (v0.2.5 -> v0.3.1):
|
||||
- Version 0.3.1
|
||||
- Version 0.3.0 (#114) ([ipfs/go-unixfs#114](https://github.com/ipfs/go-unixfs/pull/114))
|
||||
- feat: plumb through datastore context changes
|
||||
- Size-based unsharding (#94) ([ipfs/go-unixfs#94](https://github.com/ipfs/go-unixfs/pull/94))
|
||||
- sync: update CI config files (#112) ([ipfs/go-unixfs#112](https://github.com/ipfs/go-unixfs/pull/112))
|
||||
- chore(deps): move bitfield to ipfs org ([ipfs/go-unixfs#98](https://github.com/ipfs/go-unixfs/pull/98))
|
||||
- fix staticcheck ([ipfs/go-unixfs#95](https://github.com/ipfs/go-unixfs/pull/95))
|
||||
- fix(directory): initialize size when computing it ([ipfs/go-unixfs#93](https://github.com/ipfs/go-unixfs/pull/93))
|
||||
- fix: always return upgradeable instead of basic dir (#92) ([ipfs/go-unixfs#92](https://github.com/ipfs/go-unixfs/pull/92))
|
||||
- feat: switch to HAMT based on size (#91) ([ipfs/go-unixfs#91](https://github.com/ipfs/go-unixfs/pull/91))
|
||||
- go fmt
|
||||
- fix: add pointer receiver
|
||||
- add test
|
||||
- feat: add UpgradeableDirectory
|
||||
- github.com/ipfs/interface-go-ipfs-core (v0.5.1 -> v0.5.2):
|
||||
- fix: check errors by string ([ipfs/interface-go-ipfs-core#76](https://github.com/ipfs/interface-go-ipfs-core/pull/76))
|
||||
- github.com/ipfs/tar-utils (v0.0.1 -> v0.0.2):
|
||||
- Release v0.0.2 (#8) ([ipfs/tar-utils#8](https://github.com/ipfs/tar-utils/pull/8))
|
||||
- sync: update CI config files ([ipfs/tar-utils#7](https://github.com/ipfs/tar-utils/pull/7))
|
||||
- sync: update CI config files (#6) ([ipfs/tar-utils#6](https://github.com/ipfs/tar-utils/pull/6))
|
||||
- allow .. in file and directory names ([ipfs/tar-utils#5](https://github.com/ipfs/tar-utils/pull/5))
|
||||
- github.com/ipld/go-car (v0.3.1 -> v0.3.2):
|
||||
- Expose selector traversal options for SelectiveCar ([ipld/go-car#251](https://github.com/ipld/go-car/pull/251))
|
||||
- Implement API to allow replacing root CIDs in a CARv1 or CARv2
|
||||
- blockstore: OpenReadWrite should not modify if it refuses to resume
|
||||
- clarify the relation between StoreIdentityCIDs and SetFullyIndexed
|
||||
- Implement options to handle `IDENTITY` CIDs gracefully
|
||||
- Combine API options for simplicity and logical coherence
|
||||
- Add test script for car verify (#236) ([ipld/go-car#236](https://github.com/ipld/go-car/pull/236))
|
||||
- cmd/car: add first testscript tests
|
||||
- integrate `car/` cli into `cmd/car` (#233) ([ipld/go-car#233](https://github.com/ipld/go-car/pull/233))
|
||||
- Add `car get-dag` command (#232) ([ipld/go-car#232](https://github.com/ipld/go-car/pull/232))
|
||||
- Separate CLI to separate module (#231) ([ipld/go-car#231](https://github.com/ipld/go-car/pull/231))
|
||||
- add `get block` to car cli (#230) ([ipld/go-car#230](https://github.com/ipld/go-car/pull/230))
|
||||
- use file size when loading from v1 car (#229) ([ipld/go-car#229](https://github.com/ipld/go-car/pull/229))
|
||||
- add interface describing iteration (#228) ([ipld/go-car#228](https://github.com/ipld/go-car/pull/228))
|
||||
- Add `list` and `filter` commands (#227) ([ipld/go-car#227](https://github.com/ipld/go-car/pull/227))
|
||||
- Add `car split` command (#226) ([ipld/go-car#226](https://github.com/ipld/go-car/pull/226))
|
||||
- Make `MultihashIndexSorted` the default index codec for CARv2
|
||||
- Add carve utility for updating the index of a car{v1,v2} file (#219) ([ipld/go-car#219](https://github.com/ipld/go-car/pull/219))
|
||||
- Ignore records with `IDENTITY` CID in `IndexSorted`
|
||||
- Fix index GetAll infinite loop if function always returns `true`
|
||||
- Expose the ability to iterate over records in `MultihasIndexSorted`
|
||||
- avoid another alloc per read byte
|
||||
- avoid allocating on every byte read
|
||||
- Implement new index type that also includes mutltihash code
|
||||
- Return `nil` as Index reader when reading indexless CARv2
|
||||
- Assert `OpenReader` from file does not panic after closure
|
||||
- Document performance caveats of `ExtractV1File` and address comments
|
||||
- Implement utility to extract CARv1 from a CARv2
|
||||
- v2/blockstore: add ReadWrite.Discard
|
||||
- update LICENSE files to point to the new gateway
|
||||
- re-add root LICENSE file
|
||||
- v2: stop using a symlink for LICENSE.md
|
||||
- Update the readme with link to examples
|
||||
- update package godocs and root level README for v2
|
||||
- blockstore: stop embedding ReadOnly in ReadWrite
|
||||
- Implement version agnostic streaming CAR block iterator
|
||||
- blockstore: use errors when API contracts are broken
|
||||
- add the first read-only benchmarks
|
||||
- Implement reader block iterator over CARv1 or CARv2
|
||||
- Propagate async `blockstore.AllKeysChan` errors via context
|
||||
- Add zero-length sections as EOF option to internal CARv1 reader
|
||||
- Improve error handing in tests
|
||||
- Allow `ReadOption`s to be set when getting or generating index
|
||||
- Use `ioutil.TempFile` to simplify file creation in index example
|
||||
- Avoid writing to files in testdata
|
||||
- blockstore: implement UseWholeCIDs
|
||||
- Merge wip-v2 into master (#178) ([ipld/go-car#178](https://github.com/ipld/go-car/pull/178))
|
||||
- github.com/ipld/go-ipld-prime (v0.12.2 -> v0.14.2):
|
||||
- dagcbor: coerce undef to null. ([ipld/go-ipld-prime#308](https://github.com/ipld/go-ipld-prime/pull/308))
|
||||
- fluent: add toInterface (#304) ([ipld/go-ipld-prime#304](https://github.com/ipld/go-ipld-prime/pull/304))
|
||||
- traversal: s/Walk/WalkLocal/
|
||||
- traversal: add a primitive walk function.
|
||||
- Remove dependency to `go-wish`
|
||||
- mark v0.14.0
|
||||
- ([ipld/go-ipld-prime#279](https://github.com/ipld/go-ipld-prime/pull/279))
|
||||
- Port `traversal` package tests to quicktest
|
||||
- Port `codec` package tests to quicktest
|
||||
- changelog: backfill.
|
||||
- Gracefully handle `TypedNode` with `nil` type of kind `Map`
|
||||
- Gracefully print typed nodes with `nil` type
|
||||
- Implement handling of `Link` and `[]byte` in `printer` (#294) ([ipld/go-ipld-prime#294](https://github.com/ipld/go-ipld-prime/pull/294))
|
||||
- changelog: backfill for the v0.12.x series.
|
||||
- readme: introduce a migration guide.
|
||||
- Port `fluent` package tests to quicktest
|
||||
- Port `datamodel` package tests to quicktest
|
||||
- Port `adl` package tests to quicktest
|
||||
- Port `node` package tests to quicktest
|
||||
- node/bindnode: support links in ProduceGoTypes
|
||||
- bump CI to Go 1.16 and 1.17
|
||||
- node/bindnode: support links in schema-type verification
|
||||
- node/bindnode: export ProduceGoTypes
|
||||
- all: fix "an" typos after the ipld->datamodel refactor
|
||||
- node/bindnode: fix test code after two PR merges
|
||||
- add LoadSchema APIs to the root package
|
||||
- storage: add 'Has' feature. ([ipld/go-ipld-prime#276](https://github.com/ipld/go-ipld-prime/pull/276))
|
||||
- node/bindnode: start verifying schema compatibility
|
||||
- linking: add LoadRaw and LoadPlusRaw functions to LinkSystem. ([ipld/go-ipld-prime#267](https://github.com/ipld/go-ipld-prime/pull/267))
|
||||
- node/bindnode: add support for lists behind kinded unions
|
||||
- node/bindnode: also run TestPrototype with just schemas
|
||||
- node/bindnode: polish a few TODO panics away
|
||||
- node/bindnode: add support for all scalars behind kinded unions
|
||||
- node/bindnode: get closer to passing the Links schema tests
|
||||
- start using Rod's schema tests from ipld/ipld
|
||||
- fully support parsing, encoding, and decoding the schema-schema
|
||||
- node/bindnode: add native support for cid.Cid
|
||||
- A more Featureful Approach to Storage APIs ([ipld/go-ipld-prime#265](https://github.com/ipld/go-ipld-prime/pull/265))
|
||||
- Add a cidlink.Memory storage option (#266) ([ipld/go-ipld-prime#266](https://github.com/ipld/go-ipld-prime/pull/266))
|
||||
- Improve docs for AssignNode; and datamodel.Copy function. ([ipld/go-ipld-prime#264](https://github.com/ipld/go-ipld-prime/pull/264))
|
||||
- schemadsl: assign the struct representation.
|
||||
- schema,tests,gen/go: more tests, gen union fixes. ([ipld/go-ipld-prime#257](https://github.com/ipld/go-ipld-prime/pull/257))
|
||||
- fix: deal with LinkRevisit->LinkVisitOnlyOnce change
|
||||
- traversal: the link-visit-only-once behavior should require opt-in, rather than defaulting to on.
|
||||
- chore: add LinkRevisit:false traversal test
|
||||
- traversal: track seen links, and revisit only if configured to do so.
|
||||
- fix: use datamodel.Node selectors
|
||||
- Revert encode round-trip to leave unencoded node test intact
|
||||
- Add more walk tests, including tests for use of SkipMe
|
||||
- Round-trip test nodes through custom codec to ensure stability
|
||||
- Don't abort block processing when encountering SkipMe
|
||||
- traversal: implement monotonically decrementing budgets. ([ipld/go-ipld-prime#260](https://github.com/ipld/go-ipld-prime/pull/260))
|
||||
- Use datamodel.Node for "Common" selector variants
|
||||
- schema/dmt: first pass at a parser ([ipld/go-ipld-prime#253](https://github.com/ipld/go-ipld-prime/pull/253))
|
||||
- drop codectools.
|
||||
- drop jst codec. It lives in https://github.com/warpfork/go-jst/ now.
|
||||
- drop dagjson2.
|
||||
- fix(traversal): properly wrap errors
|
||||
- printer: empty maps and lists and structs should stay on one line.
|
||||
- schema: turn TypeName into an alias
|
||||
- schema/dmt: sync with schema-schema changes, finish Compile
|
||||
- schema: add ways to set and access the ImplicitValue for a struct field.
|
||||
- schema: accessor for TypeEnum.Representation.
|
||||
- schema: finish minimum viable support for describing enum types.
|
||||
- github.com/libp2p/go-conn-security-multistream (v0.2.1 -> v0.3.0):
|
||||
- use the new SecureTransport and SecureMuxer interfaces (#36) ([libp2p/go-conn-security-multistream#36](https://github.com/libp2p/go-conn-security-multistream/pull/36))
|
||||
- fix go vet and staticcheck ([libp2p/go-conn-security-multistream#33](https://github.com/libp2p/go-conn-security-multistream/pull/33))
|
||||
- github.com/libp2p/go-libp2p (v0.15.0 -> v0.16.0):
|
||||
- release v0.16.0 ([libp2p/go-libp2p#1246](https://github.com/libp2p/go-libp2p/pull/1246))
|
||||
- allow the ping protocol on transient connections ([libp2p/go-libp2p#1244](https://github.com/libp2p/go-libp2p/pull/1244))
|
||||
- make the Type field required in the HolePunch protobuf ([libp2p/go-libp2p#1241](https://github.com/libp2p/go-libp2p/pull/1241))
|
||||
- reject hole punching attempts when we don't have any public addresses ([libp2p/go-libp2p#1214](https://github.com/libp2p/go-libp2p/pull/1214))
|
||||
- refactor the AutoRelay code ([libp2p/go-libp2p#1240](https://github.com/libp2p/go-libp2p/pull/1240))
|
||||
- remove dead API link in README ([libp2p/go-libp2p#1233](https://github.com/libp2p/go-libp2p/pull/1233))
|
||||
- pass static relays to EnableAutoRelay, deprecate libp2p.StaticRelays and libp2p.DefaultStaticRelays ([libp2p/go-libp2p#1239](https://github.com/libp2p/go-libp2p/pull/1239))
|
||||
- feat: plumb through peerstore context changes (#1237) ([libp2p/go-libp2p#1237](https://github.com/libp2p/go-libp2p/pull/1237))
|
||||
- emit the EvtPeerConnectednessChanged event ([libp2p/go-libp2p#1230](https://github.com/libp2p/go-libp2p/pull/1230))
|
||||
- update go-libp2p-swarm to v0.7.0 ([libp2p/go-libp2p#1226](https://github.com/libp2p/go-libp2p/pull/1226))
|
||||
- sync: update CI config files (#1225) ([libp2p/go-libp2p#1225](https://github.com/libp2p/go-libp2p/pull/1225))
|
||||
- simplify circuitv2 package structure ([libp2p/go-libp2p#1224](https://github.com/libp2p/go-libp2p/pull/1224))
|
||||
- use a random string for the mDNS peer-name ([libp2p/go-libp2p#1222](https://github.com/libp2p/go-libp2p/pull/1222))
|
||||
- remove {Un}RegisterNotifee functions from mDNS service ([libp2p/go-libp2p#1220](https://github.com/libp2p/go-libp2p/pull/1220))
|
||||
- fix structured logging in holepunch coordination ([libp2p/go-libp2p#1213](https://github.com/libp2p/go-libp2p/pull/1213))
|
||||
- fix flaky TestStBackpressureStreamWrite test ([libp2p/go-libp2p#1212](https://github.com/libp2p/go-libp2p/pull/1212))
|
||||
- properly close hosts in mDNS tests ([libp2p/go-libp2p#1216](https://github.com/libp2p/go-libp2p/pull/1216))
|
||||
- close the ObserverAddrManager when the ID service is closed ([libp2p/go-libp2p#1218](https://github.com/libp2p/go-libp2p/pull/1218))
|
||||
- make it possible to pass options to a transport constructor ([libp2p/go-libp2p#1205](https://github.com/libp2p/go-libp2p/pull/1205))
|
||||
- remove goprocess from the NATManager ([libp2p/go-libp2p#1193](https://github.com/libp2p/go-libp2p/pull/1193))
|
||||
- add an option to start the relay v2 ([libp2p/go-libp2p#1197](https://github.com/libp2p/go-libp2p/pull/1197))
|
||||
- fix flaky TestFastDisconnect identify test ([libp2p/go-libp2p#1200](https://github.com/libp2p/go-libp2p/pull/1200))
|
||||
- chore: update go-tcp-transport to v0.3.0 ([libp2p/go-libp2p#1203](https://github.com/libp2p/go-libp2p/pull/1203))
|
||||
- fix: skip variadic params in constructors ([libp2p/go-libp2p#1204](https://github.com/libp2p/go-libp2p/pull/1204))
|
||||
- fix flaky BasicHost tests ([libp2p/go-libp2p#1202](https://github.com/libp2p/go-libp2p/pull/1202))
|
||||
- remove dependency on github.com/ipfs/go-detect-race ([libp2p/go-libp2p#1201](https://github.com/libp2p/go-libp2p/pull/1201))
|
||||
- fix flaky TestEndToEndSimConnect holepunching test ([libp2p/go-libp2p#1191](https://github.com/libp2p/go-libp2p/pull/1191))
|
||||
- autorelay support for circuitv2 relays (#1198) ([libp2p/go-libp2p#1198](https://github.com/libp2p/go-libp2p/pull/1198))
|
||||
- reject circuitv2 reservations with nonsensical expiration times ([libp2p/go-libp2p#1199](https://github.com/libp2p/go-libp2p/pull/1199))
|
||||
- Tag relay hops in relay implementations ([libp2p/go-libp2p#1188](https://github.com/libp2p/go-libp2p/pull/1188))
|
||||
- Add standalone implementation of v1 Relay (#1186) ([libp2p/go-libp2p#1186](https://github.com/libp2p/go-libp2p/pull/1186))
|
||||
- remove the context from the libp2p and the Host constructor ([libp2p/go-libp2p#1190](https://github.com/libp2p/go-libp2p/pull/1190))
|
||||
- don't use a context to shut down the circuitv2 ([libp2p/go-libp2p#1185](https://github.com/libp2p/go-libp2p/pull/1185))
|
||||
- fix: remove v1 go-log dep ([libp2p/go-libp2p#1189](https://github.com/libp2p/go-libp2p/pull/1189))
|
||||
- don't use the context to shut down the relay ([libp2p/go-libp2p#1184](https://github.com/libp2p/go-libp2p/pull/1184))
|
||||
- Use circuitv2 code (#1183) ([libp2p/go-libp2p#1183](https://github.com/libp2p/go-libp2p/pull/1183))
|
||||
- clean up badges in README ([libp2p/go-libp2p#1179](https://github.com/libp2p/go-libp2p/pull/1179))
|
||||
- remove recommendation about Go module proxy from README ([libp2p/go-libp2p#1180](https://github.com/libp2p/go-libp2p/pull/1180))
|
||||
- merge branch 'hole-punching'
|
||||
- don't use a context for closing the ObservedAddrManager ([libp2p/go-libp2p#1175](https://github.com/libp2p/go-libp2p/pull/1175))
|
||||
- move the circuit v2 code here ([libp2p/go-libp2p#1174](https://github.com/libp2p/go-libp2p/pull/1174))
|
||||
- make QUIC a default transport ([libp2p/go-libp2p#1128](https://github.com/libp2p/go-libp2p/pull/1128))
|
||||
- stop using jbenet/go-cienv ([libp2p/go-libp2p#1176](https://github.com/libp2p/go-libp2p/pull/1176))
|
||||
- fix flaky TestObsAddrSet test ([libp2p/go-libp2p#1172](https://github.com/libp2p/go-libp2p/pull/1172))
|
||||
- clean up messy defer logic in IDService.sendIdentifyResp ([libp2p/go-libp2p#1169](https://github.com/libp2p/go-libp2p/pull/1169))
|
||||
- remove secio from README, add noise ([libp2p/go-libp2p#1165](https://github.com/libp2p/go-libp2p/pull/1165))
|
||||
- github.com/libp2p/go-libp2p-asn-util (v0.0.0-20200825225859-85005c6cf052 -> v0.1.0):
|
||||
- Update from upstream and make regeneration easier (#17) ([libp2p/go-libp2p-asn-util#17](https://github.com/libp2p/go-libp2p-asn-util/pull/17))
|
||||
- add license file so it can be found by go-licenses ([libp2p/go-libp2p-asn-util#10](https://github.com/libp2p/go-libp2p-asn-util/pull/10))
|
||||
- refactor: rename ASN table files ([libp2p/go-libp2p-asn-util#9](https://github.com/libp2p/go-libp2p-asn-util/pull/9))
|
||||
- Library for IP -> ASN mapping ([libp2p/go-libp2p-asn-util#1](https://github.com/libp2p/go-libp2p-asn-util/pull/1))
|
||||
- github.com/libp2p/go-libp2p-autonat (v0.4.2 -> v0.6.0):
|
||||
- Version 0.6.0 (#112) ([libp2p/go-libp2p-autonat#112](https://github.com/libp2p/go-libp2p-autonat/pull/112))
|
||||
- feat: plumb through contexts from peerstore (#111) ([libp2p/go-libp2p-autonat#111](https://github.com/libp2p/go-libp2p-autonat/pull/111))
|
||||
- sync: update CI config files (#110) ([libp2p/go-libp2p-autonat#110](https://github.com/libp2p/go-libp2p-autonat/pull/110))
|
||||
- remove context from constructor, implement a proper Close method ([libp2p/go-libp2p-autonat#109](https://github.com/libp2p/go-libp2p-autonat/pull/109))
|
||||
- fix stream deadlines ([libp2p/go-libp2p-autonat#107](https://github.com/libp2p/go-libp2p-autonat/pull/107))
|
||||
- disable failing integration test ([libp2p/go-libp2p-autonat#108](https://github.com/libp2p/go-libp2p-autonat/pull/108))
|
||||
- fix staticcheck ([libp2p/go-libp2p-autonat#103](https://github.com/libp2p/go-libp2p-autonat/pull/103))
|
||||
- github.com/libp2p/go-libp2p-core (v0.9.0 -> v0.11.0):
|
||||
- release v0.11.0 (#217) ([libp2p/go-libp2p-core#217](https://github.com/libp2p/go-libp2p-core/pull/217))
|
||||
- remove the ConnHandler (#214) ([libp2p/go-libp2p-core#214](https://github.com/libp2p/go-libp2p-core/pull/214))
|
||||
- sync: update CI config files (#216) ([libp2p/go-libp2p-core#216](https://github.com/libp2p/go-libp2p-core/pull/216))
|
||||
- remove the Process from the Network interface (#212) ([libp2p/go-libp2p-core#212](https://github.com/libp2p/go-libp2p-core/pull/212))
|
||||
- pass the peer ID to SecureInbound in the SecureTransport and SecureMuxer (#211) ([libp2p/go-libp2p-core#211](https://github.com/libp2p/go-libp2p-core/pull/211))
|
||||
- save the role (client, server) in the simultaneous connect context (#210) ([libp2p/go-libp2p-core#210](https://github.com/libp2p/go-libp2p-core/pull/210))
|
||||
- sync: update CI config files (#209) ([libp2p/go-libp2p-core#209](https://github.com/libp2p/go-libp2p-core/pull/209))
|
||||
- github.com/libp2p/go-libp2p-discovery (v0.5.1 -> v0.6.0):
|
||||
- feat: plumb peerstore contexts changes through (#75) ([libp2p/go-libp2p-discovery#75](https://github.com/libp2p/go-libp2p-discovery/pull/75))
|
||||
- remove deprecated types ([libp2p/go-libp2p-discovery#73](https://github.com/libp2p/go-libp2p-discovery/pull/73))
|
||||
- github.com/libp2p/go-libp2p-kad-dht (v0.13.1 -> v0.15.0):
|
||||
- Bump version to 0.15.0 (#755) ([libp2p/go-libp2p-kad-dht#755](https://github.com/libp2p/go-libp2p-kad-dht/pull/755))
|
||||
- sync: update CI config files (#754) ([libp2p/go-libp2p-kad-dht#754](https://github.com/libp2p/go-libp2p-kad-dht/pull/754))
|
||||
- feat: plumb through datastore contexts (#753) ([libp2p/go-libp2p-kad-dht#753](https://github.com/libp2p/go-libp2p-kad-dht/pull/753))
|
||||
- custom ProviderManager that brokers AddrInfos (#751) ([libp2p/go-libp2p-kad-dht#751](https://github.com/libp2p/go-libp2p-kad-dht/pull/751))
|
||||
- feat: make compatible with go-libp2p 0.15 ([libp2p/go-libp2p-kad-dht#747](https://github.com/libp2p/go-libp2p-kad-dht/pull/747))
|
||||
- sync: update CI config files ([libp2p/go-libp2p-kad-dht#743](https://github.com/libp2p/go-libp2p-kad-dht/pull/743))
|
||||
- Disallow GetPublicKey when DisableValues is passed ([libp2p/go-libp2p-kad-dht#604](https://github.com/libp2p/go-libp2p-kad-dht/pull/604))
|
||||
- github.com/libp2p/go-libp2p-nat (v0.0.6 -> v0.1.0):
|
||||
- remove Codecov config file ([libp2p/go-libp2p-nat#39](https://github.com/libp2p/go-libp2p-nat/pull/39))
|
||||
- stop using goprocess for shutdown ([libp2p/go-libp2p-nat#38](https://github.com/libp2p/go-libp2p-nat/pull/38))
|
||||
- chore: update go-log ([libp2p/go-libp2p-nat#37](https://github.com/libp2p/go-libp2p-nat/pull/37))
|
||||
- remove unused field permanent from mapping ([libp2p/go-libp2p-nat#33](https://github.com/libp2p/go-libp2p-nat/pull/33))
|
||||
- github.com/libp2p/go-libp2p-noise (v0.2.2 -> v0.3.0):
|
||||
- add the peer ID to SecureInbound ([libp2p/go-libp2p-noise#104](https://github.com/libp2p/go-libp2p-noise/pull/104))
|
||||
- update go-libp2p-core, remove integration test ([libp2p/go-libp2p-noise#102](https://github.com/libp2p/go-libp2p-noise/pull/102))
|
||||
- github.com/libp2p/go-libp2p-peerstore (v0.2.8 -> v0.4.0):
|
||||
- Update version.json (#178) ([libp2p/go-libp2p-peerstore#178](https://github.com/libp2p/go-libp2p-peerstore/pull/178))
|
||||
- limit the number of protocols we store per peer ([libp2p/go-libp2p-peerstore#172](https://github.com/libp2p/go-libp2p-peerstore/pull/172))
|
||||
- sync: update CI config files (#177) ([libp2p/go-libp2p-peerstore#177](https://github.com/libp2p/go-libp2p-peerstore/pull/177))
|
||||
- feat: plumb through datastore contexts (#176) ([libp2p/go-libp2p-peerstore#176](https://github.com/libp2p/go-libp2p-peerstore/pull/176))
|
||||
- remove leftover peerstore implementation in the root package ([libp2p/go-libp2p-peerstore#173](https://github.com/libp2p/go-libp2p-peerstore/pull/173))
|
||||
- fix: replace deprecated call ([libp2p/go-libp2p-peerstore#168](https://github.com/libp2p/go-libp2p-peerstore/pull/168))
|
||||
- feat: remove queue ([libp2p/go-libp2p-peerstore#166](https://github.com/libp2p/go-libp2p-peerstore/pull/166))
|
||||
- remove deprecated types ([libp2p/go-libp2p-peerstore#165](https://github.com/libp2p/go-libp2p-peerstore/pull/165))
|
||||
- github.com/libp2p/go-libp2p-pubsub (v0.5.4 -> v0.6.0):
|
||||
- feat: plumb through context changes (#459) ([libp2p/go-libp2p-pubsub#459](https://github.com/libp2p/go-libp2p-pubsub/pull/459))
|
||||
- support MinTopicSize without a discovery mechanism
|
||||
- clear peerPromises map when fullfilling a promise
|
||||
- README: remove obsolete notice, fix example code for tracing.
|
||||
- remove peer filter check from subscriptions (#453) ([libp2p/go-libp2p-pubsub#453](https://github.com/libp2p/go-libp2p-pubsub/pull/453))
|
||||
- Create peer filter option
|
||||
- github.com/libp2p/go-libp2p-pubsub-router (v0.4.0 -> v0.5.0):
|
||||
- Version 0.5.0
|
||||
- feat: plumb through datastore contexts
|
||||
- sync: update CI config files (#86) ([libp2p/go-libp2p-pubsub-router#86](https://github.com/libp2p/go-libp2p-pubsub-router/pull/86))
|
||||
- Remove arbitrary sleeps from tests ([libp2p/go-libp2p-pubsub-router#87](https://github.com/libp2p/go-libp2p-pubsub-router/pull/87))
|
||||
- cleanup: fix staticcheck failures ([libp2p/go-libp2p-pubsub-router#84](https://github.com/libp2p/go-libp2p-pubsub-router/pull/84))
|
||||
- Add WithDatastore option. ([libp2p/go-libp2p-pubsub-router#82](https://github.com/libp2p/go-libp2p-pubsub-router/pull/82))
|
||||
- github.com/libp2p/go-libp2p-quic-transport (v0.12.0 -> v0.15.0):
|
||||
- release v0.15.0 (#241) ([libp2p/go-libp2p-quic-transport#241](https://github.com/libp2p/go-libp2p-quic-transport/pull/241))
|
||||
- reuse the same router until we change listeners ([libp2p/go-libp2p-quic-transport#240](https://github.com/libp2p/go-libp2p-quic-transport/pull/240))
|
||||
- release v0.14.0 ([libp2p/go-libp2p-quic-transport#237](https://github.com/libp2p/go-libp2p-quic-transport/pull/237))
|
||||
- fix error assertions in the tracer ([libp2p/go-libp2p-quic-transport#234](https://github.com/libp2p/go-libp2p-quic-transport/pull/234))
|
||||
- sync: update CI config files (#235) ([libp2p/go-libp2p-quic-transport#235](https://github.com/libp2p/go-libp2p-quic-transport/pull/235))
|
||||
- read the client option from the simultaneous connect context ([libp2p/go-libp2p-quic-transport#230](https://github.com/libp2p/go-libp2p-quic-transport/pull/230))
|
||||
- github.com/libp2p/go-libp2p-swarm (v0.5.3 -> v0.8.0):
|
||||
- Version 0.8.0 (#292) ([libp2p/go-libp2p-swarm#292](https://github.com/libp2p/go-libp2p-swarm/pull/292))
|
||||
- feat: plumb contexts through from peerstore (#290) ([libp2p/go-libp2p-swarm#290](https://github.com/libp2p/go-libp2p-swarm/pull/290))
|
||||
- release v0.7.0 ([libp2p/go-libp2p-swarm#289](https://github.com/libp2p/go-libp2p-swarm/pull/289))
|
||||
- update go-tcp-transport to v0.4.0 ([libp2p/go-libp2p-swarm#287](https://github.com/libp2p/go-libp2p-swarm/pull/287))
|
||||
- remove the ConnHandler ([libp2p/go-libp2p-swarm#286](https://github.com/libp2p/go-libp2p-swarm/pull/286))
|
||||
- sync: update CI config files (#288) ([libp2p/go-libp2p-swarm#288](https://github.com/libp2p/go-libp2p-swarm/pull/288))
|
||||
- remove a lot of incorrect statements from the README ([libp2p/go-libp2p-swarm#284](https://github.com/libp2p/go-libp2p-swarm/pull/284))
|
||||
- unexport the DialSync ([libp2p/go-libp2p-swarm#281](https://github.com/libp2p/go-libp2p-swarm/pull/281))
|
||||
- add an error return value to the constructor ([libp2p/go-libp2p-swarm#280](https://github.com/libp2p/go-libp2p-swarm/pull/280))
|
||||
- use functional options to configure the swarm ([libp2p/go-libp2p-swarm#279](https://github.com/libp2p/go-libp2p-swarm/pull/279))
|
||||
- stop using goprocess to control teardown ([libp2p/go-libp2p-swarm#278](https://github.com/libp2p/go-libp2p-swarm/pull/278))
|
||||
- read and use the direction from the simultaneous connect context ([libp2p/go-libp2p-swarm#277](https://github.com/libp2p/go-libp2p-swarm/pull/277))
|
||||
- simplify the DialSync code ([libp2p/go-libp2p-swarm#272](https://github.com/libp2p/go-libp2p-swarm/pull/272))
|
||||
- remove redundant self-dialing check, simplify starting of dialWorkerLoop ([libp2p/go-libp2p-swarm#273](https://github.com/libp2p/go-libp2p-swarm/pull/273))
|
||||
- add a test case for the testing package ([libp2p/go-libp2p-swarm#276](https://github.com/libp2p/go-libp2p-swarm/pull/276))
|
||||
- simplify limiter by removing the injected isFdConsumingFnc ([libp2p/go-libp2p-swarm#274](https://github.com/libp2p/go-libp2p-swarm/pull/274))
|
||||
- update badges ([libp2p/go-libp2p-swarm#271](https://github.com/libp2p/go-libp2p-swarm/pull/271))
|
||||
- remove unused context in Swarm.dialWorkerLoop ([libp2p/go-libp2p-swarm#268](https://github.com/libp2p/go-libp2p-swarm/pull/268))
|
||||
- remove Codecov config ([libp2p/go-libp2p-swarm#270](https://github.com/libp2p/go-libp2p-swarm/pull/270))
|
||||
- fix race condition in TestFailFirst ([libp2p/go-libp2p-swarm#269](https://github.com/libp2p/go-libp2p-swarm/pull/269))
|
||||
- github.com/libp2p/go-libp2p-testing (v0.4.2 -> v0.5.0):
|
||||
- chore: update go-libp2p-core to v0.10.0 ([libp2p/go-libp2p-testing#38](https://github.com/libp2p/go-libp2p-testing/pull/38))
|
||||
- sync: update CI config files (#37) ([libp2p/go-libp2p-testing#37](https://github.com/libp2p/go-libp2p-testing/pull/37))
|
||||
- github.com/libp2p/go-libp2p-tls (v0.2.0 -> v0.3.1):
|
||||
- release v0.3.1 ([libp2p/go-libp2p-tls#101](https://github.com/libp2p/go-libp2p-tls/pull/101))
|
||||
- set a random certificate subject ([libp2p/go-libp2p-tls#100](https://github.com/libp2p/go-libp2p-tls/pull/100))
|
||||
- sync: update CI config files (#96) ([libp2p/go-libp2p-tls#96](https://github.com/libp2p/go-libp2p-tls/pull/96))
|
||||
- add the peer ID to SecureInbound ([libp2p/go-libp2p-tls#94](https://github.com/libp2p/go-libp2p-tls/pull/94))
|
||||
- sync: update CI config files ([libp2p/go-libp2p-tls#91](https://github.com/libp2p/go-libp2p-tls/pull/91))
|
||||
- github.com/libp2p/go-libp2p-transport-upgrader (v0.4.6 -> v0.5.0):
|
||||
- increase timeout in TestConnectionsClosedIfNotAccepted on CI ([libp2p/go-libp2p-transport-upgrader#85](https://github.com/libp2p/go-libp2p-transport-upgrader/pull/85))
|
||||
- add the peer ID to SecureInbound ([libp2p/go-libp2p-transport-upgrader#83](https://github.com/libp2p/go-libp2p-transport-upgrader/pull/83))
|
||||
- github.com/libp2p/go-msgio (v0.0.6 -> v0.1.0):
|
||||
- sync: update CI config files (#27) ([libp2p/go-msgio#27](https://github.com/libp2p/go-msgio/pull/27))
|
||||
- remove .gxignore file ([libp2p/go-msgio#24](https://github.com/libp2p/go-msgio/pull/24))
|
||||
- remove Codecov config ([libp2p/go-msgio#26](https://github.com/libp2p/go-msgio/pull/26))
|
||||
- remove "Chan" type ([libp2p/go-msgio#23](https://github.com/libp2p/go-msgio/pull/23))
|
||||
- github.com/libp2p/go-nat (v0.0.5 -> v0.1.0):
|
||||
- pass a context to DiscoverGateway ([libp2p/go-nat#23](https://github.com/libp2p/go-nat/pull/23))
|
||||
- github.com/libp2p/go-reuseport (v0.0.2 -> v0.1.0):
|
||||
- stop using github.com/pkg/errors ([libp2p/go-reuseport#85](https://github.com/libp2p/go-reuseport/pull/85))
|
||||
- sync: update CI config files (#84) ([libp2p/go-reuseport#84](https://github.com/libp2p/go-reuseport/pull/84))
|
||||
- github.com/libp2p/go-reuseport-transport (v0.0.5 -> v0.1.0):
|
||||
- remove Codecov config file ([libp2p/go-reuseport-transport#36](https://github.com/libp2p/go-reuseport-transport/pull/36))
|
||||
- chore: update go-log to v2 ([libp2p/go-reuseport-transport#35](https://github.com/libp2p/go-reuseport-transport/pull/35))
|
||||
- sync: update CI config files ([libp2p/go-reuseport-transport#31](https://github.com/libp2p/go-reuseport-transport/pull/31))
|
||||
- github.com/libp2p/go-tcp-transport (v0.2.8 -> v0.4.0):
|
||||
- release v0.4.0 ([libp2p/go-tcp-transport#108](https://github.com/libp2p/go-tcp-transport/pull/108))
|
||||
- sync: update CI config files (#107) ([libp2p/go-tcp-transport#107](https://github.com/libp2p/go-tcp-transport/pull/107))
|
||||
- remove the deprecated IPFS_REUSEPORT command line flag ([libp2p/go-tcp-transport#104](https://github.com/libp2p/go-tcp-transport/pull/104))
|
||||
- add options to the constructor ([libp2p/go-tcp-transport#99](https://github.com/libp2p/go-tcp-transport/pull/99))
|
||||
- remove the context from the libp2p constructor in README ([libp2p/go-tcp-transport#101](https://github.com/libp2p/go-tcp-transport/pull/101))
|
||||
- don't use libp2p.ChainOption in README ([libp2p/go-tcp-transport#102](https://github.com/libp2p/go-tcp-transport/pull/102))
|
||||
- remove incorrect statement about dns addresses in README ([libp2p/go-tcp-transport#100](https://github.com/libp2p/go-tcp-transport/pull/100))
|
||||
- use the assigned role when upgrading a sim open connection ([libp2p/go-tcp-transport#95](https://github.com/libp2p/go-tcp-transport/pull/95))
|
||||
- chore: update go-log to v2 ([libp2p/go-tcp-transport#97](https://github.com/libp2p/go-tcp-transport/pull/97))
|
||||
- simplify dial timeout context ([libp2p/go-tcp-transport#94](https://github.com/libp2p/go-tcp-transport/pull/94))
|
||||
- github.com/libp2p/go-yamux/v2 (v2.2.0 -> v2.3.0):
|
||||
- limit the number of concurrent incoming streams ([libp2p/go-yamux#66](https://github.com/libp2p/go-yamux/pull/66))
|
||||
- drastically reduce allocations in ring buffer implementation (#64) ([libp2p/go-yamux#64](https://github.com/libp2p/go-yamux/pull/64))
|
||||
- sync: update CI config files (#63) ([libp2p/go-yamux#63](https://github.com/libp2p/go-yamux/pull/63))
|
||||
- remove call to asyncNotify in Stream.Read
|
||||
- github.com/libp2p/zeroconf/v2 (v2.0.0 -> v2.1.1):
|
||||
- fix flaky TTL test ([libp2p/zeroconf#18](https://github.com/libp2p/zeroconf/pull/18))
|
||||
- implement a clean shutdown of the probe method ([libp2p/zeroconf#16](https://github.com/libp2p/zeroconf/pull/16))
|
||||
- remove dependency on the backoff library ([libp2p/zeroconf#17](https://github.com/libp2p/zeroconf/pull/17))
|
||||
- Don't stop browsing after ~15min ([libp2p/zeroconf#13](https://github.com/libp2p/zeroconf/pull/13))
|
||||
- fix delays when sending initial probe packets ([libp2p/zeroconf#14](https://github.com/libp2p/zeroconf/pull/14))
|
||||
- improve starting of mDNS service in tests, stop using pkg/errors ([libp2p/zeroconf#15](https://github.com/libp2p/zeroconf/pull/15))
|
||||
- update import path to include v2 in README ([libp2p/zeroconf#11](https://github.com/libp2p/zeroconf/pull/11))
|
||||
- github.com/lucas-clemente/quic-go (v0.23.0 -> v0.24.0):
|
||||
- don't unlock the receive stream mutex for copying from STREAM frames ([lucas-clemente/quic-go#3290](https://github.com/lucas-clemente/quic-go/pull/3290))
|
||||
- List projects using quic-go ([lucas-clemente/quic-go#3266](https://github.com/lucas-clemente/quic-go/pull/3266))
|
||||
- disable Path MTU Discovery on Windows ([lucas-clemente/quic-go#3276](https://github.com/lucas-clemente/quic-go/pull/3276))
|
||||
- enter the regular run loop if no undecryptable packet was processed ([lucas-clemente/quic-go#3268](https://github.com/lucas-clemente/quic-go/pull/3268))
|
||||
- Allow use of custom port value in Alt-Svc header. ([lucas-clemente/quic-go#3272](https://github.com/lucas-clemente/quic-go/pull/3272))
|
||||
- disable the goconst linter ([lucas-clemente/quic-go#3286](https://github.com/lucas-clemente/quic-go/pull/3286))
|
||||
- use x/net/ipv{4,6} to construct oob info when writing packets (#3278) ([lucas-clemente/quic-go#3278](https://github.com/lucas-clemente/quic-go/pull/3278))
|
||||
- run gofmt to add the new go:build tags ([lucas-clemente/quic-go#3277](https://github.com/lucas-clemente/quic-go/pull/3277))
|
||||
- fix log string in client example ([lucas-clemente/quic-go#3264](https://github.com/lucas-clemente/quic-go/pull/3264))
|
||||
- github.com/multiformats/go-multiaddr (v0.4.0 -> v0.4.1):
|
||||
- add the plaintextv2 protocol ([multiformats/go-multiaddr#165](https://github.com/multiformats/go-multiaddr/pull/165))
|
||||
- github.com/multiformats/go-multihash (v0.0.15 -> v0.1.0):
|
||||
- bump version to v0.1.0 ([multiformats/go-multihash#151](https://github.com/multiformats/go-multihash/pull/151))
|
||||
- add version.json per tooling convention.
|
||||
- murmur3 support (#150) ([multiformats/go-multihash#150](https://github.com/multiformats/go-multihash/pull/150))
|
||||
- Add variations of sha2 ([multiformats/go-multihash#149](https://github.com/multiformats/go-multihash/pull/149))
|
||||
- don't use pointers for Multihash.String
|
||||
- Add blake3 hash and sharness tests ([multiformats/go-multihash#147](https://github.com/multiformats/go-multihash/pull/147))
|
||||
- remove Makefile ([multiformats/go-multihash#142](https://github.com/multiformats/go-multihash/pull/142))
|
||||
- fix staticcheck ([multiformats/go-multihash#141](https://github.com/multiformats/go-multihash/pull/141))
|
||||
- New SumStream function reads from io.Reader ([multiformats/go-multihash#138](https://github.com/multiformats/go-multihash/pull/138))
|
||||
- github.com/warpfork/go-testmark (v0.3.0 -> v0.9.0):
|
||||
- testexec: will now always set up tmpdirs.
|
||||
- testexec: fix typo in error message.
|
||||
- testexec: subtest ("then-*") feature ([warpfork/go-testmark#7](https://github.com/warpfork/go-testmark/pull/7))
|
||||
- testexec: quote error from child; attribution better via more t.Helper.
|
||||
- Improve documentation of format.
|
||||
- Rename Hunk.BlockTag -> InfoString.
|
||||
- testexec: will now create tmpdirs and files for you if you have an 'fs' entry tree.
|
||||
- testexec: getting exit codes correctly. ([warpfork/go-testmark#6](https://github.com/warpfork/go-testmark/pull/6))
|
||||
- fix parsing CRLF files, part 3 ([warpfork/go-testmark#5](https://github.com/warpfork/go-testmark/pull/5))
|
||||
- fix parsing CRLF files, part 2 ([warpfork/go-testmark#4](https://github.com/warpfork/go-testmark/pull/4))
|
||||
- testexec: support both simple sequence and script mode.
|
||||
- Proper tests for read function.
|
||||
- avoid creeping extra linebreaks at the end of a patched document.
|
||||
- refrain from making double linebreaks when patching with content that ends in a linebreak.
|
||||
- Merge branch 'testexec'
|
||||
- add support for parsing CRLF line endings ([warpfork/go-testmark#3](https://github.com/warpfork/go-testmark/pull/3))
|
||||
- link to patch example code
|
||||
- More readme; and, parsing recommendations document.
|
||||
- Further improve readme.
|
||||
|
||||
### ❤️ Contributors
|
||||
|
||||
| Contributor | Commits | Lines ± | Files Changed |
|
||||
|-------------|---------|---------|---------------|
|
||||
| Will | 13 | +73226/-130481 | 43 |
|
||||
| Masih H. Derkani | 99 | +10549/-5799 | 489 |
|
||||
| hannahhoward | 43 | +5515/-3293 | 233 |
|
||||
| Daniel Martí | 60 | +5312/-2883 | 208 |
|
||||
| Marten Seemann | 175 | +4839/-3254 | 396 |
|
||||
| Eric Myhre | 73 | +3924/-3328 | 175 |
|
||||
| Jessica Schilling | 52 | +2709/-2386 | 75 |
|
||||
| Rod Vagg | 30 | +2719/-1703 | 79 |
|
||||
| vyzo | 10 | +3516/-177 | 87 |
|
||||
| Gus Eggert | 64 | +1677/-1416 | 147 |
|
||||
| Adin Schmahmann | 23 | +1708/-381 | 95 |
|
||||
| Lucas Molas | 14 | +1557/-365 | 48 |
|
||||
| Will Scott | 7 | +1846/-15 | 34 |
|
||||
| Steven Allen | 32 | +537/-897 | 56 |
|
||||
| Cory Schwartz | 3 | +614/-109 | 12 |
|
||||
| rht | 3 | +576/-4 | 7 |
|
||||
| Simon Zhu | 9 | +352/-51 | 16 |
|
||||
| Petar Maymounkov | 7 | +173/-167 | 23 |
|
||||
| RubenKelevra | 1 | +107/-188 | 1 |
|
||||
| jwh | 2 | +212/-80 | 7 |
|
||||
| longfeiW | 1 | +4/-249 | 10 |
|
||||
| guseggert | 5 | +230/-21 | 11 |
|
||||
| Kevin Neaton | 8 | +137/-80 | 13 |
|
||||
| Takashi Matsuda | 1 | +199/-0 | 5 |
|
||||
| Andrey Kostakov | 1 | +107/-49 | 2 |
|
||||
| Jesse Bouwman | 1 | +151/-0 | 7 |
|
||||
| web3-bot | 39 | +136/-3 | 52 |
|
||||
| Marcin Rataj | 16 | +62/-57 | 25 |
|
||||
| Marco Munizaga | 1 | +118/-0 | 2 |
|
||||
| Aaron Riekenberg | 4 | +64/-52 | 6 |
|
||||
| Ian Davis | 4 | +81/-32 | 7 |
|
||||
| Jorropo | 2 | +79/-19 | 6 |
|
||||
| Mohsin Zaidi | 1 | +89/-1 | 20 |
|
||||
| Andey Robins | 1 | +70/-3 | 3 |
|
||||
| gammazero | 3 | +40/-25 | 4 |
|
||||
| Steve Loeppky | 2 | +26/-27 | 3 |
|
||||
| Dimitris Apostolou | 1 | +25/-25 | 15 |
|
||||
| Sudarshan Reddy | 1 | +9/-40 | 1 |
|
||||
| Richard Littauer | 2 | +42/-1 | 3 |
|
||||
| pymq | 1 | +32/-8 | 2 |
|
||||
| Dirk McCormick | 2 | +23/-1 | 2 |
|
||||
| Nicholas Bollweg | 1 | +21/-0 | 1 |
|
||||
| anorth | 1 | +14/-6 | 2 |
|
||||
| Jack Loughran | 1 | +16/-0 | 2 |
|
||||
| whyrusleeping | 2 | +11/-2 | 2 |
|
||||
| bt90 | 1 | +13/-0 | 1 |
|
||||
| Yi Cao | 1 | +10/-0 | 1 |
|
||||
| Max | 1 | +7/-3 | 1 |
|
||||
| Juan Batiz-Benet | 2 | +8/-2 | 2 |
|
||||
| Keenan Nemetz | 1 | +8/-0 | 1 |
|
||||
| muXxer | 1 | +3/-3 | 1 |
|
||||
| galargh | 2 | +3/-3 | 3 |
|
||||
| Didrik Nordström | 1 | +2/-4 | 1 |
|
||||
| Ben Lubar | 1 | +3/-3 | 1 |
|
||||
| arjunraghurama | 1 | +5/-0 | 1 |
|
||||
| Whyrusleeping | 1 | +3/-2 | 1 |
|
||||
| TUSF | 1 | +3/-2 | 3 |
|
||||
| mathew-cf | 1 | +3/-1 | 2 |
|
||||
| Stephen Whitmore | 1 | +2/-2 | 1 |
|
||||
| Song Zhu | 1 | +2/-2 | 1 |
|
||||
| Michael Muré | 1 | +4/-0 | 1 |
|
||||
| Alex Good | 1 | +4/-0 | 2 |
|
||||
| aarshkshah1992 | 1 | +2/-1 | 1 |
|
||||
| susarlanikhilesh | 1 | +1/-1 | 1 |
|
||||
| falstack | 1 | +1/-1 | 1 |
|
||||
| Michael Vorburger ⛑️ | 1 | +1/-1 | 1 |
|
||||
| Ismail Khoffi | 1 | +1/-1 | 1 |
|
||||
| George Xie | 1 | +1/-1 | 1 |
|
||||
| Bryan Stenson | 1 | +1/-1 | 1 |
|
||||
| Lars Gierth | 1 | +1/-0 | 1 |
|
||||
|
||||
## v0.10.0 2021-09-30
|
||||
|
||||
We're happy to announce go-ipfs 0.10.0. This release brings some big changes to the IPLD internals of go-ipfs that make working with non-UnixFS DAGs easier than ever. There are also a variety of new commands and configuration options available.
|
||||
|
||||
@ -106,5 +106,10 @@ ENV IPFS_LOGGING ""
|
||||
# 2. The API and Gateway are accessible from outside the container.
|
||||
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/start_ipfs"]
|
||||
|
||||
# Heathcheck for the container
|
||||
# QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn is the CID of empty folder
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD ipfs dag stat /ipfs/QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn || exit 1
|
||||
|
||||
# Execute the daemon subcommand by default
|
||||
CMD ["daemon", "--migrate=true"]
|
||||
CMD ["daemon", "--migrate=true", "--agent-version-suffix=docker"]
|
||||
|
||||
12
README.md
12
README.md
@ -14,7 +14,7 @@ For more info see: https://docs.ipfs.io/introduction/overview/
|
||||
|
||||
Before opening an issue, consider using one of the following locations to ensure you are opening your thread in the right place:
|
||||
- go-ipfs _implementation_ bugs in [this repo](https://github.com/ipfs/go-ipfs/issues).
|
||||
- Documentation issues in [ipfs/docs issues](https://github.com/ipfs/docs/issues).
|
||||
- Documentation issues in [ipfs/docs issues](https://github.com/ipfs/ipfs-docs/issues).
|
||||
- IPFS _design_ in [ipfs/specs issues](https://github.com/ipfs/specs/issues).
|
||||
- Exploration of new ideas in [ipfs/notes issues](https://github.com/ipfs/notes/issues).
|
||||
- Ask questions and meet the rest of the community at the [IPFS Forum](https://discuss.ipfs.io).
|
||||
@ -50,6 +50,7 @@ Before opening an issue, consider using one of the following locations to ensure
|
||||
- [macOS package managers](#macos-package-managers)
|
||||
- [MacPorts](#MacPorts)
|
||||
- [Nix](#nix-macos)
|
||||
- [Homebrew](#Homebrew)
|
||||
- [Windows package managers](#windows-package-managers)
|
||||
- [Chocolatey](#chocolatey)
|
||||
- [Scoop](#scoop)
|
||||
@ -169,6 +170,7 @@ $ sudo snap install ipfs
|
||||
|
||||
- [MacPorts](#macports)
|
||||
- [Nix](#nix-macos)
|
||||
- [Homebrew](#Homebrew)
|
||||
|
||||
#### MacPorts
|
||||
|
||||
@ -188,6 +190,14 @@ $ nix-env -i ipfs
|
||||
|
||||
You can also install the Package by using its attribute name, which is also `ipfs`.
|
||||
|
||||
#### Homebrew
|
||||
|
||||
A Homebrew formula [ipfs](https://formulae.brew.sh/formula/ipfs) is maintained too.
|
||||
|
||||
```
|
||||
$ brew install --formula ipfs
|
||||
```
|
||||
|
||||
### Windows package managers
|
||||
|
||||
- [Chocolatey](#chocolatey)
|
||||
|
||||
2
Rules.mk
2
Rules.mk
@ -22,7 +22,7 @@ include mk/golang.mk
|
||||
ifeq ($(TEST_NO_FUSE),1)
|
||||
GOTAGS += nofuse
|
||||
endif
|
||||
export IPFS_REUSEPORT=false
|
||||
export LIBP2P_TCP_REUSEPORT=false
|
||||
|
||||
# -------------------- #
|
||||
# sub-files #
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
This directory contains the go-ipfs assets:
|
||||
|
||||
* Getting started documentation (`init-doc`).
|
||||
* Directory listing HTML template (`dir-index-html` git submodule).
|
||||
* Directory listing HTML template (`dir-index-html`).
|
||||
|
||||
These assets are compiled into `bindata.go` with `go generate`.
|
||||
|
||||
@ -16,37 +16,4 @@ assets directory:
|
||||
|
||||
```
|
||||
go generate .
|
||||
```
|
||||
|
||||
## Updating dir-index-html
|
||||
|
||||
Upstream: https://github.com/ipfs/dir-index-html
|
||||
|
||||
dir-index-html is a git submodule. To update, run the following commands from
|
||||
this directory.
|
||||
|
||||
```bash
|
||||
> git -C dir-index-html pull
|
||||
> git -C dir-index-html checkout vX.Y.Z # target version
|
||||
```
|
||||
|
||||
Then, you'll need to commit the updated submodule _before_ regenerating
|
||||
`bindata.go`. Otherwise, `go generate` will checkout the checked-in version of
|
||||
dir-index-html.
|
||||
|
||||
```bash
|
||||
> git add dir-index-html
|
||||
> git commit -m 'chore: update dir-index-html to vX.Y.Z'
|
||||
```
|
||||
|
||||
Finally, re-generate the directory index HTML template, tidy, and amend the previous
|
||||
commit.
|
||||
|
||||
```bash
|
||||
> go generate .
|
||||
> git add bindata.go
|
||||
> git add bindata_version_hash.go
|
||||
> go mod tidy
|
||||
> git commit --amend --no-edit
|
||||
|
||||
```
|
||||
```
|
||||
@ -1,4 +1,4 @@
|
||||
//go:generate git submodule update --init ./dir-index-html
|
||||
//go:generate npm run build --prefix ./dir-index-html/
|
||||
//go:generate go run github.com/go-bindata/go-bindata/v3/go-bindata -mode=0644 -modtime=1403768328 -pkg=assets init-doc dir-index-html/dir-index.html dir-index-html/knownIcons.txt
|
||||
//go:generate gofmt -s -w bindata.go
|
||||
//go:generate sh -c "sed -i \"s/.*BindataVersionHash.*/BindataVersionHash=\\\"$(git hash-object bindata.go)\\\"/\" bindata_version_hash.go"
|
||||
|
||||
@ -45,7 +45,7 @@ func testOneFile(f string, t *testing.T) {
|
||||
}
|
||||
|
||||
if !bytes.Equal(vcsData, embdData) {
|
||||
t.Errorf("asset %s: vcs and embedded data isnt equal", f)
|
||||
t.Errorf("asset %s: vcs and embedded data isn't equal", f)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -2,5 +2,5 @@
|
||||
package assets
|
||||
|
||||
const (
|
||||
BindataVersionHash = "605b5945438e1fe2eaf8a6571cca7ecda12d5599"
|
||||
BindataVersionHash = "512eb789cd905714e03f29d4e04de7549e8c9c3e"
|
||||
)
|
||||
|
||||
@ -1 +0,0 @@
|
||||
Subproject commit 5c6147fd02e88b0a235ac655f58741436a2f2b80
|
||||
26
assets/dir-index-html/README.md
Normal file
26
assets/dir-index-html/README.md
Normal file
@ -0,0 +1,26 @@
|
||||
# dir-index-html
|
||||
|
||||
> Directory listing HTML for `go-ipfs` gateways
|
||||
|
||||

|
||||
|
||||
## Updating
|
||||
|
||||
When making updates to the directory listing page template, please note the following:
|
||||
|
||||
1. Make your changes to the (human-friendly) source documents in the `src` directory and run `npm run build`
|
||||
3. Before testing or releasing, go to the top-level `./assets` directory and make sure to run the `go generate .` script to update the bindata version
|
||||
|
||||
## Testing
|
||||
|
||||
1. Make sure you have [Go](https://golang.org/dl/) installed
|
||||
2. Start the test server, which lives in its own directory:
|
||||
|
||||
```bash
|
||||
> cd test
|
||||
> go run .
|
||||
```
|
||||
This will listen on [`localhost:3000`](http://localhost:3000/) and reload the template every time you refresh the page.
|
||||
|
||||
If you get a "no such file or directory" error upon trying `go run .`, make sure you ran `npm run build` to generate the minified artifact that the test is looking for.
|
||||
|
||||
97
assets/dir-index-html/dir-index.html
Normal file
97
assets/dir-index-html/dir-index.html
Normal file
File diff suppressed because one or more lines are too long
1
assets/dir-index-html/index.go
Normal file
1
assets/dir-index-html/index.go
Normal file
@ -0,0 +1 @@
|
||||
package dirindexhtml
|
||||
65
assets/dir-index-html/knownIcons.txt
Normal file
65
assets/dir-index-html/knownIcons.txt
Normal file
@ -0,0 +1,65 @@
|
||||
.aac
|
||||
.aiff
|
||||
.ai
|
||||
.avi
|
||||
.bmp
|
||||
.c
|
||||
.cpp
|
||||
.css
|
||||
.dat
|
||||
.dmg
|
||||
.doc
|
||||
.dotx
|
||||
.dwg
|
||||
.dxf
|
||||
.eps
|
||||
.exe
|
||||
.flv
|
||||
.gif
|
||||
.h
|
||||
.hpp
|
||||
.html
|
||||
.ics
|
||||
.iso
|
||||
.java
|
||||
.jpg
|
||||
.jpeg
|
||||
.js
|
||||
.key
|
||||
.less
|
||||
.mid
|
||||
.mkv
|
||||
.mov
|
||||
.mp3
|
||||
.mp4
|
||||
.mpg
|
||||
.odf
|
||||
.ods
|
||||
.odt
|
||||
.otp
|
||||
.ots
|
||||
.ott
|
||||
.pdf
|
||||
.php
|
||||
.png
|
||||
.ppt
|
||||
.psd
|
||||
.py
|
||||
.qt
|
||||
.rar
|
||||
.rb
|
||||
.rtf
|
||||
.sass
|
||||
.scss
|
||||
.sql
|
||||
.tga
|
||||
.tgz
|
||||
.tiff
|
||||
.txt
|
||||
.wav
|
||||
.wmv
|
||||
.xls
|
||||
.xlsx
|
||||
.xml
|
||||
.yml
|
||||
.zip
|
||||
17
assets/dir-index-html/package.json
Normal file
17
assets/dir-index-html/package.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "dir-index-html",
|
||||
"description": "Directory listing HTML for go-ipfs gateways",
|
||||
"version": "1.3.0",
|
||||
"private": true,
|
||||
"homepage": "https://github.com/ipfs/go-ipfs",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"start": "cd test && go run .",
|
||||
"build": "npm run build:clean && npm run build:remove-style-links && npm run build:minify-wrap-css && npm run build:combine-html-css && npm run build:remove-unused",
|
||||
"build:clean": "rm dir-index.html",
|
||||
"build:remove-style-links": "sed '/<link rel=\"stylesheet\"/d' ./src/dir-index.html > ./base-html.html",
|
||||
"build:minify-wrap-css": "(echo \"<style>\" && cat ./src/icons.css ./src/style.css | tr -d \"\t\n\r\" && echo && echo \"</style>\") > ./minified-wrapped-style.html",
|
||||
"build:combine-html-css": "sed '/<\\/title>/ r ./minified-wrapped-style.html' ./base-html.html > ./dir-index.html",
|
||||
"build:remove-unused": "rm ./base-html.html && rm ./minified-wrapped-style.html"
|
||||
}
|
||||
}
|
||||
96
assets/dir-index-html/src/dir-index.html
Normal file
96
assets/dir-index-html/src/dir-index.html
Normal file
@ -0,0 +1,96 @@
|
||||
<!DOCTYPE html>
|
||||
{{ $root := . }}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="description" content="A directory of files hosted on the distributed, decentralized web using IPFS">
|
||||
<meta property="og:title" content="Files on IPFS">
|
||||
<meta property="og:description" content="{{ .Path }}">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:image" content="https://gateway.ipfs.io/ipfs/QmSDeYAe9mga6NdTozAZuyGL3Q1XjsLtvX28XFxJH8oPjq">
|
||||
<meta name="twitter:title" content="{{ .Path }}">
|
||||
<meta name="twitter:description" content="A directory of files hosted on the distributed, decentralized web using IPFS">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="https://gateway.ipfs.io/ipfs/QmSDeYAe9mga6NdTozAZuyGL3Q1XjsLtvX28XFxJH8oPjq">
|
||||
<meta name="twitter:creator" content="@ipfs">
|
||||
<meta name="twitter:site" content="@ipfs">
|
||||
<meta name="image" content="https://gateway.ipfs.io/ipfs/QmSDeYAe9mga6NdTozAZuyGL3Q1XjsLtvX28XFxJH8oPjq">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlo89/56ZQ/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUjDu1lo89/6mhTP+zrVP/nplD/5+aRK8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNiIS6Wjz3/ubFY/761W/+vp1D/urRZ/8vDZf/GvmH/nplD/1BNIm8AAAAAAAAAAAAAAAAAAAAAAAAAAJaPPf+knEj/vrVb/761W/++tVv/r6dQ/7q0Wf/Lw2X/y8Nl/8vDZf+tpk7/nplD/wAAAAAAAAAAAAAAAJaPPf+2rVX/vrVb/761W/++tVv/vrVb/6+nUP+6tFn/y8Nl/8vDZf/Lw2X/y8Nl/8G6Xv+emUP/AAAAAAAAAACWjz3/vrVb/761W/++tVv/vrVb/761W/+vp1D/urRZ/8vDZf/Lw2X/y8Nl/8vDZf/Lw2X/nplD/wAAAAAAAAAAlo89/761W/++tVv/vrVb/761W/++tVv/r6dQ/7q0Wf/Lw2X/y8Nl/8vDZf/Lw2X/y8Nl/56ZQ/8AAAAAAAAAAJaPPf++tVv/vrVb/761W/++tVv/vbRa/5aPPf+emUP/y8Nl/8vDZf/Lw2X/y8Nl/8vDZf+emUP/AAAAAAAAAACWjz3/vrVb/761W/++tVv/vrVb/5qTQP+inkb/op5G/6KdRv/Lw2X/y8Nl/8vDZf/Lw2X/nplD/wAAAAAAAAAAlo89/761W/++tVv/sqlS/56ZQ//LxWb/0Mlp/9DJaf/Kw2X/oJtE/7+3XP/Lw2X/y8Nl/56ZQ/8AAAAAAAAAAJaPPf+9tFr/mJE+/7GsUv/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+xrFL/nplD/8vDZf+emUP/AAAAAAAAAACWjz3/op5G/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+inkb/nplD/wAAAAAAAAAAAAAAAKKeRv+3slb/0cpq/9HKav/Rymr/0cpq/9HKav/Rymr/0cpq/9HKav+1sFX/op5G/wAAAAAAAAAAAAAAAAAAAAAAAAAAop5GUKKeRv/Nxmf/0cpq/9HKav/Rymr/0cpq/83GZ/+inkb/op5GSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAop5G16KeRv/LxWb/y8Vm/6KeRv+inkaPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAop5G/6KeRtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n8AAPgfAADwDwAAwAMAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAwAMAAPAPAAD4HwAA/n8AAA==" />
|
||||
<link rel="stylesheet" href="style.css"/>
|
||||
<link rel="stylesheet" href="icons.css">
|
||||
<title>{{ .Path }}</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="page-header">
|
||||
<div id="page-header-logo" class="ipfs-logo"> </div>
|
||||
<div id="page-header-menu">
|
||||
<div class="menu-item-wide"><a href="https://ipfs.io" target="_blank" rel="noopener noreferrer">About IPFS</a></div>
|
||||
<div class="menu-item-wide"><a href="https://ipfs.io#install" target="_blank" rel="noopener noreferrer">Install IPFS</a></div>
|
||||
<div class="menu-item-narrow"><a href="https://ipfs.io" target="_blank" rel="noopener noreferrer">About</a></div>
|
||||
<div class="menu-item-narrow"><a href="https://ipfs.io#install" target="_blank" rel="noopener noreferrer">Install</a></div>
|
||||
<div>
|
||||
<a href="https://github.com/ipfs/dir-index-html/issues/" target="_blank" rel="noopener noreferrer">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.4 21"><circle cx="7.5" cy="4.8" r="1"/><circle cx="11.1" cy="4.8" r="1"/><path d="M12.7 8.4c-0.5-1.5-1.9-2.5-3.5-2.5 -1.6 0-3 1-3.5 2.5H12.7z"/><path d="M8.5 9.7H5c-0.5 0.8-0.7 1.7-0.7 2.7 0 2.6 1.8 4.8 4.2 5.2V9.7z"/><path d="M13.4 9.7H9.9v7.9c2.4-0.4 4.2-2.5 4.2-5.2C14.1 11.4 13.9 10.5 13.4 9.7z"/><circle cx="15.7" cy="12.9" r="1"/><circle cx="15.1" cy="15.4" r="1"/><circle cx="15.3" cy="10.4" r="1"/><circle cx="2.7" cy="12.9" r="1"/><circle cx="3.3" cy="15.4" r="1"/><circle cx="3.1" cy="10.4" r="1"/></svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div id="content-header" class="d-flex flex-wrap">
|
||||
<div>
|
||||
<strong>
|
||||
Index of
|
||||
{{ range .Breadcrumbs -}}
|
||||
/{{ if .Path }}<a href="{{ $root.GatewayURL }}{{ .Path | urlEscape }}">{{ .Name }}</a>{{ else }}{{ .Name }}{{ end }}
|
||||
{{- else }}
|
||||
{{ .Path }}
|
||||
{{ end }}
|
||||
</strong>
|
||||
{{ if .Hash }}
|
||||
<div class="ipfs-hash" translate="no">
|
||||
{{ .Hash }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ if .Size }}
|
||||
<div class="no-linebreak flex-shrink-1 ml-auto">
|
||||
<strong> {{ .Size }}</strong>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="type-icon">
|
||||
<div class="ipfs-_blank"> </div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{.BackLink | urlEscape}}">..</a>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{{ range .Listing }}
|
||||
<tr>
|
||||
<td class="type-icon">
|
||||
<div class="{{iconFromExt .Name}}"> </div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ .Path | urlEscape }}">{{ .Name }}</a>
|
||||
</td>
|
||||
<td class="no-linebreak">
|
||||
{{ if .Hash }}
|
||||
<a class="ipfs-hash" translate="no" href={{ if $root.DNSLink }}"https://cid.ipfs.io/#{{ .Hash | urlEscape}}" target="_blank" rel="noreferrer noopener"{{ else }}"{{ $root.GatewayURL }}/ipfs/{{ .Hash | urlEscape}}?filename={{ .Name | urlEscape }}"{{ end }}>
|
||||
{{ .ShortHash }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</td>
|
||||
<td class="no-linebreak">{{ .Size }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
403
assets/dir-index-html/src/icons.css
Normal file
403
assets/dir-index-html/src/icons.css
Normal file
File diff suppressed because one or more lines are too long
212
assets/dir-index-html/src/style.css
Normal file
212
assets/dir-index-html/src/style.css
Normal file
@ -0,0 +1,212 @@
|
||||
body {
|
||||
color:#34373f;
|
||||
font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size:14px;
|
||||
line-height:1.43;
|
||||
margin:0;
|
||||
word-break:break-all;
|
||||
-webkit-text-size-adjust:100%;
|
||||
-ms-text-size-adjust:100%;
|
||||
-webkit-tap-highlight-color:transparent
|
||||
}
|
||||
|
||||
a {
|
||||
color:#117eb3;
|
||||
text-decoration:none
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color:#00b0e9;
|
||||
text-decoration:underline
|
||||
}
|
||||
|
||||
a:active,
|
||||
a:visited {
|
||||
color:#00b0e9
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight:700
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse:collapse;
|
||||
border-spacing:0;
|
||||
max-width:100%;
|
||||
width:100%
|
||||
}
|
||||
|
||||
table:last-child {
|
||||
border-bottom-left-radius:3px;
|
||||
border-bottom-right-radius:3px
|
||||
}
|
||||
|
||||
tr:first-child td {
|
||||
border-top:0
|
||||
}
|
||||
|
||||
tr:nth-of-type(even) {
|
||||
background-color:#f7f8fa
|
||||
}
|
||||
|
||||
td {
|
||||
border-top:1px solid #d9dbe2;
|
||||
padding:.65em;
|
||||
vertical-align:top
|
||||
}
|
||||
|
||||
#page-header {
|
||||
align-items:center;
|
||||
background:#0b3a53;
|
||||
border-bottom:4px solid #69c4cd;
|
||||
color:#fff;
|
||||
display:flex;
|
||||
font-size:1.12em;
|
||||
font-weight:500;
|
||||
justify-content:space-between;
|
||||
padding:0 1em
|
||||
}
|
||||
|
||||
#page-header a {
|
||||
color:#69c4cd
|
||||
}
|
||||
|
||||
#page-header a:active {
|
||||
color:#9ad4db
|
||||
}
|
||||
|
||||
#page-header a:hover {
|
||||
color:#fff
|
||||
}
|
||||
|
||||
#page-header-logo {
|
||||
height:2.25em;
|
||||
margin:.7em .7em .7em 0;
|
||||
width:7.15em
|
||||
}
|
||||
|
||||
#page-header-menu {
|
||||
align-items:center;
|
||||
display:flex;
|
||||
margin:.65em 0
|
||||
}
|
||||
|
||||
#page-header-menu div {
|
||||
margin:0 .6em
|
||||
}
|
||||
|
||||
#page-header-menu div:last-child {
|
||||
margin:0 0 0 .6em
|
||||
}
|
||||
|
||||
#page-header-menu svg {
|
||||
fill:#69c4cd;
|
||||
height:1.8em;
|
||||
margin-top:.125em
|
||||
}
|
||||
|
||||
#page-header-menu svg:hover {
|
||||
fill:#fff
|
||||
}
|
||||
|
||||
.menu-item-narrow {
|
||||
display:none
|
||||
}
|
||||
|
||||
#content {
|
||||
border:1px solid #d9dbe2;
|
||||
border-radius:4px;
|
||||
margin:1em
|
||||
}
|
||||
|
||||
#content-header {
|
||||
background-color:#edf0f4;
|
||||
border-bottom:1px solid #d9dbe2;
|
||||
border-top-left-radius:3px;
|
||||
border-top-right-radius:3px;
|
||||
padding:.7em 1em
|
||||
}
|
||||
|
||||
.type-icon,
|
||||
.type-icon>* {
|
||||
width:1.15em
|
||||
}
|
||||
|
||||
.no-linebreak {
|
||||
white-space:nowrap
|
||||
}
|
||||
|
||||
.ipfs-hash {
|
||||
color:#7f8491;
|
||||
font-family:monospace
|
||||
}
|
||||
|
||||
@media only screen and (max-width:500px) {
|
||||
.menu-item-narrow {
|
||||
display:inline
|
||||
}
|
||||
.menu-item-wide {
|
||||
display:none
|
||||
}
|
||||
}
|
||||
|
||||
@media print {
|
||||
#page-header {
|
||||
display:none
|
||||
}
|
||||
#content-header,
|
||||
.ipfs-hash,
|
||||
body {
|
||||
color:#000
|
||||
}
|
||||
#content-header {
|
||||
border-bottom:1px solid #000
|
||||
}
|
||||
#content {
|
||||
border:1px solid #000
|
||||
}
|
||||
a,
|
||||
a:visited {
|
||||
color:#000;
|
||||
text-decoration:underline
|
||||
}
|
||||
a[href]:after {
|
||||
content:" (" attr(href) ")"
|
||||
}
|
||||
tr {
|
||||
page-break-inside:avoid
|
||||
}
|
||||
tr:nth-of-type(even) {
|
||||
background-color:transparent
|
||||
}
|
||||
td {
|
||||
border-top:1px solid #000
|
||||
}
|
||||
}
|
||||
|
||||
@-ms-viewport {
|
||||
width:device-width
|
||||
}
|
||||
|
||||
.d-flex {
|
||||
display:flex
|
||||
}
|
||||
|
||||
.flex-wrap {
|
||||
flex-flow:wrap
|
||||
}
|
||||
|
||||
.flex-shrink-1 {
|
||||
flex-shrink:1
|
||||
}
|
||||
|
||||
.ml-auto {
|
||||
margin-left:auto
|
||||
}
|
||||
|
||||
.table-responsive {
|
||||
display:block;
|
||||
width:100%;
|
||||
overflow-x:auto;
|
||||
-webkit-overflow-scrolling:touch
|
||||
}
|
||||
3
assets/dir-index-html/test/go.mod
Normal file
3
assets/dir-index-html/test/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module github.com/ipfs/dir-index-html/test
|
||||
|
||||
go 1.16
|
||||
116
assets/dir-index-html/test/main.go
Normal file
116
assets/dir-index-html/test/main.go
Normal file
@ -0,0 +1,116 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
const templateFile = "../dir-index.html"
|
||||
|
||||
// Copied from go-ipfs/core/corehttp/gateway_indexPage.go
|
||||
type listingTemplateData struct {
|
||||
GatewayURL string
|
||||
DNSLink bool
|
||||
Listing []directoryItem
|
||||
Size string
|
||||
Path string
|
||||
Breadcrumbs []breadcrumb
|
||||
BackLink string
|
||||
Hash string
|
||||
}
|
||||
|
||||
type directoryItem struct {
|
||||
Size string
|
||||
Name string
|
||||
Path string
|
||||
Hash string
|
||||
ShortHash string
|
||||
}
|
||||
|
||||
type breadcrumb struct {
|
||||
Name string
|
||||
Path string
|
||||
}
|
||||
|
||||
var testPath = "/ipfs/QmFooBarQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7/a/b/c"
|
||||
var testData = listingTemplateData{
|
||||
GatewayURL: "//localhost:3000",
|
||||
DNSLink: true,
|
||||
Listing: []directoryItem{{
|
||||
Size: "25 MiB",
|
||||
Name: "short-film.mov",
|
||||
Path: testPath + "/short-film.mov",
|
||||
Hash: "QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR",
|
||||
ShortHash: "QmbW\u2026sMnR",
|
||||
}, {
|
||||
Size: "23 KiB",
|
||||
Name: "250pxيوسف_الوزاني_صورة_ملتقطة_بواسطة_مرصد_هابل_الفضائي_توضح_سديم_السرطان،_وهو_بقايا_مستعر_أعظم._.jpg",
|
||||
Path: testPath + "/250pxيوسف_الوزاني_صورة_ملتقطة_بواسطة_مرصد_هابل_الفضائي_توضح_سديم_السرطان،_وهو_بقايا_مستعر_أعظم._.jpg",
|
||||
Hash: "QmUwrKrMTrNv8QjWGKMMH5QV9FMPUtRCoQ6zxTdgxATQW6",
|
||||
ShortHash: "QmUw\u2026TQW6",
|
||||
}, {
|
||||
Size: "1 KiB",
|
||||
Name: "this-piece-of-papers-got-47-words-37-sentences-58-words-we-wanna-know.txt",
|
||||
Path: testPath + "/this-piece-of-papers-got-47-words-37-sentences-58-words-we-wanna-know.txt",
|
||||
Hash: "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
|
||||
ShortHash: "bafy\u2026bzdi",
|
||||
}},
|
||||
Size: "25 MiB",
|
||||
Path: testPath,
|
||||
Breadcrumbs: []breadcrumb{{
|
||||
Name: "ipfs",
|
||||
}, {
|
||||
Name: "QmFooBarQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7",
|
||||
Path: testPath + "/../../..",
|
||||
}, {
|
||||
Name: "a",
|
||||
Path: testPath + "/../..",
|
||||
}, {
|
||||
Name: "b",
|
||||
Path: testPath + "/..",
|
||||
}, {
|
||||
Name: "c",
|
||||
Path: testPath,
|
||||
}},
|
||||
BackLink: testPath + "/..",
|
||||
Hash: "QmFooBazBar2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7",
|
||||
}
|
||||
|
||||
func main() {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/" {
|
||||
http.Error(w, "Ha-ha, tricked you! There are no files here!", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
listingTemplate, err := template.New("dir-index.html").Funcs(template.FuncMap{
|
||||
"iconFromExt": func(name string) string {
|
||||
return "ipfs-_blank" // place-holder
|
||||
},
|
||||
"urlEscape": func(rawUrl string) string {
|
||||
pathUrl := url.URL{Path: rawUrl}
|
||||
return pathUrl.String()
|
||||
},
|
||||
}).ParseFiles(templateFile)
|
||||
if err != nil {
|
||||
http.Error(w, fmt.Sprintf("failed to parse template file: %s", err), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
err = listingTemplate.Execute(w, &testData)
|
||||
if err != nil {
|
||||
http.Error(w, fmt.Sprintf("failed to execute template: %s", err), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
w.WriteHeader(http.StatusOK)
|
||||
})
|
||||
if _, err := os.Stat(templateFile); err != nil {
|
||||
wd, _ := os.Getwd()
|
||||
fmt.Printf("could not open template file %q, relative to %q: %s\n", templateFile, wd, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Printf("listening on localhost:3000\n")
|
||||
http.ListenAndServe("localhost:3000", mux)
|
||||
}
|
||||
@ -8,7 +8,7 @@ import (
|
||||
|
||||
cid "github.com/ipfs/go-cid"
|
||||
bs "github.com/ipfs/go-ipfs-blockstore"
|
||||
"github.com/ipfs/go-ipfs-pinner"
|
||||
pin "github.com/ipfs/go-ipfs-pinner"
|
||||
)
|
||||
|
||||
// RemovedBlock is used to represent the result of removing a block.
|
||||
@ -40,15 +40,15 @@ func RmBlocks(ctx context.Context, blocks bs.GCBlockstore, pins pin.Pinner, cids
|
||||
go func() {
|
||||
defer close(out)
|
||||
|
||||
unlocker := blocks.GCLock()
|
||||
defer unlocker.Unlock()
|
||||
unlocker := blocks.GCLock(ctx)
|
||||
defer unlocker.Unlock(ctx)
|
||||
|
||||
stillOkay := FilterPinned(ctx, pins, out, cids)
|
||||
|
||||
for _, c := range stillOkay {
|
||||
// Kept for backwards compatibility. We may want to
|
||||
// remove this sometime in the future.
|
||||
has, err := blocks.Has(c)
|
||||
has, err := blocks.Has(ctx, c)
|
||||
if err != nil {
|
||||
out <- &RemovedBlock{Hash: c.String(), Error: err.Error()}
|
||||
continue
|
||||
@ -58,7 +58,7 @@ func RmBlocks(ctx context.Context, blocks bs.GCBlockstore, pins pin.Pinner, cids
|
||||
continue
|
||||
}
|
||||
|
||||
err = blocks.DeleteBlock(c)
|
||||
err = blocks.DeleteBlock(ctx, c)
|
||||
if err != nil {
|
||||
out <- &RemovedBlock{Hash: c.String(), Error: err.Error()}
|
||||
} else if !opts.Quiet {
|
||||
|
||||
@ -178,8 +178,8 @@ Headers.
|
||||
cmds.BoolOption(enableGCKwd, "Enable automatic periodic repo garbage collection"),
|
||||
cmds.BoolOption(adjustFDLimitKwd, "Check and raise file descriptor limits if needed").WithDefault(true),
|
||||
cmds.BoolOption(migrateKwd, "If true, assume yes at the migrate prompt. If false, assume no."),
|
||||
cmds.BoolOption(enablePubSubKwd, "Instantiate the ipfs daemon with the experimental pubsub feature enabled."),
|
||||
cmds.BoolOption(enableIPNSPubSubKwd, "Enable IPNS record distribution through pubsub; enables pubsub."),
|
||||
cmds.BoolOption(enablePubSubKwd, "Enable experimental pubsub feature. Overrides Pubsub.Enabled config."),
|
||||
cmds.BoolOption(enableIPNSPubSubKwd, "Enable IPNS over pubsub. Implicitly enables pubsub, overrides Ipns.UsePubsub config."),
|
||||
cmds.BoolOption(enableMultiplexKwd, "DEPRECATED"),
|
||||
cmds.StringOption(agentVersionSuffix, "Optional suffix to the AgentVersion presented by `ipfs id` and also advertised through BitSwap."),
|
||||
|
||||
@ -365,13 +365,26 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
|
||||
defer repo.Close()
|
||||
|
||||
offline, _ := req.Options[offlineKwd].(bool)
|
||||
ipnsps, _ := req.Options[enableIPNSPubSubKwd].(bool)
|
||||
pubsub, _ := req.Options[enablePubSubKwd].(bool)
|
||||
ipnsps, ipnsPsSet := req.Options[enableIPNSPubSubKwd].(bool)
|
||||
pubsub, psSet := req.Options[enablePubSubKwd].(bool)
|
||||
|
||||
if _, hasMplex := req.Options[enableMultiplexKwd]; hasMplex {
|
||||
log.Errorf("The mplex multiplexer has been enabled by default and the experimental %s flag has been removed.")
|
||||
log.Errorf("To disable this multiplexer, please configure `Swarm.Transports.Multiplexers'.")
|
||||
}
|
||||
|
||||
cfg, err := repo.Config()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !psSet {
|
||||
pubsub = cfg.Pubsub.Enabled.WithDefault(false)
|
||||
}
|
||||
if !ipnsPsSet {
|
||||
ipnsps = cfg.Ipns.UsePubsub.WithDefault(false)
|
||||
}
|
||||
|
||||
// Start assembling node config
|
||||
ncfg := &core.BuildCfg{
|
||||
Repo: repo,
|
||||
@ -387,11 +400,6 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
|
||||
|
||||
routingOption, _ := req.Options[routingOptionKwd].(string)
|
||||
if routingOption == routingOptionDefaultKwd {
|
||||
cfg, err := repo.Config()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
routingOption = cfg.Routing.Type
|
||||
if routingOption == "" {
|
||||
routingOption = routingOptionDHTKwd
|
||||
@ -559,6 +567,12 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment
|
||||
log.Error("failed to bootstrap (no peers found): consider updating Bootstrap or Peering section of your config")
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// Hard deprecation notice if someone still uses IPFS_REUSEPORT
|
||||
if flag := os.Getenv("IPFS_REUSEPORT"); flag != "" {
|
||||
log.Fatal("Support for IPFS_REUSEPORT was removed. Use LIBP2P_TCP_REUSEPORT instead.")
|
||||
}
|
||||
|
||||
// collect long-running errors and block for shutdown
|
||||
|
||||
@ -133,10 +133,10 @@ only-hash, and progress/status related flags) will change the final hash.
|
||||
cmds.BoolOption(wrapOptionName, "w", "Wrap files with a directory object."),
|
||||
cmds.StringOption(chunkerOptionName, "s", "Chunking algorithm, size-[bytes], rabin-[min]-[avg]-[max] or buzhash").WithDefault("size-262144"),
|
||||
cmds.BoolOption(pinOptionName, "Pin this object when adding.").WithDefault(true),
|
||||
cmds.BoolOption(rawLeavesOptionName, "Use raw blocks for leaf nodes. (experimental)"),
|
||||
cmds.BoolOption(rawLeavesOptionName, "Use raw blocks for leaf nodes."),
|
||||
cmds.BoolOption(noCopyOptionName, "Add the file using filestore. Implies raw-leaves. (experimental)"),
|
||||
cmds.BoolOption(fstoreCacheOptionName, "Check the filestore for pre-existing blocks. (experimental)"),
|
||||
cmds.IntOption(cidVersionOptionName, "CID version. Defaults to 0 unless an option that depends on CIDv1 is passed. (experimental)"),
|
||||
cmds.IntOption(cidVersionOptionName, "CID version. Defaults to 0 unless an option that depends on CIDv1 is passed. Passing version 1 will cause the raw-leaves option to default to true."),
|
||||
cmds.StringOption(hashOptionName, "Hash function to use. Implies CIDv1 if not sha2-256. (experimental)").WithDefault("sha2-256"),
|
||||
cmds.BoolOption(inlineOptionName, "Inline small blocks into CIDs. (experimental)"),
|
||||
cmds.IntOption(inlineLimitOptionName, "Maximum block size to inline. (experimental)").WithDefault(32),
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package dagcmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -8,17 +9,18 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cheggaaa/pb"
|
||||
blocks "github.com/ipfs/go-block-format"
|
||||
cid "github.com/ipfs/go-cid"
|
||||
"github.com/ipfs/go-ipfs/core/commands/cmdenv"
|
||||
ipld "github.com/ipfs/go-ipld-format"
|
||||
mdag "github.com/ipfs/go-merkledag"
|
||||
iface "github.com/ipfs/interface-go-ipfs-core"
|
||||
|
||||
cmds "github.com/ipfs/go-ipfs-cmds"
|
||||
gocar "github.com/ipld/go-car"
|
||||
selectorparse "github.com/ipld/go-ipld-prime/traversal/selector/parse"
|
||||
)
|
||||
|
||||
func dagExport(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
||||
|
||||
c, err := cid.Decode(req.Arguments[0])
|
||||
if err != nil {
|
||||
return fmt.Errorf(
|
||||
@ -32,24 +34,6 @@ func dagExport(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment
|
||||
return err
|
||||
}
|
||||
|
||||
// Code disabled until descent-issue in go-ipld-prime is fixed
|
||||
// https://github.com/ribasushi/gip-muddle-up
|
||||
//
|
||||
// sb := gipselectorbuilder.NewSelectorSpecBuilder(gipfree.NodeBuilder())
|
||||
// car := gocar.NewSelectiveCar(
|
||||
// req.Context,
|
||||
// <needs to be fixed to take format.NodeGetter as well>,
|
||||
// []gocar.Dag{gocar.Dag{
|
||||
// Root: c,
|
||||
// Selector: sb.ExploreRecursive(
|
||||
// gipselector.RecursionLimitNone(),
|
||||
// sb.ExploreAll(sb.ExploreRecursiveEdge()),
|
||||
// ).Node(),
|
||||
// }},
|
||||
// )
|
||||
// ...
|
||||
// if err := car.Write(pipeW); err != nil {}
|
||||
|
||||
pipeR, pipeW := io.Pipe()
|
||||
|
||||
errCh := make(chan error, 2) // we only report the 1st error
|
||||
@ -61,15 +45,12 @@ func dagExport(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment
|
||||
close(errCh)
|
||||
}()
|
||||
|
||||
if err := gocar.WriteCar(
|
||||
req.Context,
|
||||
mdag.NewSession(
|
||||
req.Context,
|
||||
api.Dag(),
|
||||
),
|
||||
[]cid.Cid{c},
|
||||
pipeW,
|
||||
); err != nil {
|
||||
store := dagStore{dag: api.Dag(), ctx: req.Context}
|
||||
dag := gocar.Dag{Root: c, Selector: selectorparse.CommonSelector_ExploreAllRecursively}
|
||||
// TraverseLinksOnlyOnce is safe for an exhaustive selector but won't be when we allow
|
||||
// arbitrary selectors here
|
||||
car := gocar.NewSelectiveCar(req.Context, store, []gocar.Dag{dag}, gocar.TraverseLinksOnlyOnce())
|
||||
if err := car.Write(pipeW); err != nil {
|
||||
errCh <- err
|
||||
}
|
||||
}()
|
||||
@ -153,3 +134,13 @@ func finishCLIExport(res cmds.Response, re cmds.ResponseEmitter) error {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type dagStore struct {
|
||||
dag iface.APIDagService
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func (ds dagStore) Get(c cid.Cid) (blocks.Block, error) {
|
||||
obj, err := ds.dag.Get(ds.ctx, c)
|
||||
return obj, err
|
||||
}
|
||||
|
||||
@ -42,8 +42,8 @@ func dagImport(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment
|
||||
// This is especially important for use cases like dagger:
|
||||
// ipfs dag import $( ... | ipfs-dagger --stdout=carfifos )
|
||||
//
|
||||
unlocker := node.Blockstore.PinLock()
|
||||
defer unlocker.Unlock()
|
||||
unlocker := node.Blockstore.PinLock(req.Context)
|
||||
defer unlocker.Unlock(req.Context)
|
||||
|
||||
doPinRoots, _ := req.Options[pinRootsOptionName].(bool)
|
||||
|
||||
@ -87,7 +87,7 @@ func dagImport(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment
|
||||
|
||||
ret := RootMeta{Cid: c}
|
||||
|
||||
if block, err := node.Blockstore.Get(c); err != nil {
|
||||
if block, err := node.Blockstore.Get(req.Context, c); err != nil {
|
||||
ret.PinErrorMsg = err.Error()
|
||||
} else if nd, err := ipld.Decode(block); err != nil {
|
||||
ret.PinErrorMsg = err.Error()
|
||||
|
||||
@ -273,7 +273,7 @@ var provideRefDhtCmd = &cmds.Command{
|
||||
return err
|
||||
}
|
||||
|
||||
has, err := nd.Blockstore.Has(c)
|
||||
has, err := nd.Blockstore.Has(req.Context, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -25,10 +25,10 @@ func TestKeyTranslation(t *testing.T) {
|
||||
}
|
||||
|
||||
if pkk != pkname {
|
||||
t.Fatal("keys didnt match!")
|
||||
t.Fatal("keys didn't match!")
|
||||
}
|
||||
|
||||
if ipnsk != ipnsname {
|
||||
t.Fatal("keys didnt match!")
|
||||
t.Fatal("keys didn't match!")
|
||||
}
|
||||
}
|
||||
|
||||
@ -338,12 +338,12 @@ IPFS Content Identifier and then "ipfs files cp" to copy it into MFS:
|
||||
$ ipfs add --quieter --pin=false <your file>
|
||||
# ...
|
||||
# ... outputs the root CID at the end
|
||||
$ ipfs cp /ipfs/<CID> /your/desired/mfs/path
|
||||
$ ipfs files cp /ipfs/<CID> /your/desired/mfs/path
|
||||
|
||||
If you wish to fully copy content from a different IPFS peer into MFS, do not
|
||||
forget to force IPFS to fetch to full DAG after doing the "cp" operation. i.e:
|
||||
|
||||
$ ipfs cp /ipfs/<CID> /your/desired/mfs/path
|
||||
$ ipfs files cp /ipfs/<CID> /your/desired/mfs/path
|
||||
$ ipfs pin add <CID>
|
||||
|
||||
The lazy-copy feature can also be used to protect partial DAG contents from
|
||||
@ -1044,68 +1044,93 @@ Remove files or directories.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
path, err := checkPath(req.Arguments[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if path == "/" {
|
||||
return fmt.Errorf("cannot delete root")
|
||||
}
|
||||
|
||||
// 'rm a/b/c/' will fail unless we trim the slash at the end
|
||||
if path[len(path)-1] == '/' {
|
||||
path = path[:len(path)-1]
|
||||
}
|
||||
|
||||
// if '--force' specified, it will remove anything else,
|
||||
// including file, directory, corrupted node, etc
|
||||
force, _ := req.Options[forceOptionName].(bool)
|
||||
|
||||
dir, name := gopath.Split(path)
|
||||
|
||||
pdir, err := getParentDir(nd.FilesRoot, dir)
|
||||
if err != nil {
|
||||
if force && err == os.ErrNotExist {
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("parent lookup: %s", err)
|
||||
}
|
||||
|
||||
if force {
|
||||
err := pdir.Unlink(name)
|
||||
if err != nil {
|
||||
if err == os.ErrNotExist {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
return pdir.Flush()
|
||||
}
|
||||
|
||||
// get child node by name, when the node is corrupted and nonexistent,
|
||||
// it will return specific error.
|
||||
child, err := pdir.Child(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dashr, _ := req.Options[recursiveOptionName].(bool)
|
||||
|
||||
switch child.(type) {
|
||||
case *mfs.Directory:
|
||||
if !dashr {
|
||||
return fmt.Errorf("%s is a directory, use -r to remove directories", path)
|
||||
var errs []error
|
||||
for _, arg := range req.Arguments {
|
||||
path, err := checkPath(arg)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Errorf("%s: %w", arg, err))
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
err = pdir.Unlink(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if path == "/" {
|
||||
errs = append(errs, fmt.Errorf("%s: cannot delete root", path))
|
||||
continue
|
||||
}
|
||||
|
||||
return pdir.Flush()
|
||||
// 'rm a/b/c/' will fail unless we trim the slash at the end
|
||||
if path[len(path)-1] == '/' {
|
||||
path = path[:len(path)-1]
|
||||
}
|
||||
|
||||
dir, name := gopath.Split(path)
|
||||
|
||||
pdir, err := getParentDir(nd.FilesRoot, dir)
|
||||
if err != nil {
|
||||
if force && err == os.ErrNotExist {
|
||||
continue
|
||||
}
|
||||
errs = append(errs, fmt.Errorf("%s: parent lookup: %w", path, err))
|
||||
continue
|
||||
}
|
||||
|
||||
if force {
|
||||
err := pdir.Unlink(name)
|
||||
if err != nil {
|
||||
if err == os.ErrNotExist {
|
||||
continue
|
||||
}
|
||||
errs = append(errs, fmt.Errorf("%s: %w", path, err))
|
||||
continue
|
||||
}
|
||||
err = pdir.Flush()
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Errorf("%s: %w", path, err))
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
// get child node by name, when the node is corrupted and nonexistent,
|
||||
// it will return specific error.
|
||||
child, err := pdir.Child(name)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Errorf("%s: %w", path, err))
|
||||
continue
|
||||
}
|
||||
|
||||
switch child.(type) {
|
||||
case *mfs.Directory:
|
||||
if !dashr {
|
||||
errs = append(errs, fmt.Errorf("%s is a directory, use -r to remove directories", path))
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
err = pdir.Unlink(name)
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Errorf("%s: %w", path, err))
|
||||
continue
|
||||
}
|
||||
|
||||
err = pdir.Flush()
|
||||
if err != nil {
|
||||
errs = append(errs, fmt.Errorf("%s: %w", path, err))
|
||||
}
|
||||
continue
|
||||
}
|
||||
if len(errs) > 0 {
|
||||
for _, err = range errs {
|
||||
e := res.Emit(err.Error())
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("can't remove some files")
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -1,17 +1,18 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
filestore "github.com/ipfs/go-filestore"
|
||||
cmds "github.com/ipfs/go-ipfs-cmds"
|
||||
core "github.com/ipfs/go-ipfs/core"
|
||||
cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
|
||||
e "github.com/ipfs/go-ipfs/core/commands/e"
|
||||
|
||||
"github.com/ipfs/go-cid"
|
||||
"github.com/ipfs/go-ipfs-cmds"
|
||||
)
|
||||
|
||||
var FileStoreCmd = &cmds.Command{
|
||||
@ -56,17 +57,17 @@ The output is:
|
||||
}
|
||||
args := req.Arguments
|
||||
if len(args) > 0 {
|
||||
return listByArgs(res, fs, args)
|
||||
return listByArgs(req.Context, res, fs, args)
|
||||
}
|
||||
|
||||
fileOrder, _ := req.Options[fileOrderOptionName].(bool)
|
||||
next, err := filestore.ListAll(fs, fileOrder)
|
||||
next, err := filestore.ListAll(req.Context, fs, fileOrder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for {
|
||||
r := next()
|
||||
r := next(req.Context)
|
||||
if r == nil {
|
||||
break
|
||||
}
|
||||
@ -133,17 +134,17 @@ For ERROR entries the error will also be printed to stderr.
|
||||
}
|
||||
args := req.Arguments
|
||||
if len(args) > 0 {
|
||||
return listByArgs(res, fs, args)
|
||||
return listByArgs(req.Context, res, fs, args)
|
||||
}
|
||||
|
||||
fileOrder, _ := req.Options[fileOrderOptionName].(bool)
|
||||
next, err := filestore.VerifyAll(fs, fileOrder)
|
||||
next, err := filestore.VerifyAll(req.Context, fs, fileOrder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for {
|
||||
r := next()
|
||||
r := next(req.Context)
|
||||
if r == nil {
|
||||
break
|
||||
}
|
||||
@ -206,7 +207,7 @@ var dupsFileStore = &cmds.Command{
|
||||
}
|
||||
|
||||
for cid := range ch {
|
||||
have, err := fs.MainBlockstore().Has(cid)
|
||||
have, err := fs.MainBlockstore().Has(req.Context, cid)
|
||||
if err != nil {
|
||||
return res.Emit(&RefWrapper{Err: err.Error()})
|
||||
}
|
||||
@ -235,7 +236,7 @@ func getFilestore(env cmds.Environment) (*core.IpfsNode, *filestore.Filestore, e
|
||||
return n, fs, err
|
||||
}
|
||||
|
||||
func listByArgs(res cmds.ResponseEmitter, fs *filestore.Filestore, args []string) error {
|
||||
func listByArgs(ctx context.Context, res cmds.ResponseEmitter, fs *filestore.Filestore, args []string) error {
|
||||
for _, arg := range args {
|
||||
c, err := cid.Decode(arg)
|
||||
if err != nil {
|
||||
@ -248,7 +249,7 @@ func listByArgs(res cmds.ResponseEmitter, fs *filestore.Filestore, args []string
|
||||
}
|
||||
continue
|
||||
}
|
||||
r := filestore.Verify(fs, c)
|
||||
r := filestore.Verify(ctx, fs, c)
|
||||
if err := res.Emit(r); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -4,13 +4,20 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
|
||||
"github.com/ipfs/go-cid"
|
||||
cmds "github.com/ipfs/go-ipfs-cmds"
|
||||
"github.com/ipfs/go-ipfs/core/commands/cmdenv"
|
||||
coreiface "github.com/ipfs/interface-go-ipfs-core"
|
||||
|
||||
"github.com/ipfs/interface-go-ipfs-core/options"
|
||||
"github.com/ipfs/interface-go-ipfs-core/path"
|
||||
)
|
||||
|
||||
const (
|
||||
softBlockLimit = 1024 * 1024 // https://github.com/ipfs/go-ipfs/issues/7421#issuecomment-910833499
|
||||
allowBigBlock = "allow-big-block"
|
||||
)
|
||||
|
||||
var ObjectPatchCmd = &cmds.Command{
|
||||
Helptext: cmds.HelpText{
|
||||
Tagline: "Deprecated way to create a new merkledag object based on an existing one. Use MFS with 'files cp|rm' instead.",
|
||||
@ -41,6 +48,9 @@ For modern use cases, use MFS with 'files' commands: 'ipfs files --help'.
|
||||
"rm-link": patchRmLinkCmd,
|
||||
"set-data": patchSetDataCmd,
|
||||
},
|
||||
Options: []cmds.Option{
|
||||
cmds.BoolOption(allowBigBlock, "Disable block size check and allow creation of blocks bigger than 1MB. WARNING: such blocks won't be transferable over the standard bitswap.").WithDefault(false),
|
||||
},
|
||||
}
|
||||
|
||||
var patchAppendDataCmd = &cmds.Command{
|
||||
@ -82,6 +92,10 @@ DEPRECATED and provided for legacy reasons. Use 'ipfs add' or 'ipfs files' inste
|
||||
return err
|
||||
}
|
||||
|
||||
if err := checkBlockSize(req, p.Cid(), api.Dag()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return cmds.EmitOnce(res, &Object{Hash: p.Cid().String()})
|
||||
},
|
||||
Type: &Object{},
|
||||
@ -128,6 +142,10 @@ DEPRECATED and provided for legacy reasons. Use 'files cp' and 'dag put' instead
|
||||
return err
|
||||
}
|
||||
|
||||
if err := checkBlockSize(req, p.Cid(), api.Dag()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return cmds.EmitOnce(res, &Object{Hash: p.Cid().String()})
|
||||
},
|
||||
Type: Object{},
|
||||
@ -166,6 +184,10 @@ DEPRECATED and provided for legacy reasons. Use 'files rm' instead.
|
||||
return err
|
||||
}
|
||||
|
||||
if err := checkBlockSize(req, p.Cid(), api.Dag()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return cmds.EmitOnce(res, &Object{Hash: p.Cid().String()})
|
||||
},
|
||||
Type: Object{},
|
||||
@ -232,6 +254,10 @@ Use MFS and 'files' commands instead:
|
||||
return err
|
||||
}
|
||||
|
||||
if err := checkBlockSize(req, p.Cid(), api.Dag()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return cmds.EmitOnce(res, &Object{Hash: p.Cid().String()})
|
||||
},
|
||||
Type: Object{},
|
||||
@ -242,3 +268,26 @@ Use MFS and 'files' commands instead:
|
||||
}),
|
||||
},
|
||||
}
|
||||
|
||||
func checkBlockSize(req *cmds.Request, c cid.Cid, dagAPI coreiface.APIDagService) error {
|
||||
allowAnyBlockSize, _ := req.Options[allowBigBlock].(bool)
|
||||
if allowAnyBlockSize {
|
||||
return nil
|
||||
}
|
||||
|
||||
// We do not allow producing blocks bigger than 1 MiB to avoid errors
|
||||
// when transmitting them over BitSwap. The 1 MiB constant is an
|
||||
// unenforced and undeclared rule of thumb hard-coded here.
|
||||
modifiedNode, err := dagAPI.Get(req.Context, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
modifiedNodeSize, err := modifiedNode.Size()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if modifiedNodeSize > softBlockLimit {
|
||||
return fmt.Errorf("produced block is over 1MB, object API is deprecated and does not support HAMT-sharding: to create big directories, please use the files API (MFS)")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -174,7 +174,7 @@ NOTE: a comma-separated notation is supported in CLI for convenience:
|
||||
return err
|
||||
}
|
||||
|
||||
isInBlockstore, err := node.Blockstore.Has(rp.Cid())
|
||||
isInBlockstore, err := node.Blockstore.Has(req.Context, rp.Cid())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -2,13 +2,15 @@ package commands
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"sort"
|
||||
|
||||
cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
|
||||
mbase "github.com/multiformats/go-multibase"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
cmds "github.com/ipfs/go-ipfs-cmds"
|
||||
options "github.com/ipfs/interface-go-ipfs-core/options"
|
||||
@ -21,10 +23,11 @@ var PubsubCmd = &cmds.Command{
|
||||
ipfs pubsub allows you to publish messages to a given topic, and also to
|
||||
subscribe to new messages on a given topic.
|
||||
|
||||
This is an experimental feature. It is not intended in its current state
|
||||
to be used in a production environment.
|
||||
EXPERIMENTAL FEATURE
|
||||
|
||||
To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
It is not intended in its current state to be used in a production
|
||||
environment. To use, the daemon must be run with
|
||||
'--enable-pubsub-experiment'.
|
||||
`,
|
||||
},
|
||||
Subcommands: map[string]*cmds.Command{
|
||||
@ -35,14 +38,10 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
},
|
||||
}
|
||||
|
||||
const (
|
||||
pubsubDiscoverOptionName = "discover"
|
||||
)
|
||||
|
||||
type pubsubMessage struct {
|
||||
From []byte `json:"from,omitempty"`
|
||||
Data []byte `json:"data,omitempty"`
|
||||
Seqno []byte `json:"seqno,omitempty"`
|
||||
From string `json:"from,omitempty"`
|
||||
Data string `json:"data,omitempty"`
|
||||
Seqno string `json:"seqno,omitempty"`
|
||||
TopicIDs []string `json:"topicIDs,omitempty"`
|
||||
}
|
||||
|
||||
@ -52,37 +51,42 @@ var PubsubSubCmd = &cmds.Command{
|
||||
ShortDescription: `
|
||||
ipfs pubsub sub subscribes to messages on a given topic.
|
||||
|
||||
This is an experimental feature. It is not intended in its current state
|
||||
to be used in a production environment.
|
||||
EXPERIMENTAL FEATURE
|
||||
|
||||
To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
`,
|
||||
LongDescription: `
|
||||
ipfs pubsub sub subscribes to messages on a given topic.
|
||||
It is not intended in its current state to be used in a production
|
||||
environment. To use, the daemon must be run with
|
||||
'--enable-pubsub-experiment'.
|
||||
|
||||
This is an experimental feature. It is not intended in its current state
|
||||
to be used in a production environment.
|
||||
PEER ENCODING
|
||||
|
||||
To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
Peer IDs in From fields are encoded using the default text representation
|
||||
from go-libp2p. This ensures the same string values as in 'ipfs pubsub peers'.
|
||||
|
||||
This command outputs data in the following encodings:
|
||||
* "json"
|
||||
(Specified by the "--encoding" or "--enc" flag)
|
||||
TOPIC AND DATA ENCODING
|
||||
|
||||
Topics, Data and Seqno are binary data. To ensure all bytes are transferred
|
||||
correctly the RPC client and server will use multibase encoding behind
|
||||
the scenes.
|
||||
|
||||
You can inspect the format by passing --enc=json. The ipfs multibase commands
|
||||
can be used for encoding/decoding multibase strings in the userland.
|
||||
`,
|
||||
},
|
||||
Arguments: []cmds.Argument{
|
||||
cmds.StringArg("topic", true, false, "String name of topic to subscribe to."),
|
||||
},
|
||||
Options: []cmds.Option{
|
||||
cmds.BoolOption(pubsubDiscoverOptionName, "Deprecated option to instruct pubsub to discovery peers for the topic. Discovery is now built into pubsub."),
|
||||
cmds.StringArg("topic", true, false, "Name of topic to subscribe to."),
|
||||
},
|
||||
PreRun: urlArgsEncoder,
|
||||
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
||||
api, err := cmdenv.GetApi(env, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := urlArgsDecoder(req, env); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
topic := req.Arguments[0]
|
||||
|
||||
sub, err := api.PubSub().Subscribe(req.Context, topic)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -101,33 +105,39 @@ This command outputs data in the following encodings:
|
||||
return err
|
||||
}
|
||||
|
||||
if err := res.Emit(&pubsubMessage{
|
||||
Data: msg.Data(),
|
||||
From: []byte(msg.From()),
|
||||
Seqno: msg.Seq(),
|
||||
TopicIDs: msg.Topics(),
|
||||
}); err != nil {
|
||||
// turn bytes into strings
|
||||
encoder, _ := mbase.EncoderByName("base64url")
|
||||
psm := pubsubMessage{
|
||||
Data: encoder.Encode(msg.Data()),
|
||||
From: msg.From().Pretty(),
|
||||
Seqno: encoder.Encode(msg.Seq()),
|
||||
}
|
||||
for _, topic := range msg.Topics() {
|
||||
psm.TopicIDs = append(psm.TopicIDs, encoder.Encode([]byte(topic)))
|
||||
}
|
||||
if err := res.Emit(&psm); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, psm *pubsubMessage) error {
|
||||
_, err := w.Write(psm.Data)
|
||||
_, dec, err := mbase.Decode(psm.Data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = w.Write(dec)
|
||||
return err
|
||||
}),
|
||||
// DEPRECATED, undocumented format we used in tests, but not anymore
|
||||
// <message.payload>\n<message.payload>\n
|
||||
"ndpayload": cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, psm *pubsubMessage) error {
|
||||
psm.Data = append(psm.Data, '\n')
|
||||
_, err := w.Write(psm.Data)
|
||||
return err
|
||||
return errors.New("--enc=ndpayload was removed, use --enc=json instead")
|
||||
}),
|
||||
// DEPRECATED, uncodumented format we used in tests, but not anymore
|
||||
// <varint-len><message.payload><varint-len><message.payload>
|
||||
"lenpayload": cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, psm *pubsubMessage) error {
|
||||
buf := make([]byte, 8, len(psm.Data)+8)
|
||||
|
||||
n := binary.PutUvarint(buf, uint64(len(psm.Data)))
|
||||
buf = append(buf[:n], psm.Data...)
|
||||
_, err := w.Write(buf)
|
||||
return err
|
||||
return errors.New("--enc=lenpayload was removed, use --enc=json instead")
|
||||
}),
|
||||
},
|
||||
Type: pubsubMessage{},
|
||||
@ -135,40 +145,56 @@ This command outputs data in the following encodings:
|
||||
|
||||
var PubsubPubCmd = &cmds.Command{
|
||||
Helptext: cmds.HelpText{
|
||||
Tagline: "Publish a message to a given pubsub topic.",
|
||||
Tagline: "Publish data to a given pubsub topic.",
|
||||
ShortDescription: `
|
||||
ipfs pubsub pub publishes a message to a specified topic.
|
||||
It reads binary data from stdin or a file.
|
||||
|
||||
This is an experimental feature. It is not intended in its current state
|
||||
to be used in a production environment.
|
||||
EXPERIMENTAL FEATURE
|
||||
|
||||
It is not intended in its current state to be used in a production
|
||||
environment. To use, the daemon must be run with
|
||||
'--enable-pubsub-experiment'.
|
||||
|
||||
HTTP RPC ENCODING
|
||||
|
||||
The data to be published is sent in HTTP request body as multipart/form-data.
|
||||
|
||||
Topic names are binary data too. To ensure all bytes are transferred
|
||||
correctly via URL params, the RPC client and server will use multibase
|
||||
encoding behind the scenes.
|
||||
|
||||
To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
`,
|
||||
},
|
||||
Arguments: []cmds.Argument{
|
||||
cmds.StringArg("topic", true, false, "Topic to publish to."),
|
||||
cmds.StringArg("data", true, true, "Payload of message to publish.").EnableStdin(),
|
||||
cmds.FileArg("data", true, false, "The data to be published.").EnableStdin(),
|
||||
},
|
||||
PreRun: urlArgsEncoder,
|
||||
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
||||
api, err := cmdenv.GetApi(env, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := urlArgsDecoder(req, env); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
topic := req.Arguments[0]
|
||||
|
||||
err = req.ParseBodyArgs()
|
||||
// read data passed as a file
|
||||
file, err := cmdenv.GetFileArg(req.Files.Entries())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
data, err := ioutil.ReadAll(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, data := range req.Arguments[1:] {
|
||||
if err := api.PubSub().Publish(req.Context, topic, []byte(data)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
// publish
|
||||
return api.PubSub().Publish(req.Context, topic, data)
|
||||
},
|
||||
}
|
||||
|
||||
@ -178,10 +204,20 @@ var PubsubLsCmd = &cmds.Command{
|
||||
ShortDescription: `
|
||||
ipfs pubsub ls lists out the names of topics you are currently subscribed to.
|
||||
|
||||
This is an experimental feature. It is not intended in its current state
|
||||
to be used in a production environment.
|
||||
EXPERIMENTAL FEATURE
|
||||
|
||||
To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
It is not intended in its current state to be used in a production
|
||||
environment. To use, the daemon must be run with
|
||||
'--enable-pubsub-experiment'.
|
||||
|
||||
TOPIC ENCODING
|
||||
|
||||
Topic names are a binary data. To ensure all bytes are transferred
|
||||
correctly RPC client and server will use multibase encoding behind
|
||||
the scenes.
|
||||
|
||||
You can inspect the format by passing --enc=json. ipfs multibase commands
|
||||
can be used for encoding/decoding multibase strings in the userland.
|
||||
`,
|
||||
},
|
||||
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
||||
@ -195,15 +231,35 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
return err
|
||||
}
|
||||
|
||||
// emit topics encoded in multibase
|
||||
encoder, _ := mbase.EncoderByName("base64url")
|
||||
for n, topic := range l {
|
||||
l[n] = encoder.Encode([]byte(topic))
|
||||
}
|
||||
|
||||
return cmds.EmitOnce(res, stringList{l})
|
||||
},
|
||||
Type: stringList{},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(multibaseDecodedStringListEncoder),
|
||||
},
|
||||
}
|
||||
|
||||
func stringListEncoder(req *cmds.Request, w io.Writer, list *stringList) error {
|
||||
func multibaseDecodedStringListEncoder(req *cmds.Request, w io.Writer, list *stringList) error {
|
||||
for n, mb := range list.Strings {
|
||||
_, data, err := mbase.Decode(mb)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
list.Strings[n] = string(data)
|
||||
}
|
||||
return safeTextListEncoder(req, w, list)
|
||||
}
|
||||
|
||||
// converts list of strings to text representation where each string is placed
|
||||
// in separate line with non-printable/unsafe characters escaped
|
||||
// (this protects terminal output from being mangled by non-ascii topic names)
|
||||
func safeTextListEncoder(req *cmds.Request, w io.Writer, list *stringList) error {
|
||||
for _, str := range list.Strings {
|
||||
_, err := fmt.Fprintf(w, "%s\n", cmdenv.EscNonPrint(str))
|
||||
if err != nil {
|
||||
@ -218,23 +274,37 @@ var PubsubPeersCmd = &cmds.Command{
|
||||
Tagline: "List peers we are currently pubsubbing with.",
|
||||
ShortDescription: `
|
||||
ipfs pubsub peers with no arguments lists out the pubsub peers you are
|
||||
currently connected to. If given a topic, it will list connected
|
||||
peers who are subscribed to the named topic.
|
||||
currently connected to. If given a topic, it will list connected peers who are
|
||||
subscribed to the named topic.
|
||||
|
||||
This is an experimental feature. It is not intended in its current state
|
||||
to be used in a production environment.
|
||||
EXPERIMENTAL FEATURE
|
||||
|
||||
To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
It is not intended in its current state to be used in a production
|
||||
environment. To use, the daemon must be run with
|
||||
'--enable-pubsub-experiment'.
|
||||
|
||||
TOPIC AND DATA ENCODING
|
||||
|
||||
Topic names are a binary data. To ensure all bytes are transferred
|
||||
correctly RPC client and server will use multibase encoding behind
|
||||
the scenes.
|
||||
|
||||
You can inspect the format by passing --enc=json. ipfs multibase commands
|
||||
can be used for encoding/decoding multibase strings in the userland.
|
||||
`,
|
||||
},
|
||||
Arguments: []cmds.Argument{
|
||||
cmds.StringArg("topic", false, false, "topic to list connected peers of"),
|
||||
cmds.StringArg("topic", false, false, "Topic to list connected peers of."),
|
||||
},
|
||||
PreRun: urlArgsEncoder,
|
||||
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
||||
api, err := cmdenv.GetApi(env, req)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := urlArgsDecoder(req, env); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var topic string
|
||||
if len(req.Arguments) == 1 {
|
||||
@ -256,6 +326,40 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
|
||||
},
|
||||
Type: stringList{},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
}
|
||||
|
||||
// TODO: move to cmdenv?
|
||||
// Encode binary data to be passed as multibase string in URL arguments.
|
||||
// (avoiding issues described in https://github.com/ipfs/go-ipfs/issues/7939)
|
||||
func urlArgsEncoder(req *cmds.Request, env cmds.Environment) error {
|
||||
encoder, _ := mbase.EncoderByName("base64url")
|
||||
for n, arg := range req.Arguments {
|
||||
req.Arguments[n] = encoder.Encode([]byte(arg))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Decode binary data passed as multibase string in URL arguments.
|
||||
// (avoiding issues described in https://github.com/ipfs/go-ipfs/issues/7939)
|
||||
func urlArgsDecoder(req *cmds.Request, env cmds.Environment) error {
|
||||
for n, arg := range req.Arguments {
|
||||
encoding, data, err := mbase.Decode(arg)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "URL arg must be multibase encoded")
|
||||
}
|
||||
|
||||
// Enforce URL-safe encoding is used for data passed via URL arguments
|
||||
// - without this we get data corruption similar to https://github.com/ipfs/go-ipfs/issues/7939
|
||||
// - we can't just deny base64, because there may be other bases that
|
||||
// are not URL-safe – better to force base64url which is known to be
|
||||
// safe in URL context
|
||||
if encoding != mbase.Base64url {
|
||||
return errors.New("URL arg must be base64url encoded")
|
||||
}
|
||||
|
||||
req.Arguments[n] = string(data)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -239,7 +239,7 @@ func verifyWorkerRun(ctx context.Context, wg *sync.WaitGroup, keys <-chan cid.Ci
|
||||
defer wg.Done()
|
||||
|
||||
for k := range keys {
|
||||
_, err := bs.Get(k)
|
||||
_, err := bs.Get(ctx, k)
|
||||
if err != nil {
|
||||
select {
|
||||
case results <- fmt.Sprintf("block %s was corrupt (%s)", k, err):
|
||||
|
||||
@ -453,7 +453,7 @@ var swarmAddrsLocalCmd = &cmds.Command{
|
||||
},
|
||||
Type: stringList{},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
}
|
||||
|
||||
@ -485,7 +485,7 @@ var swarmAddrsListenCmd = &cmds.Command{
|
||||
},
|
||||
Type: stringList{},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
}
|
||||
|
||||
@ -535,7 +535,7 @@ ipfs swarm connect /ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N
|
||||
return cmds.EmitOnce(res, &stringList{output})
|
||||
},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
Type: stringList{},
|
||||
}
|
||||
@ -600,7 +600,7 @@ it will reconnect.
|
||||
return cmds.EmitOnce(res, &stringList{output})
|
||||
},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
Type: stringList{},
|
||||
}
|
||||
@ -722,7 +722,7 @@ Filters default to those specified under the "Swarm.AddrFilters" config key.
|
||||
return cmds.EmitOnce(res, &stringList{output})
|
||||
},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
Type: stringList{},
|
||||
}
|
||||
@ -778,7 +778,7 @@ var swarmFiltersAddCmd = &cmds.Command{
|
||||
return cmds.EmitOnce(res, &stringList{added})
|
||||
},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
Type: stringList{},
|
||||
}
|
||||
@ -844,7 +844,7 @@ var swarmFiltersRmCmd = &cmds.Command{
|
||||
return cmds.EmitOnce(res, &stringList{removed})
|
||||
},
|
||||
Encoders: cmds.EncoderMap{
|
||||
cmds.Text: cmds.MakeTypedEncoder(stringListEncoder),
|
||||
cmds.Text: cmds.MakeTypedEncoder(safeTextListEncoder),
|
||||
},
|
||||
Type: stringList{},
|
||||
}
|
||||
|
||||
@ -46,10 +46,10 @@ func (api *BlockAPI) Put(ctx context.Context, src io.Reader, opts ...caopts.Bloc
|
||||
}
|
||||
|
||||
if settings.Pin {
|
||||
defer api.blockstore.PinLock().Unlock()
|
||||
defer api.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
}
|
||||
|
||||
err = api.blocks.AddBlock(b)
|
||||
err = api.blocks.AddBlock(ctx, b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
cid "github.com/ipfs/go-cid"
|
||||
"github.com/ipfs/go-ipfs-pinner"
|
||||
pin "github.com/ipfs/go-ipfs-pinner"
|
||||
ipld "github.com/ipfs/go-ipld-format"
|
||||
dag "github.com/ipfs/go-merkledag"
|
||||
)
|
||||
@ -18,7 +18,7 @@ type dagAPI struct {
|
||||
type pinningAdder CoreAPI
|
||||
|
||||
func (adder *pinningAdder) Add(ctx context.Context, nd ipld.Node) error {
|
||||
defer adder.blockstore.PinLock().Unlock()
|
||||
defer adder.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
|
||||
if err := adder.dag.Add(ctx, nd); err != nil {
|
||||
return err
|
||||
@ -30,7 +30,7 @@ func (adder *pinningAdder) Add(ctx context.Context, nd ipld.Node) error {
|
||||
}
|
||||
|
||||
func (adder *pinningAdder) AddMany(ctx context.Context, nds []ipld.Node) error {
|
||||
defer adder.blockstore.PinLock().Unlock()
|
||||
defer adder.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
|
||||
if err := adder.dag.AddMany(ctx, nds); err != nil {
|
||||
return err
|
||||
|
||||
@ -76,7 +76,7 @@ func (api *DhtAPI) Provide(ctx context.Context, path path.Path, opts ...caopts.D
|
||||
|
||||
c := rp.Cid()
|
||||
|
||||
has, err := api.blockstore.Has(c)
|
||||
has, err := api.blockstore.Has(ctx, c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ import (
|
||||
"io/ioutil"
|
||||
|
||||
cid "github.com/ipfs/go-cid"
|
||||
"github.com/ipfs/go-ipfs-pinner"
|
||||
pin "github.com/ipfs/go-ipfs-pinner"
|
||||
ipld "github.com/ipfs/go-ipld-format"
|
||||
dag "github.com/ipfs/go-merkledag"
|
||||
"github.com/ipfs/go-merkledag/dagutils"
|
||||
@ -110,7 +110,7 @@ func (api *ObjectAPI) Put(ctx context.Context, src io.Reader, opts ...caopts.Obj
|
||||
}
|
||||
|
||||
if options.Pin {
|
||||
defer api.blockstore.PinLock().Unlock()
|
||||
defer api.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
}
|
||||
|
||||
err = api.dag.Add(ctx, dagnode)
|
||||
|
||||
@ -27,7 +27,7 @@ func (api *PinAPI) Add(ctx context.Context, p path.Path, opts ...caopts.PinAddOp
|
||||
return err
|
||||
}
|
||||
|
||||
defer api.blockstore.PinLock().Unlock()
|
||||
defer api.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
|
||||
err = api.pinning.Pin(ctx, dagNode, settings.Recursive)
|
||||
if err != nil {
|
||||
@ -89,7 +89,7 @@ func (api *PinAPI) Rm(ctx context.Context, p path.Path, opts ...caopts.PinRmOpti
|
||||
|
||||
// Note: after unpin the pin sets are flushed to the blockstore, so we need
|
||||
// to take a lock to prevent a concurrent garbage collection
|
||||
defer api.blockstore.PinLock().Unlock()
|
||||
defer api.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
|
||||
if err = api.pinning.Unpin(ctx, rp.Cid(), settings.Recursive); err != nil {
|
||||
return err
|
||||
@ -114,7 +114,7 @@ func (api *PinAPI) Update(ctx context.Context, from path.Path, to path.Path, opt
|
||||
return err
|
||||
}
|
||||
|
||||
defer api.blockstore.PinLock().Unlock()
|
||||
defer api.blockstore.PinLock(ctx).Unlock(ctx)
|
||||
|
||||
err = api.pinning.Update(ctx, fp.Cid(), tp.Cid(), settings.Unpin)
|
||||
if err != nil {
|
||||
|
||||
@ -14,7 +14,6 @@ import (
|
||||
"github.com/ipld/go-ipld-prime"
|
||||
)
|
||||
|
||||
|
||||
func TestPathUnixFSHAMTPartial(t *testing.T) {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
@ -27,16 +26,16 @@ func TestPathUnixFSHAMTPartial(t *testing.T) {
|
||||
a := apis[0]
|
||||
|
||||
// Setting this after instantiating the swarm so that it's not clobbered by loading the go-ipfs config
|
||||
prevVal := uio.UseHAMTSharding
|
||||
uio.UseHAMTSharding = true
|
||||
prevVal := uio.HAMTShardingSize
|
||||
uio.HAMTShardingSize = 1
|
||||
defer func() {
|
||||
uio.UseHAMTSharding = prevVal
|
||||
uio.HAMTShardingSize = prevVal
|
||||
}()
|
||||
|
||||
// Create and add a sharded directory
|
||||
dir := make(map[string]files.Node)
|
||||
// Make sure we have at least two levels of sharding
|
||||
for i := 0; i < uio.DefaultShardWidth + 1; i++ {
|
||||
for i := 0; i < uio.DefaultShardWidth+1; i++ {
|
||||
dir[strconv.Itoa(i)] = files.NewBytesFile([]byte(strconv.Itoa(i)))
|
||||
}
|
||||
|
||||
@ -67,7 +66,7 @@ func TestPathUnixFSHAMTPartial(t *testing.T) {
|
||||
for k := range dir {
|
||||
// The node will go out to the (non-existent) network looking for the missing block. Make sure we're erroring
|
||||
// because we exceeded the timeout on our query
|
||||
timeoutCtx, timeoutCancel := context.WithTimeout(ctx, time.Second * 1)
|
||||
timeoutCtx, timeoutCancel := context.WithTimeout(ctx, time.Second*1)
|
||||
_, err := a.ResolveNode(timeoutCtx, path.Join(r, k))
|
||||
if err != nil {
|
||||
if timeoutCtx.Err() == nil {
|
||||
|
||||
@ -111,10 +111,10 @@ func (api *UnixfsAPI) Add(ctx context.Context, files files.Node, opts ...options
|
||||
DAGService: dserv,
|
||||
syncFn: func() error {
|
||||
ds := api.repo.Datastore()
|
||||
if err := ds.Sync(bstore.BlockPrefix); err != nil {
|
||||
if err := ds.Sync(ctx, bstore.BlockPrefix); err != nil {
|
||||
return err
|
||||
}
|
||||
return ds.Sync(filestore.FilestorePrefix)
|
||||
return ds.Sync(ctx, filestore.FilestorePrefix)
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -164,7 +164,7 @@ func (api *UnixfsAPI) Add(ctx context.Context, files files.Node, opts ...options
|
||||
fileAdder.SetMfsRoot(mr)
|
||||
}
|
||||
|
||||
nd, err := fileAdder.AddAllAndPin(files)
|
||||
nd, err := fileAdder.AddAllAndPin(ctx, files)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -217,13 +217,13 @@ func (api *UnixfsAPI) Ls(ctx context.Context, p path.Path, opts ...options.Unixf
|
||||
}
|
||||
|
||||
func (api *UnixfsAPI) processLink(ctx context.Context, linkres ft.LinkResult, settings *options.UnixfsLsSettings) coreiface.DirEntry {
|
||||
if linkres.Err != nil {
|
||||
return coreiface.DirEntry{Err: linkres.Err}
|
||||
}
|
||||
|
||||
lnk := coreiface.DirEntry{
|
||||
Name: linkres.Link.Name,
|
||||
Cid: linkres.Link.Cid,
|
||||
Err: linkres.Err,
|
||||
}
|
||||
if lnk.Err != nil {
|
||||
return lnk
|
||||
}
|
||||
|
||||
switch lnk.Cid.Type() {
|
||||
|
||||
@ -506,7 +506,7 @@ func TestIPNSHostnameBacklinks(t *testing.T) {
|
||||
if !strings.Contains(s, "<a href=\"/foo%3F%20%23%3C%27/file.txt\">") {
|
||||
t.Fatalf("expected file in directory listing")
|
||||
}
|
||||
if !strings.Contains(s, "<a class=\"ipfs-hash\" href=\"https://cid.ipfs.io/#") {
|
||||
if !strings.Contains(s, "<a class=\"ipfs-hash\" translate=\"no\" href=\"https://cid.ipfs.io/#") {
|
||||
// https://github.com/ipfs/dir-index-html/issues/42
|
||||
t.Fatalf("expected links to cid.ipfs.io in CID column when on DNSLink website")
|
||||
}
|
||||
@ -543,7 +543,7 @@ func TestIPNSHostnameBacklinks(t *testing.T) {
|
||||
if !strings.Contains(s, "<a href=\"/file.txt\">") {
|
||||
t.Fatalf("expected file in directory listing")
|
||||
}
|
||||
if !strings.Contains(s, "<a class=\"ipfs-hash\" href=\"https://cid.ipfs.io/#") {
|
||||
if !strings.Contains(s, "<a class=\"ipfs-hash\" translate=\"no\" href=\"https://cid.ipfs.io/#") {
|
||||
// https://github.com/ipfs/dir-index-html/issues/42
|
||||
t.Fatalf("expected links to cid.ipfs.io in CID column when on DNSLink website")
|
||||
}
|
||||
|
||||
@ -295,7 +295,7 @@ func prepareKnownGateways(publicGateways map[string]*config.GatewaySpec) gateway
|
||||
}
|
||||
|
||||
// isKnownHostname checks Gateway.PublicGateways and returns matching
|
||||
// GatewaySpec with gracefull fallback to version without port
|
||||
// GatewaySpec with graceful fallback to version without port
|
||||
func isKnownHostname(hostname string, knownGateways gatewayHosts) (gw *config.GatewaySpec, ok bool) {
|
||||
// Try hostname (host+optional port - value from Host header as-is)
|
||||
if gw, ok := knownGateways.exact[hostname]; ok {
|
||||
@ -338,7 +338,7 @@ func knownSubdomainDetails(hostname string, knownGateways gatewayHosts) (gw *con
|
||||
|
||||
ns := labels[i-1]
|
||||
if !isSubdomainNamespace(ns) {
|
||||
break
|
||||
continue
|
||||
}
|
||||
|
||||
// Merge remaining labels (could be a FQDN with DNSLink)
|
||||
|
||||
@ -217,6 +217,7 @@ func TestKnownSubdomainDetails(t *testing.T) {
|
||||
knownGateways := prepareKnownGateways(map[string]*config.GatewaySpec{
|
||||
"localhost": gwLocalhost,
|
||||
"dweb.link": gwDweb,
|
||||
"devgateway.dweb.link": gwDweb,
|
||||
"dweb.ipfs.pvt.k12.ma.us": gwLong, // note the sneaky ".ipfs." ;-)
|
||||
"*.wildcard1.tld": gwWildcard1,
|
||||
"*.*.wildcard2.tld": gwWildcard2,
|
||||
@ -248,6 +249,7 @@ func TestKnownSubdomainDetails(t *testing.T) {
|
||||
// cid in subdomain, known gateway
|
||||
{"bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:8080", gwLocalhost, "localhost:8080", "ipfs", "bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am", true},
|
||||
{"bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.dweb.link", gwDweb, "dweb.link", "ipfs", "bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am", true},
|
||||
{"bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.devgateway.dweb.link", gwDweb, "devgateway.dweb.link", "ipfs", "bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am", true},
|
||||
// capture everything before .ipfs.
|
||||
{"foo.bar.boo-buzz.ipfs.dweb.link", gwDweb, "dweb.link", "ipfs", "foo.bar.boo-buzz", true},
|
||||
// ipns
|
||||
|
||||
@ -160,9 +160,18 @@ func (c IpfsNodeCollector) PeersTotalValues() map[string]float64 {
|
||||
if c.Node.PeerHost == nil {
|
||||
return vals
|
||||
}
|
||||
for _, conn := range c.Node.PeerHost.Network().Conns() {
|
||||
for _, peerID := range c.Node.PeerHost.Network().Peers() {
|
||||
// Each peer may have more than one connection (see for an explanation
|
||||
// https://github.com/libp2p/go-libp2p-swarm/commit/0538806), so we grab
|
||||
// only one, the first (an arbitrary and non-deterministic choice), which
|
||||
// according to ConnsToPeer is the oldest connection in the list
|
||||
// (https://github.com/libp2p/go-libp2p-swarm/blob/v0.2.6/swarm.go#L362-L364).
|
||||
conns := c.Node.PeerHost.Network().ConnsToPeer(peerID)
|
||||
if len(conns) == 0 {
|
||||
continue
|
||||
}
|
||||
tr := ""
|
||||
for _, proto := range conn.RemoteMultiaddr().Protocols() {
|
||||
for _, proto := range conns[0].RemoteMultiaddr().Protocols() {
|
||||
tr = tr + "/" + proto.Name
|
||||
}
|
||||
vals[tr] = vals[tr] + 1
|
||||
|
||||
@ -21,7 +21,7 @@ func TestPeersTotal(t *testing.T) {
|
||||
hosts := make([]*bhost.BasicHost, 4)
|
||||
for i := 0; i < 4; i++ {
|
||||
var err error
|
||||
hosts[i], err = bhost.NewHost(ctx, swarmt.GenSwarm(t, ctx), nil)
|
||||
hosts[i], err = bhost.NewHost(swarmt.GenSwarm(t), nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -44,11 +44,13 @@ func TestPeersTotal(t *testing.T) {
|
||||
|
||||
node := &core.IpfsNode{PeerHost: hosts[0]}
|
||||
collector := IpfsNodeCollector{Node: node}
|
||||
actual := collector.PeersTotalValues()
|
||||
if len(actual) != 1 {
|
||||
t.Fatalf("expected 1 peers transport, got %d", len(actual))
|
||||
peersTransport := collector.PeersTotalValues()
|
||||
if len(peersTransport) > 2 {
|
||||
t.Fatalf("expected at most 2 peers transport (tcp and upd/quic), got %d, transport map %v",
|
||||
len(peersTransport), peersTransport)
|
||||
}
|
||||
if actual["/ip4/tcp"] != float64(3) {
|
||||
t.Fatalf("expected 3 peers, got %f", actual["/ip4/tcp"])
|
||||
totalPeers := peersTransport["/ip4/tcp"] + peersTransport["/ip4/udp/quic"]
|
||||
if totalPeers != 3 {
|
||||
t.Fatalf("expected 3 peers in either tcp or upd/quic transport, got %f", totalPeers)
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,7 +205,7 @@ func ConditionalGC(ctx context.Context, node *core.IpfsNode, offset uint64) erro
|
||||
}
|
||||
|
||||
func (gc *GC) maybeGC(ctx context.Context, offset uint64) error {
|
||||
storage, err := gc.Repo.GetStorageUsage()
|
||||
storage, err := gc.Repo.GetStorageUsage(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ func RepoSize(ctx context.Context, n *core.IpfsNode) (SizeStat, error) {
|
||||
return SizeStat{}, err
|
||||
}
|
||||
|
||||
usage, err := r.GetStorageUsage()
|
||||
usage, err := r.GetStorageUsage(ctx)
|
||||
if err != nil {
|
||||
return SizeStat{}, err
|
||||
}
|
||||
|
||||
@ -11,9 +11,9 @@ import (
|
||||
"github.com/ipfs/go-cid"
|
||||
bstore "github.com/ipfs/go-ipfs-blockstore"
|
||||
chunker "github.com/ipfs/go-ipfs-chunker"
|
||||
"github.com/ipfs/go-ipfs-files"
|
||||
"github.com/ipfs/go-ipfs-pinner"
|
||||
"github.com/ipfs/go-ipfs-posinfo"
|
||||
files "github.com/ipfs/go-ipfs-files"
|
||||
pin "github.com/ipfs/go-ipfs-pinner"
|
||||
posinfo "github.com/ipfs/go-ipfs-posinfo"
|
||||
ipld "github.com/ipfs/go-ipld-format"
|
||||
logging "github.com/ipfs/go-log"
|
||||
dag "github.com/ipfs/go-merkledag"
|
||||
@ -254,17 +254,17 @@ func (adder *Adder) addNode(node ipld.Node, path string) error {
|
||||
}
|
||||
|
||||
// AddAllAndPin adds the given request's files and pin them.
|
||||
func (adder *Adder) AddAllAndPin(file files.Node) (ipld.Node, error) {
|
||||
func (adder *Adder) AddAllAndPin(ctx context.Context, file files.Node) (ipld.Node, error) {
|
||||
if adder.Pin {
|
||||
adder.unlocker = adder.gcLocker.PinLock()
|
||||
adder.unlocker = adder.gcLocker.PinLock(ctx)
|
||||
}
|
||||
defer func() {
|
||||
if adder.unlocker != nil {
|
||||
adder.unlocker.Unlock()
|
||||
adder.unlocker.Unlock(ctx)
|
||||
}
|
||||
}()
|
||||
|
||||
if err := adder.addFileNode("", file, true); err != nil {
|
||||
if err := adder.addFileNode(ctx, "", file, true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -333,10 +333,10 @@ func (adder *Adder) AddAllAndPin(file files.Node) (ipld.Node, error) {
|
||||
return nd, adder.PinRoot(nd)
|
||||
}
|
||||
|
||||
func (adder *Adder) addFileNode(path string, file files.Node, toplevel bool) error {
|
||||
func (adder *Adder) addFileNode(ctx context.Context, path string, file files.Node, toplevel bool) error {
|
||||
defer file.Close()
|
||||
|
||||
err := adder.maybePauseForGC()
|
||||
err := adder.maybePauseForGC(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -357,7 +357,7 @@ func (adder *Adder) addFileNode(path string, file files.Node, toplevel bool) err
|
||||
|
||||
switch f := file.(type) {
|
||||
case files.Directory:
|
||||
return adder.addDir(path, f, toplevel)
|
||||
return adder.addDir(ctx, path, f, toplevel)
|
||||
case *files.Symlink:
|
||||
return adder.addSymlink(path, f)
|
||||
case files.File:
|
||||
@ -405,7 +405,7 @@ func (adder *Adder) addFile(path string, file files.File) error {
|
||||
return adder.addNode(dagnode, path)
|
||||
}
|
||||
|
||||
func (adder *Adder) addDir(path string, dir files.Directory, toplevel bool) error {
|
||||
func (adder *Adder) addDir(ctx context.Context, path string, dir files.Directory, toplevel bool) error {
|
||||
log.Infof("adding directory: %s", path)
|
||||
|
||||
if !(toplevel && path == "") {
|
||||
@ -426,7 +426,7 @@ func (adder *Adder) addDir(path string, dir files.Directory, toplevel bool) erro
|
||||
it := dir.Entries()
|
||||
for it.Next() {
|
||||
fpath := gopath.Join(path, it.Name())
|
||||
err := adder.addFileNode(fpath, it.Node(), false)
|
||||
err := adder.addFileNode(ctx, fpath, it.Node(), false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -435,8 +435,8 @@ func (adder *Adder) addDir(path string, dir files.Directory, toplevel bool) erro
|
||||
return it.Err()
|
||||
}
|
||||
|
||||
func (adder *Adder) maybePauseForGC() error {
|
||||
if adder.unlocker != nil && adder.gcLocker.GCRequested() {
|
||||
func (adder *Adder) maybePauseForGC(ctx context.Context) error {
|
||||
if adder.unlocker != nil && adder.gcLocker.GCRequested(ctx) {
|
||||
rn, err := adder.curRootNode()
|
||||
if err != nil {
|
||||
return err
|
||||
@ -447,8 +447,8 @@ func (adder *Adder) maybePauseForGC() error {
|
||||
return err
|
||||
}
|
||||
|
||||
adder.unlocker.Unlock()
|
||||
adder.unlocker = adder.gcLocker.PinLock()
|
||||
adder.unlocker.Unlock(ctx)
|
||||
adder.unlocker = adder.gcLocker.PinLock(ctx)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ func TestAddMultipleGCLive(t *testing.T) {
|
||||
|
||||
go func() {
|
||||
defer close(out)
|
||||
_, _ = adder.AddAllAndPin(slf)
|
||||
_, _ = adder.AddAllAndPin(context.Background(), slf)
|
||||
// Ignore errors for clarity - the real bug would be gc'ing files while adding them, not this resultant error
|
||||
}()
|
||||
|
||||
@ -179,7 +179,7 @@ func TestAddGCLive(t *testing.T) {
|
||||
go func() {
|
||||
defer close(addDone)
|
||||
defer close(out)
|
||||
_, err := adder.AddAllAndPin(slf)
|
||||
_, err := adder.AddAllAndPin(context.Background(), slf)
|
||||
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
@ -288,7 +288,7 @@ func testAddWPosInfo(t *testing.T, rawLeaves bool) {
|
||||
|
||||
go func() {
|
||||
defer close(adder.Out)
|
||||
_, err = adder.AddAllAndPin(file)
|
||||
_, err = adder.AddAllAndPin(context.Background(), file)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@ -327,16 +327,16 @@ type testBlockstore struct {
|
||||
countAtOffsetNonZero int
|
||||
}
|
||||
|
||||
func (bs *testBlockstore) Put(block blocks.Block) error {
|
||||
func (bs *testBlockstore) Put(ctx context.Context, block blocks.Block) error {
|
||||
bs.CheckForPosInfo(block)
|
||||
return bs.GCBlockstore.Put(block)
|
||||
return bs.GCBlockstore.Put(ctx, block)
|
||||
}
|
||||
|
||||
func (bs *testBlockstore) PutMany(blocks []blocks.Block) error {
|
||||
func (bs *testBlockstore) PutMany(ctx context.Context, blocks []blocks.Block) error {
|
||||
for _, blk := range blocks {
|
||||
bs.CheckForPosInfo(blk)
|
||||
}
|
||||
return bs.GCBlockstore.PutMany(blocks)
|
||||
return bs.GCBlockstore.PutMany(ctx, blocks)
|
||||
}
|
||||
|
||||
func (bs *testBlockstore) CheckForPosInfo(block blocks.Block) {
|
||||
|
||||
@ -16,8 +16,8 @@ import (
|
||||
config "github.com/ipfs/go-ipfs-config"
|
||||
|
||||
"github.com/libp2p/go-libp2p"
|
||||
host "github.com/libp2p/go-libp2p-core/host"
|
||||
peer "github.com/libp2p/go-libp2p-core/peer"
|
||||
"github.com/libp2p/go-libp2p-core/host"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
pstore "github.com/libp2p/go-libp2p-core/peerstore"
|
||||
testutil "github.com/libp2p/go-libp2p-testing/net"
|
||||
|
||||
@ -36,7 +36,7 @@ func NewMockNode() (*core.IpfsNode, error) {
|
||||
}
|
||||
|
||||
func MockHostOption(mn mocknet.Mocknet) libp2p2.HostOption {
|
||||
return func(ctx context.Context, id peer.ID, ps pstore.Peerstore, _ ...libp2p.Option) (host.Host, error) {
|
||||
return func(id peer.ID, ps pstore.Peerstore, _ ...libp2p.Option) (host.Host, error) {
|
||||
return mn.AddPeerWithPeerstore(id, ps)
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,11 +46,11 @@ func BlockService(lc fx.Lifecycle, bs blockstore.Blockstore, rem exchange.Interf
|
||||
func Pinning(bstore blockstore.Blockstore, ds format.DAGService, repo repo.Repo) (pin.Pinner, error) {
|
||||
rootDS := repo.Datastore()
|
||||
|
||||
syncFn := func() error {
|
||||
if err := rootDS.Sync(blockstore.BlockPrefix); err != nil {
|
||||
syncFn := func(ctx context.Context) error {
|
||||
if err := rootDS.Sync(ctx, blockstore.BlockPrefix); err != nil {
|
||||
return err
|
||||
}
|
||||
return rootDS.Sync(filestore.FilestorePrefix)
|
||||
return rootDS.Sync(ctx, filestore.FilestorePrefix)
|
||||
}
|
||||
syncDs := &syncDagService{ds, syncFn}
|
||||
|
||||
@ -72,11 +72,11 @@ var (
|
||||
// syncDagService is used by the Pinner to ensure data gets persisted to the underlying datastore
|
||||
type syncDagService struct {
|
||||
format.DAGService
|
||||
syncFn func() error
|
||||
syncFn func(context.Context) error
|
||||
}
|
||||
|
||||
func (s *syncDagService) Sync() error {
|
||||
return s.syncFn()
|
||||
func (s *syncDagService) Sync(ctx context.Context) error {
|
||||
return s.syncFn(ctx)
|
||||
}
|
||||
|
||||
func (s *syncDagService) Session(ctx context.Context) format.NodeGetter {
|
||||
@ -113,22 +113,22 @@ func Files(mctx helpers.MetricsCtx, lc fx.Lifecycle, repo repo.Repo, dag format.
|
||||
dsk := datastore.NewKey("/local/filesroot")
|
||||
pf := func(ctx context.Context, c cid.Cid) error {
|
||||
rootDS := repo.Datastore()
|
||||
if err := rootDS.Sync(blockstore.BlockPrefix); err != nil {
|
||||
if err := rootDS.Sync(ctx, blockstore.BlockPrefix); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := rootDS.Sync(filestore.FilestorePrefix); err != nil {
|
||||
if err := rootDS.Sync(ctx, filestore.FilestorePrefix); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := rootDS.Put(dsk, c.Bytes()); err != nil {
|
||||
if err := rootDS.Put(ctx, dsk, c.Bytes()); err != nil {
|
||||
return err
|
||||
}
|
||||
return rootDS.Sync(dsk)
|
||||
return rootDS.Sync(ctx, dsk)
|
||||
}
|
||||
|
||||
var nd *merkledag.ProtoNode
|
||||
val, err := repo.Datastore().Get(dsk)
|
||||
ctx := helpers.LifecycleCtx(mctx, lc)
|
||||
val, err := repo.Datastore().Get(ctx, dsk)
|
||||
|
||||
switch {
|
||||
case err == datastore.ErrNotFound || val == nil:
|
||||
|
||||
@ -28,7 +28,7 @@ func DNSResolver(cfg *config.Config) (*madns.Resolver, error) {
|
||||
var opts []madns.Option
|
||||
var err error
|
||||
|
||||
domains := make(map[string]struct{}) // to track overriden default resolvers
|
||||
domains := make(map[string]struct{}) // to track overridden default resolvers
|
||||
rslvrs := make(map[string]madns.BasicResolver) // to reuse resolvers for the same URL
|
||||
|
||||
for domain, url := range cfg.DNS.Resolvers {
|
||||
@ -58,7 +58,7 @@ func DNSResolver(cfg *config.Config) (*madns.Resolver, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// fill in defaults if not overriden by the user
|
||||
// fill in defaults if not overridden by the user
|
||||
for domain, url := range defaultResolvers {
|
||||
_, ok := domains[domain]
|
||||
if ok {
|
||||
|
||||
@ -9,8 +9,8 @@ import (
|
||||
blockstore "github.com/ipfs/go-ipfs-blockstore"
|
||||
config "github.com/ipfs/go-ipfs-config"
|
||||
util "github.com/ipfs/go-ipfs-util"
|
||||
log "github.com/ipfs/go-log"
|
||||
peer "github.com/libp2p/go-libp2p-core/peer"
|
||||
"github.com/ipfs/go-log"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
||||
|
||||
"github.com/ipfs/go-ipfs/core/node/libp2p"
|
||||
@ -19,6 +19,8 @@ import (
|
||||
offline "github.com/ipfs/go-ipfs-exchange-offline"
|
||||
offroute "github.com/ipfs/go-ipfs-routing/offline"
|
||||
uio "github.com/ipfs/go-unixfs/io"
|
||||
|
||||
"github.com/dustin/go-humanize"
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
|
||||
@ -109,31 +111,50 @@ func LibP2P(bcfg *BuildCfg, cfg *config.Config) fx.Option {
|
||||
autonat = fx.Provide(libp2p.AutoNATService(cfg.AutoNAT.Throttle))
|
||||
}
|
||||
|
||||
// If `cfg.Swarm.DisableRelay` is set and `Network.Relay` isn't, use the former.
|
||||
enableRelay := cfg.Swarm.Transports.Network.Relay.WithDefault(!cfg.Swarm.DisableRelay) //nolint
|
||||
// If `cfg.Swarm.DisableRelay` is set and `Network.RelayTransport` isn't, use the former.
|
||||
enableRelayTransport := cfg.Swarm.Transports.Network.Relay.WithDefault(!cfg.Swarm.DisableRelay) //nolint
|
||||
|
||||
// Warn about a deprecated option.
|
||||
//nolint
|
||||
if cfg.Swarm.DisableRelay {
|
||||
logger.Error("The `Swarm.DisableRelay' config field is deprecated.")
|
||||
if enableRelay {
|
||||
logger.Error("`Swarm.DisableRelay' has been overridden by `Swarm.Transports.Network.Relay'")
|
||||
logger.Error("The 'Swarm.DisableRelay' config field is deprecated.")
|
||||
if enableRelayTransport {
|
||||
logger.Error("'Swarm.DisableRelay' has been overridden by 'Swarm.Transports.Network.Relay'")
|
||||
} else {
|
||||
logger.Error("Use the `Swarm.Transports.Network.Relay' config field instead")
|
||||
logger.Error("Use the 'Swarm.Transports.Network.Relay' config field instead")
|
||||
}
|
||||
}
|
||||
//nolint
|
||||
if cfg.Swarm.EnableAutoRelay {
|
||||
logger.Error("The 'Swarm.EnableAutoRelay' config field is deprecated.")
|
||||
if cfg.Swarm.RelayClient.Enabled == config.Default {
|
||||
logger.Error("Use the 'Swarm.AutoRelay.Enabled' config field instead")
|
||||
} else {
|
||||
logger.Error("'Swarm.EnableAutoRelay' has been overridden by 'Swarm.AutoRelay.Enabled'")
|
||||
}
|
||||
}
|
||||
//nolint
|
||||
if cfg.Swarm.EnableRelayHop {
|
||||
logger.Fatal("The `Swarm.EnableRelayHop` config field is ignored.\n" +
|
||||
"Use `Swarm.RelayService` to configure the circuit v2 relay.\n" +
|
||||
"If you want to continue running a circuit v1 relay, please use the standalone relay daemon: https://github.com/libp2p/go-libp2p-relay-daemon (with RelayV1.Enabled: true)")
|
||||
}
|
||||
|
||||
// Gather all the options
|
||||
opts := fx.Options(
|
||||
BaseLibP2P,
|
||||
|
||||
fx.Provide(libp2p.AddrFilters(cfg.Swarm.AddrFilters)),
|
||||
fx.Provide(libp2p.AddrsFactory(cfg.Addresses.Announce, cfg.Addresses.NoAnnounce)),
|
||||
fx.Provide(libp2p.AddrsFactory(cfg.Addresses.Announce, cfg.Addresses.AppendAnnounce, cfg.Addresses.NoAnnounce)),
|
||||
fx.Provide(libp2p.SmuxTransport(cfg.Swarm.Transports)),
|
||||
fx.Provide(libp2p.Relay(enableRelay, cfg.Swarm.EnableRelayHop)),
|
||||
fx.Provide(libp2p.RelayTransport(enableRelayTransport)),
|
||||
fx.Provide(libp2p.RelayService(cfg.Swarm.RelayService.Enabled.WithDefault(true), cfg.Swarm.RelayService)),
|
||||
fx.Provide(libp2p.Transports(cfg.Swarm.Transports)),
|
||||
fx.Invoke(libp2p.StartListening(cfg.Addresses.Swarm)),
|
||||
fx.Invoke(libp2p.SetupDiscovery(cfg.Discovery.MDNS.Enabled, cfg.Discovery.MDNS.Interval)),
|
||||
fx.Provide(libp2p.ForceReachability(cfg.Internal.Libp2pForceReachability)),
|
||||
fx.Provide(libp2p.StaticRelays(cfg.Swarm.RelayClient.StaticRelays)),
|
||||
fx.Provide(libp2p.HolePunching(cfg.Swarm.EnableHolePunching, cfg.Swarm.RelayClient.Enabled.WithDefault(false))),
|
||||
|
||||
fx.Provide(libp2p.Security(!bcfg.DisableEncryptedConnections, cfg.Swarm.Transports)),
|
||||
|
||||
@ -143,7 +164,7 @@ func LibP2P(bcfg *BuildCfg, cfg *config.Config) fx.Option {
|
||||
|
||||
maybeProvide(libp2p.BandwidthCounter, !cfg.Swarm.DisableBandwidthMetrics),
|
||||
maybeProvide(libp2p.NatPortMap, !cfg.Swarm.DisableNatPortMap),
|
||||
maybeProvide(libp2p.AutoRelay, cfg.Swarm.EnableAutoRelay),
|
||||
maybeProvide(libp2p.AutoRelay(len(cfg.Swarm.RelayClient.StaticRelays) == 0), cfg.Swarm.RelayClient.Enabled.WithDefault(false)),
|
||||
autonat,
|
||||
connmgr,
|
||||
ps,
|
||||
@ -316,8 +337,20 @@ func IPFS(ctx context.Context, bcfg *BuildCfg) fx.Option {
|
||||
return bcfgOpts // error
|
||||
}
|
||||
|
||||
// TEMP: setting global sharding switch here
|
||||
uio.UseHAMTSharding = cfg.Experimental.ShardingEnabled
|
||||
// Auto-sharding settings
|
||||
shardSizeString := cfg.Internal.UnixFSShardingSizeThreshold.WithDefault("256kiB")
|
||||
shardSizeInt, err := humanize.ParseBytes(shardSizeString)
|
||||
if err != nil {
|
||||
return fx.Error(err)
|
||||
}
|
||||
uio.HAMTShardingSize = int(shardSizeInt)
|
||||
|
||||
// Migrate users of deprecated Experimental.ShardingEnabled flag
|
||||
if cfg.Experimental.ShardingEnabled {
|
||||
logger.Fatal("The `Experimental.ShardingEnabled` field is no longer used, please remove it from the config.\n" +
|
||||
"go-ipfs now automatically shards when directory block is bigger than `" + shardSizeString + "`.\n" +
|
||||
"If you need to restore the old behavior (sharding everything) set `Internal.UnixFSShardingSizeThreshold` to `1B`.\n")
|
||||
}
|
||||
|
||||
return fx.Options(
|
||||
bcfgOpts,
|
||||
|
||||
@ -25,14 +25,30 @@ func AddrFilters(filters []string) func() (*ma.Filters, Libp2pOpts, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func makeAddrsFactory(announce []string, noAnnounce []string) (p2pbhost.AddrsFactory, error) {
|
||||
var annAddrs []ma.Multiaddr
|
||||
for _, addr := range announce {
|
||||
maddr, err := ma.NewMultiaddr(addr)
|
||||
func makeAddrsFactory(announce []string, appendAnnouce []string, noAnnounce []string) (p2pbhost.AddrsFactory, error) {
|
||||
var err error // To assign to the slice in the for loop
|
||||
existing := make(map[string]bool) // To avoid duplicates
|
||||
|
||||
annAddrs := make([]ma.Multiaddr, len(announce))
|
||||
for i, addr := range announce {
|
||||
annAddrs[i], err = ma.NewMultiaddr(addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
annAddrs = append(annAddrs, maddr)
|
||||
existing[addr] = true
|
||||
}
|
||||
|
||||
var appendAnnAddrs []ma.Multiaddr
|
||||
for _, addr := range appendAnnouce {
|
||||
if existing[addr] {
|
||||
// skip AppendAnnounce that is on the Announce list already
|
||||
continue
|
||||
}
|
||||
appendAddr, err := ma.NewMultiaddr(addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
appendAnnAddrs = append(appendAnnAddrs, appendAddr)
|
||||
}
|
||||
|
||||
filters := ma.NewFilters()
|
||||
@ -57,6 +73,7 @@ func makeAddrsFactory(announce []string, noAnnounce []string) (p2pbhost.AddrsFac
|
||||
} else {
|
||||
addrs = allAddrs
|
||||
}
|
||||
addrs = append(addrs, appendAnnAddrs...)
|
||||
|
||||
var out []ma.Multiaddr
|
||||
for _, maddr := range addrs {
|
||||
@ -71,9 +88,9 @@ func makeAddrsFactory(announce []string, noAnnounce []string) (p2pbhost.AddrsFac
|
||||
}, nil
|
||||
}
|
||||
|
||||
func AddrsFactory(announce []string, noAnnounce []string) func() (opts Libp2pOpts, err error) {
|
||||
func AddrsFactory(announce []string, appendAnnouce []string, noAnnounce []string) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
addrsFactory, err := makeAddrsFactory(announce, noAnnounce)
|
||||
addrsFactory, err := makeAddrsFactory(announce, appendAnnouce, noAnnounce)
|
||||
if err != nil {
|
||||
return opts, err
|
||||
}
|
||||
|
||||
@ -40,8 +40,10 @@ func DiscoveryHandler(mctx helpers.MetricsCtx, lc fx.Lifecycle, host host.Host)
|
||||
func SetupDiscovery(useMdns bool, mdnsInterval int) func(helpers.MetricsCtx, fx.Lifecycle, host.Host, *discoveryHandler) error {
|
||||
return func(mctx helpers.MetricsCtx, lc fx.Lifecycle, host host.Host, handler *discoveryHandler) error {
|
||||
if useMdns {
|
||||
service := mdns.NewMdnsService(host, mdns.ServiceName)
|
||||
service.RegisterNotifee(handler)
|
||||
service := mdns.NewMdnsService(host, mdns.ServiceName, handler)
|
||||
if err := service.Start(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if mdnsInterval == 0 {
|
||||
mdnsInterval = 5
|
||||
|
||||
@ -4,10 +4,10 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/libp2p/go-libp2p"
|
||||
host "github.com/libp2p/go-libp2p-core/host"
|
||||
peer "github.com/libp2p/go-libp2p-core/peer"
|
||||
peerstore "github.com/libp2p/go-libp2p-core/peerstore"
|
||||
routing "github.com/libp2p/go-libp2p-core/routing"
|
||||
"github.com/libp2p/go-libp2p-core/host"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
"github.com/libp2p/go-libp2p-core/peerstore"
|
||||
"github.com/libp2p/go-libp2p-core/routing"
|
||||
record "github.com/libp2p/go-libp2p-record"
|
||||
routedhost "github.com/libp2p/go-libp2p/p2p/host/routed"
|
||||
|
||||
@ -64,7 +64,7 @@ func Host(mctx helpers.MetricsCtx, lc fx.Lifecycle, params P2PHostIn) (out P2PHo
|
||||
return r, err
|
||||
}))
|
||||
|
||||
out.Host, err = params.HostOption(ctx, params.ID, params.Peerstore, opts...)
|
||||
out.Host, err = params.HostOption(params.ID, params.Peerstore, opts...)
|
||||
if err != nil {
|
||||
return P2PHostOut{}, err
|
||||
}
|
||||
|
||||
@ -1,25 +1,24 @@
|
||||
package libp2p
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/libp2p/go-libp2p"
|
||||
host "github.com/libp2p/go-libp2p-core/host"
|
||||
peer "github.com/libp2p/go-libp2p-core/peer"
|
||||
peerstore "github.com/libp2p/go-libp2p-core/peerstore"
|
||||
"github.com/libp2p/go-libp2p-core/host"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
"github.com/libp2p/go-libp2p-core/peerstore"
|
||||
)
|
||||
|
||||
type HostOption func(ctx context.Context, id peer.ID, ps peerstore.Peerstore, options ...libp2p.Option) (host.Host, error)
|
||||
type HostOption func(id peer.ID, ps peerstore.Peerstore, options ...libp2p.Option) (host.Host, error)
|
||||
|
||||
var DefaultHostOption HostOption = constructPeerHost
|
||||
|
||||
// isolates the complex initialization steps
|
||||
func constructPeerHost(ctx context.Context, id peer.ID, ps peerstore.Peerstore, options ...libp2p.Option) (host.Host, error) {
|
||||
func constructPeerHost(id peer.ID, ps peerstore.Peerstore, options ...libp2p.Option) (host.Host, error) {
|
||||
pkey := ps.PrivKey(id)
|
||||
if pkey == nil {
|
||||
return nil, fmt.Errorf("missing private key for node ID: %s", id.Pretty())
|
||||
}
|
||||
options = append([]libp2p.Option{libp2p.Identity(pkey), libp2p.Peerstore(ps)}, options...)
|
||||
return libp2p.New(ctx, options...)
|
||||
return libp2p.New(options...)
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package libp2p
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
@ -9,7 +10,7 @@ import (
|
||||
|
||||
logging "github.com/ipfs/go-log"
|
||||
"github.com/libp2p/go-libp2p"
|
||||
"github.com/libp2p/go-libp2p-connmgr"
|
||||
connmgr "github.com/libp2p/go-libp2p-connmgr"
|
||||
"github.com/libp2p/go-libp2p-core/crypto"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
"github.com/libp2p/go-libp2p-core/peerstore"
|
||||
@ -78,3 +79,21 @@ func prioritizeOptions(opts []priorityOption) libp2p.Option {
|
||||
}
|
||||
return libp2p.ChainOptions(p2pOpts...)
|
||||
}
|
||||
|
||||
func ForceReachability(val *config.OptionalString) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
if val.IsDefault() {
|
||||
return
|
||||
}
|
||||
v := val.WithDefault("unrecognized")
|
||||
switch v {
|
||||
case "public":
|
||||
opts.Opts = append(opts.Opts, libp2p.ForceReachabilityPublic())
|
||||
case "private":
|
||||
opts.Opts = append(opts.Opts, libp2p.ForceReachabilityPrivate())
|
||||
default:
|
||||
return opts, fmt.Errorf("unrecognized reachability option: %s", v)
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ package libp2p
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/ipfs/go-ipfs-config"
|
||||
config "github.com/ipfs/go-ipfs-config"
|
||||
"github.com/libp2p/go-libp2p"
|
||||
)
|
||||
|
||||
@ -13,14 +13,12 @@ func AutoNATService(throttle *config.AutoNATThrottleConfig) func() Libp2pOpts {
|
||||
return func() (opts Libp2pOpts) {
|
||||
opts.Opts = append(opts.Opts, libp2p.EnableNATService())
|
||||
if throttle != nil {
|
||||
global := throttle.GlobalLimit
|
||||
peer := throttle.PeerLimit
|
||||
interval := time.Duration(throttle.Interval)
|
||||
if interval == 0 {
|
||||
interval = time.Minute
|
||||
}
|
||||
opts.Opts = append(opts.Opts,
|
||||
libp2p.AutoNATServiceRateLimit(global, peer, interval),
|
||||
libp2p.AutoNATServiceRateLimit(
|
||||
throttle.GlobalLimit,
|
||||
throttle.PeerLimit,
|
||||
throttle.Interval.WithDefault(time.Minute),
|
||||
),
|
||||
)
|
||||
}
|
||||
return opts
|
||||
|
||||
@ -8,13 +8,16 @@ import (
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
|
||||
func Peerstore(lc fx.Lifecycle) peerstore.Peerstore {
|
||||
pstore := pstoremem.NewPeerstore()
|
||||
func Peerstore(lc fx.Lifecycle) (peerstore.Peerstore, error) {
|
||||
pstore, err := pstoremem.NewPeerstore()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
lc.Append(fx.Hook{
|
||||
OnStop: func(ctx context.Context) error {
|
||||
return pstore.Close()
|
||||
},
|
||||
})
|
||||
|
||||
return pstore
|
||||
return pstore, nil
|
||||
}
|
||||
|
||||
@ -1,18 +1,17 @@
|
||||
package libp2p
|
||||
|
||||
import (
|
||||
config "github.com/ipfs/go-ipfs-config"
|
||||
"github.com/libp2p/go-libp2p-core/peer"
|
||||
|
||||
"github.com/libp2p/go-libp2p"
|
||||
relay "github.com/libp2p/go-libp2p-circuit"
|
||||
"github.com/libp2p/go-libp2p/p2p/protocol/circuitv2/relay"
|
||||
)
|
||||
|
||||
func Relay(enableRelay, enableHop bool) func() (opts Libp2pOpts, err error) {
|
||||
func RelayTransport(enableRelay bool) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
if enableRelay {
|
||||
relayOpts := []relay.RelayOpt{}
|
||||
if enableHop {
|
||||
relayOpts = append(relayOpts, relay.OptHop)
|
||||
}
|
||||
opts.Opts = append(opts.Opts, libp2p.EnableRelay(relayOpts...))
|
||||
opts.Opts = append(opts.Opts, libp2p.EnableRelay())
|
||||
} else {
|
||||
opts.Opts = append(opts.Opts, libp2p.DisableRelay())
|
||||
}
|
||||
@ -20,4 +19,66 @@ func Relay(enableRelay, enableHop bool) func() (opts Libp2pOpts, err error) {
|
||||
}
|
||||
}
|
||||
|
||||
var AutoRelay = simpleOpt(libp2p.ChainOptions(libp2p.EnableAutoRelay(), libp2p.DefaultStaticRelays()))
|
||||
func RelayService(enable bool, relayOpts config.RelayService) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
if enable {
|
||||
def := relay.DefaultResources()
|
||||
// Real defaults live in go-libp2p.
|
||||
// Here we apply any overrides from user config.
|
||||
opts.Opts = append(opts.Opts, libp2p.EnableRelayService(relay.WithResources(relay.Resources{
|
||||
Limit: &relay.RelayLimit{
|
||||
Data: relayOpts.ConnectionDataLimit.WithDefault(def.Limit.Data),
|
||||
Duration: relayOpts.ConnectionDurationLimit.WithDefault(def.Limit.Duration),
|
||||
},
|
||||
MaxCircuits: int(relayOpts.MaxCircuits.WithDefault(int64(def.MaxCircuits))),
|
||||
BufferSize: int(relayOpts.BufferSize.WithDefault(int64(def.BufferSize))),
|
||||
ReservationTTL: relayOpts.ReservationTTL.WithDefault(def.ReservationTTL),
|
||||
MaxReservations: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservations))),
|
||||
MaxReservationsPerIP: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservationsPerIP))),
|
||||
MaxReservationsPerPeer: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservationsPerPeer))),
|
||||
MaxReservationsPerASN: int(relayOpts.MaxReservations.WithDefault(int64(def.MaxReservationsPerASN))),
|
||||
})))
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func StaticRelays(relays []string) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
staticRelays := make([]peer.AddrInfo, 0, len(relays))
|
||||
for _, s := range relays {
|
||||
var addr *peer.AddrInfo
|
||||
addr, err = peer.AddrInfoFromString(s)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
staticRelays = append(staticRelays, *addr)
|
||||
}
|
||||
if len(staticRelays) > 0 {
|
||||
opts.Opts = append(opts.Opts, libp2p.StaticRelays(staticRelays))
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func AutoRelay(addDefaultRelays bool) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
opts.Opts = append(opts.Opts, libp2p.EnableAutoRelay())
|
||||
if addDefaultRelays {
|
||||
opts.Opts = append(opts.Opts, libp2p.DefaultStaticRelays())
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func HolePunching(flag config.Flag, hasRelayClient bool) func() (opts Libp2pOpts, err error) {
|
||||
return func() (opts Libp2pOpts, err error) {
|
||||
if flag.WithDefault(false) {
|
||||
if !hasRelayClient {
|
||||
log.Fatal("To enable `Swarm.EnableHolePunching` requires `Swarm.RelayClient.Enabled` to be enabled.")
|
||||
}
|
||||
opts.Opts = append(opts.Opts, libp2p.EnableHolePunching())
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
21
docker-compose.yaml
Normal file
21
docker-compose.yaml
Normal file
@ -0,0 +1,21 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
ipfs:
|
||||
build: .
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ipfs_path:/data/ipfs
|
||||
- ipfs_fuse:/ipfs
|
||||
- ipns_fuse:/ipns
|
||||
environment:
|
||||
- IPFS_PATH=/data/ipfs
|
||||
ports:
|
||||
- 4001:4001/tcp
|
||||
- 4001:4001/udp
|
||||
- 5001:5001
|
||||
- 8080:8080
|
||||
- 8081:8081
|
||||
volumes:
|
||||
ipfs_path:
|
||||
ipfs_fuse:
|
||||
ipns_fuse:
|
||||
@ -22,7 +22,7 @@ We will ask early testers to participate at two points in the process:
|
||||
|
||||
## Who has signed up?
|
||||
|
||||
- [ ] pacman.store ([@RubenKelevra](https://github.com/RubenKelevra))
|
||||
- [ ] pacman.store (@RubenKelevra)
|
||||
- [ ] Infura (@MichaelMure)
|
||||
- [ ] Textile (@sanderpick)
|
||||
- [ ] Pinata (@obo20)
|
||||
@ -31,6 +31,7 @@ We will ask early testers to participate at two points in the process:
|
||||
- [ ] Siderus (@koalalorenzo)
|
||||
- [ ] Charity Engine (@rytiss, @tristanolive)
|
||||
- [ ] Fission (@bmann)
|
||||
- [ ] OrbitDB (@tabcat)
|
||||
|
||||
## How to sign up?
|
||||
|
||||
|
||||
@ -18,10 +18,6 @@ As usual, this release includes important fixes, some of which may be critical f
|
||||
|
||||
< top highlights for this release notes >
|
||||
|
||||
## Changelog
|
||||
|
||||
< changelog generated by bin/mkreleaselog >
|
||||
|
||||
## ✅ Release Checklist
|
||||
|
||||
For each RC published in each stage:
|
||||
@ -35,8 +31,8 @@ For each RC published in each stage:
|
||||
4. Ask the infra team to update the DNSLink record for dist.ipfs.io to point to the new distribution.
|
||||
- cut a pre-release on [github](https://github.com/ipfs/go-ipfs/releases) and upload the result of the ipfs/distributions build in the previous step.
|
||||
- Announce the RC:
|
||||
- [ ] On IRC/Matrix (both #ipfs and #ipfs-dev)
|
||||
- [ ] To the _early testers_ listed in [docs/EARLY_TESTERS.md](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md).
|
||||
- [ ] On Matrix (both #ipfs and #ipfs-dev)
|
||||
- [ ] To the _early testers_ listed in [docs/EARLY_TESTERS.md](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md). Do this by copy/pasting their GitHub usernames and checkboxes as a comment so they get a GitHub notification. ([example](https://github.com/ipfs/go-ipfs/issues/8176#issuecomment-909356394))
|
||||
|
||||
Checklist:
|
||||
|
||||
@ -54,8 +50,6 @@ Checklist:
|
||||
- [ ] **Stage 1 - Internal Testing**
|
||||
- [ ] CHANGELOG.md has been updated
|
||||
- use [`./bin/mkreleaselog`](https://github.com/ipfs/go-ipfs/tree/master/bin/mkreleaselog) to generate a nice starter list
|
||||
- [ ] Network Testing:
|
||||
- [ ] test lab things - TBD
|
||||
- [ ] Infrastructure Testing:
|
||||
- [ ] Deploy new version to a subset of Bootstrappers
|
||||
- [ ] Deploy new version to a subset of Gateways
|
||||
@ -67,25 +61,15 @@ Checklist:
|
||||
- [ ] Upgrade to the RC in [ipfs-desktop](https://github.com/ipfs-shipyard/ipfs-desktop) and push to a branch ([example](https://github.com/ipfs/ipfs-desktop/pull/1826/commits/b0a23db31ce942b46d95965ee6fe770fb24d6bde)), and open a draft PR to track through the final release ([example](https://github.com/ipfs/ipfs-desktop/pull/1826))
|
||||
- [ ] Ensure CI tests pass, repeat for new RCs
|
||||
- [ ] [IPFS Companion](https://github.com/ipfs-shipyard/ipfs-companion) - @lidel
|
||||
- [ ] [NPM on IPFS](https://github.com/ipfs-shipyard/npm-on-ipfs) - @achingbrain
|
||||
- [ ] **Stage 2 - Community Dev Testing**
|
||||
- [ ] Reach out to the IPFS _early testers_ listed in [docs/EARLY_TESTERS.md](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md) for testing this release (check when no more problems have been reported). If you'd like to be added to this list, please file a PR.
|
||||
- [ ] Reach out to on IRC for beta testers.
|
||||
- [ ] Run tests available in the following repos with the latest beta (check when all tests pass):
|
||||
- [ ] [orbit-db](https://github.com/orbitdb/orbit-db)
|
||||
- [ ] **Stage 3 - Community Prod Testing**
|
||||
- [ ] **Stage 2 - Community Prod Testing**
|
||||
- [ ] Documentation
|
||||
- [ ] Ensure that [CHANGELOG.md](https://github.com/ipfs/go-ipfs/tree/master/CHANGELOG.md) is up to date
|
||||
- [ ] Ensure that [README.md](https://github.com/ipfs/go-ipfs/tree/master/README.md) is up to date
|
||||
- [ ] Ensure that all the examples we have produced for go-ipfs run without problems
|
||||
- [ ] Update HTTP-API Documentation on the Website using https://github.com/ipfs/http-api-docs
|
||||
- [ ] Update [CLI Documentation](https://github.com/ipfs/ipfs-docs/blob/master/docs/reference/cli.md) on the Website using https://github.com/ipfs-inactive/docs/blob/master/scripts/cli.sh
|
||||
- [ ] Invite the IPFS [_early testers_](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md) to deploy the release to part of their production infrastructure.
|
||||
- [ ] Update docs by merging the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls (they are auto-created every 12 hours)
|
||||
- [ ] Invite the wider community through (link to the release issue):
|
||||
- [ ] [discuss.ipfs.io](https://discuss.ipfs.io/c/announcements)
|
||||
- [ ] Twitter
|
||||
- [ ] IRC
|
||||
- [ ] **Stage 4 - Release**
|
||||
- [ ] Matrix
|
||||
- [ ] **Stage 3 - Release**
|
||||
- [ ] Final preparation
|
||||
- [ ] Verify that version string in [`version.go`](https://github.com/ipfs/go-ipfs/tree/master/version.go) has been updated.
|
||||
- [ ] Merge `release-vX.Y.Z` into the `release` branch.
|
||||
@ -93,15 +77,16 @@ Checklist:
|
||||
- [ ] Release published
|
||||
- [ ] to [dist.ipfs.io](https://dist.ipfs.io)
|
||||
- [ ] to [npm-go-ipfs](https://github.com/ipfs/npm-go-ipfs)
|
||||
- [ ] to [chocolatey](https://chocolatey.org/packages/ipfs)
|
||||
- [ ] to [chocolatey](https://chocolatey.org/packages/go-ipfs)
|
||||
- [ ] to [snap](https://snapcraft.io/ipfs)
|
||||
- [ ] to [github](https://github.com/ipfs/go-ipfs/releases)
|
||||
- [ ] use the artifacts built in CI for dist.ipfs.io
|
||||
- [ ] to [arch](https://www.archlinux.org/packages/community/x86_64/go-ipfs/) (flag it out of date)
|
||||
- [ ] Cut a new ipfs-desktop release
|
||||
- [ ] Publish a Release Blog post (at minimum, a c&p of this release issue with all the highlights, API changes, link to changelog and thank yous)
|
||||
- [ ] Submit [this form](https://airtable.com/shrNH8YWole1xc70I) to publish a blog post, linking to the GitHub release notes
|
||||
- [ ] Broadcasting (link to blog post)
|
||||
- [ ] Twitter
|
||||
- [ ] IRC
|
||||
- [ ] Twitter (request in Slack channel #pl-marketing-requests)
|
||||
- [ ] Matrix
|
||||
- [ ] [Reddit](https://reddit.com/r/ipfs)
|
||||
- [ ] [discuss.ipfs.io](https://discuss.ipfs.io/c/announcements)
|
||||
- [ ] Announce it on the [IPFS Users Mailing List](https://groups.google.com/forum/#!forum/ipfs-users)
|
||||
@ -111,7 +96,24 @@ Checklist:
|
||||
- [ ] Make sure any last-minute changelog updates from the blog post make it back into the CHANGELOG.
|
||||
- [ ] Mark PR draft created for IPFS Desktop as ready for review.
|
||||
|
||||
## ❤️ Contributors
|
||||
|
||||
## ⁉️ Do you have questions?
|
||||
|
||||
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
|
||||
|
||||
## Release improvements for next time
|
||||
|
||||
< Add any release improvements that were observed this cycle here so they can get incorporated into future releases. >
|
||||
|
||||
## Items for a separate comment
|
||||
|
||||
< Do these as a separate comment to avoid the main issue from getting too large and checkbox updates taking too long. >
|
||||
|
||||
### Changelog
|
||||
|
||||
< changelog generated by bin/mkreleaselog >
|
||||
|
||||
### ❤️ Contributors
|
||||
|
||||
< list generated by bin/mkreleaselog >
|
||||
|
||||
@ -122,7 +124,3 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
|
||||
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
|
||||
- Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers.
|
||||
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
|
||||
|
||||
## ⁉️ Do you have questions?
|
||||
|
||||
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
|
||||
|
||||
295
docs/config.md
295
docs/config.md
@ -21,6 +21,7 @@ config file at runtime.
|
||||
- [`Addresses.Gateway`](#addressesgateway)
|
||||
- [`Addresses.Swarm`](#addressesswarm)
|
||||
- [`Addresses.Announce`](#addressesannounce)
|
||||
- [`Addresses.AppendAnnounce`](#addressesappendannounce)
|
||||
- [`Addresses.NoAnnounce`](#addressesnoannounce)
|
||||
- [`API`](#api)
|
||||
- [`API.HTTPHeaders`](#apihttpheaders)
|
||||
@ -68,6 +69,7 @@ config file at runtime.
|
||||
- [`Ipns.RepublishPeriod`](#ipnsrepublishperiod)
|
||||
- [`Ipns.RecordLifetime`](#ipnsrecordlifetime)
|
||||
- [`Ipns.ResolveCacheSize`](#ipnsresolvecachesize)
|
||||
- [`Ipns.UsePubsub`](#ipnsusepubsub)
|
||||
- [`Migration`](#migration)
|
||||
- [`Migration.DownloadSources`](#migrationdownloadsources)
|
||||
- [`Migration.Keep`](#migrationkeep)
|
||||
@ -86,6 +88,7 @@ config file at runtime.
|
||||
- [`Pinning.RemoteServices: Policies.MFS.PinName`](#pinningremoteservices-policiesmfspinname)
|
||||
- [`Pinning.RemoteServices: Policies.MFS.RepinInterval`](#pinningremoteservices-policiesmfsrepininterval)
|
||||
- [`Pubsub`](#pubsub)
|
||||
- [`Pubsub.Enabled`](#pubsubenabled)
|
||||
- [`Pubsub.Router`](#pubsubrouter)
|
||||
- [`Pubsub.DisableSigning`](#pubsubdisablesigning)
|
||||
- [`Peering`](#peering)
|
||||
@ -99,11 +102,23 @@ config file at runtime.
|
||||
- [`Swarm.AddrFilters`](#swarmaddrfilters)
|
||||
- [`Swarm.DisableBandwidthMetrics`](#swarmdisablebandwidthmetrics)
|
||||
- [`Swarm.DisableNatPortMap`](#swarmdisablenatportmap)
|
||||
- [`Swarm.DisableRelay`](#swarmdisablerelay)
|
||||
- [`Swarm.EnableRelayHop`](#swarmenablerelayhop)
|
||||
- [`Swarm.EnableHolePunching`](#swarmenableholepunching)
|
||||
- [`Swarm.EnableAutoRelay`](#swarmenableautorelay)
|
||||
- [Mode 1: `EnableRelayHop` is `false`](#mode-1-enablerelayhop-is-false)
|
||||
- [Mode 2: `EnableRelayHop` is `true`](#mode-2-enablerelayhop-is-true)
|
||||
- [`Swarm.RelayClient`](#swarmrelayclient)
|
||||
- [`Swarm.RelayClient.Enabled`](#swarmrelayclientenabled)
|
||||
- [`Swarm.RelayClient.StaticRelays`](#swarmrelayclientstaticrelays)
|
||||
- [`Swarm.RelayService`](#swarmrelayservice)
|
||||
- [`Swarm.RelayService.Enabled`](#swarmrelayserviceenabled)
|
||||
- [`Swarm.RelayService.ConnectionDurationLimit`](#swarmrelayserviceconnectiondurationlimit)
|
||||
- [`Swarm.RelayService.ConnectionDataLimit`](#swarmrelayserviceconnectiondatalimit)
|
||||
- [`Swarm.RelayService.ReservationTTL`](#swarmrelayservicereservationttl)
|
||||
- [`Swarm.RelayService.MaxReservations`](#swarmrelayservicemaxreservations)
|
||||
- [`Swarm.RelayService.MaxCircuits`](#swarmrelayservicemaxcircuits)
|
||||
- [`Swarm.RelayService.BufferSize`](#swarmrelayservicebuffersize)
|
||||
- [`Swarm.RelayService.MaxReservationsPerPeer`](#swarmrelayservicemaxreservationsperpeer)
|
||||
- [`Swarm.RelayService.MaxReservationsPerIP`](#swarmrelayservicemaxreservationsperip)
|
||||
- [`Swarm.RelayService.MaxReservationsPerASN`](#swarmrelayservicemaxreservationsperasn)
|
||||
- [`Swarm.DisableRelay`](#swarmdisablerelay)
|
||||
- [`Swarm.EnableAutoNATService`](#swarmenableautonatservice)
|
||||
- [`Swarm.ConnMgr`](#swarmconnmgr)
|
||||
- [`Swarm.ConnMgr.Type`](#swarmconnmgrtype)
|
||||
@ -325,8 +340,19 @@ Default: `[]`
|
||||
|
||||
Type: `array[string]` (multiaddrs)
|
||||
|
||||
### `Addresses.AppendAnnounce`
|
||||
|
||||
Similar to [`Addresses.Announce`](#addressesannounce) except this doesn't
|
||||
override inferred swarm addresses if non-empty.
|
||||
|
||||
Default: `[]`
|
||||
|
||||
Type: `array[string]` (multiaddrs)
|
||||
|
||||
### `Addresses.NoAnnounce`
|
||||
|
||||
An array of swarm addresses not to announce to the network.
|
||||
Takes precedence over `Addresses.Announce` and `Addresses.AppendAnnounce`.
|
||||
|
||||
Default: `[]`
|
||||
|
||||
@ -923,6 +949,16 @@ Default: `128`
|
||||
|
||||
Type: `integer` (non-negative, 0 means the default)
|
||||
|
||||
### `Ipns.UsePubsub`
|
||||
|
||||
Enables IPFS over pubsub experiment for publishing IPNS records in real time.
|
||||
|
||||
**EXPERIMENTAL:** read about current limitations at [experimental-features.md#ipns-pubsub](./experimental-features.md#ipns-pubsub).
|
||||
|
||||
Default: `disabled`
|
||||
|
||||
Type: `flag`
|
||||
|
||||
## `Migration`
|
||||
|
||||
Migration configures how migrations are downloaded and if the downloads are added to IPFS locally.
|
||||
@ -1055,7 +1091,18 @@ Type: `duration`
|
||||
## `Pubsub`
|
||||
|
||||
Pubsub configures the `ipfs pubsub` subsystem. To use, it must be enabled by
|
||||
passing the `--enable-pubsub-experiment` flag to the daemon.
|
||||
passing the `--enable-pubsub-experiment` flag to the daemon
|
||||
or via the `Pubsub.Enabled` flag below.
|
||||
|
||||
### `Pubsub.Enabled`
|
||||
|
||||
**EXPERIMENTAL:** read about current limitations at [experimental-features.md#ipfs-pubsub](./experimental-features.md#ipfs-pubsub).
|
||||
|
||||
Enables the pubsub system.
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `flag`
|
||||
|
||||
### `Pubsub.Router`
|
||||
|
||||
@ -1268,6 +1315,181 @@ Default: `false`
|
||||
|
||||
Type: `bool`
|
||||
|
||||
### `Swarm.EnableHolePunching`
|
||||
|
||||
Enable hole punching for NAT traversal
|
||||
when port forwarding is not possible.
|
||||
|
||||
When enabled, go-ipfs will coordinate with the counterparty using
|
||||
a [relayed connection](https://github.com/libp2p/specs/blob/master/relay/circuit-v2.md),
|
||||
to [upgrade to a direct connection](https://github.com/libp2p/specs/blob/master/relay/DCUtR.md)
|
||||
through a NAT/firewall whenever possible.
|
||||
This feature requires `Swarm.RelayClient.Enabled` to be set to `true`.
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `flag`
|
||||
|
||||
### `Swarm.EnableAutoRelay`
|
||||
|
||||
Deprecated: Set `Swarm.RelayClient.Enabled` to `true`.
|
||||
|
||||
Enables "automatic relay user" mode for this node.
|
||||
|
||||
Your node will automatically _use_ public relays from the network if it detects
|
||||
that it cannot be reached from the public internet (e.g., it's behind a
|
||||
firewall) and get a `/p2p-circuit` address from a public relay.
|
||||
|
||||
This is likely the feature you're looking for, but see also:
|
||||
- [`Swarm.RelayService.Enabled`](#swarmrelayserviceenabled) if your node should act as a limited relay for other peers
|
||||
- Docs: [Libp2p Circuit Relay](https://docs.libp2p.io/concepts/circuit-relay/)
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `bool`
|
||||
|
||||
### `Swarm.RelayClient`
|
||||
|
||||
Configuration options for the relay client to use relay services.
|
||||
|
||||
Default: `{}`
|
||||
|
||||
Type: `object`
|
||||
|
||||
#### `Swarm.RelayClient.Enabled`
|
||||
|
||||
Enables "automatic relay user" mode for this node.
|
||||
|
||||
Your node will automatically _use_ public relays from the network if it detects
|
||||
that it cannot be reached from the public internet (e.g., it's behind a
|
||||
firewall) and get a `/p2p-circuit` address from a public relay.
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `bool`
|
||||
|
||||
#### `Swarm.RelayClient.StaticRelays`
|
||||
|
||||
Your node will use these statically configured relay servers instead of
|
||||
discovering public relays from the network.
|
||||
|
||||
Default: `[]`
|
||||
|
||||
Type: `array[string]`
|
||||
|
||||
### `Swarm.RelayService`
|
||||
|
||||
Configuration options for the relay service that can be provided to _other_ peers
|
||||
on the network ([Circuit Relay v2](https://github.com/libp2p/specs/blob/master/relay/circuit-v2.md)).
|
||||
|
||||
Default: `{}`
|
||||
|
||||
Type: `object`
|
||||
|
||||
#### `Swarm.RelayService.Enabled`
|
||||
|
||||
Enables providing `/p2p-circuit` v2 relay service to other peers on the network.
|
||||
|
||||
NOTE: This is the service/server part of the relay system.
|
||||
Disabling this will prevent this node from running as a relay server.
|
||||
Use [`Swarm.EnableAutoRelay`](#swarmenableautorelay) for turning your node into a relay user.
|
||||
|
||||
Default: Enabled
|
||||
|
||||
Type: `flag`
|
||||
|
||||
#### `Swarm.RelayService.Limit`
|
||||
|
||||
Limits applied to every relayed connection.
|
||||
|
||||
Default: `{}`
|
||||
|
||||
Type: `object[string -> string]`
|
||||
|
||||
##### `Swarm.RelayService.ConnectionDurationLimit`
|
||||
|
||||
Time limit before a relayed connection is reset.
|
||||
|
||||
Default: `"2m"`
|
||||
|
||||
Type: `duration`
|
||||
|
||||
##### `Swarm.RelayService.ConnectionDataLimit`
|
||||
|
||||
Limit of data relayed (in each direction) before a relayed connection is reset.
|
||||
|
||||
Default: `131072` (128 kb)
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
|
||||
#### `Swarm.RelayService.ReservationTTL`
|
||||
|
||||
Duration of a new or refreshed reservation.
|
||||
|
||||
Default: `"1h"`
|
||||
|
||||
Type: `duration`
|
||||
|
||||
|
||||
#### `Swarm.RelayService.MaxReservations`
|
||||
|
||||
Maximum number of active relay slots.
|
||||
|
||||
Default: `128`
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
|
||||
#### `Swarm.RelayService.MaxReservations`
|
||||
|
||||
Maximum number of open relay connections for each peer.
|
||||
|
||||
Default: `16`
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
|
||||
#### `Swarm.RelayService.BufferSize`
|
||||
|
||||
Size of the relayed connection buffers.
|
||||
|
||||
Default: `2048`
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
|
||||
#### `Swarm.RelayService.MaxReservationsPerPeer`
|
||||
|
||||
Maximum number of reservations originating from the same peer.
|
||||
|
||||
Default: `4`
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
|
||||
#### `Swarm.RelayService.MaxReservationsPerIP`
|
||||
|
||||
Maximum number of reservations originating from the same IP.
|
||||
|
||||
Default: `8`
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
#### `Swarm.RelayService.MaxReservationsPerASN`
|
||||
|
||||
Maximum number of reservations originating from the same ASN.
|
||||
|
||||
Default: `32`
|
||||
|
||||
Type: `optionalInteger`
|
||||
|
||||
### `Swarm.EnableRelayHop`
|
||||
|
||||
**REMOVED**
|
||||
|
||||
Replaced with [`Swarm.RelayService.Enabled`](#swarmrelayserviceenabled).
|
||||
|
||||
### `Swarm.DisableRelay`
|
||||
|
||||
Deprecated: Set `Swarm.Transports.Network.Relay` to `false`.
|
||||
@ -1280,51 +1502,11 @@ Default: `false`
|
||||
|
||||
Type: `bool`
|
||||
|
||||
### `Swarm.EnableRelayHop`
|
||||
|
||||
Configures this node to act as a relay "hop". A relay "hop" relays traffic for other peers.
|
||||
|
||||
WARNING: Do not enable this option unless you know what you're doing. Other
|
||||
peers will randomly decide to use your node as a relay and consume _all_
|
||||
available bandwidth. There is _no_ rate-limiting.
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `bool`
|
||||
|
||||
### `Swarm.EnableAutoRelay`
|
||||
|
||||
Enables "automatic relay" mode for this node. This option does two _very_
|
||||
different things based on the `Swarm.EnableRelayHop`. See
|
||||
[#7228](https://github.com/ipfs/go-ipfs/issues/7228) for context.
|
||||
|
||||
Default: `false`
|
||||
|
||||
Type: `bool`
|
||||
|
||||
#### Mode 1: `EnableRelayHop` is `false`
|
||||
|
||||
If `Swarm.EnableAutoRelay` is enabled and `Swarm.EnableRelayHop` is disabled,
|
||||
your node will automatically _use_ public relays from the network if it detects
|
||||
that it cannot be reached from the public internet (e.g., it's behind a
|
||||
firewall). This is likely the feature you're looking for.
|
||||
|
||||
If you enable `EnableAutoRelay`, you should almost certainly disable
|
||||
`EnableRelayHop`.
|
||||
|
||||
#### Mode 2: `EnableRelayHop` is `true`
|
||||
|
||||
If `EnableAutoRelay` is enabled and `EnableRelayHop` is enabled, your node will
|
||||
_act_ as a public relay for the network. Furthermore, in addition to simply
|
||||
relaying traffic, your node will advertise itself as a public relay. Unless you
|
||||
have the bandwidth of a small ISP, do not enable both of these options at the
|
||||
same time.
|
||||
|
||||
### `Swarm.EnableAutoNATService`
|
||||
|
||||
**REMOVED**
|
||||
|
||||
Please use [`AutoNAT.ServiceMode`][].
|
||||
Please use [`AutoNAT.ServiceMode`][#autonatservicemode].
|
||||
|
||||
### `Swarm.ConnMgr`
|
||||
|
||||
@ -1470,16 +1652,25 @@ Listen Addresses:
|
||||
#### `Swarm.Transports.Network.Relay`
|
||||
|
||||
[Libp2p Relay](https://github.com/libp2p/specs/tree/master/relay) proxy
|
||||
transport that forms connections by hopping between multiple libp2p nodes. This
|
||||
transport is primarily useful for bypassing firewalls and NATs.
|
||||
transport that forms connections by hopping between multiple libp2p nodes.
|
||||
Allows IPFS node to connect to other peers using their `/p2p-circuit`
|
||||
multiaddrs. This transport is primarily useful for bypassing firewalls and
|
||||
NATs.
|
||||
|
||||
See also:
|
||||
- Docs: [Libp2p Circuit Relay](https://docs.libp2p.io/concepts/circuit-relay/)
|
||||
- [`Swarm.EnableAutoRelay`](#swarmenableautorelay) for getting a public
|
||||
`/p2p-circuit` address when behind a firewall.
|
||||
- [`Swarm.RelayService.Enabled`](#swarmrelayserviceenabled) for becoming a
|
||||
limited relay for other peers
|
||||
|
||||
Default: Enabled
|
||||
|
||||
Type: `flag`
|
||||
|
||||
Listen Addresses: This transport is special. Any node that enables this
|
||||
transport can receive inbound connections on this transport, without specifying
|
||||
a listen address.
|
||||
Listen Addresses:
|
||||
* This transport is special. Any node that enables this transport can receive
|
||||
inbound connections on this transport, without specifying a listen address.
|
||||
|
||||
### `Swarm.Transports.Security`
|
||||
|
||||
@ -1589,7 +1780,7 @@ Example:
|
||||
|
||||
Be mindful that:
|
||||
- Currently only `https://` URLs for [DNS over HTTPS (DoH)](https://en.wikipedia.org/wiki/DNS_over_HTTPS) endpoints are supported as values.
|
||||
- The default catch-all resolver is the cleartext one provided by your operating system. It can be overriden by adding a DoH entry for the DNS root indicated by `.` as illustrated above.
|
||||
- The default catch-all resolver is the cleartext one provided by your operating system. It can be overridden by adding a DoH entry for the DNS root indicated by `.` as illustrated above.
|
||||
- Out-of-the-box support for selected decentralized TLDs relies on a [centralized service which is provided on best-effort basis](https://www.cloudflare.com/distributed-web-gateway-terms/). The implicit DoH resolvers are:
|
||||
```json
|
||||
{
|
||||
|
||||
@ -1,13 +1,11 @@
|
||||
# go-ipfs environment variables
|
||||
|
||||
## `LIBP2P_TCP_REUSEPORT` (`IPFS_REUSEPORT`)
|
||||
## `LIBP2P_TCP_REUSEPORT`
|
||||
|
||||
go-ipfs tries to reuse the same source port for all connections to improve NAT
|
||||
traversal. If this is an issue, you can disable it by setting
|
||||
`LIBP2P_TCP_REUSEPORT` to false.
|
||||
|
||||
This variable was previously `IPFS_REUSEPORT`.
|
||||
|
||||
Default: true
|
||||
|
||||
## `IPFS_PATH`
|
||||
|
||||
@ -3,12 +3,10 @@ module github.com/ipfs/go-ipfs/examples/go-ipfs-as-a-library
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/ipfs/go-ipfs v0.9.1
|
||||
github.com/ipfs/go-ipfs v0.10.0
|
||||
github.com/ipfs/go-ipfs-config v0.16.0
|
||||
github.com/ipfs/go-ipfs-files v0.0.8
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.1
|
||||
github.com/libp2p/go-libp2p-core v0.9.0
|
||||
github.com/libp2p/go-libp2p-core v0.11.0
|
||||
github.com/multiformats/go-multiaddr v0.4.0
|
||||
)
|
||||
|
||||
replace github.com/ipfs/go-ipfs => ./../../..
|
||||
|
||||
@ -113,8 +113,6 @@ github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7
|
||||
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ=
|
||||
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
|
||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
@ -441,6 +439,8 @@ github.com/ipfs/go-fs-lock v0.0.7 h1:6BR3dajORFrFTkb5EpCUFIAypsoxpGpDSVUdFwzgL9U
|
||||
github.com/ipfs/go-fs-lock v0.0.7/go.mod h1:Js8ka+FNYmgQRLrRXzU3CB/+Csr1BwrRilEcvYrHhhc=
|
||||
github.com/ipfs/go-graphsync v0.8.0 h1:Zhh6QdTqdipYHD71ncLO8eA6c8EGUTOoJ4Rqybw3K+o=
|
||||
github.com/ipfs/go-graphsync v0.8.0/go.mod h1:CLxN859dUTcXCav1DvNvmAUWPZfmNLjlGLJYy+c3dlM=
|
||||
github.com/ipfs/go-ipfs v0.10.0 h1:+b6QNlNvYTTEUPIFab484t1Ubylz+fBczIK+q0UV62Q=
|
||||
github.com/ipfs/go-ipfs v0.10.0/go.mod h1:HsnRkQdpruG6JMaycJyrlLwJdduw1dJv2rEPgWxdJvA=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ=
|
||||
@ -465,7 +465,6 @@ github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFq
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.0.1 h1:P56jYKZF7lDDOLx5SotVh5KFxoY6C81I1NSHW1FxGew=
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0=
|
||||
github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4=
|
||||
github.com/ipfs/go-ipfs-files v0.0.8 h1:8o0oFJkJ8UkO/ABl8T6ac6tKF3+NIpj67aAB6ZpusRg=
|
||||
github.com/ipfs/go-ipfs-files v0.0.8/go.mod h1:wiN/jSG8FKyk7N0WyctKSvq3ljIa2NNTiZB55kpTdOs=
|
||||
github.com/ipfs/go-ipfs-keystore v0.0.2 h1:Fa9xg9IFD1VbiZtrNLzsD0GuELVHUFXCWF64kCPfEXU=
|
||||
github.com/ipfs/go-ipfs-keystore v0.0.2/go.mod h1:H49tRmibOEs7gLMgbOsjC4dqh1u5e0R/SWuc2ScfgSo=
|
||||
@ -639,8 +638,9 @@ github.com/libp2p/go-conn-security v0.0.1/go.mod h1:bGmu51N0KU9IEjX7kl2PQjgZa40J
|
||||
github.com/libp2p/go-conn-security-multistream v0.0.2/go.mod h1:nc9vud7inQ+d6SO0I/6dSWrdMnHnzZNHeyUQqrAJulE=
|
||||
github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.1 h1:ft6/POSK7F+vl/2qzegnHDaXFU0iWB4yVTYrioC6Zy0=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70=
|
||||
github.com/libp2p/go-conn-security-multistream v0.3.0 h1:9UCIKlBL1hC9u7nkMXpD1nkc/T53PKMAn3/k9ivBAVc=
|
||||
github.com/libp2p/go-conn-security-multistream v0.3.0/go.mod h1:EEP47t4fw/bTelVmEzIDqSe69hO/ip52xBEhZMLWAHM=
|
||||
github.com/libp2p/go-doh-resolver v0.3.1 h1:1wbVGkB4Tdj4WEvjAuYknOPyt4vSSDn9thnj13pKPaY=
|
||||
github.com/libp2p/go-doh-resolver v0.3.1/go.mod h1:y5go1ZppAq9N2eppbX0xON01CyPBeUg2yS6BTssssog=
|
||||
github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4=
|
||||
@ -662,10 +662,11 @@ github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t
|
||||
github.com/libp2p/go-libp2p v0.14.0/go.mod h1:dsQrWLAoIn+GkHPN/U+yypizkHiB9tnv79Os+kSgQ4Q=
|
||||
github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0=
|
||||
github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM=
|
||||
github.com/libp2p/go-libp2p v0.15.0 h1:jbMbdmtizfpvl1+oQuGJzfGhttAtuxUCavF3enwFncg=
|
||||
github.com/libp2p/go-libp2p v0.15.0/go.mod h1:8Ljmwon0cZZYKrOCjFeLwQEK8bqR42dOheUZ1kSKhP0=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052 h1:BM7aaOF7RpmNn9+9g6uTjGJ0cTzWr5j9i9IKeun2M8U=
|
||||
github.com/libp2p/go-libp2p v0.15.0-rc.1.0.20211021081216-db8f9c6fddb5 h1:nE20CmFlCbwN56/3bADccjHEvbM9E9hFe7Y+0ebdpig=
|
||||
github.com/libp2p/go-libp2p v0.15.0-rc.1.0.20211021081216-db8f9c6fddb5/go.mod h1:P+WgjkSS2d8eBj+NvkyKo0nb8fJAC04G+cCex0ZMcvI=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.1.0 h1:rABPCO77SjdbJ/eJ/ynIo8vWICy1VEnL5JAxJbQLo1E=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I=
|
||||
github.com/libp2p/go-libp2p-autonat v0.0.6/go.mod h1:uZneLdOkZHro35xIhpbtTzLlgYturpu4J5+0cZK3MqE=
|
||||
github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8=
|
||||
github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE=
|
||||
@ -673,8 +674,9 @@ github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQ
|
||||
github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI=
|
||||
github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.0/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.2 h1:YMp7StMi2dof+baaxkbxaizXjY1RPvU71CXfxExzcUU=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk=
|
||||
github.com/libp2p/go-libp2p-autonat v0.5.0 h1:/+3+4NcQV47DQ/duvRyFDP8oxv6CQTvSKYD5iWoPcYs=
|
||||
github.com/libp2p/go-libp2p-autonat v0.5.0/go.mod h1:085tmmuXn0nXgFwuF7a2tt4UxgTjuapbuml27v4htKY=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.0.1/go.mod h1:Ibpbw/7cPPYwFb7PACIWdvxxv0t0XCCI10t7czjAjTc=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU=
|
||||
@ -714,8 +716,10 @@ github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJB
|
||||
github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
|
||||
github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
|
||||
github.com/libp2p/go-libp2p-core v0.8.6/go.mod h1:dgHr0l0hIKfWpGpqAMbpo19pen9wJfdCGv51mTmdpmM=
|
||||
github.com/libp2p/go-libp2p-core v0.9.0 h1:t97Mv0LIBZlP2FXVRNKKVzHJCIjbIWGxYptGId4+htU=
|
||||
github.com/libp2p/go-libp2p-core v0.9.0/go.mod h1:ESsbz31oC3C1AvMJoGx26RTuCkNhmkSRCqZ0kQtJ2/8=
|
||||
github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg=
|
||||
github.com/libp2p/go-libp2p-core v0.11.0 h1:75jAgdA+IChNa+/mZXogfmrGkgwxkVvxmIC7pV+F6sI=
|
||||
github.com/libp2p/go-libp2p-core v0.11.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg=
|
||||
github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE=
|
||||
github.com/libp2p/go-libp2p-crypto v0.0.2/go.mod h1:eETI5OUfBnvARGOHrJz2eWNyTUxEGZnBxMcbUjfIj4I=
|
||||
github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI=
|
||||
@ -755,8 +759,9 @@ github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aD
|
||||
github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.6 h1:wMWis3kYynCbHoyKLPBEMu4YRLltbm8Mk08HGSfvTkU=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw=
|
||||
github.com/libp2p/go-libp2p-nat v0.1.0 h1:vigUi2MEN+fwghe5ijpScxtbbDz+L/6y8XwlzYOJgSY=
|
||||
github.com/libp2p/go-libp2p-nat v0.1.0/go.mod h1:DQzAG+QbDYjN1/C3B6vXucLtz3u9rEonLVPtZVzQqks=
|
||||
github.com/libp2p/go-libp2p-net v0.0.1/go.mod h1:Yt3zgmlsHOgUWSXmt5V/Jpz9upuJBE8EgNU9DrCcR8c=
|
||||
github.com/libp2p/go-libp2p-net v0.0.2/go.mod h1:Yt3zgmlsHOgUWSXmt5V/Jpz9upuJBE8EgNU9DrCcR8c=
|
||||
github.com/libp2p/go-libp2p-netutil v0.0.1/go.mod h1:GdusFvujWZI9Vt0X5BKqwWWmZFxecf9Gt03cKxm2f/Q=
|
||||
@ -764,8 +769,8 @@ github.com/libp2p/go-libp2p-netutil v0.1.0 h1:zscYDNVEcGxyUpMd0JReUZTrpMfia8PmLK
|
||||
github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU=
|
||||
github.com/libp2p/go-libp2p-noise v0.1.1/go.mod h1:QDFLdKX7nluB7DEnlVPbz7xlLHdwHFA9HiohJRr3vwM=
|
||||
github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q=
|
||||
github.com/libp2p/go-libp2p-noise v0.2.2 h1:MRt5XGfYziDXIUy2udtMWfPmzZqUDYoC1FZoKnqPzwk=
|
||||
github.com/libp2p/go-libp2p-noise v0.2.2/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q=
|
||||
github.com/libp2p/go-libp2p-noise v0.3.0 h1:NCVH7evhVt9njbTQshzT7N1S3Q6fjj9M11FCgfH5+cA=
|
||||
github.com/libp2p/go-libp2p-noise v0.3.0/go.mod h1:JNjHbociDJKHD64KTkzGnzqJ0FEV5gHJa6AB00kbCNQ=
|
||||
github.com/libp2p/go-libp2p-peer v0.0.1/go.mod h1:nXQvOBbwVqoP+T5Y5nCjeH4sP9IX/J0AMzcDUVruVoo=
|
||||
github.com/libp2p/go-libp2p-peer v0.1.1/go.mod h1:jkF12jGB4Gk/IOo+yomm+7oLWxF278F7UnrYUQ1Q8es=
|
||||
github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY=
|
||||
@ -779,8 +784,9 @@ github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRj
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.8 h1:nJghUlUkFVvyk7ccsM67oFA6kqUkwyCM1G4WPVMCWYA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.8/go.mod h1:gGiPlXdz7mIHd2vfAsHzBNAMqSDkt2UBFwgcITgw1lA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.3.0 h1:wp/G0+37+GLr7tu+wE+4GWNrA3uxKg6IPRigIMSS5oQ=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.3.0/go.mod h1:fNX9WlOENMvdx/YD7YO/5Hkrn8+lQIk5A39BHa1HIrM=
|
||||
github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k=
|
||||
github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA=
|
||||
github.com/libp2p/go-libp2p-protocol v0.0.1/go.mod h1:Af9n4PiruirSDjHycM1QuiMi/1VZNHYcK8cLgFJLZ4s=
|
||||
@ -792,8 +798,9 @@ github.com/libp2p/go-libp2p-pubsub-router v0.4.0 h1:KjzTLIOBCt0+/4wH6epTxD/Qu4Up
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.4.0/go.mod h1:hs0j0ugcBjMOMgJ6diOlZM2rZEId/w5Gg86E+ac4SmQ=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.11.2/go.mod h1:wlanzKtIh6pHrq+0U3p3DY9PJfGqxMgPaGKaK5LifwQ=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.12.0 h1:7IjDH4XNkmJbOMD+mxRloTe4LzMTq+vqvm2nYNL1N7M=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.12.0/go.mod h1:EKHqxZbWE/FhDJZ6ebyZ/4v3X9zyuuuKIN0XR9vANT0=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.13.0/go.mod h1:39/ZWJ1TW/jx1iFkKzzUg00W6tDJh73FC0xYudjr7Hc=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.14.0 h1:sBjT/8zKv8otFZh3Uhdxl91BhwXwuHAOB5lJgbT2zyk=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.14.0/go.mod h1:/W4njiXIRowKk62w6j4y4dVpBZvEk9WtGOtOYh2M6J8=
|
||||
github.com/libp2p/go-libp2p-record v0.0.1/go.mod h1:grzqg263Rug/sRex85QrDOLntdFAymLDLm7lxMgU79Q=
|
||||
github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q=
|
||||
github.com/libp2p/go-libp2p-record v0.1.1/go.mod h1:VRgKajOyMVgP/F0L5g3kH7SVskp17vFi2xheb5uMJtg=
|
||||
@ -817,8 +824,9 @@ github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJeg
|
||||
github.com/libp2p/go-libp2p-swarm v0.3.1/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk=
|
||||
github.com/libp2p/go-libp2p-swarm v0.4.0/go.mod h1:XVFcO52VoLoo0eitSxNQWYq4D6sydGOweTOAjJNraCw=
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4=
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.3 h1:hsYaD/y6+kZff1o1Mc56NcuwSg80lIphTS/zDk3mO4M=
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.3/go.mod h1:NBn7eNW2lu568L7Ns9wdFrOhgRlkRnIDg0FLKbuu3i8=
|
||||
github.com/libp2p/go-libp2p-swarm v0.7.0 h1:ZohJ/XtPP0O73Y1BeCvRRfBcoBfZkqRiKmBwKQfnYGg=
|
||||
github.com/libp2p/go-libp2p-swarm v0.7.0/go.mod h1:Ii3RNGBC+CMIO3BzK/hmzzriJUOkCVT7viOd+alyEPY=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.1/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
@ -828,11 +836,12 @@ github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eq
|
||||
github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc=
|
||||
github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.2 h1:IOiA5mMigi+eEjf4J+B7fepDhsjtsoWA9QbsCqbNp5U=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.2/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0=
|
||||
github.com/libp2p/go-libp2p-testing v0.5.0 h1:bTjC29TTQ/ODq0ld3+0KLq3irdA5cAH3OMbRi0/QsvE=
|
||||
github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A=
|
||||
github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M=
|
||||
github.com/libp2p/go-libp2p-tls v0.2.0 h1:N8i5wPiHudA+02sfW85R2nUbybPm7agjAywZc6pd3xA=
|
||||
github.com/libp2p/go-libp2p-tls v0.2.0/go.mod h1:twrp2Ci4lE2GYspA1AnlYm+boYjqVruxDKJJj7s6xrc=
|
||||
github.com/libp2p/go-libp2p-tls v0.3.0 h1:8BgvUJiOTcj0Gp6XvEicF0rL5aUtRg/UzEdeZDmDlC8=
|
||||
github.com/libp2p/go-libp2p-tls v0.3.0/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY=
|
||||
github.com/libp2p/go-libp2p-transport v0.0.1/go.mod h1:UzbUs9X+PHOSw7S3ZmeOxfnwaQY5vGDzZmKPod3N3tk=
|
||||
github.com/libp2p/go-libp2p-transport v0.0.5/go.mod h1:StoY3sx6IqsP6XKoabsPnHCwqKXWUMWU7Rfcsubee/A=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.0.4/go.mod h1:RGq+tupk+oj7PzL2kn/m1w6YXxcIAYJYeI90h6BGgUc=
|
||||
@ -842,8 +851,9 @@ github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.0/go.mod h1:J4ko0ObtZSmgn5BX5AmegP+dK3CSnU2lMCKsSq/EY0s=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.3/go.mod h1:bpkldbOWXMrXhpZbSV1mQxTrefOg2Fi+k1ClDSA4ppw=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.6 h1:SHt3g0FslnqIkEWF25YOB8UCOCTpGAVvHRWQYJ+veiI=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.6/go.mod h1:JE0WQuQdy+uLZ5zOaI3Nw9dWGYJIA7mywEtP2lMvnyk=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.5.0 h1:7SDl3O2+AYOgfE40Mis83ClpfGNkNA6m4FwhbOHs+iI=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.5.0/go.mod h1:Rc+XODlB3yce7dvFV4q/RmyJGsFcCZRkeZMu/Zdg0mo=
|
||||
github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db h1:EDoDKW8ZAHd6SIDeo+thU51PyQppqLYkBxx0ObvFj/w=
|
||||
github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY=
|
||||
github.com/libp2p/go-libp2p-yamux v0.1.2/go.mod h1:xUoV/RmYkg6BW/qGxA9XJyg+HzXFYkeXbnhjmnYzKp8=
|
||||
@ -876,12 +886,14 @@ github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ
|
||||
github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.3/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.6 h1:lQ7Uc0kS1wb1EfRxO2Eir/RJoHkHn7t6o+EiwsYIKJA=
|
||||
github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA=
|
||||
github.com/libp2p/go-msgio v0.1.0 h1:8Q7g/528ivAlfXTFWvWhVjTE8XG8sDTkRUKPYh9+5Q8=
|
||||
github.com/libp2p/go-msgio v0.1.0/go.mod h1:eNlv2vy9V2X/kNldcZ+SShFE++o2Yjxwx6RAYsmgJnE=
|
||||
github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI=
|
||||
github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo=
|
||||
github.com/libp2p/go-nat v0.0.5 h1:qxnwkco8RLKqVh1NmjQ+tJ8p8khNLFxuElYG/TwqW4Q=
|
||||
github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU=
|
||||
github.com/libp2p/go-nat v0.1.0 h1:MfVsH6DLcpa04Xr+p8hmVRG4juse0s3J8HyNWYHffXg=
|
||||
github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM=
|
||||
github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A=
|
||||
@ -894,13 +906,15 @@ github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO
|
||||
github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw=
|
||||
github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA=
|
||||
github.com/libp2p/go-reuseport v0.0.2 h1:XSG94b1FJfGA01BUrT82imejHQyTxO4jEWqheyCXYvU=
|
||||
github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ=
|
||||
github.com/libp2p/go-reuseport v0.1.0 h1:0ooKOx2iwyIkf339WCZ2HN3ujTDbkK0PjC7JVoP1AiM=
|
||||
github.com/libp2p/go-reuseport v0.1.0/go.mod h1:bQVn9hmfcTaoo0c9v5pBhOarsU1eNOBZdaAd2hzXRKU=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.5 h1:lJzi+vSYbyJj2faPKLxNGWEIBcaV/uJmyvsUxXy2mLw=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.5/go.mod h1:TC62hhPc8qs5c/RoXDZG6YmjK+/YWUPC0yYmeUecbjc=
|
||||
github.com/libp2p/go-reuseport-transport v0.1.0 h1:C3PHeHjmnz8m6f0uydObj02tMEoi7CyD1zuN7xQT8gc=
|
||||
github.com/libp2p/go-reuseport-transport v0.1.0/go.mod h1:vev0C0uMkzriDY59yFHD9v+ujJvYmDQVLowvAjEOmfw=
|
||||
github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
|
||||
github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
|
||||
github.com/libp2p/go-sockaddr v0.1.1 h1:yD80l2ZOdGksnOyHrhxDdTDFrf7Oy+v3FMVArIRgZxQ=
|
||||
@ -920,8 +934,8 @@ github.com/libp2p/go-tcp-transport v0.2.1/go.mod h1:zskiJ70MEfWz2MKxvFB/Pv+tPIB1
|
||||
github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU=
|
||||
github.com/libp2p/go-tcp-transport v0.2.4/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU=
|
||||
github.com/libp2p/go-tcp-transport v0.2.7/go.mod h1:lue9p1b3VmZj1MhhEGB/etmvF/nBQ0X9CW2DutBT3MM=
|
||||
github.com/libp2p/go-tcp-transport v0.2.8 h1:aLjX+Nkz+kIz3uA56WtlGKRSAnKDvnqKmv1qF4EyyE4=
|
||||
github.com/libp2p/go-tcp-transport v0.2.8/go.mod h1:64rSfVidkYPLqbzpcN2IwHY4pmgirp67h++hZ/rcndQ=
|
||||
github.com/libp2p/go-tcp-transport v0.4.0 h1:VDyg4j6en3OuXf90gfDQh5Sy9KowO9udnd0OU8PP6zg=
|
||||
github.com/libp2p/go-tcp-transport v0.4.0/go.mod h1:0y52Rwrn4076xdJYu/51/qJIdxz+EWDAOG2S45sV3VI=
|
||||
github.com/libp2p/go-testutil v0.0.1/go.mod h1:iAcJc/DKJQanJ5ws2V+u5ywdL2n12X1WbbEG+Jjy69I=
|
||||
github.com/libp2p/go-testutil v0.1.0/go.mod h1:81b2n5HypcVyrCg/MJx4Wgfp/VHojytjVe/gLzZ2Ehc=
|
||||
github.com/libp2p/go-ws-transport v0.0.5/go.mod h1:Qbl4BxPfXXhhd/o0wcrgoaItHqA9tnZjoFZnxykuaXU=
|
||||
@ -946,14 +960,15 @@ github.com/libp2p/go-yamux/v2 v2.0.0/go.mod h1:NVWira5+sVUIU6tu1JWvaRn1dRnG+cawO
|
||||
github.com/libp2p/go-yamux/v2 v2.1.1/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ=
|
||||
github.com/libp2p/go-yamux/v2 v2.2.0 h1:RwtpYZ2/wVviZ5+3pjC8qdQ4TKnrak0/E01N1UWoAFU=
|
||||
github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ=
|
||||
github.com/libp2p/zeroconf/v2 v2.0.0 h1:qYAHAqUVh4hMSfu+iDTZNqH07wLGAvb1+DW4Tx/qUoQ=
|
||||
github.com/libp2p/zeroconf/v2 v2.0.0/go.mod h1:J85R/d9joD8u8F9aHM8pBXygtG9W02enEwS+wWeL6yo=
|
||||
github.com/libp2p/zeroconf/v2 v2.1.1 h1:XAuSczA96MYkVwH+LqqqCUZb2yH3krobMJ1YE+0hG2s=
|
||||
github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs=
|
||||
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
|
||||
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
|
||||
github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8=
|
||||
github.com/lucas-clemente/quic-go v0.21.2/go.mod h1:vF5M1XqhBAHgbjKcJOXY3JZz3GP0T3FQhz/uyOUS38Q=
|
||||
github.com/lucas-clemente/quic-go v0.23.0 h1:5vFnKtZ6nHDFsc/F3uuiF4T3y/AXaQdxjUqiVw26GZE=
|
||||
github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
|
||||
github.com/lucas-clemente/quic-go v0.24.0 h1:ToR7SIIEdrgOhgVTHvPgdVRJfgVy+N0wQAagH7L4d5g=
|
||||
github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
|
||||
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
|
||||
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
|
||||
@ -66,8 +66,6 @@ func createTempRepo() (string, error) {
|
||||
cfg.Experimental.FilestoreEnabled = true
|
||||
// https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#ipfs-urlstore
|
||||
cfg.Experimental.UrlstoreEnabled = true
|
||||
// https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#directory-sharding--hamt
|
||||
cfg.Experimental.ShardingEnabled = true
|
||||
// https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#ipfs-p2p
|
||||
cfg.Experimental.Libp2pStreamMounting = true
|
||||
// https://github.com/ipfs/go-ipfs/blob/master/docs/experimental-features.md#p2p-http-proxy
|
||||
|
||||
@ -38,14 +38,22 @@ Candidate, disabled by default but will be enabled by default in 0.6.0.
|
||||
|
||||
### In Version
|
||||
|
||||
0.4.5
|
||||
0.4.5 (`--enable-pubsub-experiment`)
|
||||
0.11.0 (`Pubsub.Enabled` flag in config)
|
||||
|
||||
### How to enable
|
||||
|
||||
run your daemon with the `--enable-pubsub-experiment` flag. Then use the
|
||||
`ipfs pubsub` commands.
|
||||
Run your daemon with the `--enable-pubsub-experiment` flag
|
||||
or modify your ipfs config and restart the daemon:
|
||||
```
|
||||
ipfs config --json Pubsub.Enabled true
|
||||
```
|
||||
|
||||
Configuration documentation can be found in [./config.md]()
|
||||
Then use the `ipfs pubsub` commands.
|
||||
|
||||
NOTE: `--enable-pubsub-experiment` CLI flag overrides `Pubsub.Enabled` config.
|
||||
|
||||
Configuration documentation can be found in [go-ipfs/docs/config.md](./config.md#pubsub)
|
||||
|
||||
### Road to being a real feature
|
||||
|
||||
@ -402,27 +410,22 @@ See [Plugin docs](./plugins.md)
|
||||
## Directory Sharding / HAMT
|
||||
|
||||
### In Version
|
||||
0.4.8
|
||||
|
||||
- 0.4.8:
|
||||
- Introduced `Experimental.ShardingEnabled` which enabled sharding globally.
|
||||
- All-or-nothing, unnecessary sharding of small directories.
|
||||
|
||||
- 0.11.0 :
|
||||
- Removed support for `Experimental.ShardingEnabled`
|
||||
- Replaced with automatic sharding based on the block size
|
||||
|
||||
### State
|
||||
Experimental
|
||||
|
||||
Allows creating directories with an unlimited number of entries.
|
||||
Replaced by autosharding.
|
||||
|
||||
**Caveats:**
|
||||
1. right now it is a GLOBAL FLAG which will impact the final CID of all directories produced by `ipfs.add` (even the small ones)
|
||||
2. currently size of unixfs directories is limited by the maximum block size
|
||||
The `Experimental.ShardingEnabled` config field is no longer used, please remove it from your configs.
|
||||
|
||||
### Basic Usage:
|
||||
|
||||
```
|
||||
ipfs config --json Experimental.ShardingEnabled true
|
||||
```
|
||||
|
||||
### Road to being a real feature
|
||||
|
||||
- [ ] Make sure that objects that don't have to be sharded aren't
|
||||
- [ ] Generalize sharding and define a new layer between IPLD and IPFS
|
||||
go-ipfs now automatically shards when directory block is bigger than 256KB, ensuring every block is small enough to be exchanged with other peers
|
||||
|
||||
## IPNS pubsub
|
||||
|
||||
@ -431,12 +434,15 @@ ipfs config --json Experimental.ShardingEnabled true
|
||||
0.4.14 :
|
||||
- Introduced
|
||||
|
||||
0.5.0 :
|
||||
0.5.0 :
|
||||
- No longer needs to use the DHT for the first resolution
|
||||
- When discovering PubSub peers via the DHT, the DHT key is different from previous versions
|
||||
- This leads to 0.5 IPNS pubsub peers and 0.4 IPNS pubsub peers not being able to find each other in the DHT
|
||||
- Robustness improvements
|
||||
|
||||
0.11.0 :
|
||||
- Can be enabled via `Ipns.UsePubsub` flag in config
|
||||
|
||||
### State
|
||||
|
||||
Experimental, default-disabled.
|
||||
@ -457,7 +463,15 @@ Users interested in this feature should upgrade to at least 0.5.0
|
||||
|
||||
### How to enable
|
||||
|
||||
run your daemon with the `--enable-namesys-pubsub` flag; enables pubsub.
|
||||
Run your daemon with the `--enable-namesys-pubsub` flag
|
||||
or modify your ipfs config and restart the daemon:
|
||||
```
|
||||
ipfs config --json Ipns.UsePubsub true
|
||||
```
|
||||
|
||||
NOTE:
|
||||
- This feature implicitly enables [ipfs pubsub](#ipfs-pubsub).
|
||||
- Passing `--enable-namesys-pubsub` CLI flag overrides `Ipns.UsePubsub` config.
|
||||
|
||||
### Road to being a real feature
|
||||
|
||||
@ -468,7 +482,11 @@ run your daemon with the `--enable-namesys-pubsub` flag; enables pubsub.
|
||||
|
||||
### In Version
|
||||
|
||||
0.4.19
|
||||
- 0.4.19 :
|
||||
- Introduced Circuit Relay v1
|
||||
- 0.11.0 :
|
||||
- Deprecated v1
|
||||
- Introduced [Circuit Relay v2](https://github.com/libp2p/specs/blob/master/relay/circuit-v2.md)
|
||||
|
||||
### State
|
||||
|
||||
@ -481,15 +499,14 @@ Automatically discovers relays and advertises relay addresses when the node is b
|
||||
Modify your ipfs config:
|
||||
|
||||
```
|
||||
ipfs config --json Swarm.EnableRelayHop false
|
||||
ipfs config --json Swarm.EnableAutoRelay true
|
||||
ipfs config --json Swarm.RelayClient.Enabled true
|
||||
```
|
||||
|
||||
NOTE: Ensuring `Swarm.EnableRelayHop` is _false_ is extremely important here. If you set it to true, you will _act_ as a public relay for the rest of the network instead of _using_ the public relays.
|
||||
|
||||
### Road to being a real feature
|
||||
|
||||
- [ ] needs testing
|
||||
- [ ] needs to be automatically enabled when AutoNAT detects node is behind an impenetrable NAT.
|
||||
|
||||
|
||||
## Strategic Providing
|
||||
|
||||
@ -600,4 +617,4 @@ ipfs config --json Experimental.AcceleratedDHTClient true
|
||||
|
||||
- [ ] Needs more people to use and report on how well it works
|
||||
- [ ] Should be usable for queries (even if slower/less efficient) shortly after startup
|
||||
- [ ] Should be usable with non-WAN DHTs
|
||||
- [ ] Should be usable with non-WAN DHTs
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Publishing go-ipfs as a snap
|
||||
|
||||
> Snap is the default package manager for ubuntu since the release of 20.04. This doc captures what we know about building go-ipfs as a snap packge and publishing it to the snapstore.
|
||||
> Snap is the default package manager for ubuntu since the release of 20.04. This doc captures what we know about building go-ipfs as a snap package and publishing it to the snapstore.
|
||||
|
||||
The go-ipfs snap is defined in [snap/snapcraft.yaml](https://github.com/ipfs/go-ipfs/blob/master/snap/snapcraft.yaml). For more detail on our snapcraft.yaml see: https://github.com/ipfs-shipyard/ipfs-snap
|
||||
|
||||
@ -15,7 +15,7 @@ Linux user can install go-ipfs with:
|
||||
$ snap install ipfs
|
||||
```
|
||||
|
||||
Apps installed via Snapcraft are auto-updating by default. Snapcraft uses 'Release Channels' to let the user pick their stability level, with channels for `stable`, `candidate`, `beta` and `edge`. Snap will install the lasest release from the `stable` channel by default. A user that wants to test out the bleeding edge can opt in by passing the `--edge` flag
|
||||
Apps installed via Snapcraft are auto-updating by default. Snapcraft uses 'Release Channels' to let the user pick their stability level, with channels for `stable`, `candidate`, `beta` and `edge`. Snap will install the latest release from the `stable` channel by default. A user that wants to test out the bleeding edge can opt in by passing the `--edge` flag
|
||||
|
||||
```
|
||||
$ snap install --edge ipfs
|
||||
@ -182,10 +182,10 @@ The `ipfs` snapcraft.io listing can be edited by
|
||||
- @lidel
|
||||
- @olizilla
|
||||
|
||||
You need a Canonical developer account, then ask an existing owner to add you. Accsess is managed here https://dashboard.snapcraft.io/snaps/ipfs/collaboration/
|
||||
You need a Canonical developer account, then ask an existing owner to add you. Access is managed here https://dashboard.snapcraft.io/snaps/ipfs/collaboration/
|
||||
|
||||
|
||||
The launchpad.net config is managed by [**IPFS Maintainers**](https://launchpad.net/~ipfs) team, and you can request to join that team with your Canonical developer acccount. The list of maintainers is here: https://launchpad.net/~ipfs/+members
|
||||
The launchpad.net config is managed by [**IPFS Maintainers**](https://launchpad.net/~ipfs) team, and you can request to join that team with your Canonical developer account. The list of maintainers is here: https://launchpad.net/~ipfs/+members
|
||||
|
||||
At the time of writing the launchpad maintainers are:
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
//go:build (linux || darwin || freebsd) && !nofuse
|
||||
// +build linux darwin freebsd
|
||||
// +build !nofuse
|
||||
|
||||
@ -81,7 +82,7 @@ func (s *Root) Lookup(ctx context.Context, name string) (fs.Node, error) {
|
||||
}
|
||||
|
||||
// convert ipld-prime node to universal node
|
||||
blk, err := s.Ipfs.Blockstore.Get(cidLnk.Cid)
|
||||
blk, err := s.Ipfs.Blockstore.Get(ctx, cidLnk.Cid)
|
||||
if err != nil {
|
||||
log.Debugf("fuse failed to retrieve block: %v: %s", cidLnk, err)
|
||||
return nil, fuse.ENOENT
|
||||
|
||||
8
gc/gc.go
8
gc/gc.go
@ -40,7 +40,7 @@ type Result struct {
|
||||
func GC(ctx context.Context, bs bstore.GCBlockstore, dstor dstore.Datastore, pn pin.Pinner, bestEffortRoots []cid.Cid) <-chan Result {
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
|
||||
unlocker := bs.GCLock()
|
||||
unlocker := bs.GCLock(ctx)
|
||||
|
||||
bsrv := bserv.New(bs, offline.Exchange(bs))
|
||||
ds := dag.NewDAGService(bsrv)
|
||||
@ -50,7 +50,7 @@ func GC(ctx context.Context, bs bstore.GCBlockstore, dstor dstore.Datastore, pn
|
||||
go func() {
|
||||
defer cancel()
|
||||
defer close(output)
|
||||
defer unlocker.Unlock()
|
||||
defer unlocker.Unlock(ctx)
|
||||
|
||||
gcs, err := ColoredSet(ctx, pn, ds, bestEffortRoots, output)
|
||||
if err != nil {
|
||||
@ -80,7 +80,7 @@ func GC(ctx context.Context, bs bstore.GCBlockstore, dstor dstore.Datastore, pn
|
||||
break loop
|
||||
}
|
||||
if !gcs.Has(k) {
|
||||
err := bs.DeleteBlock(k)
|
||||
err := bs.DeleteBlock(ctx, k)
|
||||
removed++
|
||||
if err != nil {
|
||||
errors = true
|
||||
@ -115,7 +115,7 @@ func GC(ctx context.Context, bs bstore.GCBlockstore, dstor dstore.Datastore, pn
|
||||
return
|
||||
}
|
||||
|
||||
err = gds.CollectGarbage()
|
||||
err = gds.CollectGarbage(ctx)
|
||||
if err != nil {
|
||||
select {
|
||||
case output <- Result{Error: err}:
|
||||
|
||||
106
go.mod
106
go.mod
@ -2,43 +2,44 @@ module github.com/ipfs/go-ipfs
|
||||
|
||||
require (
|
||||
bazil.org/fuse v0.0.0-20200117225306-7b5117fecadc
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.3.0
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.4.0
|
||||
github.com/blang/semver/v4 v4.0.0
|
||||
github.com/ceramicnetwork/go-dag-jose v0.1.0
|
||||
github.com/cheggaaa/pb v1.0.29
|
||||
github.com/coreos/go-systemd/v22 v22.3.2
|
||||
github.com/dustin/go-humanize v1.0.0
|
||||
github.com/elgris/jsondiff v0.0.0-20160530203242-765b5c24c302
|
||||
github.com/fsnotify/fsnotify v1.4.9
|
||||
github.com/gabriel-vasile/mimetype v1.1.2
|
||||
github.com/fsnotify/fsnotify v1.5.1
|
||||
github.com/gabriel-vasile/mimetype v1.4.0
|
||||
github.com/go-bindata/go-bindata/v3 v3.1.3
|
||||
github.com/hashicorp/go-multierror v1.1.1
|
||||
github.com/ipfs/go-bitswap v0.4.0
|
||||
github.com/ipfs/go-bitswap v0.5.1
|
||||
github.com/ipfs/go-block-format v0.0.3
|
||||
github.com/ipfs/go-blockservice v0.1.7
|
||||
github.com/ipfs/go-cid v0.0.7
|
||||
github.com/ipfs/go-blockservice v0.2.1
|
||||
github.com/ipfs/go-cid v0.1.0
|
||||
github.com/ipfs/go-cidutil v0.0.2
|
||||
github.com/ipfs/go-datastore v0.4.6
|
||||
github.com/ipfs/go-datastore v0.5.1
|
||||
github.com/ipfs/go-detect-race v0.0.1
|
||||
github.com/ipfs/go-ds-badger v0.2.7
|
||||
github.com/ipfs/go-ds-flatfs v0.4.5
|
||||
github.com/ipfs/go-ds-leveldb v0.4.2
|
||||
github.com/ipfs/go-ds-measure v0.1.0
|
||||
github.com/ipfs/go-fetcher v1.5.0
|
||||
github.com/ipfs/go-filestore v0.0.3
|
||||
github.com/ipfs/go-ds-badger v0.3.0
|
||||
github.com/ipfs/go-ds-flatfs v0.5.1
|
||||
github.com/ipfs/go-ds-leveldb v0.5.0
|
||||
github.com/ipfs/go-ds-measure v0.2.0
|
||||
github.com/ipfs/go-fetcher v1.6.1
|
||||
github.com/ipfs/go-filestore v0.1.0
|
||||
github.com/ipfs/go-fs-lock v0.0.7
|
||||
github.com/ipfs/go-graphsync v0.8.0
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.6
|
||||
github.com/ipfs/go-graphsync v0.11.0
|
||||
github.com/ipfs/go-ipfs-blockstore v0.2.1
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.5
|
||||
github.com/ipfs/go-ipfs-cmds v0.6.0
|
||||
github.com/ipfs/go-ipfs-config v0.16.0
|
||||
github.com/ipfs/go-ipfs-exchange-interface v0.0.1
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.0.1
|
||||
github.com/ipfs/go-ipfs-files v0.0.8
|
||||
github.com/ipfs/go-ipfs-config v0.18.0
|
||||
github.com/ipfs/go-ipfs-exchange-interface v0.1.0
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.1.1
|
||||
github.com/ipfs/go-ipfs-files v0.0.9
|
||||
github.com/ipfs/go-ipfs-keystore v0.0.2
|
||||
github.com/ipfs/go-ipfs-pinner v0.1.2
|
||||
github.com/ipfs/go-ipfs-pinner v0.2.1
|
||||
github.com/ipfs/go-ipfs-posinfo v0.0.1
|
||||
github.com/ipfs/go-ipfs-provider v0.6.1
|
||||
github.com/ipfs/go-ipfs-routing v0.1.0
|
||||
github.com/ipfs/go-ipfs-provider v0.7.1
|
||||
github.com/ipfs/go-ipfs-routing v0.2.1
|
||||
github.com/ipfs/go-ipfs-util v0.0.2
|
||||
github.com/ipfs/go-ipld-cbor v0.0.5
|
||||
github.com/ipfs/go-ipld-format v0.2.0
|
||||
@ -46,71 +47,68 @@ require (
|
||||
github.com/ipfs/go-ipld-legacy v0.1.0
|
||||
github.com/ipfs/go-ipns v0.1.2
|
||||
github.com/ipfs/go-log v1.0.5
|
||||
github.com/ipfs/go-merkledag v0.4.0
|
||||
github.com/ipfs/go-merkledag v0.5.1
|
||||
github.com/ipfs/go-metrics-interface v0.0.1
|
||||
github.com/ipfs/go-metrics-prometheus v0.0.2
|
||||
github.com/ipfs/go-mfs v0.1.2
|
||||
github.com/ipfs/go-namesys v0.3.1
|
||||
github.com/ipfs/go-path v0.1.2
|
||||
github.com/ipfs/go-mfs v0.2.1
|
||||
github.com/ipfs/go-namesys v0.4.0
|
||||
github.com/ipfs/go-path v0.2.1
|
||||
github.com/ipfs/go-pinning-service-http-client v0.1.0
|
||||
github.com/ipfs/go-unixfs v0.2.5
|
||||
github.com/ipfs/go-unixfs v0.3.1
|
||||
github.com/ipfs/go-unixfsnode v1.1.3
|
||||
github.com/ipfs/go-verifcid v0.0.1
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.1
|
||||
github.com/ipfs/tar-utils v0.0.1
|
||||
github.com/ipld/go-car v0.3.1
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.2
|
||||
github.com/ipfs/tar-utils v0.0.2
|
||||
github.com/ipld/go-car v0.3.2
|
||||
github.com/ipld/go-codec-dagpb v1.3.0
|
||||
github.com/ipld/go-ipld-prime v0.12.2
|
||||
github.com/ipld/go-ipld-prime v0.14.2
|
||||
github.com/jbenet/go-random v0.0.0-20190219211222-123a90aedc0c
|
||||
github.com/jbenet/go-temp-err-catcher v0.1.0
|
||||
github.com/jbenet/goprocess v0.1.4
|
||||
github.com/libp2p/go-doh-resolver v0.3.1
|
||||
github.com/libp2p/go-libp2p v0.15.0
|
||||
github.com/libp2p/go-libp2p-circuit v0.4.0
|
||||
github.com/libp2p/go-libp2p v0.16.0
|
||||
github.com/libp2p/go-libp2p-connmgr v0.2.4
|
||||
github.com/libp2p/go-libp2p-core v0.9.0
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.1
|
||||
github.com/libp2p/go-libp2p-core v0.11.0
|
||||
github.com/libp2p/go-libp2p-discovery v0.6.0
|
||||
github.com/libp2p/go-libp2p-http v0.2.1
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.13.1
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.15.0
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.7
|
||||
github.com/libp2p/go-libp2p-loggables v0.1.0
|
||||
github.com/libp2p/go-libp2p-mplex v0.4.1
|
||||
github.com/libp2p/go-libp2p-noise v0.2.2
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.8
|
||||
github.com/libp2p/go-libp2p-pubsub v0.5.4
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.4.0
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.12.0
|
||||
github.com/libp2p/go-libp2p-noise v0.3.0
|
||||
github.com/libp2p/go-libp2p-peerstore v0.4.0
|
||||
github.com/libp2p/go-libp2p-pubsub v0.6.0
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.5.0
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.15.0
|
||||
github.com/libp2p/go-libp2p-record v0.1.3
|
||||
github.com/libp2p/go-libp2p-routing-helpers v0.2.3
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.3
|
||||
github.com/libp2p/go-libp2p-testing v0.4.2
|
||||
github.com/libp2p/go-libp2p-tls v0.2.0
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.4
|
||||
github.com/libp2p/go-libp2p-swarm v0.8.0
|
||||
github.com/libp2p/go-libp2p-testing v0.5.0
|
||||
github.com/libp2p/go-libp2p-tls v0.3.1
|
||||
github.com/libp2p/go-libp2p-yamux v0.6.0
|
||||
github.com/libp2p/go-socket-activation v0.1.0
|
||||
github.com/libp2p/go-tcp-transport v0.2.8
|
||||
github.com/libp2p/go-tcp-transport v0.4.0
|
||||
github.com/libp2p/go-ws-transport v0.5.0
|
||||
github.com/miekg/dns v1.1.43
|
||||
github.com/mitchellh/go-homedir v1.1.0
|
||||
github.com/multiformats/go-multiaddr v0.4.0
|
||||
github.com/multiformats/go-multiaddr v0.4.1
|
||||
github.com/multiformats/go-multiaddr-dns v0.3.1
|
||||
github.com/multiformats/go-multibase v0.0.3
|
||||
github.com/multiformats/go-multicodec v0.3.0
|
||||
github.com/multiformats/go-multihash v0.0.15
|
||||
github.com/multiformats/go-multihash v0.1.0
|
||||
github.com/opentracing/opentracing-go v1.2.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.11.0
|
||||
github.com/prometheus/statsd_exporter v0.21.0 // indirect
|
||||
github.com/stretchr/testify v1.7.0
|
||||
github.com/syndtr/goleveldb v1.0.0
|
||||
github.com/whyrusleeping/go-sysinfo v0.0.0-20190219211824-4a357d4b90b1
|
||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7
|
||||
go.opencensus.io v0.23.0
|
||||
go.uber.org/fx v1.13.1
|
||||
go.uber.org/zap v1.19.0
|
||||
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 // indirect
|
||||
go.uber.org/fx v1.15.0
|
||||
go.uber.org/zap v1.19.1
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912
|
||||
golang.org/x/sys v0.0.0-20211025112917-711f33c9992c
|
||||
)
|
||||
|
||||
go 1.16
|
||||
|
||||
311
go.sum
311
go.sum
@ -34,8 +34,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
||||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.3.0 h1:08FMdJYpItzsknogU6PiiNo7XQZg/25GjH236+YCwD0=
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.3.0/go.mod h1:rpCPVQKhiyH8oomWgm34ZmgIdZa8OVYO5WAIygPbBBE=
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.4.0 h1:0QfIkj9z/iVZgK31D9H9ohjjIDApI2GOPScCKwxedbs=
|
||||
contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0=
|
||||
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
|
||||
@ -65,6 +65,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
||||
github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a h1:E/8AP5dFtMhl5KPJz66Kt9G0n+7Sn41Fy1wv9/jHOrc=
|
||||
github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 h1:iW0a5ljuFxkLGPNem5Ui+KBjFJzKg4Fv2fnxe4dvzpM=
|
||||
github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h1:Y2QMoi1vgtOIfc+6DhrMOGkLoGzqSV2rKp4Sm+opsyA=
|
||||
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
||||
@ -115,9 +117,9 @@ github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7
|
||||
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ=
|
||||
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/ceramicnetwork/go-dag-jose v0.1.0 h1:yJ/HVlfKpnD3LdYP03AHyTvbm3BpPiz2oZiOeReJRdU=
|
||||
github.com/ceramicnetwork/go-dag-jose v0.1.0/go.mod h1:qYA1nYt0X8u4XoMAVoOV3upUVKtrxy/I670Dg5F0wjI=
|
||||
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
|
||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
||||
@ -154,6 +156,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma
|
||||
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 h1:HVTnpeuvF6Owjd5mniCL8DEXo7uYXdQEmOP4FJbV5tg=
|
||||
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p1d6YEZWvFzEh4KLyvBcVSnrfNDDvK2zfK/4x2v/4pE=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0=
|
||||
github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
@ -205,13 +208,15 @@ github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJn
|
||||
github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY=
|
||||
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
|
||||
github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
|
||||
github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY=
|
||||
github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
|
||||
github.com/frankban/quicktest v1.14.0 h1:+cqqvzZV87b4adx/5ayVOaYZ2CrvM4ejQvUdBzPPUss=
|
||||
github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/gabriel-vasile/mimetype v1.1.2 h1:gaPnPcNor5aZSVCJVSGipcpbgMWiAAj9z182ocSGbHU=
|
||||
github.com/gabriel-vasile/mimetype v1.1.2/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
|
||||
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
|
||||
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
|
||||
github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro=
|
||||
github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
||||
github.com/go-bindata/go-bindata/v3 v3.1.3 h1:F0nVttLC3ws0ojc7p60veTurcOm//D4QBODNM7EGrCI=
|
||||
@ -294,13 +299,13 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
|
||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||
github.com/google/gopacket v1.1.18/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
|
||||
github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
@ -324,9 +329,8 @@ github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE0
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c h1:7lF+Vz0LqiRidnzC1Oq86fpX1q/iEv2KJdrCtttYjT4=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f h1:KMlcu9X58lhTA/KrfX8Bi1LQSO4pzoVjTiL3h4Jk+Zk=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20190812055157-5d271430af9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
||||
github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
@ -385,47 +389,48 @@ github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod
|
||||
github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI=
|
||||
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
|
||||
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
|
||||
github.com/ipfs/go-bitfield v1.0.0 h1:y/XHm2GEmD9wKngheWNNCNL0pzrWXZwCdQGv1ikXknQ=
|
||||
github.com/ipfs/go-bitfield v1.0.0/go.mod h1:N/UiujQy+K+ceU1EF5EkVd1TNqevLrCQMIcAEPrdtus=
|
||||
github.com/ipfs/go-bitswap v0.0.9/go.mod h1:kAPf5qgn2W2DrgAcscZ3HrM9qh4pH+X8Fkk3UPrwvis=
|
||||
github.com/ipfs/go-bitswap v0.1.0/go.mod h1:FFJEf18E9izuCqUtHxbWEvq+reg7o4CW5wSAE1wsxj0=
|
||||
github.com/ipfs/go-bitswap v0.1.2/go.mod h1:qxSWS4NXGs7jQ6zQvoPY3+NmOfHHG47mhkiLzBpJQIs=
|
||||
github.com/ipfs/go-bitswap v0.1.3/go.mod h1:YEQlFy0kkxops5Vy+OxWdRSEZIoS7I7KDIwoa5Chkps=
|
||||
github.com/ipfs/go-bitswap v0.1.8/go.mod h1:TOWoxllhccevbWFUR2N7B1MTSVVge1s6XSMiCSA4MzM=
|
||||
github.com/ipfs/go-bitswap v0.3.4/go.mod h1:4T7fvNv/LmOys+21tnLzGKncMeeXUYUd1nUiJ2teMvI=
|
||||
github.com/ipfs/go-bitswap v0.4.0 h1:bLiqrpef1na4wdqGLqHKv954s1zz6KFghfmQWCPjBik=
|
||||
github.com/ipfs/go-bitswap v0.4.0/go.mod h1:J2sAsp9UKxLgHDektSy3y3Q9OfQjM9sjhKBR1dlwrMg=
|
||||
github.com/ipfs/go-bitswap v0.5.1 h1:721YAEDBnLIrvcIMkCHCdqp34hA8jwL9yKMkyJpSpco=
|
||||
github.com/ipfs/go-bitswap v0.5.1/go.mod h1:P+ckC87ri1xFLvk74NlXdP0Kj9RmWAh4+H78sC6Qopo=
|
||||
github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc=
|
||||
github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY=
|
||||
github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc=
|
||||
github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk=
|
||||
github.com/ipfs/go-blockservice v0.0.7/go.mod h1:EOfb9k/Y878ZTRY/CH0x5+ATtaipfbRhbvNSdgc/7So=
|
||||
github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M=
|
||||
github.com/ipfs/go-blockservice v0.1.1/go.mod h1:t+411r7psEUhLueM8C7aPA7cxCclv4O3VsUVxt9kz2I=
|
||||
github.com/ipfs/go-blockservice v0.1.3/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU=
|
||||
github.com/ipfs/go-blockservice v0.1.4/go.mod h1:OTZhFpkgY48kNzbgyvcexW9cHrpjBYIjSR0KoDOFOLU=
|
||||
github.com/ipfs/go-blockservice v0.1.7 h1:yVe9te0M7ow8i+PPkx03YFSpxqzXx594d6h+34D6qMg=
|
||||
github.com/ipfs/go-blockservice v0.1.7/go.mod h1:GmS+BAt4hrwBKkzE11AFDQUrnvqjwFatGS2MY7wOjEM=
|
||||
github.com/ipfs/go-blockservice v0.2.1 h1:NJ4j/cwEfIg60rzAWcCIxRtOwbf6ZPK49MewNxObCPQ=
|
||||
github.com/ipfs/go-blockservice v0.2.1/go.mod h1:k6SiwmgyYgs4M/qt+ww6amPeUH9EISLRBnvUurKJhi8=
|
||||
github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
|
||||
github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
|
||||
github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM=
|
||||
github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M=
|
||||
github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog=
|
||||
github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||
github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY=
|
||||
github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||
github.com/ipfs/go-cid v0.1.0 h1:YN33LQulcRHjfom/i25yoOZR4Telp1Hr/2RU3d0PnC0=
|
||||
github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o=
|
||||
github.com/ipfs/go-cidutil v0.0.2 h1:CNOboQf1t7Qp0nuNh8QMmhJs0+Q//bRL1axtCnIB1Yo=
|
||||
github.com/ipfs/go-cidutil v0.0.2/go.mod h1:ewllrvrxG6AMYStla3GD7Cqn+XYSLqjK0vc+086tB6s=
|
||||
github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE=
|
||||
github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE=
|
||||
github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE=
|
||||
github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw=
|
||||
github.com/ipfs/go-datastore v0.3.0/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw=
|
||||
github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw=
|
||||
github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.5/go.mod h1:eXTcaaiN6uOlVCLS9GjJUJtlvJfM3xk23w3fyfrmmJs=
|
||||
github.com/ipfs/go-datastore v0.4.6 h1:zU2cmweykxJ+ziXnA2cPtsLe8rdR/vrthOipLPuf6kc=
|
||||
github.com/ipfs/go-datastore v0.4.6/go.mod h1:XSipLSc64rFKSFRFGo1ecQl+WhYce3K7frtpHkyPFUc=
|
||||
github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk=
|
||||
github.com/ipfs/go-datastore v0.5.1 h1:WkRhLuISI+XPD0uk3OskB0fYFSyqK8Ob5ZYew9Qa1nQ=
|
||||
github.com/ipfs/go-datastore v0.5.1/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk=
|
||||
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
|
||||
github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
|
||||
github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8=
|
||||
@ -433,31 +438,34 @@ github.com/ipfs/go-ds-badger v0.0.5/go.mod h1:g5AuuCGmr7efyzQhLL8MzwqcauPojGPUaH
|
||||
github.com/ipfs/go-ds-badger v0.0.7/go.mod h1:qt0/fWzZDoPW6jpQeqUjR5kBfhDNB65jd9YlmAvpQBk=
|
||||
github.com/ipfs/go-ds-badger v0.2.1/go.mod h1:Tx7l3aTph3FMFrRS838dcSJh+jjA7cX9DrGVwx/NOwE=
|
||||
github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk=
|
||||
github.com/ipfs/go-ds-badger v0.2.6/go.mod h1:02rnztVKA4aZwDuaRPTf8mpqcKmXP7mLl6JPxd14JHA=
|
||||
github.com/ipfs/go-ds-badger v0.2.7 h1:ju5REfIm+v+wgVnQ19xGLYPHYHbYLR6qJfmMbCDSK1I=
|
||||
github.com/ipfs/go-ds-badger v0.2.7/go.mod h1:02rnztVKA4aZwDuaRPTf8mpqcKmXP7mLl6JPxd14JHA=
|
||||
github.com/ipfs/go-ds-flatfs v0.4.5 h1:4QceuKEbH+HVZ2ZommstJMi3o3II+dWS3IhLaD7IGHs=
|
||||
github.com/ipfs/go-ds-flatfs v0.4.5/go.mod h1:e4TesLyZoA8k1gV/yCuBTnt2PJtypn4XUlB5n8KQMZY=
|
||||
github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro=
|
||||
github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek=
|
||||
github.com/ipfs/go-ds-flatfs v0.5.1 h1:ZCIO/kQOS/PSh3vcF1H6a8fkRGS7pOfwfPdx4n/KJH4=
|
||||
github.com/ipfs/go-ds-flatfs v0.5.1/go.mod h1:RWTV7oZD/yZYBKdbVIFXTX2fdY2Tbvl94NsWqmoyAX4=
|
||||
github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc=
|
||||
github.com/ipfs/go-ds-leveldb v0.1.0/go.mod h1:hqAW8y4bwX5LWcCtku2rFNX3vjDZCy5LZCg+cSZvYb8=
|
||||
github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s=
|
||||
github.com/ipfs/go-ds-leveldb v0.4.2 h1:QmQoAJ9WkPMUfBLnu1sBVy0xWWlJPg0m4kRAiJL9iaw=
|
||||
github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s=
|
||||
github.com/ipfs/go-ds-measure v0.1.0 h1:vE4TyY4aeLeVgnnPBC5QzKIjKrqzha0NCujTfgvVbVQ=
|
||||
github.com/ipfs/go-ds-measure v0.1.0/go.mod h1:1nDiFrhLlwArTME1Ees2XaBOl49OoCgd2A3f8EchMSY=
|
||||
github.com/ipfs/go-fetcher v1.5.0 h1:oreKTKBzja3S09rSmoZlA3KGVlRiUbJ1pQjtB4K6y3w=
|
||||
github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo=
|
||||
github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q=
|
||||
github.com/ipfs/go-ds-measure v0.2.0 h1:sG4goQe0KDTccHMyT45CY1XyUbxe5VwTKpg2LjApYyQ=
|
||||
github.com/ipfs/go-ds-measure v0.2.0/go.mod h1:SEUD/rE2PwRa4IQEC5FuNAmjJCyYObZr9UvVh8V3JxE=
|
||||
github.com/ipfs/go-fetcher v1.5.0/go.mod h1:5pDZ0393oRF/fHiLmtFZtpMNBQfHOYNPtryWedVuSWE=
|
||||
github.com/ipfs/go-filestore v0.0.3 h1:MhZ1jT5K3NewZwim6rS/akcJLm1xM+r6nz6foeB9EwE=
|
||||
github.com/ipfs/go-filestore v0.0.3/go.mod h1:dvXRykFzyyXN2CdNlRGzDAkXMDPyI+D7JE066SiKLSE=
|
||||
github.com/ipfs/go-fetcher v1.6.1 h1:UFuRVYX5AIllTiRhi5uK/iZkfhSpBCGX7L70nSZEmK8=
|
||||
github.com/ipfs/go-fetcher v1.6.1/go.mod h1:27d/xMV8bodjVs9pugh/RCjjK2OZ68UgAMspMdingNo=
|
||||
github.com/ipfs/go-filestore v0.1.0 h1:qxvDVTzGrbQElddMmkwsJwJn+fDwWb3pHQHtKc1H0a8=
|
||||
github.com/ipfs/go-filestore v0.1.0/go.mod h1:0KTrzoJnJ3sJDEDM09Vq8nz8H475rRyeq4i0n/bpF00=
|
||||
github.com/ipfs/go-fs-lock v0.0.7 h1:6BR3dajORFrFTkb5EpCUFIAypsoxpGpDSVUdFwzgL9U=
|
||||
github.com/ipfs/go-fs-lock v0.0.7/go.mod h1:Js8ka+FNYmgQRLrRXzU3CB/+Csr1BwrRilEcvYrHhhc=
|
||||
github.com/ipfs/go-graphsync v0.8.0 h1:Zhh6QdTqdipYHD71ncLO8eA6c8EGUTOoJ4Rqybw3K+o=
|
||||
github.com/ipfs/go-graphsync v0.8.0/go.mod h1:CLxN859dUTcXCav1DvNvmAUWPZfmNLjlGLJYy+c3dlM=
|
||||
github.com/ipfs/go-graphsync v0.11.0 h1:PiiD5CnoC3xEHMW8d6uBGqGcoTwiMB5d9CORIEyF6iA=
|
||||
github.com/ipfs/go-graphsync v0.11.0/go.mod h1:wC+c8vGVjAHthsVIl8LKr37cUra2GOaMYcQNNmMxDqE=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.4/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.6 h1:+RNM/gkTF6lzLPtt/xqjEUXJuG0lFwAiv+MV8MoAhvA=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.1.6/go.mod h1:Jxm3XMVjh6R17WvxFEiyKBLUGr86HgIYJW/D/MwqeYQ=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.2.1 h1:624eIDnkZWNdWbp/N8aDBOUtSY0YW75aJu+vbxnNlkA=
|
||||
github.com/ipfs/go-ipfs-blockstore v0.2.1/go.mod h1:jGesd8EtCM3/zPgx+qr0/feTXGUeRai6adgwC+Q+JvE=
|
||||
github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ=
|
||||
github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk=
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.1/go.mod h1:tWewYK0we3+rMbOh7pPFGDyypCtvGcBFymgY4rSDLAw=
|
||||
@ -465,35 +473,39 @@ github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7Na
|
||||
github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8=
|
||||
github.com/ipfs/go-ipfs-cmds v0.6.0 h1:yAxdowQZzoFKjcLI08sXVNnqVj3jnABbf9smrPQmBsw=
|
||||
github.com/ipfs/go-ipfs-cmds v0.6.0/go.mod h1:ZgYiWVnCk43ChwoH8hAmI1IRbuVtq3GSTHwtRB/Kqhk=
|
||||
github.com/ipfs/go-ipfs-config v0.16.0 h1:CBtIYyp/iWIczCv83bmfge8EA2KqxOOfqmETs3tUnnU=
|
||||
github.com/ipfs/go-ipfs-config v0.16.0/go.mod h1:wz2lKzOjgJeYJa6zx8W9VT7mz+iSd0laBMqS/9wmX6A=
|
||||
github.com/ipfs/go-ipfs-config v0.18.0 h1:Ta1aNGNEq6RIvzbw7dqzCVZJKb7j+Dd35JFnAOCpT8g=
|
||||
github.com/ipfs/go-ipfs-config v0.18.0/go.mod h1:wz2lKzOjgJeYJa6zx8W9VT7mz+iSd0laBMqS/9wmX6A=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw=
|
||||
github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo=
|
||||
github.com/ipfs/go-ipfs-ds-help v0.1.1 h1:IW/bXGeaAZV2VH0Kuok+Ohva/zHkHmeLFBxC1k7mNPc=
|
||||
github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs=
|
||||
github.com/ipfs/go-ipfs-exchange-interface v0.0.1 h1:LJXIo9W7CAmugqI+uofioIpRb6rY30GUu7G6LUfpMvM=
|
||||
github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM=
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.0.1 h1:P56jYKZF7lDDOLx5SotVh5KFxoY6C81I1NSHW1FxGew=
|
||||
github.com/ipfs/go-ipfs-exchange-interface v0.1.0 h1:TiMekCrOGQuWYtZO3mf4YJXDIdNgnKWZ9IE3fGlnWfo=
|
||||
github.com/ipfs/go-ipfs-exchange-interface v0.1.0/go.mod h1:ych7WPlyHqFvCi/uQI48zLZuAWVP5iTQPXEfVaw5WEI=
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0=
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.1.1 h1:mEiXWdbMN6C7vtDG21Fphx8TGCbZPpQnz/496w/PL4g=
|
||||
github.com/ipfs/go-ipfs-exchange-offline v0.1.1/go.mod h1:vTiBRIbzSwDD0OWm+i3xeT0mO7jG2cbJYatp3HPk5XY=
|
||||
github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4=
|
||||
github.com/ipfs/go-ipfs-files v0.0.8 h1:8o0oFJkJ8UkO/ABl8T6ac6tKF3+NIpj67aAB6ZpusRg=
|
||||
github.com/ipfs/go-ipfs-files v0.0.8/go.mod h1:wiN/jSG8FKyk7N0WyctKSvq3ljIa2NNTiZB55kpTdOs=
|
||||
github.com/ipfs/go-ipfs-files v0.0.9 h1:OFyOfmuVDu9c5YtjSDORmwXzE6fmZikzZpzsnNkgFEg=
|
||||
github.com/ipfs/go-ipfs-files v0.0.9/go.mod h1:aFv2uQ/qxWpL/6lidWvnSQmaVqCrf0TBGoUr+C1Fo84=
|
||||
github.com/ipfs/go-ipfs-keystore v0.0.2 h1:Fa9xg9IFD1VbiZtrNLzsD0GuELVHUFXCWF64kCPfEXU=
|
||||
github.com/ipfs/go-ipfs-keystore v0.0.2/go.mod h1:H49tRmibOEs7gLMgbOsjC4dqh1u5e0R/SWuc2ScfgSo=
|
||||
github.com/ipfs/go-ipfs-pinner v0.1.2 h1:Ve9OBhL6eg5+tVqEnIhPZOCXDtMjB+OhOohVZxPUxms=
|
||||
github.com/ipfs/go-ipfs-pinner v0.1.2/go.mod h1:/u9kMe+TyQybN21O5OBicdyx3x93lVI77PCtiTnArUk=
|
||||
github.com/ipfs/go-ipfs-pinner v0.2.1 h1:kw9hiqh2p8TatILYZ3WAfQQABby7SQARdrdA+5Z5QfY=
|
||||
github.com/ipfs/go-ipfs-pinner v0.2.1/go.mod h1:l1AtLL5bovb7opnG77sh4Y10waINz3Y1ni6CvTzx7oo=
|
||||
github.com/ipfs/go-ipfs-posinfo v0.0.1 h1:Esoxj+1JgSjX0+ylc0hUmJCOv6V2vFoZiETLR6OtpRs=
|
||||
github.com/ipfs/go-ipfs-posinfo v0.0.1/go.mod h1:SwyeVP+jCwiDu0C313l/8jg6ZxM0qqtlt2a0vILTc1A=
|
||||
github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY=
|
||||
github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY=
|
||||
github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY=
|
||||
github.com/ipfs/go-ipfs-provider v0.6.1 h1:4VenAH1J5XH+/mgM2Y7p+QN3wlk7CInMDG8rsT2CGW4=
|
||||
github.com/ipfs/go-ipfs-provider v0.6.1/go.mod h1:I4Cig3InhftbRJohph76Qy/P2uKEZILNGiKvDJmmC28=
|
||||
github.com/ipfs/go-ipfs-provider v0.7.1 h1:eKToBUAb6ZY8iiA6AYVxzW4G1ep67XUaaEBUIYpxhfw=
|
||||
github.com/ipfs/go-ipfs-provider v0.7.1/go.mod h1:QwdDYRYnC5sYGLlOwVDY/0ZB6T3zcMtu+5+GdGeUuw8=
|
||||
github.com/ipfs/go-ipfs-routing v0.0.1/go.mod h1:k76lf20iKFxQTjcJokbPM9iBXVXVZhcOwc360N4nuKs=
|
||||
github.com/ipfs/go-ipfs-routing v0.1.0 h1:gAJTT1cEeeLj6/DlLX6t+NxD9fQe2ymTO6qWRDI/HQQ=
|
||||
github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY=
|
||||
github.com/ipfs/go-ipfs-routing v0.2.1 h1:E+whHWhJkdN9YeoHZNj5itzc+OR292AJ2uE9FFiW0BY=
|
||||
github.com/ipfs/go-ipfs-routing v0.2.1/go.mod h1:xiNNiwgjmLqPS1cimvAw6EyB9rkVDbiocA4yY+wRNLM=
|
||||
github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc=
|
||||
github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8=
|
||||
github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ=
|
||||
@ -510,8 +522,6 @@ github.com/ipfs/go-ipld-git v0.1.1 h1:TWGnZjS0htmEmlMFEkA3ogrNCqWjIxwr16x1OsdhG+
|
||||
github.com/ipfs/go-ipld-git v0.1.1/go.mod h1:+VyMqF5lMcJh4rwEppV0e6g4nCCHXThLYYDpKUkJubI=
|
||||
github.com/ipfs/go-ipld-legacy v0.1.0 h1:wxkkc4k8cnvIGIjPO0waJCe7SHEyFgl+yQdafdjGrpA=
|
||||
github.com/ipfs/go-ipld-legacy v0.1.0/go.mod h1:86f5P/srAmh9GcIcWQR9lfFLZPrIyyXQeVlOWeeWEuI=
|
||||
github.com/ipfs/go-ipns v0.0.2/go.mod h1:WChil4e0/m9cIINWLxZe1Jtf77oz5L05rO2ei/uKJ5U=
|
||||
github.com/ipfs/go-ipns v0.1.0/go.mod h1:3IbsuPkR6eAGcnx+E7j6HpOSbSQJPZ6zlRj+NK3jPxQ=
|
||||
github.com/ipfs/go-ipns v0.1.2 h1:O/s/0ht+4Jl9+VoxoUo0zaHjnZUS+aBQIKTuzdZ/ucI=
|
||||
github.com/ipfs/go-ipns v0.1.2/go.mod h1:ioQ0j02o6jdIVW+bmi18f4k2gRf0AV3kZ9KeHYHICnQ=
|
||||
github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM=
|
||||
@ -528,58 +538,57 @@ github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Ax
|
||||
github.com/ipfs/go-log/v2 v2.3.0 h1:31Re/cPqFHpsRHgyVwjWADPoF0otB1WrjTy8ZFYwEZU=
|
||||
github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g=
|
||||
github.com/ipfs/go-merkledag v0.0.6/go.mod h1:QYPdnlvkOg7GnQRofu9XZimC5ZW5Wi3bKys/4GQQfto=
|
||||
github.com/ipfs/go-merkledag v0.1.0/go.mod h1:SQiXrtSts3KGNmgOzMICy5c0POOpUNQLvB3ClKnBAlk=
|
||||
github.com/ipfs/go-merkledag v0.2.3/go.mod h1:SQiXrtSts3KGNmgOzMICy5c0POOpUNQLvB3ClKnBAlk=
|
||||
github.com/ipfs/go-merkledag v0.3.0/go.mod h1:4pymaZLhSLNVuiCITYrpViD6vmfZ/Ws4n/L9tfNv3S4=
|
||||
github.com/ipfs/go-merkledag v0.3.1/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M=
|
||||
github.com/ipfs/go-merkledag v0.3.2/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M=
|
||||
github.com/ipfs/go-merkledag v0.4.0 h1:ixNu/5MJSaT/Qs073T0/HsWKwnOoBgqSq1g+GaJIen0=
|
||||
github.com/ipfs/go-merkledag v0.4.0/go.mod h1:XshXBkhyeS63YNGisLL1uDSfuTyrQIxVUOg3ojR5MOE=
|
||||
github.com/ipfs/go-merkledag v0.5.1 h1:tr17GPP5XtPhvPPiWtu20tSGZiZDuTaJRXBLcr79Umk=
|
||||
github.com/ipfs/go-merkledag v0.5.1/go.mod h1:cLMZXx8J08idkp5+id62iVftUQV+HlYJ3PIhDfZsjA4=
|
||||
github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg=
|
||||
github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY=
|
||||
github.com/ipfs/go-metrics-prometheus v0.0.2 h1:9i2iljLg12S78OhC6UAiXi176xvQGiZaGVF1CUVdE+s=
|
||||
github.com/ipfs/go-metrics-prometheus v0.0.2/go.mod h1:ELLU99AQQNi+zX6GCGm2lAgnzdSH3u5UVlCdqSXnEks=
|
||||
github.com/ipfs/go-mfs v0.1.2 h1:DlelNSmH+yz/Riy0RjPKlooPg0KML4lXGdLw7uZkfAg=
|
||||
github.com/ipfs/go-mfs v0.1.2/go.mod h1:T1QBiZPEpkPLzDqEJLNnbK55BVKVlNi2a+gVm4diFo0=
|
||||
github.com/ipfs/go-namesys v0.3.1 h1:DqmeXlVODejOyECAqoqhSB5JGRv8aRFhtG0oPDmxsMc=
|
||||
github.com/ipfs/go-namesys v0.3.1/go.mod h1:/BL4xk8LP5Lq82AmaRKyxZv/eYRlumNiU9SZUe1Hlps=
|
||||
github.com/ipfs/go-mfs v0.2.1 h1:5jz8+ukAg/z6jTkollzxGzhkl3yxm022Za9f2nL5ab8=
|
||||
github.com/ipfs/go-mfs v0.2.1/go.mod h1:Woj80iuw4ajDnIP6+seRaoHpPsc9hmL0pk/nDNDWP88=
|
||||
github.com/ipfs/go-namesys v0.4.0 h1:Gxg4kEWxVcHuUJl60KMNs1k8AiVB3luXbz8ZJkSGacs=
|
||||
github.com/ipfs/go-namesys v0.4.0/go.mod h1:jpJwzodyP8DZdWN6DShRjVZw6gaqMr4nQLBSxU5cR6E=
|
||||
github.com/ipfs/go-path v0.0.7/go.mod h1:6KTKmeRnBXgqrTvzFrPV3CamxcgvXX/4z79tfAd2Sno=
|
||||
github.com/ipfs/go-path v0.0.9/go.mod h1:VpDkSBKQ9EFQOUgi54Tq/O/tGi8n1RfYNks13M3DEs8=
|
||||
github.com/ipfs/go-path v0.1.1/go.mod h1:vC8q4AKOtrjJz2NnllIrmr2ZbGlF5fW2OKKyhV9ggb0=
|
||||
github.com/ipfs/go-path v0.1.2 h1:yQxN9JNhO4KbaaYtVgVpIH0BQDzn5Zpl5A6to93O7Ck=
|
||||
github.com/ipfs/go-path v0.1.2/go.mod h1:3DdbxZb0PtT0g3UlMqyzms1UBKPc0pQ2NHx5/XScYdY=
|
||||
github.com/ipfs/go-path v0.2.1 h1:R0JYCu0JBnfa6A3C42nzsNPxtKU5/fnUPhWSuzcJHws=
|
||||
github.com/ipfs/go-path v0.2.1/go.mod h1:NOScsVgxfC/eIw4nz6OiGwK42PjaSJ4Y/ZFPn1Xe07I=
|
||||
github.com/ipfs/go-peertaskqueue v0.0.4/go.mod h1:03H8fhyeMfKNFWqzYEVyMbcPUeYrqP1MX6Kd+aN+rMQ=
|
||||
github.com/ipfs/go-peertaskqueue v0.1.0/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U=
|
||||
github.com/ipfs/go-peertaskqueue v0.1.1/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U=
|
||||
github.com/ipfs/go-peertaskqueue v0.2.0/go.mod h1:5/eNrBEbtSKWCG+kQK8K8fGNixoYUnr+P7jivavs9lY=
|
||||
github.com/ipfs/go-peertaskqueue v0.4.0 h1:x1hFgA4JOUJ3ntPfqLRu6v4k6kKL0p07r3RSg9JNyHI=
|
||||
github.com/ipfs/go-peertaskqueue v0.4.0/go.mod h1:KL9F49hXJMoXCad8e5anivjN+kWdr+CyGcyh4K6doLc=
|
||||
github.com/ipfs/go-peertaskqueue v0.7.0 h1:VyO6G4sbzX80K58N60cCaHsSsypbUNs1GjO5seGNsQ0=
|
||||
github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU=
|
||||
github.com/ipfs/go-pinning-service-http-client v0.1.0 h1:Au0P4NglL5JfzhNSZHlZ1qra+IcJyO3RWMd9EYCwqSY=
|
||||
github.com/ipfs/go-pinning-service-http-client v0.1.0/go.mod h1:tcCKmlkWWH9JUUkKs8CrOZBanacNc1dmKLfjlyXAMu4=
|
||||
github.com/ipfs/go-unixfs v0.1.0/go.mod h1:lysk5ELhOso8+Fed9U1QTGey2ocsfaZ18h0NCO2Fj9s=
|
||||
github.com/ipfs/go-unixfs v0.2.4/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw=
|
||||
github.com/ipfs/go-unixfs v0.2.5 h1:irj/WzIcgTBay48mSMUYDbKlIzIocXWcuUUsi5qOMOE=
|
||||
github.com/ipfs/go-unixfs v0.2.5/go.mod h1:SUdisfUjNoSDzzhGVxvCL9QO/nKdwXdr+gbMUdqcbYw=
|
||||
github.com/ipfs/go-unixfs v0.3.1 h1:LrfED0OGfG98ZEegO4/xiprx2O+yS+krCMQSp7zLVv8=
|
||||
github.com/ipfs/go-unixfs v0.3.1/go.mod h1:h4qfQYzghiIc8ZNFKiLMFWOTzrWIAtzYQ59W/pCFf1o=
|
||||
github.com/ipfs/go-unixfsnode v1.1.2/go.mod h1:5dcE2x03pyjHk4JjamXmunTMzz+VUtqvPwZjIEkfV6s=
|
||||
github.com/ipfs/go-unixfsnode v1.1.3 h1:IyqJBGIEvcHvll1wDDVIHOEVXnE+IH6tjzTWpZ6kGiI=
|
||||
github.com/ipfs/go-unixfsnode v1.1.3/go.mod h1:ZZxUM5wXBC+G0Co9FjrYTOm+UlhZTjxLfRYdWY9veZ4=
|
||||
github.com/ipfs/go-verifcid v0.0.1 h1:m2HI7zIuR5TFyQ1b79Da5N9dnnCP1vcu2QqawmWlK2E=
|
||||
github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0=
|
||||
github.com/ipfs/interface-go-ipfs-core v0.4.0/go.mod h1:UJBcU6iNennuI05amq3FQ7g0JHUkibHFAfhfUIy927o=
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.1 h1:1KMM7RkjUD8W5fSoRsa9xR6ZMzeL8fLHOUM1UEW9Y4M=
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.1/go.mod h1:lNBJrdXHtWS46evMPBdWtDQMDsrKcGbxCOGoKLkztOE=
|
||||
github.com/ipfs/tar-utils v0.0.1 h1:8Na0KBD6GddGyXwU4rXNtVTE24iuZws8mENJQPLG7W4=
|
||||
github.com/ipfs/tar-utils v0.0.1/go.mod h1:ACflm9wXvV9w0eMJt6yYXxS2zuIV+yXGNwbuq1bhLeE=
|
||||
github.com/ipld/go-car v0.3.1 h1:WT+3cdmXlvmWOlGxk9webhj4auGO5QvgqC2vCCkFRXs=
|
||||
github.com/ipld/go-car v0.3.1/go.mod h1:dPkEWeAK8KaVvH5TahaCs6Mncpd4lDMpkbs0/SPzuVs=
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.2 h1:m1/5U+WpOK2ZE7Qzs5iIu80QM1ZA3aWYi2Ilwpi+tdg=
|
||||
github.com/ipfs/interface-go-ipfs-core v0.5.2/go.mod h1:lNBJrdXHtWS46evMPBdWtDQMDsrKcGbxCOGoKLkztOE=
|
||||
github.com/ipfs/tar-utils v0.0.2 h1:UNgHB4x/PPzbMkmJi+7EqC9LNMPDztOVSnx1HAqSNg4=
|
||||
github.com/ipfs/tar-utils v0.0.2/go.mod h1:4qlnRWgTVljIMhSG2SqRYn66NT+3wrv/kZt9V+eqxDM=
|
||||
github.com/ipld/go-car v0.3.2 h1:V9wt/80FNfbMRWSD98W5br6fyjUAyVgI2lDOTZX16Lg=
|
||||
github.com/ipld/go-car v0.3.2/go.mod h1:WEjynkVt04dr0GwJhry0KlaTeSDEiEYyMPOxDBQ17KE=
|
||||
github.com/ipld/go-codec-dagpb v1.2.0/go.mod h1:6nBN7X7h8EOsEejZGqC7tej5drsdBAXbMHyBT+Fne5s=
|
||||
github.com/ipld/go-codec-dagpb v1.3.0 h1:czTcaoAuNNyIYWs6Qe01DJ+sEX7B+1Z0LcXjSatMGe8=
|
||||
github.com/ipld/go-codec-dagpb v1.3.0/go.mod h1:ga4JTU3abYApDC3pZ00BC2RSvC3qfBb9MSJkMLSwnhA=
|
||||
github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8=
|
||||
github.com/ipld/go-ipld-prime v0.9.1-0.20210324083106-dc342a9917db/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8=
|
||||
github.com/ipld/go-ipld-prime v0.11.0/go.mod h1:+WIAkokurHmZ/KwzDOMUuoeJgaRQktHtEaLglS3ZeV8=
|
||||
github.com/ipld/go-ipld-prime v0.12.2 h1:StIquYvKIRuSEAtjJDr39fyzBtziioHPwVC75tBiXzo=
|
||||
github.com/ipld/go-ipld-prime v0.12.2/go.mod h1:PaeLYq8k6dJLmDUSLrzkEpoGV4PEfe/1OtFN/eALOc8=
|
||||
github.com/ipld/go-ipld-prime v0.12.3/go.mod h1:PaeLYq8k6dJLmDUSLrzkEpoGV4PEfe/1OtFN/eALOc8=
|
||||
github.com/ipld/go-ipld-prime v0.14.1/go.mod h1:QcE4Y9n/ZZr8Ijg5bGPT0GqYWgZ1704nH0RDcQtgTP0=
|
||||
github.com/ipld/go-ipld-prime v0.14.2 h1:P5fO2usnisXwrN/1sR5exCgEvINg/w/27EuYPKB/zx8=
|
||||
github.com/ipld/go-ipld-prime v0.14.2/go.mod h1:QcE4Y9n/ZZr8Ijg5bGPT0GqYWgZ1704nH0RDcQtgTP0=
|
||||
github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA=
|
||||
github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
||||
@ -606,7 +615,6 @@ github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlT
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
@ -638,12 +646,14 @@ github.com/koron/go-ssdp v0.0.2/go.mod h1:XoLfkAiA2KeZsYh4DbHxD7h3nR2AZNqVQOa+LJ
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ=
|
||||
github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E=
|
||||
github.com/libp2p/go-addr-util v0.1.0 h1:acKsntI33w2bTU7tC9a0SaPimJGfSI0bFKC18ChxeVI=
|
||||
@ -657,8 +667,9 @@ github.com/libp2p/go-conn-security v0.0.1/go.mod h1:bGmu51N0KU9IEjX7kl2PQjgZa40J
|
||||
github.com/libp2p/go-conn-security-multistream v0.0.2/go.mod h1:nc9vud7inQ+d6SO0I/6dSWrdMnHnzZNHeyUQqrAJulE=
|
||||
github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.1 h1:ft6/POSK7F+vl/2qzegnHDaXFU0iWB4yVTYrioC6Zy0=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70=
|
||||
github.com/libp2p/go-conn-security-multistream v0.3.0 h1:9UCIKlBL1hC9u7nkMXpD1nkc/T53PKMAn3/k9ivBAVc=
|
||||
github.com/libp2p/go-conn-security-multistream v0.3.0/go.mod h1:EEP47t4fw/bTelVmEzIDqSe69hO/ip52xBEhZMLWAHM=
|
||||
github.com/libp2p/go-doh-resolver v0.3.1 h1:1wbVGkB4Tdj4WEvjAuYknOPyt4vSSDn9thnj13pKPaY=
|
||||
github.com/libp2p/go-doh-resolver v0.3.1/go.mod h1:y5go1ZppAq9N2eppbX0xON01CyPBeUg2yS6BTssssog=
|
||||
github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4=
|
||||
@ -680,10 +691,11 @@ github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t
|
||||
github.com/libp2p/go-libp2p v0.14.0/go.mod h1:dsQrWLAoIn+GkHPN/U+yypizkHiB9tnv79Os+kSgQ4Q=
|
||||
github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0=
|
||||
github.com/libp2p/go-libp2p v0.14.4/go.mod h1:EIRU0Of4J5S8rkockZM7eJp2S0UrCyi55m2kJVru3rM=
|
||||
github.com/libp2p/go-libp2p v0.15.0 h1:jbMbdmtizfpvl1+oQuGJzfGhttAtuxUCavF3enwFncg=
|
||||
github.com/libp2p/go-libp2p v0.15.0/go.mod h1:8Ljmwon0cZZYKrOCjFeLwQEK8bqR42dOheUZ1kSKhP0=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052 h1:BM7aaOF7RpmNn9+9g6uTjGJ0cTzWr5j9i9IKeun2M8U=
|
||||
github.com/libp2p/go-libp2p v0.16.0 h1:aTxzQPllnW+nyC9mY8xaS20BbcrSYMt1HCkjZRHvdGY=
|
||||
github.com/libp2p/go-libp2p v0.16.0/go.mod h1:ump42BsirwAWxKzsCiFnTtN1Yc+DuPu76fyMX364/O4=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.0.0-20200825225859-85005c6cf052/go.mod h1:nRMRTab+kZuk0LnKZpxhOVH/ndsdr2Nr//Zltc/vwgo=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.1.0 h1:rABPCO77SjdbJ/eJ/ynIo8vWICy1VEnL5JAxJbQLo1E=
|
||||
github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I=
|
||||
github.com/libp2p/go-libp2p-autonat v0.0.6/go.mod h1:uZneLdOkZHro35xIhpbtTzLlgYturpu4J5+0cZK3MqE=
|
||||
github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8=
|
||||
github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE=
|
||||
@ -691,8 +703,9 @@ github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQ
|
||||
github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI=
|
||||
github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.0/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.2 h1:YMp7StMi2dof+baaxkbxaizXjY1RPvU71CXfxExzcUU=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk=
|
||||
github.com/libp2p/go-libp2p-autonat v0.6.0 h1:+vbQ1pMzMGjE/RJopiQKK2FRjdCKHPNPrkPm8u+luQU=
|
||||
github.com/libp2p/go-libp2p-autonat v0.6.0/go.mod h1:bFC6kY8jwzNNWoqc8iGE57vsfwyJ/lP4O4DOV1e0B2o=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.0.1/go.mod h1:Ibpbw/7cPPYwFb7PACIWdvxxv0t0XCCI10t7czjAjTc=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU=
|
||||
@ -732,8 +745,10 @@ github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJB
|
||||
github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
|
||||
github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
|
||||
github.com/libp2p/go-libp2p-core v0.8.6/go.mod h1:dgHr0l0hIKfWpGpqAMbpo19pen9wJfdCGv51mTmdpmM=
|
||||
github.com/libp2p/go-libp2p-core v0.9.0 h1:t97Mv0LIBZlP2FXVRNKKVzHJCIjbIWGxYptGId4+htU=
|
||||
github.com/libp2p/go-libp2p-core v0.9.0/go.mod h1:ESsbz31oC3C1AvMJoGx26RTuCkNhmkSRCqZ0kQtJ2/8=
|
||||
github.com/libp2p/go-libp2p-core v0.10.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg=
|
||||
github.com/libp2p/go-libp2p-core v0.11.0 h1:75jAgdA+IChNa+/mZXogfmrGkgwxkVvxmIC7pV+F6sI=
|
||||
github.com/libp2p/go-libp2p-core v0.11.0/go.mod h1:ECdxehoYosLYHgDDFa2N4yE8Y7aQRAMf0sX9mf2sbGg=
|
||||
github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE=
|
||||
github.com/libp2p/go-libp2p-crypto v0.0.2/go.mod h1:eETI5OUfBnvARGOHrJz2eWNyTUxEGZnBxMcbUjfIj4I=
|
||||
github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI=
|
||||
@ -742,8 +757,8 @@ github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFT
|
||||
github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg=
|
||||
github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.1 h1:CJylx+h2+4+s68GvrM4pGNyfNhOYviWBPtVv5PA7sfo=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.1/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug=
|
||||
github.com/libp2p/go-libp2p-discovery v0.6.0 h1:1XdPmhMJr8Tmj/yUfkJMIi8mgwWrLUsCB3bMxdT+DSo=
|
||||
github.com/libp2p/go-libp2p-discovery v0.6.0/go.mod h1:/u1voHt0tKIe5oIA1RHBKQLVCWPna2dXmPNHc2zR9S8=
|
||||
github.com/libp2p/go-libp2p-gostream v0.3.0 h1:rnas//vRdHYCr7bjraZJISPwZV8OGMjeX5k5fN5Ax44=
|
||||
github.com/libp2p/go-libp2p-gostream v0.3.0/go.mod h1:pLBQu8db7vBMNINGsAwLL/ZCE8wng5V1FThoaE5rNjc=
|
||||
github.com/libp2p/go-libp2p-host v0.0.1/go.mod h1:qWd+H1yuU0m5CwzAkvbSjqKairayEHdR5MMl7Cwa7Go=
|
||||
@ -754,9 +769,8 @@ github.com/libp2p/go-libp2p-interface-connmgr v0.0.1/go.mod h1:GarlRLH0LdeWcLnYM
|
||||
github.com/libp2p/go-libp2p-interface-connmgr v0.0.4/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
|
||||
github.com/libp2p/go-libp2p-interface-connmgr v0.0.5/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
|
||||
github.com/libp2p/go-libp2p-interface-pnet v0.0.1/go.mod h1:el9jHpQAXK5dnTpKA4yfCNBZXvrzdOU75zz+C6ryp3k=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.11.1/go.mod h1:5ojtR2acDPqh/jXf5orWy8YGb8bHQDS+qeDcoscL/PI=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.13.1 h1:wQgzOpoc+dcPVDb3h0HNWUjon5JiYEqsA4iNBUtIA7A=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.13.1/go.mod h1:iVdxmsKHVPQSCGPP4V/A+tDFCLsxrREZUBX8ohOcKDw=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.15.0 h1:Ke+Oj78gX5UDXnA6HBdrgvi+fStJxgYTDa51U0TsCLo=
|
||||
github.com/libp2p/go-libp2p-kad-dht v0.15.0/go.mod h1:rZtPxYu1TnHHz6n1RggdGrxUX/tA1C2/Wiw3ZMUDrU0=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.3.1/go.mod h1:oyjT5O7tS9CQurok++ERgc46YLwEpuGoFq9ubvoUOio=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.7 h1:spZAcgxifvFZHBD8tErvppbnNiKA5uokDu3CV7axu70=
|
||||
github.com/libp2p/go-libp2p-kbucket v0.4.7/go.mod h1:XyVo99AfQH0foSf176k4jY1xUJ2+jUJIZCSDm7r2YKk=
|
||||
@ -775,8 +789,9 @@ github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aD
|
||||
github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.6 h1:wMWis3kYynCbHoyKLPBEMu4YRLltbm8Mk08HGSfvTkU=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw=
|
||||
github.com/libp2p/go-libp2p-nat v0.1.0 h1:vigUi2MEN+fwghe5ijpScxtbbDz+L/6y8XwlzYOJgSY=
|
||||
github.com/libp2p/go-libp2p-nat v0.1.0/go.mod h1:DQzAG+QbDYjN1/C3B6vXucLtz3u9rEonLVPtZVzQqks=
|
||||
github.com/libp2p/go-libp2p-net v0.0.1/go.mod h1:Yt3zgmlsHOgUWSXmt5V/Jpz9upuJBE8EgNU9DrCcR8c=
|
||||
github.com/libp2p/go-libp2p-net v0.0.2/go.mod h1:Yt3zgmlsHOgUWSXmt5V/Jpz9upuJBE8EgNU9DrCcR8c=
|
||||
github.com/libp2p/go-libp2p-netutil v0.0.1/go.mod h1:GdusFvujWZI9Vt0X5BKqwWWmZFxecf9Gt03cKxm2f/Q=
|
||||
@ -784,8 +799,8 @@ github.com/libp2p/go-libp2p-netutil v0.1.0 h1:zscYDNVEcGxyUpMd0JReUZTrpMfia8PmLK
|
||||
github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU=
|
||||
github.com/libp2p/go-libp2p-noise v0.1.1/go.mod h1:QDFLdKX7nluB7DEnlVPbz7xlLHdwHFA9HiohJRr3vwM=
|
||||
github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q=
|
||||
github.com/libp2p/go-libp2p-noise v0.2.2 h1:MRt5XGfYziDXIUy2udtMWfPmzZqUDYoC1FZoKnqPzwk=
|
||||
github.com/libp2p/go-libp2p-noise v0.2.2/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q=
|
||||
github.com/libp2p/go-libp2p-noise v0.3.0 h1:NCVH7evhVt9njbTQshzT7N1S3Q6fjj9M11FCgfH5+cA=
|
||||
github.com/libp2p/go-libp2p-noise v0.3.0/go.mod h1:JNjHbociDJKHD64KTkzGnzqJ0FEV5gHJa6AB00kbCNQ=
|
||||
github.com/libp2p/go-libp2p-peer v0.0.1/go.mod h1:nXQvOBbwVqoP+T5Y5nCjeH4sP9IX/J0AMzcDUVruVoo=
|
||||
github.com/libp2p/go-libp2p-peer v0.1.1/go.mod h1:jkF12jGB4Gk/IOo+yomm+7oLWxF278F7UnrYUQ1Q8es=
|
||||
github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY=
|
||||
@ -799,24 +814,24 @@ github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRj
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.8 h1:nJghUlUkFVvyk7ccsM67oFA6kqUkwyCM1G4WPVMCWYA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.8/go.mod h1:gGiPlXdz7mIHd2vfAsHzBNAMqSDkt2UBFwgcITgw1lA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.4.0 h1:DOhRJLnM9Dc9lIXi3rPDZBf789LXy1BrzwIs7Tj0cKA=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.4.0/go.mod h1:rDJUFyzEWPpXpEwywkcTYYzDHlwza8riYMaUzaN6hX0=
|
||||
github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k=
|
||||
github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA=
|
||||
github.com/libp2p/go-libp2p-protocol v0.0.1/go.mod h1:Af9n4PiruirSDjHycM1QuiMi/1VZNHYcK8cLgFJLZ4s=
|
||||
github.com/libp2p/go-libp2p-protocol v0.1.0/go.mod h1:KQPHpAabB57XQxGrXCNvbL6UEXfQqUgC/1adR2Xtflk=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.4.0/go.mod h1:izkeMLvz6Ht8yAISXjx60XUQZMq9ZMe5h2ih4dLIBIQ=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.5.4 h1:rHl9/Xok4zX3zgi0pg0XnUj9Xj2OeXO8oTu85q2+YA8=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.5.4/go.mod h1:gVOzwebXVdSMDQBTfH8ACO5EJ4SQrvsHqCmYsCZpD0E=
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.4.0 h1:KjzTLIOBCt0+/4wH6epTxD/Qu4Up/IyeKHlj9MhWRJI=
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.4.0/go.mod h1:hs0j0ugcBjMOMgJ6diOlZM2rZEId/w5Gg86E+ac4SmQ=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.6.0 h1:98+RXuEWW17U6cAijK1yaTf6mw/B+n5yPA421z+dlo0=
|
||||
github.com/libp2p/go-libp2p-pubsub v0.6.0/go.mod h1:nJv87QM2cU0w45KPR1rZicq+FmFIOD16zmT+ep1nOmg=
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.5.0 h1:WuYdY42DVIJ+N0qMdq2du/E9poJH+xzsXL7Uptwj9tw=
|
||||
github.com/libp2p/go-libp2p-pubsub-router v0.5.0/go.mod h1:TRJKskSem3C0aSb3CmRgPwq6IleVFzds6hS09fmZbGM=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.11.2/go.mod h1:wlanzKtIh6pHrq+0U3p3DY9PJfGqxMgPaGKaK5LifwQ=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.12.0 h1:7IjDH4XNkmJbOMD+mxRloTe4LzMTq+vqvm2nYNL1N7M=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.12.0/go.mod h1:EKHqxZbWE/FhDJZ6ebyZ/4v3X9zyuuuKIN0XR9vANT0=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.13.0/go.mod h1:39/ZWJ1TW/jx1iFkKzzUg00W6tDJh73FC0xYudjr7Hc=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.15.0 h1:DR0mP6kcieowikBprWkcNtbquRKOPWb5dLZ4ahDZujk=
|
||||
github.com/libp2p/go-libp2p-quic-transport v0.15.0/go.mod h1:wv4uGwjcqe8Mhjj7N/Ic0aKjA+/10UnMlSzLO0yRpYQ=
|
||||
github.com/libp2p/go-libp2p-record v0.0.1/go.mod h1:grzqg263Rug/sRex85QrDOLntdFAymLDLm7lxMgU79Q=
|
||||
github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q=
|
||||
github.com/libp2p/go-libp2p-record v0.1.1/go.mod h1:VRgKajOyMVgP/F0L5g3kH7SVskp17vFi2xheb5uMJtg=
|
||||
github.com/libp2p/go-libp2p-record v0.1.2/go.mod h1:pal0eNcT5nqZaTV7UGhqeGqxFgGdsU/9W//C8dqjQDk=
|
||||
github.com/libp2p/go-libp2p-record v0.1.3 h1:R27hoScIhQf/A8XJZ8lYpnqh9LatJ5YbHs28kCIfql0=
|
||||
github.com/libp2p/go-libp2p-record v0.1.3/go.mod h1:yNUff/adKIfPnYQXgp6FQmNu3gLJ6EMg7+/vv2+9pY4=
|
||||
@ -837,8 +852,9 @@ github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJeg
|
||||
github.com/libp2p/go-libp2p-swarm v0.3.1/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk=
|
||||
github.com/libp2p/go-libp2p-swarm v0.4.0/go.mod h1:XVFcO52VoLoo0eitSxNQWYq4D6sydGOweTOAjJNraCw=
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4=
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.3 h1:hsYaD/y6+kZff1o1Mc56NcuwSg80lIphTS/zDk3mO4M=
|
||||
github.com/libp2p/go-libp2p-swarm v0.5.3/go.mod h1:NBn7eNW2lu568L7Ns9wdFrOhgRlkRnIDg0FLKbuu3i8=
|
||||
github.com/libp2p/go-libp2p-swarm v0.8.0 h1:nRHNRhi86L7jhka02N4MoV+PSFFPoJFkHNQwCTFxNhw=
|
||||
github.com/libp2p/go-libp2p-swarm v0.8.0/go.mod h1:sOMp6dPuqco0r0GHTzfVheVBh6UEL0L1lXUZ5ot2Fvc=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.1/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
@ -848,11 +864,13 @@ github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eq
|
||||
github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc=
|
||||
github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.2 h1:IOiA5mMigi+eEjf4J+B7fepDhsjtsoWA9QbsCqbNp5U=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.2/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0=
|
||||
github.com/libp2p/go-libp2p-testing v0.5.0 h1:bTjC29TTQ/ODq0ld3+0KLq3irdA5cAH3OMbRi0/QsvE=
|
||||
github.com/libp2p/go-libp2p-testing v0.5.0/go.mod h1:QBk8fqIL1XNcno/l3/hhaIEn4aLRijpYOR+zVjjlh+A=
|
||||
github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M=
|
||||
github.com/libp2p/go-libp2p-tls v0.2.0 h1:N8i5wPiHudA+02sfW85R2nUbybPm7agjAywZc6pd3xA=
|
||||
github.com/libp2p/go-libp2p-tls v0.2.0/go.mod h1:twrp2Ci4lE2GYspA1AnlYm+boYjqVruxDKJJj7s6xrc=
|
||||
github.com/libp2p/go-libp2p-tls v0.3.0/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY=
|
||||
github.com/libp2p/go-libp2p-tls v0.3.1 h1:lsE2zYte+rZCEOHF72J1Fg3XK3dGQyKvI6i5ehJfEp0=
|
||||
github.com/libp2p/go-libp2p-tls v0.3.1/go.mod h1:fwF5X6PWGxm6IDRwF3V8AVCCj/hOd5oFlg+wo2FxJDY=
|
||||
github.com/libp2p/go-libp2p-transport v0.0.1/go.mod h1:UzbUs9X+PHOSw7S3ZmeOxfnwaQY5vGDzZmKPod3N3tk=
|
||||
github.com/libp2p/go-libp2p-transport v0.0.5/go.mod h1:StoY3sx6IqsP6XKoabsPnHCwqKXWUMWU7Rfcsubee/A=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.0.4/go.mod h1:RGq+tupk+oj7PzL2kn/m1w6YXxcIAYJYeI90h6BGgUc=
|
||||
@ -862,8 +880,9 @@ github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.0/go.mod h1:J4ko0ObtZSmgn5BX5AmegP+dK3CSnU2lMCKsSq/EY0s=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.3/go.mod h1:bpkldbOWXMrXhpZbSV1mQxTrefOg2Fi+k1ClDSA4ppw=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.6 h1:SHt3g0FslnqIkEWF25YOB8UCOCTpGAVvHRWQYJ+veiI=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.6/go.mod h1:JE0WQuQdy+uLZ5zOaI3Nw9dWGYJIA7mywEtP2lMvnyk=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.5.0 h1:7SDl3O2+AYOgfE40Mis83ClpfGNkNA6m4FwhbOHs+iI=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.5.0/go.mod h1:Rc+XODlB3yce7dvFV4q/RmyJGsFcCZRkeZMu/Zdg0mo=
|
||||
github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db h1:EDoDKW8ZAHd6SIDeo+thU51PyQppqLYkBxx0ObvFj/w=
|
||||
github.com/libp2p/go-libp2p-xor v0.0.0-20210714161855-5c005aca55db/go.mod h1:LSTM5yRnjGZbWNTA/hRwq2gGFrvRIbQJscoIL/u6InY=
|
||||
github.com/libp2p/go-libp2p-yamux v0.1.2/go.mod h1:xUoV/RmYkg6BW/qGxA9XJyg+HzXFYkeXbnhjmnYzKp8=
|
||||
@ -878,8 +897,9 @@ github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelN
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.1/go.mod h1:dowuvDu8CRWmr0iqySMiSxK+W0iL5cMVO9S94Y6gkv4=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.3/go.mod h1:Vy3TMonBAfTMXHWopsMc8iX/XGRYrRlpUaMzaeuHV/s=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.4 h1:/UOPtT/6DHPtr3TtKXBHa6g0Le0szYuI33Xc/Xpd7fQ=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3BuHoeTSqhcel1wsE=
|
||||
github.com/libp2p/go-libp2p-yamux v0.6.0 h1:TKayW983n92JhCGdCo7ej7eEb+DQ0VYfKNOxlN/1kNQ=
|
||||
github.com/libp2p/go-libp2p-yamux v0.6.0/go.mod h1:MRhd6mAYnFRnSISp4M8i0ClV/j+mWHo2mYLifWGw33k=
|
||||
github.com/libp2p/go-maddr-filter v0.0.1/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q=
|
||||
github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q=
|
||||
github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M=
|
||||
@ -896,12 +916,14 @@ github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ
|
||||
github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.3/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ=
|
||||
github.com/libp2p/go-msgio v0.0.6 h1:lQ7Uc0kS1wb1EfRxO2Eir/RJoHkHn7t6o+EiwsYIKJA=
|
||||
github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA=
|
||||
github.com/libp2p/go-msgio v0.1.0 h1:8Q7g/528ivAlfXTFWvWhVjTE8XG8sDTkRUKPYh9+5Q8=
|
||||
github.com/libp2p/go-msgio v0.1.0/go.mod h1:eNlv2vy9V2X/kNldcZ+SShFE++o2Yjxwx6RAYsmgJnE=
|
||||
github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI=
|
||||
github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo=
|
||||
github.com/libp2p/go-nat v0.0.5 h1:qxnwkco8RLKqVh1NmjQ+tJ8p8khNLFxuElYG/TwqW4Q=
|
||||
github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU=
|
||||
github.com/libp2p/go-nat v0.1.0 h1:MfVsH6DLcpa04Xr+p8hmVRG4juse0s3J8HyNWYHffXg=
|
||||
github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM=
|
||||
github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A=
|
||||
@ -914,13 +936,15 @@ github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO
|
||||
github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw=
|
||||
github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA=
|
||||
github.com/libp2p/go-reuseport v0.0.2 h1:XSG94b1FJfGA01BUrT82imejHQyTxO4jEWqheyCXYvU=
|
||||
github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ=
|
||||
github.com/libp2p/go-reuseport v0.1.0 h1:0ooKOx2iwyIkf339WCZ2HN3ujTDbkK0PjC7JVoP1AiM=
|
||||
github.com/libp2p/go-reuseport v0.1.0/go.mod h1:bQVn9hmfcTaoo0c9v5pBhOarsU1eNOBZdaAd2hzXRKU=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.5 h1:lJzi+vSYbyJj2faPKLxNGWEIBcaV/uJmyvsUxXy2mLw=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.5/go.mod h1:TC62hhPc8qs5c/RoXDZG6YmjK+/YWUPC0yYmeUecbjc=
|
||||
github.com/libp2p/go-reuseport-transport v0.1.0 h1:C3PHeHjmnz8m6f0uydObj02tMEoi7CyD1zuN7xQT8gc=
|
||||
github.com/libp2p/go-reuseport-transport v0.1.0/go.mod h1:vev0C0uMkzriDY59yFHD9v+ujJvYmDQVLowvAjEOmfw=
|
||||
github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
|
||||
github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
|
||||
github.com/libp2p/go-sockaddr v0.1.1 h1:yD80l2ZOdGksnOyHrhxDdTDFrf7Oy+v3FMVArIRgZxQ=
|
||||
@ -941,8 +965,8 @@ github.com/libp2p/go-tcp-transport v0.2.1/go.mod h1:zskiJ70MEfWz2MKxvFB/Pv+tPIB1
|
||||
github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU=
|
||||
github.com/libp2p/go-tcp-transport v0.2.4/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU=
|
||||
github.com/libp2p/go-tcp-transport v0.2.7/go.mod h1:lue9p1b3VmZj1MhhEGB/etmvF/nBQ0X9CW2DutBT3MM=
|
||||
github.com/libp2p/go-tcp-transport v0.2.8 h1:aLjX+Nkz+kIz3uA56WtlGKRSAnKDvnqKmv1qF4EyyE4=
|
||||
github.com/libp2p/go-tcp-transport v0.2.8/go.mod h1:64rSfVidkYPLqbzpcN2IwHY4pmgirp67h++hZ/rcndQ=
|
||||
github.com/libp2p/go-tcp-transport v0.4.0 h1:VDyg4j6en3OuXf90gfDQh5Sy9KowO9udnd0OU8PP6zg=
|
||||
github.com/libp2p/go-tcp-transport v0.4.0/go.mod h1:0y52Rwrn4076xdJYu/51/qJIdxz+EWDAOG2S45sV3VI=
|
||||
github.com/libp2p/go-testutil v0.0.1/go.mod h1:iAcJc/DKJQanJ5ws2V+u5ywdL2n12X1WbbEG+Jjy69I=
|
||||
github.com/libp2p/go-testutil v0.1.0/go.mod h1:81b2n5HypcVyrCg/MJx4Wgfp/VHojytjVe/gLzZ2Ehc=
|
||||
github.com/libp2p/go-ws-transport v0.0.5/go.mod h1:Qbl4BxPfXXhhd/o0wcrgoaItHqA9tnZjoFZnxykuaXU=
|
||||
@ -965,16 +989,18 @@ github.com/libp2p/go-yamux v1.4.1 h1:P1Fe9vF4th5JOxxgQvfbOHkrGqIZniTLf+ddhZp8YTI
|
||||
github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE=
|
||||
github.com/libp2p/go-yamux/v2 v2.0.0/go.mod h1:NVWira5+sVUIU6tu1JWvaRn1dRnG+cawOJiflsAM+7U=
|
||||
github.com/libp2p/go-yamux/v2 v2.1.1/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ=
|
||||
github.com/libp2p/go-yamux/v2 v2.2.0 h1:RwtpYZ2/wVviZ5+3pjC8qdQ4TKnrak0/E01N1UWoAFU=
|
||||
github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ=
|
||||
github.com/libp2p/zeroconf/v2 v2.0.0 h1:qYAHAqUVh4hMSfu+iDTZNqH07wLGAvb1+DW4Tx/qUoQ=
|
||||
github.com/libp2p/zeroconf/v2 v2.0.0/go.mod h1:J85R/d9joD8u8F9aHM8pBXygtG9W02enEwS+wWeL6yo=
|
||||
github.com/libp2p/go-yamux/v2 v2.3.0 h1:luRV68GS1vqqr6EFUjtu1kr51d+IbW0gSowu8emYWAI=
|
||||
github.com/libp2p/go-yamux/v2 v2.3.0/go.mod h1:iTU+lOIn/2h0AgKcL49clNTwfEw+WSfDYrXe05EyKIs=
|
||||
github.com/libp2p/zeroconf/v2 v2.1.1 h1:XAuSczA96MYkVwH+LqqqCUZb2yH3krobMJ1YE+0hG2s=
|
||||
github.com/libp2p/zeroconf/v2 v2.1.1/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs=
|
||||
github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
|
||||
github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
|
||||
github.com/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8=
|
||||
github.com/lucas-clemente/quic-go v0.21.2/go.mod h1:vF5M1XqhBAHgbjKcJOXY3JZz3GP0T3FQhz/uyOUS38Q=
|
||||
github.com/lucas-clemente/quic-go v0.23.0 h1:5vFnKtZ6nHDFsc/F3uuiF4T3y/AXaQdxjUqiVw26GZE=
|
||||
github.com/lucas-clemente/quic-go v0.23.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
|
||||
github.com/lucas-clemente/quic-go v0.24.0 h1:ToR7SIIEdrgOhgVTHvPgdVRJfgVy+N0wQAagH7L4d5g=
|
||||
github.com/lucas-clemente/quic-go v0.24.0/go.mod h1:paZuzjXCE5mj6sikVLMvqXk8lJV2AsqtJ6bDhjEfxx0=
|
||||
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
|
||||
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
@ -1068,8 +1094,9 @@ github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u
|
||||
github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI=
|
||||
github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc=
|
||||
github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0=
|
||||
github.com/multiformats/go-multiaddr v0.4.0 h1:hL/K4ZJhJ5PTw3nwylq9lGU5yArzcAroZmex1ghSEkQ=
|
||||
github.com/multiformats/go-multiaddr v0.4.0/go.mod h1:YcpyLH8ZPudLxQlemYBPhSm0/oCXAT8Z4mzFpyoPyRc=
|
||||
github.com/multiformats/go-multiaddr v0.4.1 h1:Pq37uLx3hsyNlTDir7FZyU8+cFCTqd5y1KiM2IzOutI=
|
||||
github.com/multiformats/go-multiaddr v0.4.1/go.mod h1:3afI9HfVW8csiF8UZqtpYRiDyew8pRX7qLIGHu9FLuM=
|
||||
github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q=
|
||||
github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q=
|
||||
github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0=
|
||||
@ -1100,8 +1127,10 @@ github.com/multiformats/go-multihash v0.0.9/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa
|
||||
github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
|
||||
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multihash v0.0.15 h1:hWOPdrNqDjwHDx82vsYGSDZNyktOJJ2dzZJzFkOV1jM=
|
||||
github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg=
|
||||
github.com/multiformats/go-multihash v0.0.16/go.mod h1:zhfEIgVnB/rPMfxgFw15ZmGoNaKyNUIE4IWHG/kC+Ag=
|
||||
github.com/multiformats/go-multihash v0.1.0 h1:CgAgwqk3//SVEw3T+6DqI4mWMyRuDwZtOWcJT0q9+EA=
|
||||
github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84=
|
||||
github.com/multiformats/go-multistream v0.0.1/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
|
||||
github.com/multiformats/go-multistream v0.0.4/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
|
||||
github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
|
||||
@ -1187,7 +1216,6 @@ github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4
|
||||
github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
|
||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||
github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
|
||||
github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4=
|
||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||
github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU=
|
||||
github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU=
|
||||
@ -1205,7 +1233,6 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7q
|
||||
github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
|
||||
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
|
||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
||||
github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
@ -1219,19 +1246,19 @@ github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R
|
||||
github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||
github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||
github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
|
||||
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||
github.com/prometheus/statsd_exporter v0.20.0/go.mod h1:YL3FWCG8JBBtaUSxAg4Gz2ZYu22bS84XM89ZQXXTWmQ=
|
||||
github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8=
|
||||
github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=
|
||||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||
github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
|
||||
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
@ -1268,9 +1295,8 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8=
|
||||
github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
|
||||
github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w=
|
||||
github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
||||
@ -1322,8 +1348,9 @@ github.com/urfave/cli/v2 v2.0.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2
|
||||
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
|
||||
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
|
||||
github.com/wangjia184/sortedset v0.0.0-20160527075905-f5d03557ba30/go.mod h1:YkocrP2K2tcw938x9gCOmT5G5eCD6jsTz0SZuyAqwIE=
|
||||
github.com/warpfork/go-testmark v0.3.0 h1:Q81c4u7hT+BR5kNfNQhEF0VT2pmL7+Kk0wD+ORYl7iA=
|
||||
github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0=
|
||||
github.com/warpfork/go-testmark v0.9.0 h1:nc+uaCiv5lFQLYjhuC2LTYeJ7JaC+gdDmsz9r0ISy0Y=
|
||||
github.com/warpfork/go-testmark v0.9.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0=
|
||||
github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
|
||||
github.com/warpfork/go-wish v0.0.0-20190328234359-8b3e70f8e830/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw=
|
||||
github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a h1:G++j5e0OC488te356JvdhaM8YS6nMsjLAYF7JxCv07w=
|
||||
@ -1388,17 +1415,17 @@ go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
||||
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/dig v1.10.0 h1:yLmDDj9/zuDjv3gz8GQGviXMs9TfysIUMUilCpgzUJY=
|
||||
go.uber.org/dig v1.10.0/go.mod h1:X34SnWGr8Fyla9zQNO2GSO2D+TIuqB14OS8JhYocIyw=
|
||||
go.uber.org/fx v1.13.1 h1:CFNTr1oin5OJ0VCZ8EycL3wzF29Jz2g0xe55RFsf2a4=
|
||||
go.uber.org/fx v1.13.1/go.mod h1:bREWhavnedxpJeTq9pQT53BbvwhUv7TcpsOqcH4a+3w=
|
||||
go.uber.org/goleak v0.10.0/go.mod h1:VCZuO8V8mFPlL0F5J5GK1rtHV3DrFcQ1R8ryq7FK0aI=
|
||||
go.uber.org/dig v1.12.0 h1:l1GQeZpEbss0/M4l/ZotuBndCrkMdjnygzgcuOjAdaY=
|
||||
go.uber.org/dig v1.12.0/go.mod h1:X34SnWGr8Fyla9zQNO2GSO2D+TIuqB14OS8JhYocIyw=
|
||||
go.uber.org/fx v1.15.0 h1:kcfBpAm98n0ksanyyZLFE/Q3T7yPi13Ge2liu3TxR+A=
|
||||
go.uber.org/fx v1.15.0/go.mod h1:jI3RazQUhGv5KkpZIRv+kuP4CcgX3fnc0qX8bLnzbx8=
|
||||
go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0=
|
||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
|
||||
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
||||
go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
|
||||
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
|
||||
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||
go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec=
|
||||
@ -1410,8 +1437,9 @@ go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
||||
go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
||||
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
|
||||
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
|
||||
go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE=
|
||||
go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
|
||||
go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI=
|
||||
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
|
||||
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
|
||||
go4.org v0.0.0-20200411211856-f5505b9728dd h1:BNJlw5kRTzdmyfh5U8F93HA2OwkP7ZGwA51eJ/0wKOU=
|
||||
go4.org v0.0.0-20200411211856-f5505b9728dd/go.mod h1:CIiUVy99QCPfoE13bO4EZaz5GZMZXMSBGhxRdsvzbkg=
|
||||
@ -1446,8 +1474,9 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e h1:VvfwVmMH40bpMeizC9/K7ipM5Qjucuu16RWfneFPyhQ=
|
||||
golang.org/x/crypto v0.0.0-20210813211128-0a44fdfbc16e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
@ -1470,9 +1499,8 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI=
|
||||
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||
@ -1481,7 +1509,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@ -1537,6 +1564,7 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d h1:LO7XpTYMwTqxjLcGWPijK3vRXg1aWdlNOVOHRq45d7c=
|
||||
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
@ -1614,7 +1642,6 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@ -1641,8 +1668,11 @@ golang.org/x/sys v0.0.0-20210511113859-b0526f3d8744/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912 h1:uCLL3g5wH2xjxVREVuAbP9JM5PPKjRbXKRa6IBjkzmU=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20211025112917-711f33c9992c h1:i4MLwL3EbCgobekQtkVW94UBSPLMadfEGtKq+CAFsEU=
|
||||
golang.org/x/sys v0.0.0-20211025112917-711f33c9992c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
@ -1684,7 +1714,6 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
|
||||
golang.org/x/tools v0.0.0-20191030062658-86caa796c7ab/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191114200427-caa0b0f7d508/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
@ -1714,9 +1743,9 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc
|
||||
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.1-0.20210225150353-54dc8c5edb56/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU=
|
||||
golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs=
|
||||
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA=
|
||||
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
@ -1839,6 +1868,8 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy
|
||||
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w=
|
||||
gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
|
||||
gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8=
|
||||
gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
@ -1866,6 +1897,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
lukechampine.com/blake3 v1.1.6 h1:H3cROdztr7RCfoaTpGZFQsrqvweFLrqS73j7L7cmR5c=
|
||||
lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
|
||||
pgregory.net/rapid v0.4.7 h1:MTNRktPuv5FNqOO151TM9mDTa+XHcX6ypYeISDVD14g=
|
||||
pgregory.net/rapid v0.4.7/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU=
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# This file will be overwritten on package upgrades, avoid customizations here.
|
||||
#
|
||||
# To make persistant changes, create file in
|
||||
# To make persistent changes, create file in
|
||||
# "/etc/systemd/system/ipfs.service.d/overwrite.conf" with
|
||||
# `systemctl edit ipfs.service`. This file will be parsed after this
|
||||
# file has been parsed.
|
||||
@ -13,7 +13,7 @@
|
||||
# For more info about custom unit files see systemd.unit(5).
|
||||
|
||||
# This service file enables systemd-hardening features compatible with IPFS,
|
||||
# while breaking compability with the fuse-mount function. Use this one only
|
||||
# while breaking compatibility with the fuse-mount function. Use this one only
|
||||
# if you don't need the fuse-mount functionality.
|
||||
|
||||
[Unit]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# This file will be overwritten on package upgrades, avoid customizations here.
|
||||
#
|
||||
# To make persistant changes, create file in
|
||||
# To make persistent changes, create file in
|
||||
# "/etc/systemd/system/ipfs.service.d/overwrite.conf" with
|
||||
# `systemctl edit ipfs.service`. This file will be parsed after this
|
||||
# file has been parsed.
|
||||
|
||||
@ -16,7 +16,6 @@ import (
|
||||
|
||||
func newNode(ctx context.Context, t *testing.T) host.Host {
|
||||
h, err := libp2p.New(
|
||||
ctx,
|
||||
libp2p.ListenAddrStrings("/ip4/127.0.0.1/tcp/0"),
|
||||
// We'd like to set the connection manager low water to 0, but
|
||||
// that would disable the connection manager.
|
||||
|
||||
@ -2,6 +2,7 @@ package loader
|
||||
|
||||
import (
|
||||
pluginbadgerds "github.com/ipfs/go-ipfs/plugin/plugins/badgerds"
|
||||
pluginiplddagjose "github.com/ipfs/go-ipfs/plugin/plugins/dagjose"
|
||||
pluginflatfs "github.com/ipfs/go-ipfs/plugin/plugins/flatfs"
|
||||
pluginipldgit "github.com/ipfs/go-ipfs/plugin/plugins/git"
|
||||
pluginlevelds "github.com/ipfs/go-ipfs/plugin/plugins/levelds"
|
||||
@ -14,6 +15,7 @@ import (
|
||||
|
||||
func init() {
|
||||
Preload(pluginipldgit.Plugins...)
|
||||
Preload(pluginiplddagjose.Plugins...)
|
||||
Preload(pluginbadgerds.Plugins...)
|
||||
Preload(pluginflatfs.Plugins...)
|
||||
Preload(pluginlevelds.Plugins...)
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
# name go-path number of the sub-plugin or *
|
||||
|
||||
ipldgit github.com/ipfs/go-ipfs/plugin/plugins/git *
|
||||
iplddagjose github.com/ipfs/go-ipfs/plugin/plugins/dagjose *
|
||||
|
||||
badgerds github.com/ipfs/go-ipfs/plugin/plugins/badgerds *
|
||||
flatfs github.com/ipfs/go-ipfs/plugin/plugins/flatfs *
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
include mk/header.mk
|
||||
|
||||
$(d)_plugins:=$(d)/git $(d)/badgerds $(d)/flatfs $(d)/levelds $(d)/peerlog
|
||||
$(d)_plugins:=$(d)/git $(d)/dagjose $(d)/badgerds $(d)/flatfs $(d)/levelds $(d)/peerlog
|
||||
$(d)_plugins_so:=$(addsuffix .so,$($(d)_plugins))
|
||||
$(d)_plugins_main:=$(addsuffix /main/main.go,$($(d)_plugins))
|
||||
|
||||
|
||||
36
plugin/plugins/dagjose/dagjose.go
Normal file
36
plugin/plugins/dagjose/dagjose.go
Normal file
@ -0,0 +1,36 @@
|
||||
package dagjose
|
||||
|
||||
import (
|
||||
"github.com/ipfs/go-ipfs/plugin"
|
||||
|
||||
"github.com/ceramicnetwork/go-dag-jose/dagjose"
|
||||
"github.com/ipld/go-ipld-prime/multicodec"
|
||||
mc "github.com/multiformats/go-multicodec"
|
||||
)
|
||||
|
||||
// Plugins is exported list of plugins that will be loaded
|
||||
var Plugins = []plugin.Plugin{
|
||||
&dagjosePlugin{},
|
||||
}
|
||||
|
||||
type dagjosePlugin struct{}
|
||||
|
||||
var _ plugin.PluginIPLD = (*dagjosePlugin)(nil)
|
||||
|
||||
func (*dagjosePlugin) Name() string {
|
||||
return "ipld-codec-dagjose"
|
||||
}
|
||||
|
||||
func (*dagjosePlugin) Version() string {
|
||||
return "0.0.1"
|
||||
}
|
||||
|
||||
func (*dagjosePlugin) Init(_ *plugin.Environment) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*dagjosePlugin) Register(reg multicodec.Registry) error {
|
||||
reg.RegisterEncoder(uint64(mc.DagJose), dagjose.Encode)
|
||||
reg.RegisterDecoder(uint64(mc.DagJose), dagjose.Decode)
|
||||
return nil
|
||||
}
|
||||
@ -54,12 +54,12 @@ func (*leveldsPlugin) DatastoreConfigParser() fsrepo.ConfigFromMap {
|
||||
return nil, fmt.Errorf("'path' field is missing or not string")
|
||||
}
|
||||
|
||||
switch cm := params["compression"].(string); cm {
|
||||
switch cm := params["compression"]; cm {
|
||||
case "none":
|
||||
c.compression = ldbopts.NoCompression
|
||||
case "snappy":
|
||||
c.compression = ldbopts.SnappyCompression
|
||||
case "":
|
||||
case "", nil:
|
||||
c.compression = ldbopts.DefaultCompression
|
||||
default:
|
||||
return nil, fmt.Errorf("unrecognized value for compression: %s", cm)
|
||||
|
||||
@ -34,7 +34,7 @@ func TestExtractEnabled(t *testing.T) {
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "returns the vlaue of the Enabled field",
|
||||
name: "returns the value of the Enabled field",
|
||||
config: map[string]interface{}{"Enabled": true},
|
||||
expected: true,
|
||||
},
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package fsrepo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@ -660,8 +661,8 @@ func (r *FSRepo) Datastore() repo.Datastore {
|
||||
}
|
||||
|
||||
// GetStorageUsage computes the storage space taken by the repo in bytes
|
||||
func (r *FSRepo) GetStorageUsage() (uint64, error) {
|
||||
return ds.DiskUsage(r.Datastore())
|
||||
func (r *FSRepo) GetStorageUsage(ctx context.Context) (uint64, error) {
|
||||
return ds.DiskUsage(ctx, r.Datastore())
|
||||
}
|
||||
|
||||
func (r *FSRepo) SwarmKey() ([]byte, error) {
|
||||
|
||||
@ -2,6 +2,7 @@ package fsrepo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@ -74,10 +75,10 @@ func TestDatastoreGetNotAllowedAfterClose(t *testing.T) {
|
||||
|
||||
k := "key"
|
||||
data := []byte(k)
|
||||
assert.Nil(r.Datastore().Put(datastore.NewKey(k), data), t, "Put should be successful")
|
||||
assert.Nil(r.Datastore().Put(context.Background(), datastore.NewKey(k), data), t, "Put should be successful")
|
||||
|
||||
assert.Nil(r.Close(), t)
|
||||
_, err = r.Datastore().Get(datastore.NewKey(k))
|
||||
_, err = r.Datastore().Get(context.Background(), datastore.NewKey(k))
|
||||
assert.Err(err, t, "after closer, Get should be fail")
|
||||
}
|
||||
|
||||
@ -91,12 +92,12 @@ func TestDatastorePersistsFromRepoToRepo(t *testing.T) {
|
||||
|
||||
k := "key"
|
||||
expected := []byte(k)
|
||||
assert.Nil(r1.Datastore().Put(datastore.NewKey(k), expected), t, "using first repo, Put should be successful")
|
||||
assert.Nil(r1.Datastore().Put(context.Background(), datastore.NewKey(k), expected), t, "using first repo, Put should be successful")
|
||||
assert.Nil(r1.Close(), t)
|
||||
|
||||
r2, err := Open(path)
|
||||
assert.Nil(err, t)
|
||||
actual, err := r2.Datastore().Get(datastore.NewKey(k))
|
||||
actual, err := r2.Datastore().Get(context.Background(), datastore.NewKey(k))
|
||||
assert.Nil(err, t, "using second repo, Get should be successful")
|
||||
assert.Nil(r2.Close(), t)
|
||||
assert.True(bytes.Equal(expected, actual), t, "data should match")
|
||||
|
||||
@ -9,7 +9,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
// Current dirstibution to fetch migrations from
|
||||
// Current distribution to fetch migrations from
|
||||
CurrentIpfsDist = "/ipfs/QmP7tLxzhLU1KauTRX3jkVkF93pCv4skcceyUYMhf4AKJR" // fs-repo-migrations v2.0.2
|
||||
// Latest distribution path. Default for fetchers.
|
||||
LatestIpfsDist = "/ipns/dist.ipfs.io"
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
filestore "github.com/ipfs/go-filestore"
|
||||
@ -43,7 +44,7 @@ func (m *Mock) GetConfigKey(key string) (interface{}, error) {
|
||||
|
||||
func (m *Mock) Datastore() Datastore { return m.D }
|
||||
|
||||
func (m *Mock) GetStorageUsage() (uint64, error) { return 0, nil }
|
||||
func (m *Mock) GetStorageUsage(_ context.Context) (uint64, error) { return 0, nil }
|
||||
|
||||
func (m *Mock) Close() error { return m.D.Close() }
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
|
||||
@ -39,7 +40,7 @@ type Repo interface {
|
||||
Datastore() Datastore
|
||||
|
||||
// GetStorageUsage returns the number of bytes stored.
|
||||
GetStorageUsage() (uint64, error)
|
||||
GetStorageUsage(context.Context) (uint64, error)
|
||||
|
||||
// Keystore returns a reference to the key management interface.
|
||||
Keystore() keystore.Keystore
|
||||
|
||||
@ -5,10 +5,10 @@ import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/ipfs/go-block-format"
|
||||
blocks "github.com/ipfs/go-block-format"
|
||||
"github.com/ipfs/go-cid"
|
||||
"github.com/ipfs/go-ipfs/core"
|
||||
"github.com/ipfs/go-ipfs/core/mock"
|
||||
coremock "github.com/ipfs/go-ipfs/core/mock"
|
||||
"github.com/ipfs/go-ipfs/core/node/libp2p"
|
||||
mocknet "github.com/libp2p/go-libp2p/p2p/net/mock"
|
||||
)
|
||||
@ -61,7 +61,7 @@ func TestBitswapWithoutRouting(t *testing.T) {
|
||||
block1 := blocks.NewBlock([]byte("block1"))
|
||||
|
||||
// put 1 before
|
||||
if err := nodes[0].Blockstore.Put(block0); err != nil {
|
||||
if err := nodes[0].Blockstore.Put(ctx, block0); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ func TestBitswapWithoutRouting(t *testing.T) {
|
||||
}
|
||||
|
||||
// put 1 after
|
||||
if err := nodes[1].Blockstore.Put(block1); err != nil {
|
||||
if err := nodes[1].Blockstore.Put(ctx, block1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
||||
@ -287,7 +287,7 @@ test_launch_ipfs_daemon_without_network() {
|
||||
|
||||
do_umount() {
|
||||
if [ "$(uname -s)" = "Linux" ]; then
|
||||
fusermount -u "$1"
|
||||
fusermount -z -u "$1"
|
||||
else
|
||||
umount "$1"
|
||||
fi
|
||||
|
||||
68
test/sharness/t0032-mount-sharded.sh
Executable file
68
test/sharness/t0032-mount-sharded.sh
Executable file
@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Copyright (c) 2021 Protocol Labs
|
||||
# MIT Licensed; see the LICENSE file in this repository.
|
||||
#
|
||||
|
||||
test_description="Test mount command with sharding enabled"
|
||||
|
||||
. lib/test-lib.sh
|
||||
|
||||
if ! test_have_prereq FUSE; then
|
||||
skip_all='skipping mount sharded tests, fuse not available'
|
||||
test_done
|
||||
fi
|
||||
|
||||
test_init_ipfs
|
||||
|
||||
test_expect_success 'force sharding' '
|
||||
ipfs config --json Internal.UnixFSShardingSizeThreshold "\"1B\""
|
||||
'
|
||||
|
||||
test_launch_ipfs_daemon
|
||||
test_mount_ipfs
|
||||
|
||||
# we're testing nested subdirs which ensures that IPLD ADLs work
|
||||
test_expect_success 'setup test data' '
|
||||
mkdir testdata &&
|
||||
echo a > testdata/a &&
|
||||
mkdir testdata/subdir &&
|
||||
echo b > testdata/subdir/b
|
||||
'
|
||||
|
||||
HASH=QmY59Ufw8zA2BxGPMTcfXg86JVed81Qbxeq5rDkHWSLN1m
|
||||
|
||||
test_expect_success 'can add the data' '
|
||||
echo $HASH > expected_hash &&
|
||||
ipfs add -r -Q testdata > actual_hash &&
|
||||
test_cmp expected_hash actual_hash
|
||||
'
|
||||
|
||||
test_expect_success 'can read the data' '
|
||||
echo a > expected_a &&
|
||||
cat "ipfs/$HASH/a" > actual_a &&
|
||||
test_cmp expected_a actual_a &&
|
||||
echo b > expected_b &&
|
||||
cat "ipfs/$HASH/subdir/b" > actual_b &&
|
||||
test_cmp expected_b actual_b
|
||||
'
|
||||
|
||||
test_expect_success 'can list directories' '
|
||||
printf "a\nsubdir\n" > expected_ls &&
|
||||
ls -1 "ipfs/$HASH" > actual_ls &&
|
||||
test_cmp expected_ls actual_ls &&
|
||||
printf "b\n" > expected_ls_subdir &&
|
||||
ls -1 "ipfs/$HASH/subdir" > actual_ls_subdir &&
|
||||
test_cmp expected_ls_subdir actual_ls_subdir
|
||||
'
|
||||
|
||||
test_expect_success "unmount" '
|
||||
do_umount "$(pwd)/ipfs" &&
|
||||
do_umount "$(pwd)/ipns"
|
||||
'
|
||||
|
||||
test_expect_success 'cleanup' 'rmdir ipfs ipns'
|
||||
|
||||
test_kill_ipfs_daemon
|
||||
|
||||
test_done
|
||||
@ -259,12 +259,12 @@ test_add_cat_file() {
|
||||
mkdir test_current_dir/hello &&
|
||||
echo "World" > test_current_dir/hello/world &&
|
||||
( cd test_current_dir &&
|
||||
ipfs add -r . | tail -n1 > ../actual && cd ../ ) &&
|
||||
ipfs add -r -Q . > ../actual && cd ../ ) &&
|
||||
rm -r test_current_dir
|
||||
'
|
||||
|
||||
test_expect_success "ipfs add -r . output looks good" '
|
||||
echo "added QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1 test_current_dir" > expected
|
||||
echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
@ -274,12 +274,12 @@ test_add_cat_file() {
|
||||
mkdir test_current_dir/hello &&
|
||||
echo "World" > test_current_dir/hello/world &&
|
||||
( cd test_current_dir &&
|
||||
ipfs add -r ./ | tail -n1 > ../actual && cd ../ ) &&
|
||||
ipfs add -r -Q ./ > ../actual && cd ../ ) &&
|
||||
rm -r test_current_dir
|
||||
'
|
||||
|
||||
test_expect_success "ipfs add -r ./ output looks good" '
|
||||
echo "added QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1 test_current_dir" > expected
|
||||
echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
|
||||
@ -64,7 +64,7 @@ test_add_w() {
|
||||
test_expect_success "random-files generates test files" '
|
||||
random-files --seed 7547632 --files 5 --dirs 2 --depth 3 m &&
|
||||
echo "$add_w_m" >expected &&
|
||||
ipfs add -q -r m | tail -n1 >actual &&
|
||||
ipfs add -Q -r m >actual &&
|
||||
test_sort_cmp expected actual
|
||||
'
|
||||
|
||||
@ -120,7 +120,7 @@ test_add_w() {
|
||||
|
||||
# test -w -r m/* == -r m
|
||||
test_expect_success "ipfs add -w -r m/* == add -r m succeeds" '
|
||||
ipfs add -q -w -r m/* | tail -n1 >actual
|
||||
ipfs add -Q -w -r m/* >actual
|
||||
'
|
||||
|
||||
test_expect_success "ipfs add -w -r m/* == add -r m is correct" '
|
||||
@ -130,10 +130,10 @@ test_add_w() {
|
||||
|
||||
# test repeats together
|
||||
test_expect_success "ipfs add -w (repeats) succeeds" '
|
||||
ipfs add -q -w -r m/t_1wp-8a2/h3qpecj0 m/ha6f0x7su6/gnz66h \
|
||||
ipfs add -Q -w -r m/t_1wp-8a2/h3qpecj0 m/ha6f0x7su6/gnz66h \
|
||||
m/t_1wp-8a2/_jo7 m/4r93 m/t_1wp-8a2 m/t_1wp-8a2 m/4r93 \
|
||||
m/4r93 m/ha6f0x7su6/_rwujlf3qh_g08 \
|
||||
m/ha6f0x7su6/gnz66h/9cwudvacx | tail -n1 >actual
|
||||
m/ha6f0x7su6/gnz66h/9cwudvacx >actual
|
||||
'
|
||||
|
||||
test_expect_success "ipfs add -w (repeats) is correct" '
|
||||
|
||||
@ -18,8 +18,7 @@ test_expect_success "creating files succeeds" '
|
||||
|
||||
test_add_symlinks() {
|
||||
test_expect_success "ipfs add files succeeds" '
|
||||
ipfs add -q -r files >filehash_all &&
|
||||
tail -n 1 filehash_all >filehash_out
|
||||
ipfs add -Q -r files >filehash_out
|
||||
'
|
||||
|
||||
test_expect_success "output looks good" '
|
||||
@ -28,8 +27,7 @@ test_add_symlinks() {
|
||||
'
|
||||
|
||||
test_expect_success "ipfs add --cid-version=1 files succeeds" '
|
||||
ipfs add -q -r --cid-version=1 files >filehash_all &&
|
||||
tail -n 1 filehash_all >filehash_out
|
||||
ipfs add -Q -r --cid-version=1 files >filehash_out
|
||||
'
|
||||
|
||||
test_expect_success "output looks good" '
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user