diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index cb8427d77..d6fd2f3d7 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -18,16 +18,16 @@ import ( corehttp "github.com/ipfs/go-ipfs/core/corehttp" corerepo "github.com/ipfs/go-ipfs/core/corerepo" nodeMount "github.com/ipfs/go-ipfs/fuse/node" - config "github.com/ipfs/go-ipfs/repo/config" + //config "github.com/ipfs/go-ipfs/repo/config" fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo" migrate "github.com/ipfs/go-ipfs/repo/fsrepo/migrations" "gx/ipfs/QmSGL5Uoa6gKHgBBwQG8u1CWKUC8ZnwaZiLgFVTFBR2bxr/go-multiaddr-net" mprome "gx/ipfs/QmSk46nSD78YiuNojYMS8NW6hSCjH95JajqqzzoychZgef/go-metrics-prometheus" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" ma "gx/ipfs/QmW8s4zTsUoX1Q6CeYxVKPyqSKbF7H1YDUyTostBtZ8DaG/go-multiaddr" "gx/ipfs/QmX3QZ5jHEPidwUrymXV1iSCSUhdGxj15sm2gP4jKMef7B/client_golang/prometheus" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" iconn "gx/ipfs/Qmf82zCaYV8bkztRRoGwwSHVkaYtP2UKBnhpjJz1uFGJjQ/go-libp2p-interface-conn" ) @@ -434,8 +434,8 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (error, <-chan error var opts = []corehttp.ServeOption{ corehttp.MetricsCollectionOption("api"), corehttp.CommandsOption(*cctx), - corehttp.CheckVersionOption(), - corehttp.ServerNameOption("go-ipfs/" + config.CurrentVersionNumber), + //corehttp.CheckVersionOption(), + //corehttp.ServerNameOption("go-ipfs/" + config.CurrentVersionNumber), corehttp.WebUIOption, gatewayOpt, corehttp.VersionOption(), diff --git a/cmd/ipfs/ipfs.go b/cmd/ipfs/ipfs.go index de94bb71b..1725cc580 100644 --- a/cmd/ipfs/ipfs.go +++ b/cmd/ipfs/ipfs.go @@ -6,7 +6,7 @@ import ( commands "github.com/ipfs/go-ipfs/core/commands" lgc "github.com/ipfs/go-ipfs/commands/legacy" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) // This is the CLI root, used for executing commands accessible to CLI clients. diff --git a/cmd/ipfs/main.go b/cmd/ipfs/main.go index 85538da0f..0ad81b8f5 100644 --- a/cmd/ipfs/main.go +++ b/cmd/ipfs/main.go @@ -21,6 +21,7 @@ import ( oldcmds "github.com/ipfs/go-ipfs/commands" core "github.com/ipfs/go-ipfs/core" coreCmds "github.com/ipfs/go-ipfs/core/commands" + corehttp "github.com/ipfs/go-ipfs/core/corehttp" "github.com/ipfs/go-ipfs/plugin/loader" repo "github.com/ipfs/go-ipfs/repo" config "github.com/ipfs/go-ipfs/repo/config" @@ -30,12 +31,12 @@ import ( manet "gx/ipfs/QmSGL5Uoa6gKHgBBwQG8u1CWKUC8ZnwaZiLgFVTFBR2bxr/go-multiaddr-net" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" loggables "gx/ipfs/QmSvcDkiRwB8LuMhUtnvhum2C851Mproo75ZDD19jx43tD/go-libp2p-loggables" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds/cli" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds/http" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" ma "gx/ipfs/QmW8s4zTsUoX1Q6CeYxVKPyqSKbF7H1YDUyTostBtZ8DaG/go-multiaddr" osh "gx/ipfs/QmXuBJ7DR6k3rmUEKtvVMhwjmXDuJgXXPUt4LQXKBMsU93/go-os-helper" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds/cli" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds/http" ) // log is the command logger @@ -269,11 +270,11 @@ func (i *cmdInvocation) Parse(ctx context.Context, args []string) error { // if no encoding was specified by user, default to plaintext encoding // (if command doesn't support plaintext, use JSON instead) - if enc := i.req.Options[cmds.EncShort]; enc == "" { + if enc := i.req.Options[cmds.EncLong]; enc == "" { if i.req.Command.Encoders != nil && i.req.Command.Encoders[cmds.Text] != nil { - i.req.SetOption(cmds.EncShort, cmds.Text) + i.req.SetOption(cmds.EncLong, cmds.Text) } else { - i.req.SetOption(cmds.EncShort, cmds.JSON) + i.req.SetOption(cmds.EncLong, cmds.JSON) } } @@ -313,7 +314,7 @@ func callCommand(ctx context.Context, req *cmds.Request, root *cmds.Command, cct return err } - encTypeStr, _ := req.Options[cmds.EncShort].(string) + encTypeStr, _ := req.Options[cmds.EncLong].(string) encType := cmds.EncodingType(encTypeStr) var ( @@ -658,7 +659,7 @@ func apiClientForAddr(addr ma.Multiaddr) (http.Client, error) { return nil, err } - return http.NewClient(host), nil + return http.NewClient(host, http.ClientWithAPIPrefix(corehttp.APIPath)), nil } func isConnRefused(err error) bool { diff --git a/commands/command.go b/commands/command.go index 3454d5bd2..332b09b7e 100644 --- a/commands/command.go +++ b/commands/command.go @@ -17,8 +17,8 @@ import ( "github.com/ipfs/go-ipfs/path" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) var log = logging.Logger("command") diff --git a/commands/command_test.go b/commands/command_test.go index 634e871fb..883415089 100644 --- a/commands/command_test.go +++ b/commands/command_test.go @@ -3,8 +3,8 @@ package commands import ( "testing" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) func noop(req Request, res Response) { @@ -59,7 +59,7 @@ func TestOptionValidation(t *testing.T) { } req, _ = NewRequest(nil, nil, nil, nil, nil, opts) - req.SetOption(cmds.EncShort, "json") + req.SetOption(cmds.EncLong, "json") res = cmd.Call(req) if res.Error() != nil { t.Error("Should have passed") diff --git a/commands/legacy/command.go b/commands/legacy/command.go index 543872eda..4fb9cfdd6 100644 --- a/commands/legacy/command.go +++ b/commands/legacy/command.go @@ -3,7 +3,7 @@ package legacy import ( "io" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" oldcmds "github.com/ipfs/go-ipfs/commands" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" diff --git a/commands/legacy/legacy.go b/commands/legacy/legacy.go index 543809f54..92196872b 100644 --- a/commands/legacy/legacy.go +++ b/commands/legacy/legacy.go @@ -4,7 +4,7 @@ import ( "io" "runtime/debug" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" oldcmds "github.com/ipfs/go-ipfs/commands" ) diff --git a/commands/legacy/legacy_test.go b/commands/legacy/legacy_test.go index a91d5855b..e4855317b 100644 --- a/commands/legacy/legacy_test.go +++ b/commands/legacy/legacy_test.go @@ -7,8 +7,8 @@ import ( "testing" oldcmds "github.com/ipfs/go-ipfs/commands" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) type WriteNopCloser struct { diff --git a/commands/legacy/request.go b/commands/legacy/request.go index cc8377d27..e18576408 100644 --- a/commands/legacy/request.go +++ b/commands/legacy/request.go @@ -7,9 +7,9 @@ import ( "os" "reflect" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit/files" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" oldcmds "github.com/ipfs/go-ipfs/commands" ) diff --git a/commands/legacy/response.go b/commands/legacy/response.go index 985113b42..4560a8514 100644 --- a/commands/legacy/response.go +++ b/commands/legacy/response.go @@ -7,8 +7,8 @@ import ( "reflect" "sync" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" oldcmds "github.com/ipfs/go-ipfs/commands" ) @@ -47,6 +47,8 @@ func (rw *responseWrapper) Output() interface{} { case io.Reader: // if it's a reader, set it rw.out = v + case cmds.Single: + rw.out = v.Value default: // if it is something else, create a channel and copy values from next in there ch := make(chan interface{}) diff --git a/commands/response.go b/commands/response.go index 2c66817e8..668766529 100644 --- a/commands/response.go +++ b/commands/response.go @@ -9,8 +9,8 @@ import ( "os" "strings" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) // ErrorType signfies a category of errors @@ -149,7 +149,7 @@ func (r *response) Marshal() (io.Reader, error) { return bytes.NewReader([]byte{}), nil } - enc, found, err := r.req.Option(cmds.EncShort).String() + enc, found, err := r.req.Option(cmds.EncLong).String() if err != nil { return nil, err } diff --git a/commands/response_test.go b/commands/response_test.go index ce1fc12cf..80d182636 100644 --- a/commands/response_test.go +++ b/commands/response_test.go @@ -6,8 +6,8 @@ import ( "strings" "testing" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) type TestOutput struct { @@ -29,7 +29,7 @@ func TestMarshalling(t *testing.T) { t.Error("Should have failed (no encoding type specified in request)") } - req.SetOption(cmds.EncShort, JSON) + req.SetOption(cmds.EncLong, JSON) reader, err := res.Marshal() if err != nil { diff --git a/core/commands/add.go b/core/commands/add.go index db8293e49..513a13dc2 100644 --- a/core/commands/add.go +++ b/core/commands/add.go @@ -18,10 +18,10 @@ import ( mfs "github.com/ipfs/go-ipfs/mfs" ft "github.com/ipfs/go-ipfs/unixfs" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit/files" mh "gx/ipfs/QmYeKnKpubCMRiq3PGZcTREErthbb5Q9cXsCoSkD9bjEBd/go-multihash" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" "gx/ipfs/QmeWjRodbcZFKe5tMN7poEx3izym6osrLSnTLf9UjJZBbs/pb" ) @@ -162,7 +162,6 @@ You can now check what blocks have been created by: return nil }, Run: func(req *cmds.Request, res cmds.ResponseEmitter, env interface{}) { - fmt.Printf("%#v\n", req) n, err := GetNode(env) if err != nil { res.SetError(err, cmdkit.ErrNormal) @@ -202,6 +201,15 @@ You can now check what blocks have been created by: return } + if hfset && hashFunStr != "sha2-256" && cidVer == 0 { + cidVer = 1 + } + + if cidVer > 0 && !rbset { + rawblks = true + } + + // if rawblocks is not explicitly set but nocopy is, set rawblocks if nocopy && !rbset { rawblks = true } @@ -211,10 +219,6 @@ You can now check what blocks have been created by: return } - if hfset && hashFunStr != "sha2-256" && cidVer == 0 { - cidVer = 1 - } - prefix, err := dag.PrefixForCidVersion(cidVer) if err != nil { res.SetError(err, cmdkit.ErrNormal) diff --git a/core/commands/bitswap.go b/core/commands/bitswap.go index e9b3e654a..383bb742a 100644 --- a/core/commands/bitswap.go +++ b/core/commands/bitswap.go @@ -12,9 +12,9 @@ import ( decision "github.com/ipfs/go-ipfs/exchange/bitswap/decision" "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" peer "gx/ipfs/QmWNY7dV54ZDYmTA1ykVdwNCqC11mpU4zSUp6XDpLTH9eG/go-libp2p-peer" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid" ) diff --git a/core/commands/block.go b/core/commands/block.go index 5b3f36ccf..93e349297 100644 --- a/core/commands/block.go +++ b/core/commands/block.go @@ -11,9 +11,9 @@ import ( util "github.com/ipfs/go-ipfs/blocks/blockstore/util" e "github.com/ipfs/go-ipfs/core/commands/e" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" mh "gx/ipfs/QmYeKnKpubCMRiq3PGZcTREErthbb5Q9cXsCoSkD9bjEBd/go-multihash" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" blocks "gx/ipfs/QmYsEQydGrsxNZfAiskvQ76N2xE9hDQtSAkRSynwMiUK3c/go-block-format" cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid" ) diff --git a/core/commands/cat.go b/core/commands/cat.go index bbe3ab09a..c97bd737d 100644 --- a/core/commands/cat.go +++ b/core/commands/cat.go @@ -9,8 +9,8 @@ import ( core "github.com/ipfs/go-ipfs/core" coreunix "github.com/ipfs/go-ipfs/core/coreunix" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) const progressBarMinSize = 1024 * 1024 * 8 // show progress bar for outputs > 8MiB diff --git a/core/commands/commands.go b/core/commands/commands.go index 2da3e934f..f7851c049 100644 --- a/core/commands/commands.go +++ b/core/commands/commands.go @@ -14,8 +14,8 @@ import ( // oldcmds "github.com/ipfs/go-ipfs/commands" e "github.com/ipfs/go-ipfs/core/commands/e" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) type commandEncoder struct { diff --git a/core/commands/commands_test.go b/core/commands/commands_test.go new file mode 100644 index 000000000..3da9e87a2 --- /dev/null +++ b/core/commands/commands_test.go @@ -0,0 +1,188 @@ +package commands + +import ( + "strings" + "testing" + + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" +) + +func collectPaths(prefix string, cmd *cmds.Command, out map[string]struct{}) { + for name, sub := range cmd.Subcommands { + path := prefix + "/" + name + out[path] = struct{}{} + collectPaths(path, sub, out) + } +} + +func TestCommands(t *testing.T) { + list := []string{ + "/add", + "/bitswap", + "/bitswap/ledger", + "/bitswap/reprovide", + "/bitswap/stat", + "/bitswap/unwant", + "/bitswap/wantlist", + "/block", + "/block/get", + "/block/put", + "/block/rm", + "/block/stat", + "/bootstrap", + "/bootstrap/add", + "/bootstrap/add/default", + "/bootstrap/list", + "/bootstrap/rm", + "/bootstrap/rm/all", + "/cat", + "/commands", + "/config", + "/config/edit", + "/config/replace", + "/config/show", + "/dag", + "/dag/get", + "/dag/put", + "/dag/resolve", + "/dht", + "/dht/findpeer", + "/dht/findprovs", + "/dht/get", + "/dht/provide", + "/dht/put", + "/dht/query", + "/diag", + "/diag/cmds", + "/diag/cmds/clear", + "/diag/cmds/set-time", + "/diag/sys", + "/dns", + "/file", + "/file/ls", + "/files", + "/files/chcid", + "/files/cp", + "/files/flush", + "/files/ls", + "/files/mkdir", + "/files/mv", + "/files/read", + "/files/rm", + "/files/stat", + "/filestore", + "/filestore/dups", + "/filestore/ls", + "/filestore/verify", + "/files/write", + "/get", + "/id", + "/key", + "/key/gen", + "/key/list", + "/key/rename", + "/key/rm", + "/log", + "/log/level", + "/log/ls", + "/log/tail", + "/ls", + "/mount", + "/name", + "/name/publish", + "/name/pubsub", + "/name/pubsub/state", + "/name/pubsub/subs", + "/name/pubsub/cancel", + "/name/resolve", + "/object", + "/object/data", + "/object/diff", + "/object/get", + "/object/links", + "/object/new", + "/object/patch", + "/object/patch/add-link", + "/object/patch/append-data", + "/object/patch/rm-link", + "/object/patch/set-data", + "/object/put", + "/object/stat", + "/p2p", + "/p2p/listener", + "/p2p/listener/close", + "/p2p/listener/ls", + "/p2p/listener/open", + "/p2p/stream", + "/p2p/stream/close", + "/p2p/stream/dial", + "/p2p/stream/ls", + "/pin", + "/pin/add", + "/ping", + "/pin/ls", + "/pin/rm", + "/pin/update", + "/pin/verify", + "/pubsub", + "/pubsub/ls", + "/pubsub/peers", + "/pubsub/pub", + "/pubsub/sub", + "/refs", + "/refs/local", + "/repo", + "/repo/fsck", + "/repo/gc", + "/repo/stat", + "/repo/verify", + "/repo/version", + "/resolve", + "/shutdown", + "/stats", + "/stats/bitswap", + "/stats/bw", + "/stats/repo", + "/swarm", + "/swarm/addrs", + "/swarm/addrs/listen", + "/swarm/addrs/local", + "/swarm/connect", + "/swarm/disconnect", + "/swarm/filters", + "/swarm/filters/add", + "/swarm/filters/rm", + "/swarm/peers", + "/tar", + "/tar/add", + "/tar/cat", + "/update", + "/version", + } + + cmdSet := make(map[string]struct{}) + collectPaths("", Root, cmdSet) + + for _, path := range list { + if _, ok := cmdSet[path]; !ok { + t.Errorf("%q not in result", path) + } else { + delete(cmdSet, path) + } + } + + for path := range cmdSet { + t.Errorf("%q in result but shouldn't be", path) + } + + for _, path := range list { + path = path[1:] // remove leading slash + split := strings.Split(path, "/") + sub, err := Root.Get(split) + if err != nil { + t.Errorf("error getting subcommand %q: %v", path, err) + } else if sub == nil { + t.Errorf("subcommand %q is nil even though there was no error", path) + } + } +} diff --git a/core/commands/filestore.go b/core/commands/filestore.go index 5a6b4340b..275fe179d 100644 --- a/core/commands/filestore.go +++ b/core/commands/filestore.go @@ -12,8 +12,8 @@ import ( "github.com/ipfs/go-ipfs/filestore" lgc "github.com/ipfs/go-ipfs/commands/legacy" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid" ) diff --git a/core/commands/get.go b/core/commands/get.go index 4c95ee752..dc3e7a727 100644 --- a/core/commands/get.go +++ b/core/commands/get.go @@ -16,8 +16,8 @@ import ( tar "github.com/ipfs/go-ipfs/thirdparty/tar" uarchive "github.com/ipfs/go-ipfs/unixfs/archive" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" "gx/ipfs/QmeWjRodbcZFKe5tMN7poEx3izym6osrLSnTLf9UjJZBbs/pb" ) diff --git a/core/commands/get_test.go b/core/commands/get_test.go index 615acd5c2..c7f975b2b 100644 --- a/core/commands/get_test.go +++ b/core/commands/get_test.go @@ -4,8 +4,8 @@ import ( "context" "testing" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) func TestGetOutputPath(t *testing.T) { diff --git a/core/commands/helptext_test.go b/core/commands/helptext_test.go index a0c56fcbe..1fc6724fa 100644 --- a/core/commands/helptext_test.go +++ b/core/commands/helptext_test.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) func checkHelptextRecursive(t *testing.T, name []string, c *cmds.Command) { diff --git a/core/commands/pubsub.go b/core/commands/pubsub.go index 12a5300b7..72d68f635 100644 --- a/core/commands/pubsub.go +++ b/core/commands/pubsub.go @@ -12,9 +12,9 @@ import ( core "github.com/ipfs/go-ipfs/core" floodsub "gx/ipfs/QmP1T1SGU6276R2MHKP2owbck37Fnzd6ZkpyNJvnG2LoTG/go-libp2p-floodsub" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" pstore "gx/ipfs/QmYijbtjCxFEjSXaudaQAUz3LN5VKLssm8WCUsRoqzXmQR/go-libp2p-peerstore" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" blocks "gx/ipfs/QmYsEQydGrsxNZfAiskvQ76N2xE9hDQtSAkRSynwMiUK3c/go-block-format" cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid" ) diff --git a/core/commands/repo.go b/core/commands/repo.go index 1636e722a..007a73300 100644 --- a/core/commands/repo.go +++ b/core/commands/repo.go @@ -18,8 +18,8 @@ import ( lockfile "github.com/ipfs/go-ipfs/repo/fsrepo/lock" lgc "github.com/ipfs/go-ipfs/commands/legacy" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid" ) diff --git a/core/commands/root.go b/core/commands/root.go index 593a48916..3bef53e97 100644 --- a/core/commands/root.go +++ b/core/commands/root.go @@ -13,8 +13,8 @@ import ( lgc "github.com/ipfs/go-ipfs/commands/legacy" logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log" - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" ) var log = logging.Logger("core/commands") diff --git a/core/commands/stat.go b/core/commands/stat.go index 0f6fb7b3f..a737060d5 100644 --- a/core/commands/stat.go +++ b/core/commands/stat.go @@ -8,9 +8,9 @@ import ( "time" humanize "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit" peer "gx/ipfs/QmWNY7dV54ZDYmTA1ykVdwNCqC11mpU4zSUp6XDpLTH9eG/go-libp2p-peer" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" protocol "gx/ipfs/QmZNkThpqfVXs9GNbexPrfBbXSLNYeKrE7jwFM2oqHbyqN/go-libp2p-protocol" metrics "gx/ipfs/QmaL2WYJGbWKqHoLujoi9GQ5jj4JVFrBqHUBWmEYzJPVWT/go-libp2p-metrics" ) diff --git a/core/corehttp/commands.go b/core/corehttp/commands.go index c3d476531..4a545bc0a 100644 --- a/core/corehttp/commands.go +++ b/core/corehttp/commands.go @@ -15,15 +15,14 @@ import ( path "github.com/ipfs/go-ipfs/path" config "github.com/ipfs/go-ipfs/repo/config" - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds" - cmdsHttp "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds/http" + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds" + cmdsHttp "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds/http" ) var ( errApiVersionMismatch = errors.New("api version mismatch") ) -const apiPath = "/api/v0" const originEnvKey = "API_ORIGIN" const originEnvKeyDeprecate = `You are using the ` + originEnvKey + `ENV Variable. This functionality is deprecated, and will be removed in future versions. @@ -116,6 +115,7 @@ func commandsOption(cctx oldcmds.Context, command *cmds.Command) ServeOption { cfg := cmdsHttp.NewServerConfig() cfg.SetAllowedMethods("GET", "POST", "PUT") + cfg.APIPath = APIPath rcfg, err := n.Repo.Config() if err != nil { return nil, err @@ -127,7 +127,7 @@ func commandsOption(cctx oldcmds.Context, command *cmds.Command) ServeOption { patchCORSVars(cfg, l.Addr()) cmdHandler := cmdsHttp.NewHandler(&cctx, command, cfg) - mux.Handle(APIPath, cmdHandler) + mux.Handle(APIPath+"/", cmdHandler) return mux, nil } } @@ -146,21 +146,22 @@ func CheckVersionOption() ServeOption { return ServeOption(func(n *core.IpfsNode, l net.Listener, next *http.ServeMux) (*http.ServeMux, error) { mux := http.NewServeMux() - mux.HandleFunc(APIPath+"/", func(w http.ResponseWriter, r *http.Request) { - pth := path.SplitList(r.URL.Path[len(APIPath):]) - // backwards compatibility to previous version check - if pth[1] != "version" { - clientVersion := r.UserAgent() - // skips check if client is not go-ipfs - if clientVersion != "" && strings.Contains(clientVersion, "/go-ipfs/") && daemonVersion != clientVersion { - http.Error(w, fmt.Sprintf("%s (%s != %s)", errApiVersionMismatch, daemonVersion, clientVersion), http.StatusBadRequest) - return + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + if strings.HasPrefix(r.URL.Path, APIPath) { + pth := path.SplitList(r.URL.Path[len(APIPath):]) + // backwards compatibility to previous version check + if pth[1] != "version" { + clientVersion := r.UserAgent() + // skips check if client is not go-ipfs + if clientVersion != "" && strings.Contains(clientVersion, "/go-ipfs/") && daemonVersion != clientVersion { + http.Error(w, fmt.Sprintf("%s (%s != %s)", errApiVersionMismatch, daemonVersion, clientVersion), http.StatusBadRequest) + return + } } } next.ServeHTTP(w, r) }) - mux.HandleFunc("/", next.ServeHTTP) return mux, nil }) diff --git a/package.json b/package.json index 7c9f0f19c..4c5284371 100644 --- a/package.json +++ b/package.json @@ -414,7 +414,7 @@ "version": "2.1.2" }, { - "hash": "QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K", + "hash": "QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps", "name": "go-ipfs-cmds", "version": "0.5.0-dev" }, diff --git a/test/sharness/t0040-add-and-cat.sh b/test/sharness/t0040-add-and-cat.sh index e863353b6..c4a05a7fe 100755 --- a/test/sharness/t0040-add-and-cat.sh +++ b/test/sharness/t0040-add-and-cat.sh @@ -554,7 +554,7 @@ test_add_cat_expensive "--cid-version=1" "zdj7WcatQrtuE4WMkS4XsfsMixuQN2po4irkYh # encoded with the blake2b-256 hash funtion test_add_cat_expensive '--hash=blake2b-256' "zDMZof1kwndounDzQCANUHjiE3zt1mPEgx7RE3JTHoZrRRa79xcv" -test_add_named_pipe " Post http://$API_ADDR/api/v0/add?encoding=json&progress=true&r=true&stream-channels=true:" +test_add_named_pipe " Post http://$API_ADDR/api/v0/add?chunker=size-262144&cid-version=0&encoding=json&hash=sha2-256&pin=true&progress=true&recursive=true&stream-channels=true:" test_add_pwd_is_symlink