Commit Graph

2111 Commits

Author SHA1 Message Date
Steven Allen
7f27dbfd15 feat: switch to raw multihashes for blocks
Part of: https://github.com/ipfs/go-ipfs/issues/6815
2021-12-02 09:41:37 -05:00
Cory Schwartz
a43e506d7f
fix: multibase in pubsub http rpc (#8183)
* multibase encoding on pubsub
* emit multibase for json clients
* refactor(pubsub): base64url for all URL args

This makes it easier to reason about.
Also added better helptext to each command explaining how the binary
data is encoded on the wire, and how to process it in userland.

* refactor: remove ndpayload and lenpayload

Those output formats are undocumented and seem to be only used in tests.
This change removes their implementation and replaces it with error
message to use JSON instead.

I also refactored tests to test the --enc=json response format instead
of imaginary one, making tests more useful as they also act as
regression tests for HTTP RPC.

* test(pubsub): go-ipfs-api

Testing against compatible version from
https://github.com/ipfs/go-ipfs-api/pull/255

* refactor: safeTextListEncoder

Making it clear what it does and why

* refactor(pubsub): unify peerids

This ensures `ipfs pubsub sub` returns the same peerids in the `From`
field as `ipfs pubsub peers`.

libp2p already uses base encoding, no need to double wrap or use custom
multibase.

* test(pubsub): go-ipfs-http-client

* refactor(pubsub): make pub command read from a file

We want to send payload in the body as multipart so users can use
existing tools like curl for publishing arbitrary bytes to a topic.

StringArg was created for "one message per line" use case, and if data
has `\n` or `\r\n` byte sequences, it will cause payload to be split. It
is not possible to undo this, because mentioned sequences are lost, so
we are not able to tell if it was `\n` or `\r\n`

We already avoid this problem in `block put` and `dht put` by reading
payload via FileArg which does not mangle binary data and send it as-is.
It feel like `pubsub pub` should be using it in the first place anyway,
so this commit replaces StringArg with FileArg.

This also closes https://github.com/ipfs/go-ipfs/issues/8454
and makes rpc in go-ipfs easier to code against.

* test(pubsub): publishing with line breaks

Making sure we don't see regressions in the future.
Ref. https://github.com/ipfs/go-ipfs/issues/7939

* chore: disable pubsub interop for now

See
344f692d8c

* test: t0322-pubsub-http-rpc.sh

- Adds HTTP RPC regression test that ensures topic is encoded as URL-safe
  multibase.
- Moves pubsub tests to live in unique range ./t032x

* fix(ci):  js-ipfs with  fixed pubsub wire format

uses js-ipfs from https://github.com/ipfs/js-ipfs/pull/3922 
until js-ipfs release can ship with dependency on go-ipfs 0.11.0-rc1

Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
2021-11-29 23:06:54 +01:00
Adin Schmahmann
52c177ced9
feat: go-libp2p 0.16, UnixFS autosharding and go-datastore with contexts (#8563)
* plumb through go-datastore context changes

* update go-libp2p to v0.16.0
* use LIBP2P_TCP_REUSEPORT instead of IPFS_REUSEPORT
* use relay config
* making deprecation notice match the go-ipfs-config key
* docs(config): circuit relay v2
* docs(config): fix links and headers
* feat(config): Internal.Libp2pForceReachability

This switches to config that supports setting and reading
Internal.Libp2pForceReachability OptionalString flag

* use configuration option for static relays

* chore: go-ipfs-config v0.18.0

https://github.com/ipfs/go-ipfs-config/releases/tag/v0.18.0

* feat: circuit v1 migration prompt when Swarm.EnableRelayHop is set (#8559)
* exit when Swarm.EnableRelayHop is set
* docs: Experimental.ShardingEnabled migration

This ensures existing users of global sharding experiment get notified
that the flag no longer works + that autosharding happens automatically.

For people who NEED to keep the old behavior (eg. have no time to
migrate today) there is a note about restoring it with
`UnixFSShardingSizeThreshold`.

* chore: add dag-jose code to the cid command output

* add support for setting automatic unixfs sharding threshold from the config
* test: have tests use low cutoff for sharding to mimic old behavior
* test: change error message to match the current error
* test: Add automatic sharding/unsharding tests (#8547)
* test: refactored naming in the sharding sharness tests to make more sense

* ci: set interop test executor to convenience image for Go1.16 + Node
* ci: use interop master

Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
Co-authored-by: Gus Eggert <gus@gus.dev>
Co-authored-by: Lucas Molas <schomatis@gmail.com>
2021-11-29 19:58:05 +01:00
Dimitris Apostolou
0c2f9d5950
Fix typos (#8548) 2021-11-17 21:16:06 +01:00
Andrey Kostakov
f6223605e7 Add support for multiple files to ipfs files rm. 2021-11-12 12:07:58 -05:00
Marcin Rataj
52a747763f
docs: fix ipfs files cp examples (#8533) 2021-10-29 16:45:53 +02:00
Rod Vagg
9e8b6e5b50
chore: replace go-merkledag walk with go-ipld-prime traversal for dag export (#8506)
* chore: replace go-merkledag walk with go-ipld-prime traversal for dag export

This is "safe" now because we can limit duplicate block loads like
go-merkledag does and won't get trapped taking a long time for complex
DAGs. We can do this while we're using an exhaustive selector (like
ExploreAll here) but will need an alternative strategy when we go for
arbitrary selectors.
2021-10-26 14:07:31 -04:00
Steve Loeppky
8836a62438
Merge pull request #8457 from ipfs/docs/raw-leaves-in-cidv1 2021-10-14 08:42:23 -07:00
Marcin Rataj
545571c328
Apply suggestions from code review
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
2021-10-11 20:36:06 +02:00
Lucas Molas
485a5c291f
fix(cli): object add-link: do not allow blocks over BS limit (#8414)
* fix(cli): object add-link: do not allow blocks over BS limit
* refactor: allow-big-block

- renamed override flag to --allow-big-block
- separate tests for default and override behavior

Co-authored-by: Marcin Rataj <lidel@lidel.org>
2021-09-28 15:27:15 +02:00
Adin Schmahmann
56a2ae92dc change ipfs dag get flag name from format to output-codec 2021-09-27 16:15:49 -04:00
Adin Schmahmann
b83651b220 remove dag put option shortcuts 2021-09-27 14:39:03 -04:00
Adin Schmahmann
2920679056 change names of ipfs dag put flags to make changes clearer 2021-09-27 14:39:03 -04:00
Marcin Rataj
d5ecec332f
docs: ipfs.add: document raw-leaves
Closes #8396
2021-09-24 18:39:39 +02:00
Rod Vagg
0057199af4
feat: dag import --stats (#8237)
* feat: report block count on `dag import`
* fix: clean-up dag import message format
* Only print stats when --stats flag is passed

This applies to both text and json output encoding.

- Stats data is now contained within a Stats datastructure
- Stats are printed after root so that first line of output is the same as previously, even when stats are output using --stats

* fix sharness test

* Add PayloadBytesCount to stats

* Attempt to stabilize flaky tests

* Rename PayloadBytesCount to BlockBytesCount

* Correctly calculate size or imported dag

* Use RawSize of original block for import bytes calc

* test: dag import without --stats

basic regression tests for the default output (text and json)

Co-authored-by: gammazero <gammazero@users.noreply.github.com>
Co-authored-by: Marcin Rataj <lidel@lidel.org>
2021-09-23 16:23:57 +02:00
Lucas Molas
3a84352f18
feat(cli): add daemon option --agent-version-suffix (#8419)
* feat(cli): add daemon option --agent-version-suffix
* fix sharness test when commit is empty (release)
2021-09-21 20:31:08 +02:00
Andey Robins
c89110920e
feat: multibase transcode command (#8403)
* Add a transcoder command to multibase

In order to more easily facilitate the conversion
between multibase formats, include a transcode command
to avoid `multibase decode | multibase encode`

* Example code needed go mod tidy

Co-authored-by: gammazero <gammazero@users.noreply.github.com>
2021-09-21 20:19:40 +02:00
Takashi Matsuda
a651045c50
feature: 'ipfs swarm peering' command (#8147)
* feat: added swarm peering command supporting add, ls and rm

Co-authored-by: Steven Allen <steven@stebalien.com>
2021-09-15 07:46:16 -07:00
Cory Schwartz
7db27bf83a
feat: add 'ipfs multibase' commands (#8180)
* add multibase helper commands (encode, decode, list)

Co-authored-by: Marcin Rataj <lidel@lidel.org>
2021-08-18 16:48:39 -04:00
Hannah Howard
f63a997c35
IPLD Prime In IPFS: Target Merge Branch (#7976)
* feat: switch to using go-ipld-prime for codecs, path resolution, and the `dag put/get` commands
* fix: `dag put/get` not roundtripping due to an extra new line being added (https://github.com/ipfs/go-ipfs/issues/3503)

More detailed information is in the CHANGELOG.md file. Very high level:
* IPLD codecs (and their plugins) must use go-ipld-prime
* Added support for the dag-json codec
* `dag get/put` use IPLD codec names from the multicodec table
* `dag get` defaults to dag-json output instead of json, but may output with other codecs
* Data model pathing can be achieved using the /ipld prefix. For example, you can use `/ipld/QmFoo/Links/0/Hash` to traverse through a DagPB node
* With `dag get/put` the DagPB field names have been changed to match the ones in the protobuf listed in the specification

Co-authored-by: hannahhoward <hannah@hannahhoward.net>
Co-authored-by: Daniel Martí <mvdan@mvdan.cc>
Co-authored-by: acruikshank <acruikshank@example.com>
Co-authored-by: Steven Allen <steven@stebalien.com>
Co-authored-by: Will Scott <will.scott@protocol.ai>
Co-authored-by: Will Scott <will@cypherpunk.email>
Co-authored-by: Rod Vagg <rod@vagg.org>
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
Co-authored-by: Eric Myhre <hash@exultant.us>
2021-08-17 13:32:49 -04:00
Jesse Bouwman
148fe42ebb
Merge branch 'ipfs:master' into files-cp-parent 2021-08-14 07:51:24 -07:00
Steven Allen
2138798ea5 fix: remove some deprecated calls 2021-08-13 14:09:43 -07:00
Jesse Bouwman
c2e6a22bba Restore dropped error condition check 2021-08-12 09:40:24 -07:00
Jesse Bouwman
155435cb35 Add flag to create parent directories in files cp command
Closes #8289
2021-08-12 09:23:39 -07:00
Steven Allen
3745047ccf doc(profile): improve profiling docs 2021-07-21 18:04:11 -07:00
Steven Allen
e1cf99cfab
fix(ipfs diag profile): fix wording
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
2021-07-21 16:22:59 -07:00
Steven Allen
77f3fed5a1 feat(ipfs diag profile): help text 2021-07-21 15:50:29 -07:00
Steven Allen
722fc4fa4c feat(ipfs diag profile): output version info only
sys diag includes private information (like the interface addresses)
2021-07-21 15:50:21 -07:00
Steven Allen
d52d183020 feat: add an "ipfs diag profile" command
This should replace the "collect-profiles.sh" script and allow users to
easily collect profiles.

At the moment, it just dumps all profiles into a single zip file. It
does this server-side so it's easy fetch them with curl.

In the future, it would be nice to add:

1. Progress indicators (cpu profiles take 30 seconds).
2. An option to specify which profiles to collect.

But we can handle that later.

Unfortunately, this command doesn't produce symbolized svgs as I didn't
want to depend on having a local go compiler.
2021-07-21 14:51:47 -07:00
Steven Allen
0060d5f7c8 feat: programmatic shell completions
These are missing some of the features of the current hand-rolled
completions, but:

1. Are less buggy.
2. Cover _all_ commands.
3. Don't need to be manually maintained (which we never do anyways).

fixes #4551
fixes #8033
2021-07-01 08:46:49 -07:00
Brian Strauch
5ad04176b1
Improve peer hints for pin remote add (#8143)
* improve peer hints in pin.origins
2021-06-25 08:10:04 -07:00
Adin Schmahmann
f6641d1766 chore: switch tar-utils dep to ipfs org 2021-06-22 14:35:55 -07:00
Marcin Rataj
f40dc731e9 refactor: improved humanNumber and humanSI
This hides "(n)" when value is same as SI,
and makes SI "3k" (instead of "3 k")
2021-05-27 13:35:19 -07:00
Marcin Rataj
e5ac70456d feat: humanized durations in stat provide 2021-05-27 13:35:19 -07:00
Marcin Rataj
c082c73135 feat: humanized numbers in stat provide
https://github.com/ipfs/go-ipfs/pull/8154#discussion_r639231040
2021-05-27 13:35:19 -07:00
Adin Schmahmann
37de3d0586 feat: add a text output encoding for the stats provide command 2021-05-27 13:35:19 -07:00
Adin Schmahmann
cf45f1a862 added support for an experimental batched provider system
The batched provider system is enabled when the experimental AcceleratedDHTClient is enabled

There is also an `ipfs stats provide` command which gives stats about the providing/reproviding system when the batched provider system is enabled
2021-05-14 01:47:48 -07:00
Adin Schmahmann
2fd55d198c integrate experimental AcceleratedDHTClient
The experimental AcceleratedDHTClient can be enabled from the config

When enabled it modifies the output of the `ipfs stats dht` command.
2021-05-14 04:31:06 -04:00
Adin Schmahmann
c82485505f
Merge pull request #8113 from ipfs/feat/key-export-online
feat: allow key export in online mode
2021-05-12 11:46:35 -07:00
Marcin Rataj
1d77f9d33d
refactor: key export requires exact repo ver 2021-05-11 20:11:12 +02:00
Marcin Rataj
6b63de8a5a
fix: check repo version before key export
https://github.com/ipfs/go-ipfs/pull/8113#discussion_r628314443
2021-05-11 19:43:51 +02:00
vyzo
543c5da34a explicit construction of DNS resolver 2021-05-10 21:03:27 -07:00
Marcin Rataj
a158036dee
feat: allow key export in online mode
Export does not require repo lock and it is safe to do even when ipfs
daemon is running. This enables apps like Brave browser to do
import/export without stopping/starting daemon.

Ref. https://github.com/brave/brave-browser/issues/15422
2021-05-07 16:26:23 +02:00
Marcin Rataj
7406b83990
test: dag export in TestROCommands on gateway 2021-05-05 22:32:28 +02:00
Oli Evans
0f1e5be1be
feat: expose dag/export on read-only gateway api
- add dag/export to read-only root. it's ready only, so why the heck not!
- test that i didn't expose other dag subcommands
§

License: MIT
Signed-off-by: Oli Evans <oli@tableflip.io>
2021-05-05 15:32:26 +01:00
Steven Allen
cd72589cfd
Merge pull request #8098 from ipfs/docs/deprecate-object-cmds
docs: deprecate object commands
2021-04-29 20:25:52 -07:00
Marcin Rataj
8c1e4e99d1
docs: deprecate object commands
Part of https://github.com/ipfs/go-ipfs/issues/7936

This PR makes it very explicit that 'ipfs object' are deprecated
by removing examples and pointing at modern replacements under
'ipfs dag' and 'ipfs files'

Taglines are longer and include alternatives because we use them on:
https://docs.ipfs.io/reference/http/api/
2021-04-30 01:27:43 +02:00
Steven Allen
c1a0eb567a
Merge pull request #8023 from ipfs/fix/pins-null
fix: omit empty pins slice when reporting pin progress
2021-04-28 11:28:30 -07:00
Luflosi
b3f054f450
Fix typo in comment 2021-04-22 20:30:41 +02:00
Steven Allen
c4b6366536 fix: update root help
* move the `cid` command to the "datastructures" section.
* document bitswap & pubsub commands

fixes #8047
2021-04-05 16:31:40 -07:00