Commit Graph

49 Commits

Author SHA1 Message Date
Tor Arne Vestbø
6fe85496f5 corehttp: disable HTTP keep-alive when shutting down server
Once the server is asked to shut down, we stop accepting new
connections, but the 'manners' graceful shutdown will wait for
all existing connections closed to close before finishing.

For keep-alive connections this will never happen unless the
client detects that the server is shutting down through the
ipfs API itself, and closes the connection in response.

This is a problem e.g. with the webui's connections visualization,
which polls the swarm/peers endpoint once a second, and never
detects that the API server was shut down.

We can mitigate this by telling the server to disable keep-alive,
which will add a 'Connection: close' header to the next HTTP
response on the connection. A well behaving client should then
treat that correspondingly by closing the connection.

Unfortunately this doesn't happen immediately in all cases,
presumably depending on the keep-alive timeout of the browser
that set up the connection, but it's at least a step in the
right direction.
2015-04-20 14:55:42 +02:00
Tor Arne Vestbø
c9d3084910 corehttp: ensure node closing/teardown waits for server termination
When closing a node, the node itself only takes care of tearing down
its own children. As corehttp sets up a server based on a node, it
needs to also ensure that the server is accounted for when determining
if the node has been fully closed.
2015-04-20 14:55:42 +02:00
Tor Arne Vestbø
cc830ff2ee corehttp: log when server takes a long time to shut down
The server may stay alive for quite a while due to waiting on
open connections to close before shutting down. We should
find ways to terminate these connections in a more controlled
manner, but in the meantime it's helpful to be able to see
why a shutdown of the ipfs daemon is taking so long.
2015-04-20 14:55:42 +02:00
Jeromy
0a6b880bee fix for #1008 and other pinning fixes
This commit adds a new set of sharness tests for pinning, and addresses
bugs that were pointed out by said tests.

test/sharness: added more pinning tests

Pinning is currently broken. See issue #1051. This commit introduces
a few more pinning tests. These are by no means exhaustive, but
definitely surface the present problems going on. I believe these
tests are correct, but not sure. Pushing them as failing so that
pinning is fixed in this PR.

make pinning and merkledag.Get take contexts

improve 'add' commands usage of pinning

FIXUP: fix 'pin lists look good'

ipfs-pin-stat simple script to help check pinning

This is a simple shell script to help check pinning.

We ought to strive towards making adding commands this easy.
The http api is great and powerful, but our setup right now
gets in the way. Perhaps we can clean up that area.

updated t0081-repo-pinning

- fixed a couple bugs with the tests
- made it a bit clearer (still a lot going on)
- the remaining tests are correct and highlight a problem with
  pinning. Namely, that recursive pinning is buggy. At least:
  towards the end of the test, $HASH_DIR4 and $HASH_FILE4 should
  be pinned indirectly, but they're not. And thus get gc-ed out.
  There may be other problems too.

cc @whyrusleeping

fix grep params for context deadline check

fix bugs in pin and pin tests

check for block local before checking recursive pin
2015-04-19 23:40:25 -07:00
Juan Batiz-Benet
3c1d78c672 corehttp: added support for HEAD requests
This commit adds HEAD support to the IPFS Gateway.
Related: #840
2015-04-12 02:35:16 -07:00
Ho-Sheng Hsiao
bf22aeec0a Reorged imports from jbenet/go-ipfs to ipfs/go-ipfs
- Modified Godeps/Godeps.json by hand
- [TEST] Updated welcome docs hash to sharness
- [TEST] Updated contact doc
- [TEST] disabled breaking test (t0080-repo refs local)
2015-03-31 12:52:25 -07:00
Andy Leap
512171aa98 Fixing test failure(issue with looking for exact text) 2015-03-16 16:27:34 -04:00
Andy Leap
89ca37d1d1 Fixes issue #924 2015-03-16 16:08:45 -04:00
Juan Batiz-Benet
51a8bcbf64 Merge pull request #847 from jbenet/publish-webui
published new webui
2015-03-02 23:38:30 -08:00
Juan Batiz-Benet
7bc1de4ec5 published new webui
/ipfs/QmXX7YRpU7nNBKfw75VG7Y1c3GwpSAGHRev67XVPgZFv9R

