aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/command/shell.go45
-rw-r--r--weed/shell/commands.go4
2 files changed, 39 insertions, 10 deletions
diff --git a/weed/command/shell.go b/weed/command/shell.go
index eae68c3be..7f971c477 100644
--- a/weed/command/shell.go
+++ b/weed/command/shell.go
@@ -1,6 +1,11 @@
package command
import (
+ "fmt"
+ "net/url"
+ "strconv"
+ "strings"
+
"github.com/chrislusf/seaweedfs/weed/security"
"github.com/chrislusf/seaweedfs/weed/shell"
"github.com/chrislusf/seaweedfs/weed/util"
@@ -8,18 +13,15 @@ import (
)
var (
- shellOptions shell.ShellOptions
+ shellOptions shell.ShellOptions
+ shellInitialFilerUrl *string
+
)
func init() {
cmdShell.Run = runShell // break init cycle
shellOptions.Masters = cmdShell.Flag.String("master", "localhost:9333", "comma-separated master servers")
- filerHost := cmdShell.Flag.String("filer.host", "localhost", "comma-separated filer server host")
- flierPort := cmdShell.Flag.Int64("filer.port", 8888, "comma-separated filer server port")
- directory := cmdShell.Flag.String("filer.dir", "/", "comma-separated filer server directory")
- shellOptions.FilerHost = *filerHost
- shellOptions.FilerPort = *flierPort
- shellOptions.Directory = *directory
+ shellInitialFilerUrl = cmdShell.Flag.String("filer.url", "http://localhost:8888/", "initial filer url")
}
var cmdShell = &Command{
@@ -36,8 +38,35 @@ func runShell(command *Command, args []string) bool {
util.LoadConfiguration("security", false)
shellOptions.GrpcDialOption = security.LoadClientTLS(viper.Sub("grpc"), "client")
+
+ var filerPwdErr error
+ shellOptions.FilerHost, shellOptions.FilerPort, shellOptions.Directory, filerPwdErr = parseFilerUrl(*shellInitialFilerUrl)
+ if filerPwdErr != nil {
+ fmt.Printf("failed to parse url filer.url=%s : %v\n", *shellInitialFilerUrl, filerPwdErr)
+ return false
+ }
+
shell.RunShell(shellOptions)
return true
-} \ No newline at end of file
+}
+
+func parseFilerUrl(entryPath string) (filerServer string, filerPort int64, path string, err error) {
+ if !strings.HasPrefix(entryPath, "http://") && !strings.HasPrefix(entryPath, "https://") {
+ entryPath = "http://" + entryPath
+ }
+
+ var u *url.URL
+ u, err = url.Parse(entryPath)
+ if err != nil {
+ return
+ }
+ filerServer = u.Hostname()
+ portString := u.Port()
+ if portString != "" {
+ filerPort, err = strconv.ParseInt(portString, 10, 32)
+ }
+ path = u.Path
+ return
+}
diff --git a/weed/shell/commands.go b/weed/shell/commands.go
index b642ec253..02f576011 100644
--- a/weed/shell/commands.go
+++ b/weed/shell/commands.go
@@ -16,8 +16,8 @@ import (
)
type ShellOptions struct {
- Masters *string
- GrpcDialOption grpc.DialOption
+ Masters *string
+ GrpcDialOption grpc.DialOption
// shell transient context
FilerHost string
FilerPort int64