Commit Graph

1606 Commits

Author SHA1 Message Date
Hector Sanjuan
1b490476e5 HTTP API: Disallow GET requests on API
This commit upgrades go-ipfs-cmds and configures the commands HTTP API Handler
to only allow POST/OPTIONS, disallowing GET and others in the handling of
command requests in the IPFS HTTP API (where before every type of request
method was handled, with GET/POST/PUT/PATCH being equivalent).

The Read-Only commands that the HTTP API attaches to the gateway endpoint will
additional handled GET as they did before (but stop handling PUT,DELETEs).

By limiting the request types we address the possibility that a website
accessed by a browser abuses the IPFS API by issuing GET requests to it which
have no Origin or Referrer set, and are thus bypass CORS and CSRF protections.

This is a breaking change for clients that relay on GET requests against the
HTTP endpoint (usually :5001). Applications integrating on top of the
gateway-read-only API should still work (including cross-domain access).

Co-Authored-By: Steven Allen <steven@stebalien.com>
Co-Authored-By: Marcin Rataj <lidel@lidel.org>
2020-04-05 09:57:57 +02:00
Steven Allen
06ba6d0fc2 fix: remove internal relay discovery
This logic collects a list of known relays by testing every new connection.

It exists so we can dial /p2p-circuit/p2p/QmFoobar addresses (circuit addresses
that don't specify the relay). However, this kind of address is useless outside
of basic demos as a random relay is practically guaranteed to not be connected
to the target peer. Picking a random relay to connect to some peer is almost
_never_ the desired behavior.
2020-03-31 12:24:55 -07:00
Steven Allen
aec498bbde test(sharness): make sure we can actually enable autonat
This isn't a real autonat test, but it's a regression test to make sure we don't blatantly break this.
2020-03-25 12:48:25 -07:00
Cornelius Toole
62de9ba9d3 feat(file-ignore): add ignore opts to add cmd
- add the `gitignore` or `ignore options to the add command
2020-03-20 09:22:04 -07:00
Steven Allen
05fe3086a5 fix(sharness): fix sharness tests to take removed bootstrap peers into account 2020-03-18 08:50:40 -07:00
Marcin Rataj
f9567a0a0f fix(gateway): curl without redirect on localhost
When request is sent to http://localhost:8080/ipfs/$cid response has
HTTP 301 status code and "Location" header with redirect destination at
$cid.ipfs.localhost:8080

Redirect is followed by browsersi, but not by commandline tools.
Status 301 is ignored by curl in default mode: it will print response
and won't follow redirect, user needs to add -L for that.

To fix curl, we return correct payload in body of HTTP 301 response,
but set Clear-Site-Data header to ensure Origin sandbox can't be abused.

This requires a surgical workaround:
If Location header is present in ResponseWriter's Header map,
we ensure http.ServeContent() returns HTTP 301

Context: https://github.com/ipfs/go-ipfs/pull/6982

License: MIT
Signed-off-by: Marcin Rataj <lidel@lidel.org>
2020-03-18 08:50:40 -07:00
Marcin Rataj
3ecccd6e1d feat(gateway): subdomain and proxy gateway
License: MIT
Signed-off-by: Marcin Rataj <lidel@lidel.org>
2020-03-18 08:50:38 -07:00
Steven Allen
97401b9e27
Merge pull request #6997 from ipfs/chore/sharness_fixes_2019-03-16
Chore/sharness fixes 2019 03 16
2020-03-17 14:33:22 -07:00
Peter Rabbitson
705bee7d3f Support pipes when named on the cli explicitly
Still throws an error when a pipe is encountered during directory recursion
2020-03-16 17:25:33 -07:00
Peter Rabbitson
51d4383d56 Abort individual sharness tests if a previous instance is present
Before starting each individual test check if a daemon is present with a
trash* directory as its workdir. Exit with failure if this is the case.
2020-03-15 19:57:29 +00:00
Steven Allen
e681a3aebe fix: revert changes to the user agent
Go-ipfs user agents usually look like go-ipfs/VERSION/COMMIT_or_EMPTY. However,
we changed this to /go-ipfs/VERSION(/COMMIT)? on master for a while. This change
reverts this to make parsing the user agent simpler.

Co-Authored-By: Oli Evans <oli@tableflip.io>
2020-03-13 13:50:11 -07:00
Peter Rabbitson
7b65c0703f Simplify grep in test to pass on MacOS 2020-03-12 04:42:53 +01:00
Steven Allen
a68c1af938 ci: update to go 1.14 2020-03-08 22:00:26 -07:00
Steven Allen
585731074e test(graphsync): test server-side graphsync 2020-02-26 09:11:17 -08:00
Steven Allen
6e8c25eaee test(sharness): test our tests
Make sure they:

1. Report that they're done. Otherwise, we'll silently succeed.
2. Have a description.
3. Make sure we cleanup IPFS.
2020-02-18 15:14:45 -05:00
Steven Allen
3385367bdc test(sharness): fix typo 2020-01-17 10:27:36 -08:00
Steven Allen
e58a32ab1e feat(commands/cid): add a flag for setting the codec
This will be useful when testing `refs local, `repo gc`, and `repo verify`
commands once we store blocks by multihash instead of by CID. At that point,
these commands will return raw v1 CIDs as the blockstore won't actually remember
the codec used to store the block.

Flags choice:

* Ideally, we'd use the `-f, --format` flags like every other command but we're
  already using `-f` (format) for the format string.
* Alternatively, I'd like to use `-c`. However, we're using _that_ for a global
  `--config` flag (bit of a waste given that it doesn't work...).

`--codec` will have to do for now.
2020-01-07 19:32:16 -06:00
Steven Allen
f8adc3ebdd fix(commands/cid): always use base58 for CIDv0 unless otherwise specified 2020-01-07 19:20:21 -06:00
Steven Allen
9a9ec021cf test(sharness): add gateway symlink test 2020-01-05 16:43:44 -08:00
flowed
07cbba7c40 Fix Typos 2019-12-25 03:12:41 +00:00
Peter Rabbitson
36dcf8eac5 Add two more missed cleanup clauses 2019-12-23 15:41:39 +01:00
Peter Rabbitson
4200bf453b At some point the directory name changed to testbeds
Without reflecting this in the tests we do not actually shut down
correctly during cleanup
2019-12-23 15:41:39 +01:00
Peter Rabbitson
52476c026c Remove couple linux-isms: these are not valid on macos
Some did actually prevent proper test shutdown
2019-12-23 15:41:39 +01:00
Peter Rabbitson
8c6d8d5bd1 Add GOIPFSTEST_SKIP_LOCAL_DEVTREE_DEPS_CHECK escape valve
Set this to '1' if you are doing local dev and have redirects in go.mod
2019-12-23 15:41:30 +01:00
Peter Rabbitson
153e52929a Make the docker check more specific
Docker on a mac might be available, but may not be runnng. The
way the original test was written is linux-specific anyway, so
just hoist the check into the DOCKER declaration
2019-12-23 15:41:30 +01:00
Peter Rabbitson
ba3a7d4a55 socat is not part of any default install, make tests conditional
54b1969c4b correctly switched from nc to socat, but did not account for it
not being as widely available. Adjust tests that depend on it with the
correct message.

There are also a number of comments pertaining to nc - they were not
adjusted.
2019-12-23 15:41:30 +01:00
Marcin Rataj
115b2ba6cd
fix: limit SW registration to content root
Introduces hardening proposed in:
https://github.com/ipfs/go-ipfs/issues/4025#issuecomment-342250616

License: MIT
Signed-off-by: Marcin Rataj <lidel@lidel.org>
2019-12-17 02:20:40 +01:00
Steven Allen
ff8e4fc89f test(sharness): fix tests for /ipfs -> /p2p change 2019-12-14 19:41:05 +01:00
Steven Allen
ab274664df test(sharness): use test profile
Otherwise, we have port conflicts and other issues.
2019-12-05 18:37:45 -05:00
Steven Allen
f1b28dab95 test(sharness): simplify init-config logic 2019-12-05 18:32:06 -05:00
Adin Schmahmann
ee42e34ee4 sharness(pubsub): turn off the DHT for pubsub tests 2019-12-05 13:26:46 -05:00
Oli Evans
25694d0238
fix: ignore nonexistant when force rm
- Make `ipfs files rm --force /nonexistant` succeed when the path does not exist.
- Add shaness test for removing nonexistant paths
- Refactor duplicated code to find a parent dir into a function

I've been writing scripts against the files api, and having to stat things before removing them is a pain. So this PR aims to make --force do what I'd expect it to.

License: MIT
Signed-off-by: Oli Evans <oli@tableflip.io>
2019-11-25 11:38:29 +00:00
Steven Allen
5fbf0d35fb test(sharness): fix dht tests 2019-11-15 09:15:50 -08:00
Steven Allen
c93adf6701 test(sharness): fix flaky repo test
Just make sure we've removed all the blocks. We can't guarantee that the size
will revert.
2019-10-29 00:20:37 -07:00
Steven Allen
3f30a7caca fix(sharness): fix ambigious multiaddr 2019-10-28 22:55:21 -07:00
Steven Allen
67da056908 test(sharness): improve reliability of ma-pipe-unidir
Write the PID file after listening.
2019-10-28 21:54:47 -07:00
Steven Allen
f20db0cce8 fix(pin): wait till after fetching to remove direct pin
Otherwise, we could abort while fetching the graph and stay in a state where the
direct pin is removed.

fixes #4650
2019-10-08 17:12:44 +09:00
Steven Allen
4391ef92e5
fix(sharness): spelling 2019-10-08 08:34:55 +09:00
Jakub Sztandera
6f4f9b4cbb
Add test for buzhash
License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
2019-10-07 18:17:01 +02:00
Steven Allen
8e346a993e test(sharness): fix tests for commands lib update
We no longer spit out the annoying http error.
2019-09-30 18:47:55 -07:00
Steven Allen
460c2119e4 daemon: support unix domain sockets for the API/gateway
All the work was client-side. Unix domain socket multiaddrs already worked
server-side.

fixes #4218
2019-09-30 17:21:28 -07:00
Steven Allen
2147f50240 test(sharness): fix circuit tests 2019-09-27 15:50:47 -07:00
Steven Allen
6722a38535 pin: fix pin update X Y where X==Y
We were pining Y then removing the pin for X. When X == Y, we'd remove the new
pin.

fixes #6648
2019-09-23 16:29:26 -07:00
Steven Allen
315a3c9e48 build: fix golangci again
The patches that required the replace directives have been merged upstream.
Unfortunately, those branches have now been deleted, breaking the build.

GAH!
2019-09-12 13:56:35 -07:00
Steven Allen
a8fbd066d7 make: move all test deps to a separate module
1. This means those deps don't get pulled in unless we actually need to test.
2. It means we can cordon all the golangci-lint module replace hacks off into a
   separate package.
2019-09-11 11:43:50 -07:00
Steven Allen
150b6dd1bd plugins: add support for plugin configs
For now, configs specified in `daemon --init-config` and `init CONFIG` are not
available. We should fix this eventually but isn't necessary for now (and
supporting this will be annoying).
2019-08-29 17:17:23 -07:00
Dominic Della Valle
e7e7000611 add init config tests 2019-08-28 19:00:38 -04:00
Steven Allen
ce964404a2 test: handle murmur3 rename 2019-08-23 17:07:53 -07:00
Steven Allen
403b322914 test: handle id -> identity rename
"identity" is the official name
2019-08-23 17:02:23 -07:00
Steven Allen
17533b4378 sharness: disable broken test
We can no longer test this with bad keys. Unfortunately, good keys will likely
contain a newline and we have no way to send such keys to the server due to how
API requests are formatted.
2019-08-23 17:02:19 -07:00