Documentation ¶
Overview ¶
Package corehttp provides utilities for the webui, gateways, and other high-level HTTP interfaces to IPFS.
Index ¶
- Constants
- Variables
- func AddAccessControlHeaders(headers map[string][]string)
- func ListenAndServe(n *core.IpfsNode, listeningMultiAddr string, options ...ServeOption) error
- func NewGatewayHandler(c GatewayConfig, api NodeAPI, offlineAPI NodeAPI) http.Handler
- func Serve(node *core.IpfsNode, lis net.Listener, options ...ServeOption) error
- func ServeContent(w http.ResponseWriter, req *http.Request, name string, modtime time.Time, ...) (int, bool, error)
- type GatewayConfig
- type IpfsNodeCollector
- type NodeAPI
- type ServeOption
- func BlockProfileRateOption(path string) ServeOption
- func CheckVersionOption() ServeOption
- func CommandsOption(cctx oldcmds.Context) ServeOption
- func CommandsROOption(cctx oldcmds.Context) ServeOption
- func GatewayOption(writable bool, paths ...string) ServeOption
- func HostnameOption() ServeOption
- func LogOption() ServeOption
- func MetricsCollectionOption(handlerName string) ServeOption
- func MetricsOpenCensusCollectionOption() ServeOption
- func MetricsOpenCensusDefaultPrometheusRegistry() ServeOption
- func MetricsScrapingOption(path string) ServeOption
- func MutexFractionOption(path string) ServeOption
- func P2PProxyOption() ServeOption
- func RedirectOption(path string, redirect string) ServeOption
- func VersionOption() ServeOption
Constants ¶
const APIPath = "/api/v0"
APIPath is the path at which the API is mounted.
const WebUIPath = "/ipfs/bafybeibjbq3tmmy7wuihhhwvbladjsd3gx3kfjepxzkq6wylik6wc3whzy" // v2.20.0
TODO: move to IPNS
Variables ¶
var WebUIOption = RedirectOption("webui", WebUIPath)
var WebUIPaths = []string{ WebUIPath, "/ipfs/bafybeiavrvt53fks6u32n5p2morgblcmck4bh4ymf4rrwu7ah5zsykmqqa", "/ipfs/bafybeiageaoxg6d7npaof6eyzqbwvbubyler7bq44hayik2hvqcggg7d2y", "/ipfs/bafybeidb5eryh72zajiokdggzo7yct2d6hhcflncji5im2y5w26uuygdsm", "/ipfs/bafybeibozpulxtpv5nhfa2ue3dcjx23ndh3gwr5vwllk7ptoyfwnfjjr4q", "/ipfs/bafybeiednzu62vskme5wpoj4bjjikeg3xovfpp4t7vxk5ty2jxdi4mv4bu", "/ipfs/bafybeihcyruaeza7uyjd6ugicbcrqumejf6uf353e5etdkhotqffwtguva", "/ipfs/bafybeiflkjt66aetfgcrgvv75izymd5kc47g6luepqmfq6zsf5w6ueth6y", "/ipfs/bafybeid26vjplsejg7t3nrh7mxmiaaxriebbm4xxrxxdunlk7o337m5sqq", "/ipfs/bafybeif4zkmu7qdhkpf3pnhwxipylqleof7rl6ojbe7mq3fzogz6m4xk3i", "/ipfs/bafybeianwe4vy7sprht5sm3hshvxjeqhwcmvbzq73u55sdhqngmohkjgs4", "/ipfs/bafybeicitin4p7ggmyjaubqpi3xwnagrwarsy6hiihraafk5rcrxqxju6m", "/ipfs/bafybeihpetclqvwb4qnmumvcn7nh4pxrtugrlpw4jgjpqicdxsv7opdm6e", "/ipfs/bafybeibnnxd4etu4tq5fuhu3z5p4rfu3buabfkeyr3o3s4h6wtesvvw6mu", "/ipfs/bafybeid6luolenf4fcsuaw5rgdwpqbyerce4x3mi3hxfdtp5pwco7h7qyq", "/ipfs/bafybeigkbbjnltbd4ewfj7elajsbnjwinyk6tiilczkqsibf3o7dcr6nn4", "/ipfs/bafybeicp23nbcxtt2k2twyfivcbrc6kr3l5lnaiv3ozvwbemtrb7v52r6i", "/ipfs/bafybeidatpz2hli6fgu3zul5woi27ujesdf5o5a7bu622qj6ugharciwjq", "/ipfs/QmfQkD8pBSBCBxWEwFSu4XaDVSWK6bjnNuaWZjMyQbyDub", "/ipfs/QmXc9raDM1M5G5fpBnVyQ71vR4gbnskwnB9iMEzBuLgvoZ", "/ipfs/QmenEBWcAk3tN94fSKpKFtUMwty1qNwSYw3DMDFV6cPBXA", "/ipfs/QmUnXcWZC5Ve21gUseouJsH5mLAyz5JPp8aHsg8qVUUK8e", "/ipfs/QmSDgpiHco5yXdyVTfhKxr3aiJ82ynz8V14QcGKicM3rVh", "/ipfs/QmRuvWJz1Fc8B9cTsAYANHTXqGmKR9DVfY5nvMD1uA2WQ8", "/ipfs/QmQLXHs7K98JNQdWrBB2cQLJahPhmupbDjRuH1b9ibmwVa", "/ipfs/QmXX7YRpU7nNBKfw75VG7Y1c3GwpSAGHRev67XVPgZFv9R", "/ipfs/QmXdu7HWdV6CUaUabd9q2ZeA4iHZLVyDRj3Gi4dsJsWjbr", "/ipfs/QmaaqrHyAQm7gALkRW8DcfGX3u8q9rWKnxEMmf7m9z515w", "/ipfs/QmSHDxWsMPuJQKWmVA1rB5a3NX2Eme5fPqNb63qwaqiqSp", "/ipfs/QmctngrQAt9fjpQUZr7Bx3BsXUcif52eZGTizWhvcShsjz", "/ipfs/QmS2HL9v5YeKgQkkWMvs1EMnFtUowTEdFfSSeMT4pos1e6", "/ipfs/QmR9MzChjp1MdFWik7NjEjqKQMzVmBkdK3dz14A6B5Cupm", "/ipfs/QmRyWyKWmphamkMRnJVjUTzSFSAAZowYP4rnbgnfMXC9Mr", "/ipfs/QmU3o9bvfenhTKhxUakbYrLDnZU7HezAVxPM6Ehjw9Xjqy", "/ipfs/QmPhnvn747LqwPYMJmQVorMaGbMSgA7mRRoyyZYz3DoZRQ", "/ipfs/QmQNHd1suZTktPRhP7DD4nKWG46ZRSxkwHocycHVrK3dYW", "/ipfs/QmNyMYhwJUS1cVvaWoVBhrW8KPj1qmie7rZcWo8f1Bvkhz", "/ipfs/QmVTiRTQ72qiH4usAGT4c6qVxCMv4hFMUH9fvU6mktaXdP", "/ipfs/QmYcP4sp1nraBiCYi6i9kqdaKobrK32yyMpTrM5JDA8a2C", "/ipfs/QmUtMmxgHnDvQq4bpH6Y9MaLN1hpfjJz5LZcq941BEqEXs", "/ipfs/QmPURAjo3oneGH53ovt68UZEBvsc8nNmEhQZEpsVEQUMZE", "/ipfs/QmeSXt32frzhvewLKwA1dePTSjkTfGVwTh55ZcsJxrCSnk", "/ipfs/QmcjeTciMNgEBe4xXvEaA4TQtwTRkXucx7DmKWViXSmX7m", "/ipfs/QmfNbSskgvTXYhuqP8tb9AKbCkyRcCy3WeiXwD9y5LeoqK", "/ipfs/QmPkojhjJkJ5LEGBDrAvdftrjAYmi9GU5Cq27mWvZTDieW", "/ipfs/Qmexhq2sBHnXQbvyP2GfUdbnY7HCagH2Mw5vUNSBn2nxip", }
WebUIPaths is a list of all past webUI paths.
Functions ¶
func AddAccessControlHeaders ¶ added in v0.15.0
AddAccessControlHeaders adds default headers used for controlling cross-origin requests. This function adds several values to the Access-Control-Allow-Headers and Access-Control-Expose-Headers entries. If the Access-Control-Allow-Origin entry is missing a value of '*' is added, indicating that browsers should allow requesting code from any origin to access the resource. If the Access-Control-Allow-Methods entry is missing a value of 'GET' is added, indicating that browsers may use the GET method when issuing cross origin requests.
func ListenAndServe ¶
func ListenAndServe(n *core.IpfsNode, listeningMultiAddr string, options ...ServeOption) error
ListenAndServe runs an HTTP server listening at |listeningMultiAddr| with the given serve options. The address must be provided in multiaddr format.
TODO intelligently parse address strings in other formats so long as they unambiguously map to a valid multiaddr. e.g. for convenience, ":8080" should map to "/ip4/0.0.0.0/tcp/8080".
func NewGatewayHandler ¶ added in v0.15.0
func NewGatewayHandler(c GatewayConfig, api NodeAPI, offlineAPI NodeAPI) http.Handler
NewGatewayHandler returns an http.Handler that can act as a gateway to IPFS content offlineApi is a version of the API that should not make network requests for missing data
func Serve ¶ added in v0.3.5
Serve accepts incoming HTTP connections on the listener and pass them to ServeOption handlers.
func ServeContent ¶ added in v0.14.0
func ServeContent(w http.ResponseWriter, req *http.Request, name string, modtime time.Time, content io.ReadSeeker) (int, bool, error)
ServeContent replies to the request using the content in the provided ReadSeeker and returns the status code written and any error encountered during a write. It wraps http.ServeContent which takes care of If-None-Match+Etag, Content-Length and range requests.
Types ¶
type GatewayConfig ¶
type IpfsNodeCollector ¶ added in v0.4.1
func (IpfsNodeCollector) Collect ¶ added in v0.4.1
func (c IpfsNodeCollector) Collect(ch chan<- prometheus.Metric)
func (IpfsNodeCollector) Describe ¶ added in v0.4.1
func (IpfsNodeCollector) Describe(ch chan<- *prometheus.Desc)
func (IpfsNodeCollector) PeersTotalValues ¶ added in v0.4.3
func (c IpfsNodeCollector) PeersTotalValues() map[string]float64
type NodeAPI ¶ added in v0.15.0
type NodeAPI interface { // Unixfs returns an implementation of Unixfs API Unixfs() coreiface.UnixfsAPI // Block returns an implementation of Block API Block() coreiface.BlockAPI // Dag returns an implementation of Dag API Dag() coreiface.APIDagService // ResolvePath resolves the path using Unixfs resolver ResolvePath(context.Context, path.Path) (path.Resolved, error) }
NodeAPI defines the minimal set of API services required by a gateway handler
type ServeOption ¶
ServeOption registers any HTTP handlers it provides on the given mux. It returns the mux to expose to future options, which may be a new mux if it is interested in mediating requests to future options, or the same mux initially passed in if not.
func BlockProfileRateOption ¶ added in v0.14.0
func BlockProfileRateOption(path string) ServeOption
BlockProfileRateOption allows to set runtime.SetBlockProfileRate via HTTP using POST request with parameter 'rate'. The profiler tries to sample 1 event every <rate> nanoseconds. If rate == 1, then the profiler samples every blocking event. To disable, set rate = 0.
func CheckVersionOption ¶ added in v0.4.14
func CheckVersionOption() ServeOption
CheckVersionOption returns a ServeOption that checks whether the client ipfs version matches. Does nothing when the user agent string does not contain `/kubo/` or `/go-ipfs/`
func CommandsOption ¶
func CommandsOption(cctx oldcmds.Context) ServeOption
CommandsOption constructs a ServerOption for hooking the commands into the HTTP server. It will NOT allow GET requests.
func CommandsROOption ¶ added in v0.3.8
func CommandsROOption(cctx oldcmds.Context) ServeOption
CommandsROOption constructs a ServerOption for hooking the read-only commands into the HTTP server. It will allow GET requests.
func GatewayOption ¶
func GatewayOption(writable bool, paths ...string) ServeOption
func HostnameOption ¶ added in v0.14.0
func HostnameOption() ServeOption
HostnameOption rewrites an incoming request based on the Host header.
func LogOption ¶ added in v0.3.6
func LogOption() ServeOption
func MetricsCollectionOption ¶ added in v0.4.1
func MetricsCollectionOption(handlerName string) ServeOption
MetricsCollectionOption adds collection of net/http-related metrics.
func MetricsOpenCensusCollectionOption ¶ added in v0.14.0
func MetricsOpenCensusCollectionOption() ServeOption
This adds collection of OpenCensus metrics
func MetricsOpenCensusDefaultPrometheusRegistry ¶ added in v0.15.0
func MetricsOpenCensusDefaultPrometheusRegistry() ServeOption
MetricsOpenCensusDefaultPrometheusRegistry registers the default prometheus registry as an exporter to OpenCensus metrics. This means that OpenCensus metrics will show up in the prometheus metrics endpoint
func MetricsScrapingOption ¶ added in v0.4.1
func MetricsScrapingOption(path string) ServeOption
MetricsScrapingOption adds the scraping endpoint which Prometheus uses to fetch metrics.
func MutexFractionOption ¶ added in v0.4.18
func MutexFractionOption(path string) ServeOption
MutexFractionOption allows to set runtime.SetMutexProfileFraction via HTTP using POST request with parameter 'fraction'.
func P2PProxyOption ¶ added in v0.14.0
func P2PProxyOption() ServeOption
P2PProxyOption is an endpoint for proxying a HTTP request to another ipfs peer
func RedirectOption ¶
func RedirectOption(path string, redirect string) ServeOption
func VersionOption ¶
func VersionOption() ServeOption
Source Files ¶
- commands.go
- corehttp.go
- gateway.go
- gateway_handler.go
- gateway_handler_block.go
- gateway_handler_car.go
- gateway_handler_tar.go
- gateway_handler_unixfs.go
- gateway_handler_unixfs__redirects.go
- gateway_handler_unixfs_dir.go
- gateway_handler_unixfs_file.go
- gateway_indexPage.go
- hostname.go
- lazyseek.go
- logs.go
- metrics.go
- mutex_profile.go
- p2p_proxy.go
- redirect.go
- webui.go