From 060948188e78e861c202a39acf6abcb94ca1c48c Mon Sep 17 00:00:00 2001 From: Toby Date: Sat, 8 May 2021 16:07:04 -0700 Subject: [PATCH] Tweaks to the CLI to ensure consistent behavior with previous versions --- cmd/main.go | 96 ++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 56eee91..d0ac2e2 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -22,66 +22,24 @@ var ( func main() { app := &cli.App{ - Name: "hysteria", - Usage: "A TCP/UDP relay & SOCKS5/HTTP proxy tool", + Name: "Hysteria", + Usage: "a TCP/UDP relay & SOCKS5/HTTP proxy tool optimized for poor network environments", Version: fmt.Sprintf("%s %s %s", appVersion, appDate, appCommit), Authors: []*cli.Author{{Name: "HyNetwork "}}, EnableBashCompletion: true, - Action: func(c *cli.Context) error { - return cli.ShowAppHelp(c) - }, + Action: clientAction, + Flags: commonFlags(), + Before: initApp, Commands: []*cli.Command{ { Name: "server", Usage: "Run as server mode", - Before: initApp, - Flags: commonFlags(), - Action: func(c *cli.Context) error { - cbs, err := ioutil.ReadFile(c.String("config")) - if err != nil { - logrus.WithFields(logrus.Fields{ - "file": c.String("config"), - "error": err, - }).Fatal("Failed to read configuration") - } - - // server mode - sc, err := parseServerConfig(cbs) - if err != nil { - logrus.WithFields(logrus.Fields{ - "file": c.String("config"), - "error": err, - }).Fatal("Failed to parse server configuration") - } - server(sc) - return nil - }, + Action: serverAction, }, { Name: "client", Usage: "Run as client mode", - Before: initApp, - Flags: commonFlags(), - Action: func(c *cli.Context) error { - cbs, err := ioutil.ReadFile(c.String("config")) - if err != nil { - logrus.WithFields(logrus.Fields{ - "file": c.String("config"), - "error": err, - }).Fatal("Failed to read configuration") - } - - // client mode - cc, err := parseClientConfig(cbs) - if err != nil { - logrus.WithFields(logrus.Fields{ - "file": c.String("config"), - "error": err, - }).Fatal("Failed to parse client configuration") - } - client(cc) - return nil - }, + Action: clientAction, }, }, } @@ -93,6 +51,46 @@ func main() { } +func clientAction(c *cli.Context) error { + cbs, err := ioutil.ReadFile(c.String("config")) + if err != nil { + logrus.WithFields(logrus.Fields{ + "file": c.String("config"), + "error": err, + }).Fatal("Failed to read configuration") + } + // client mode + cc, err := parseClientConfig(cbs) + if err != nil { + logrus.WithFields(logrus.Fields{ + "file": c.String("config"), + "error": err, + }).Fatal("Failed to parse client configuration") + } + client(cc) + return nil +} + +func serverAction(c *cli.Context) error { + cbs, err := ioutil.ReadFile(c.String("config")) + if err != nil { + logrus.WithFields(logrus.Fields{ + "file": c.String("config"), + "error": err, + }).Fatal("Failed to read configuration") + } + // server mode + sc, err := parseServerConfig(cbs) + if err != nil { + logrus.WithFields(logrus.Fields{ + "file": c.String("config"), + "error": err, + }).Fatal("Failed to parse server configuration") + } + server(sc) + return nil +} + func parseServerConfig(cb []byte) (*serverConfig, error) { var c serverConfig err := json5.Unmarshal(cb, &c)