2025-04-16 16:18:40 -04:00
|
|
|
/*
|
|
|
|
Copyright © 2025 Jake jake.young.dev@gmail.com
|
|
|
|
*/
|
|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
2025-06-16 19:17:52 -04:00
|
|
|
"encoding/base64"
|
2025-04-16 16:18:40 -04:00
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
2025-06-16 19:17:52 -04:00
|
|
|
"code.jakeyoungdev.com/jake/mctl/database"
|
|
|
|
"code.jakeyoungdev.com/jake/mctl/model"
|
2025-04-16 16:18:40 -04:00
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"golang.org/x/term"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2025-04-17 15:40:54 +00:00
|
|
|
cfgserver string
|
|
|
|
cfgport int
|
2025-06-16 19:17:52 -04:00
|
|
|
cfgname string
|
2025-04-16 16:18:40 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
// configCmd represents the config command
|
|
|
|
var configCmd = &cobra.Command{
|
2025-04-17 15:40:54 +00:00
|
|
|
Use: "config",
|
2025-06-16 19:17:52 -04:00
|
|
|
Example: "mctl config -n serverAlias -s x.x.x.x -p 61695",
|
2025-04-17 15:40:54 +00:00
|
|
|
Short: "Create and populate config file",
|
2025-04-16 16:18:40 -04:00
|
|
|
Long: `Creates the .mctl file in the user home directory
|
|
|
|
populating it with the server address, rcon password, and
|
|
|
|
rcon port to be pulled when using Login command`,
|
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
|
|
//read in password using term to keep it secure/hidden from bash history
|
|
|
|
fmt.Printf("Password: ")
|
|
|
|
ps, err := term.ReadPassword(int(os.Stdin.Fd()))
|
|
|
|
cobra.CheckErr(err)
|
|
|
|
|
2025-06-16 19:17:52 -04:00
|
|
|
db, err := database.New()
|
2025-04-16 16:18:40 -04:00
|
|
|
cobra.CheckErr(err)
|
2025-06-16 19:17:52 -04:00
|
|
|
defer db.Close()
|
2025-04-16 16:18:40 -04:00
|
|
|
|
2025-06-16 19:17:52 -04:00
|
|
|
err = db.Init()
|
2025-04-17 15:40:54 +00:00
|
|
|
cobra.CheckErr(err)
|
2025-04-16 16:18:40 -04:00
|
|
|
|
2025-06-16 19:17:52 -04:00
|
|
|
err = db.SaveServer(model.Server{
|
|
|
|
Name: cfgname,
|
|
|
|
Server: cfgserver,
|
|
|
|
Port: cfgport,
|
|
|
|
Password: base64.StdEncoding.EncodeToString(ps),
|
|
|
|
})
|
2025-04-24 18:22:16 +00:00
|
|
|
cobra.CheckErr(err)
|
2025-04-16 16:18:40 -04:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func init() {
|
2025-04-17 15:40:54 +00:00
|
|
|
configCmd.Flags().StringVarP(&cfgserver, "server", "s", "", "server address")
|
2025-04-24 18:22:16 +00:00
|
|
|
err := configCmd.MarkFlagRequired("server")
|
|
|
|
cobra.CheckErr(err)
|
2025-04-17 15:40:54 +00:00
|
|
|
configCmd.Flags().IntVarP(&cfgport, "port", "p", 0, "server rcon port")
|
2025-04-24 18:22:16 +00:00
|
|
|
err = configCmd.MarkFlagRequired("port")
|
|
|
|
cobra.CheckErr(err)
|
2025-06-16 19:17:52 -04:00
|
|
|
configCmd.Flags().StringVarP(&cfgname, "name", "n", "", "server alias")
|
|
|
|
err = configCmd.MarkFlagRequired("name")
|
2025-04-16 16:18:40 -04:00
|
|
|
cobra.CheckErr(err)
|
2025-06-16 19:17:52 -04:00
|
|
|
rootCmd.AddCommand(configCmd)
|
2025-04-16 16:18:40 -04:00
|
|
|
}
|