ee74f75d0b
2015-03-02 23:33:10 -08:00
bbenshoof
ac5cfc5664 fixing bug 812 2015-03-02 17:07:21 -05:00
Henry
92d08db7a5 rewrote import paths of go.net/context to use golang.org/x/context
- updated go-ctxgroup and goprocess
ctxgroup: AddChildGroup was changed to AddChild. Used in two files:
- p2p/net/mock/mock_net.go
- routing/dht/dht.go

- updated context from hg repo to git
prev. commit in hg was ad01a6fcc8a19d3a4478c836895ffe883bd2ceab. (context: make parentCancelCtx iterative)
represents commit 84f8955a887232b6308d79c68b8db44f64df455c in git repo

- updated context to master (b6fdb7d8a4ccefede406f8fe0f017fb58265054c)

Aaron Jacobs (2):
net/context: Don't accept a context in the DoSomethingSlow example.
context: Be clear that users must cancel the result of WithCancel.

Andrew Gerrand (1):
go.net: use golang.org/x/... import paths

Bryan C. Mills (1):
net/context: Don't leak goroutines in Done example.

Damien Neil (1):
context: fix removal of cancelled timer contexts from parent

David Symonds (2):
context: Fix WithValue example code.
net: add import comments.

Sameer Ajmani (1):
context: fix TestAllocs to account for ints in interfaces
2015-02-25 11:58:19 +01:00
Jeromy
69e09d40c5 add version info endpoint to gateway 2015-02-20 11:49:48 -08:00
Juan Batiz-Benet
34e4d8c3a6 updated webui 2015-02-16 13:53:21 -08:00
Juan Batiz-Benet
01feeac1bb new webui hash 2015-02-16 04:34:36 -08:00
Kevin Wallace
e5abf0764c corehttp: add test for gateway with mocked namesys
License: MIT
Signed-off-by: Kevin Wallace <kevin@pentabarf.net>
2015-02-08 12:54:43 -08:00
Kevin Wallace
794b7b7b3e corehttp: tear off makeHandler, for tests
License: MIT
Signed-off-by: Kevin Wallace <kevin@pentabarf.net>
2015-02-08 12:50:47 -08:00
Kevin Wallace
084cdc3ed8 gateway: attempt to resolve hostname to ipfs path
This allows someone to host a static site by pointing a TXT record at their
content in IPFS, and a CNAME record at an IPFS gateway.

