1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-06-29 17:36:38 +08:00

Merge pull request #1221 from ipfs/unrestricted-api-access

Add option to allow unrestricted API access
This commit is contained in:
Juan Batiz-Benet
2015-05-12 05:56:00 -04:00

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) {