diff options
| author | Hamidreza <70919649+hamid-gh98@users.noreply.github.com> | 2023-05-05 23:27:06 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-05 23:27:06 +0300 |
| commit | d405141ad07ed37484c7c9321cd201d303b3f4fa (patch) | |
| tree | 6181af8edcd08a8e5697b23257d1e1531566da04 /main.go | |
| parent | 26f160fb89f1356f9ec69e2bdfad32d5b543325a (diff) | |
| parent | 3ee3432d8f1685e95ff48e1560f6444053613655 (diff) | |
Merge branch 'MHSanaei:main' into main
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 200 |
1 files changed, 97 insertions, 103 deletions
@@ -1,6 +1,7 @@ package main import ( + "flag" "fmt" "log" "os" @@ -71,10 +72,7 @@ func runWebServer() { return } default: - err := server.Stop() - if err != nil { - return - } + server.Stop() return } } @@ -239,112 +237,108 @@ func removeSecret() { } func main() { - var rootCmd = &cobra.Command{ - Use: "x-ui", - } - - var runCmd = &cobra.Command{ - Use: "run", - Short: "Run the web server", - Run: func(cmd *cobra.Command, args []string) { - runWebServer() - }, - } - - var migrateCmd = &cobra.Command{ - Use: "migrate", - Short: "Migrate from other/old x-ui", - Run: func(cmd *cobra.Command, args []string) { - migrateDb() - }, + if len(os.Args) < 2 { + runWebServer() + return } - var v2uiCmd = &cobra.Command{ - Use: "v2-ui", - Short: "Migrate from v2-ui", - Run: func(cmd *cobra.Command, args []string) { - dbPath, _ := cmd.Flags().GetString("db") - err := v2ui.MigrateFromV2UI(dbPath) - if err != nil { - fmt.Println("migrate from v2-ui failed:", err) - } - }, + var showVersion bool + flag.BoolVar(&showVersion, "v", false, "show version") + + runCmd := flag.NewFlagSet("run", flag.ExitOnError) + + v2uiCmd := flag.NewFlagSet("v2-ui", flag.ExitOnError) + var dbPath string + v2uiCmd.StringVar(&dbPath, "db", fmt.Sprintf("%s/v2-ui.db", config.GetDBFolderPath()), "set v2-ui db file path") + + settingCmd := flag.NewFlagSet("setting", flag.ExitOnError) + var port int + var username string + var password string + var tgbottoken string + var tgbotchatid string + var enabletgbot bool + var tgbotRuntime string + var reset bool + var show bool + var remove_secret bool + settingCmd.BoolVar(&reset, "reset", false, "reset all settings") + settingCmd.BoolVar(&show, "show", false, "show current settings") + settingCmd.IntVar(&port, "port", 0, "set panel port") + settingCmd.StringVar(&username, "username", "", "set login username") + settingCmd.StringVar(&password, "password", "", "set login password") + settingCmd.StringVar(&tgbottoken, "tgbottoken", "", "set telegram bot token") + settingCmd.StringVar(&tgbotRuntime, "tgbotRuntime", "", "set telegram bot cron time") + settingCmd.StringVar(&tgbotchatid, "tgbotchatid", "", "set telegram bot chat id") + settingCmd.BoolVar(&enabletgbot, "enabletgbot", false, "enable telegram bot notify") + + oldUsage := flag.Usage + flag.Usage = func() { + oldUsage() + fmt.Println() + fmt.Println("Commands:") + fmt.Println(" run run web panel") + fmt.Println(" v2-ui migrate form v2-ui") + fmt.Println(" migrate migrate form other/old x-ui") + fmt.Println(" setting set settings") } - v2uiCmd.Flags().String("db", fmt.Sprintf("%s/v2-ui.db", config.GetDBFolderPath()), "set v2-ui db file path") - - var settingCmd = &cobra.Command{ - Use: "setting", - Short: "Set settings", + flag.Parse() + if showVersion { + fmt.Println(config.GetVersion()) + return } - var resetCmd = &cobra.Command{ - Use: "reset", - Short: "Reset all settings", - Run: func(cmd *cobra.Command, args []string) { + switch os.Args[1] { + case "run": + err := runCmd.Parse(os.Args[2:]) + if err != nil { + fmt.Println(err) + return + } + runWebServer() + case "migrate": + migrateDb() + case "v2-ui": + err := v2uiCmd.Parse(os.Args[2:]) + if err != nil { + fmt.Println(err) + return + } + err = v2ui.MigrateFromV2UI(dbPath) + if err != nil { + fmt.Println("migrate from v2-ui failed:", err) + } + case "setting": + err := settingCmd.Parse(os.Args[2:]) + if err != nil { + fmt.Println(err) + return + } + if reset { resetSetting() - }, - } - - var showCmd = &cobra.Command{ - Use: "show", - Short: "Show current settings", - Run: func(cmd *cobra.Command, args []string) { - showSetting(true) - }, - } - - var updateCmd = &cobra.Command{ - Use: "update", - Short: "Update settings", - Run: func(cmd *cobra.Command, args []string) { - port, _ := cmd.Flags().GetInt("port") - username, _ := cmd.Flags().GetString("username") - password, _ := cmd.Flags().GetString("password") + } else { updateSetting(port, username, password) - }, - } - - updateCmd.Flags().Int("port", 0, "set panel port") - updateCmd.Flags().String("username", "", "set login username") - updateCmd.Flags().String("password", "", "set login password") - - var tgbotCmd = &cobra.Command{ - Use: "tgbot", - Short: "Update telegram bot settings", - Run: func(cmd *cobra.Command, args []string) { - tgbottoken, _ := cmd.Flags().GetString("tgbottoken") - tgbotchatid, _ := cmd.Flags().GetString("tgbotchatid") - tgbotRuntime, _ := cmd.Flags().GetString("tgbotRuntime") - enabletgbot, _ := cmd.Flags().GetBool("enabletgbot") - remove_secret, _ := cmd.Flags().GetBool("remove_secret") - - if tgbottoken != "" || tgbotchatid != "" || tgbotRuntime != "" { - updateTgbotSetting(tgbottoken, tgbotchatid, tgbotRuntime) - } - - if remove_secret { - removeSecret() - } - - if enabletgbot { - updateTgbotEnableSts(enabletgbot) - } - }, - } - - tgbotCmd.Flags().String("tgbottoken", "", "set telegram bot token") - tgbotCmd.Flags().String("tgbotchatid", "", "set telegram bot chat id") - tgbotCmd.Flags().String("tgbotRuntime", "", "set telegram bot cron time") - tgbotCmd.Flags().Bool("enabletgbot", false, "enable telegram bot notify") - tgbotCmd.Flags().Bool("remove_secret", false, "remove secret") - - settingCmd.AddCommand(resetCmd, showCmd, updateCmd, tgbotCmd) - - rootCmd.AddCommand(runCmd, migrateCmd, v2uiCmd, settingCmd) - - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) + } + if show { + showSetting(show) + } + if (tgbottoken != "") || (tgbotchatid != "") || (tgbotRuntime != "") { + updateTgbotSetting(tgbottoken, tgbotchatid, tgbotRuntime) + } + if remove_secret { + removeSecret() + } + if enabletgbot { + updateTgbotEnableSts(enabletgbot) + } + default: + fmt.Println("except 'run' or 'v2-ui' or 'setting' subcommands") + fmt.Println() + runCmd.Usage() + fmt.Println() + v2uiCmd.Usage() + fmt.Println() + settingCmd.Usage() } } |
