route/vendor/github.com/Xe/x/tools/atheme/main.go

96 lines
1.5 KiB
Go

package main
import (
"bufio"
"flag"
"fmt"
"log"
"os"
"github.com/Xe/Tetra/atheme"
"github.com/howeyc/gopass"
)
var (
client *atheme.Atheme
serverString = flag.String("server", "http://127.0.0.1:8080/xmlrpc", "what http://server:port to connect to")
cookie = flag.String("cookie", "", "authentication cookie to use")
user = flag.String("user", "", "username to use")
)
func main() {
flag.Parse()
command := flag.Arg(0)
if command == "" {
flag.Usage()
os.Exit(1)
}
var rest []string
if n := flag.NArg(); n > 1 {
rest = flag.Args()[1:]
}
_ = rest
var err error
client, err = atheme.NewAtheme(*serverString)
if err != nil {
log.Fatal(err)
}
switch command {
case "login":
var username string
var password string
scanner := bufio.NewScanner(os.Stdin)
fmt.Print("Username: ")
for {
scanner.Scan()
username = scanner.Text()
if scanner.Err() == nil {
break
}
fmt.Print("Username: ")
}
fmt.Print("Password: ")
for {
password = string(gopass.GetPasswdMasked())
if password != "" {
break
}
fmt.Print("Password: ")
}
err = client.Login(username, password)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Authcookie: %s\n", client.Authcookie)
case "command":
if *cookie == "" {
log.Fatal("specify cookie")
}
client.Authcookie = *cookie
client.Account = *user
output, err := client.Command(rest...)
if err != nil {
log.Fatal(err)
}
fmt.Println(output)
}
}