@cryptotaxi247 / kubo / commits / 265f8cf95

go-ipfs-config: add config options for proxy/subdomain

Co-authored-by: Steven <steven@stebalien.com>

Marcin Rataj committed Mar 14, 2019 at 20:31 UTC 265f8cf95d2a49a836c450d6cad63d3fa3fa3ed3
1 file changed +64 -4
config/gateway.go
+64 -4
@@ -1,11 +1,71 @@
1 package config
2
3 +type GatewaySpec struct {
4 + // Paths is explicit list of path prefixes that should be handled by
5 + // this gateway. Example: `["/ipfs", "/ipns", "/api"]`
6 + Paths []string
7 +
8 + // UseSubdomains indicates whether or not this gateway uses subdomains
9 + // for IPFS resources instead of paths. That is: http://CID.ipfs.GATEWAY/...
10 + //
11 + // If this flag is set, any /ipns/$id and/or /ipfs/$id paths in PathPrefixes
12 + // will be permanently redirected to http://$id.[ipns|ipfs].$gateway/.
13 + //
14 + // We do not support using both paths and subdomains for a single domain
15 + // for security reasons (Origin isolation).
16 + UseSubdomains bool
17 +
18 + // NoDNSLink configures this gateway to _not_ resolve DNSLink for the FQDN
19 + // provided in `Host` HTTP header.
20 + NoDNSLink bool
21 +}
22 +
23 // Gateway contains options for the HTTP gateway server.
24 type Gateway struct {
5 - HTTPHeaders map[string][]string // HTTP headers to return with the gateway
25 +
26 + // HTTPHeaders configures the headers that should be returned by this
27 + // gateway.
28 + HTTPHeaders map[string][]string // HTTP headers to return with the gateway
29 +
30 + // RootRedirect is the path to which requests to `/` on this gateway
31 + // should be redirected.
32 RootRedirect string
7 - Writable bool
33 +
34 + // Writable enables PUT/POST request handling by this gateway. Usually,
35 + // writing is done through the API, not the gateway.
36 + Writable bool
37 +
38 + // PathPrefixes is an array of acceptable url paths that a client can
39 + // specify in X-Ipfs-Path-Prefix header.
40 + //
41 + // The X-Ipfs-Path-Prefix header is used to specify a base path to prepend
42 + // to links in directory listings and for trailing-slash redirects. It is
43 + // intended to be set by a frontend http proxy like nginx.
44 + //
45 + // Example: To mount blog.ipfs.io (a DNSLink site) at ipfs.io/blog
46 + // set PathPrefixes to ["/blog"] and nginx config to translate paths
47 + // and pass Host header (for DNSLink):
48 + // location /blog/ {
49 + // rewrite "^/blog(/.*)$" $1 break;
50 + // proxy_set_header Host blog.ipfs.io;
51 + // proxy_set_header X-Ipfs-Gateway-Prefix /blog;
52 + // proxy_pass http://127.0.0.1:8080;
53 + // }
54 PathPrefixes []string
9 - APICommands []string
10 - NoFetch bool
55 +
56 + // FIXME: Not yet implemented
57 + APICommands []string
58 +
59 + // NoFetch configures the gateway to _not_ fetch blocks in response to
60 + // requests.
61 + NoFetch bool
62 +
63 + // NoDNSLink configures the gateway to _not_ perform DNS TXT record
64 + // lookups in response to requests with values in `Host` HTTP header.
65 + // This flag can be overriden per FQDN in PublicGateways.
66 + NoDNSLink bool
67 +
68 + // PublicGateways configures behavior of known public gateways.
69 + // Each key is a fully qualified domain name (FQDN).
70 + PublicGateways map[string]*GatewaySpec
71 }