1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-09-10 14:34:24 +08:00

Add option to allow unrestricted API access

This commit is contained in:
Kristoffer Ström
2015-05-10 22:25:36 +02:00
parent e67c2a7b14
commit 30f674af0e

View File

@ -28,6 +28,7 @@ const (
writableKwd = "writable" writableKwd = "writable"
ipfsMountKwd = "mount-ipfs" ipfsMountKwd = "mount-ipfs"
ipnsMountKwd = "mount-ipns" ipnsMountKwd = "mount-ipns"
unrestrictedApiAccess = "unrestricted-api"
// apiAddrKwd = "address-api" // apiAddrKwd = "address-api"
// swarmAddrKwd = "address-swarm" // swarmAddrKwd = "address-swarm"
) )
@ -71,6 +72,7 @@ the port as you would other services or database (firewall, authenticated proxy,
cmds.BoolOption(writableKwd, "Enable writing objects (with POST, PUT and DELETE)"), cmds.BoolOption(writableKwd, "Enable writing objects (with POST, PUT and DELETE)"),
cmds.StringOption(ipfsMountKwd, "Path to the mountpoint for IPFS (if using --mount)"), cmds.StringOption(ipfsMountKwd, "Path to the mountpoint for IPFS (if using --mount)"),
cmds.StringOption(ipnsMountKwd, "Path to the mountpoint for IPNS (if using --mount)"), cmds.StringOption(ipnsMountKwd, "Path to the mountpoint for IPNS (if using --mount)"),
cmds.BoolOption(unrestrictedApiAccess, "Allow API access to unlisted hashes"),
// TODO: add way to override addresses. tricky part: updating the config if also --init. // TODO: add way to override addresses. tricky part: updating the config if also --init.
// cmds.StringOption(apiAddrKwd, "Address for the daemon rpc API (overrides config)"), // cmds.StringOption(apiAddrKwd, "Address for the daemon rpc API (overrides config)"),
@ -281,6 +283,10 @@ func daemonFunc(req cmds.Request, res cmds.Response) {
Writable: true, Writable: true,
BlockList: &corehttp.BlockList{ BlockList: &corehttp.BlockList{
Decider: func(s string) bool { Decider: func(s string) bool {
unrestricted, _, _ := req.Option(unrestrictedApiAccess).Bool()
if unrestricted {
return true
}
// for now, only allow paths in the WebUI path // for now, only allow paths in the WebUI path
for _, webuipath := range corehttp.WebUIPaths { for _, webuipath := range corehttp.WebUIPaths {
if strings.HasPrefix(s, webuipath) { if strings.HasPrefix(s, webuipath) {