Note that such a setup technically violates RFC1912 (section 2.4; "A CNAME
record is not allowed to coexist with any other data."), but tends to work in
practice.

We may want to consider changing the DNS->IPFS resolution scheme to allow this
scenario to be RFC-compliant (e.g. store the mapping on a well-known subdomain
to allow CNAME records on the domain itself).

License: MIT
Signed-off-by: Kevin Wallace <kevin@pentabarf.net>
2015-02-08 11:27:06 -08:00
Kevin Wallace
fbd76ebb5b corehttp: ServeOption supports chaining muxes
Each option now additionally returns the mux to be used by future options. If
every options returns the mux it was passed, the current behavior is unchanged.

However, if the option returns an a new mux, it can mediate requests to handlers
provided by future options:

    return func(n *core.IpfsNode, mux *http.ServeMux) (*http.ServeMux, error) {
      childMux := http.NewServeMux()
      mux.Handle("/", handlerThatDelegatesToChildMux)
      return childMux, nil
    }

License: MIT
Signed-off-by: Kevin Wallace <kevin@pentabarf.net>
2015-02-08 11:27:06 -08:00
Juan Batiz-Benet
872c64dd79 gateway: dont cache ipns paths
ipns paths are mutable and should not be cached. this error is
a byproduct of the currently messy gateway route. We should split
the /ipfs and /ipns routes up.
2015-02-07 10:10:05 -08:00
Brian Tiger Chow
db644fe1b7 allow access to the field for convenience
decalarative configuration is superior. the thread-safety because
important during normal operation
2015-02-06 08:13:15 -08:00
Juan Batiz-Benet
64a4c27913 corehttp: allow all webui paths we published.
Otherwise we break users links! cc @mappum
2015-02-06 07:30:42 -08:00
Matt Bell
0195c03664 core/corehttp: Updated WebUI hash 2015-02-04 23:51:06 -08:00
Matt Bell
2d173c3a25 core/corehttp: Return 403 for blocked requests instead of 404 2015-02-04 18:46:59 -08:00
Matt Bell
b1ca07d6c5 core/corehttp: Added gateway path whitelisting 2015-02-04 18:46:54 -08:00
Matt Bell
262e78122a core/corehttp: Added Suborigin header to gateway responses 2015-02-04 16:53:24 -08:00
Brian Tiger Chow
d50a7ff003 feat(corehttp) add a Gateway blocklist
use pointer

use func

comment on decider to clarify whether it allows or denies

fix set conf

gstw
2015-02-04 16:17:39 -08:00
Juan Batiz-Benet
58f39687cf logs: removed all log.Errors unhelpful to users
Let's save log.Error for things the user can take action on.
Moved all our diagnostics to log.Debug. We can ideally reduce them
even further.
2015-02-03 01:06:07 -08:00
Juan Batiz-Benet
f1d34a2a85 test/sharness: fix errors
- core: daemon stdout print to cmd + daemon init checks
- core: fixed bug where the gateway was printed as "API"
- sharness/test-lib: daemon init checks
- sharness/test-lib: portable TCP port check
- sharness/init: fix test bits output
- sharness: use common hashes in one place.
- move t0100-http-gateway -> t0111-gateway-writable
- sharness: test-lib funcs for gateway config
- sharness/t0111-gateway-writable: use sh funcs
- sharness/t0111-gateway-writable: fixes
  - escape all vars (always `cmd "$VAR"` never `cmd $VAR`)
  - use $FILEPATH, not $path
  - last test seems to fail
2015-01-31 22:54:34 -08:00
Mildred Ki'Lya
295cc443da HTTP Gateway: add /ipns/ GET requests 2015-01-31 23:36:46 +01:00
Mildred Ki'Lya
7d09da3c8b Make gateway read-only by default and add option to make it writable 2015-01-31 23:36:45 +01:00
Mildred Ki'Lya
d221d55d85 HTTP: add handlers to allow object creation and modification 2015-01-31 20:47:34 +01:00
Jeromy
abb3c9c9c4 implement path type 2015-01-29 17:51:08 +00:00
Juan Batiz-Benet
c36e8dd04c gateway: reordered headers to avoid error
cc @mappum
2015-01-28 16:55:00 -08:00
Matt Bell
cea68afa2e core/corehttp: Handle Etag for caching 2015-01-28 16:50:16 -08:00
Matt Bell
fb986fd822 core/corehttp: Added cache headers to gatewayy requests 2015-01-28 16:48:07 -08:00
Matt Bell
e4eb964f69 core/corehttp: Use consts for path prefixes 2015-01-28 16:43:45 -08:00
Matt Bell
2759d1c126 core/corehttp: Added handling of /ipns/<hash>/x paths 2015-01-28 16:38:36 -08:00
Matt Bell
950e492fc4 core/corehttp: Close DAGReaders when done 2015-01-28 16:01:42 -08:00
Matt Bell
58d401c3b0 core/corehttp: gateway_handler: Redirect to path with trailing slash when showing a directory's index.html 2015-01-28 16:01:42 -08:00
Matt Bell
e2be5c2039 core/corehttp: Added RedirectOption 2015-01-28 16:01:41 -08:00
Matt Bell
b8fcece0e5 core/corehttp: Handle IPNS paths in gateway 2015-01-28 16:01:41 -08:00
Matt Bell
d338a81eca core/corehttp: Support Range requests in gateway handler 2015-01-28 15:49:55 -08:00
Jeromy
26826bd55e implement seeking in the dagreader 2015-01-27 01:33:09 +00:00
Brian Tiger Chow
e9d3c9828c perform multiaddr conversion in the function 2015-01-24 01:32:27 -08:00
Brian Tiger Chow
6fedf259eb remove prefix logger 2015-01-24 00:30:56 -08:00
Matt Bell
81d17e0843 cmd/ipfs: gatewayHandler: Fixed directory listing getting appended to index.html pages 2015-01-22 16:29:00 -08:00
Brian Tiger Chow
fadede6cb2 separate concerns 2015-01-22 01:28:40 -08:00
Brian Tiger Chow
fadedf9e68 refactor(core) extract corehttp package
PACKAGE DOCUMENTATION

package corehttp

    FUNCTIONS

    func GatewayOption(n *core.IpfsNode, mux *http.ServeMux) error

    func ListenAndServe(n *core.IpfsNode, addr ma.Multiaddr, options
    ...ServeOption) error

    func WebUIOption(n *core.IpfsNode, mux *http.ServeMux) error

    TYPES

    type ServeOption func(*core.IpfsNode, *http.ServeMux) error

    func DaemonOption(cctx commands.Context) ServeOption
2015-01-22 01:08:59 -08:00