aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Dodrill <xena@yolo-swag.com>2015-03-28 01:12:29 -0700
committerChristine Dodrill <xena@yolo-swag.com>2015-03-28 01:12:29 -0700
commitaac37fa45c697f2c69fd9d281e150dee8e5ff2c6 (patch)
tree654e595a5b82ab9c694fea216c4bd95523a427c2
parent99046786c906b97bc790a49c326d75118cd74091 (diff)
downloadx-aac37fa45c697f2c69fd9d281e150dee8e5ff2c6.tar.xz
x-aac37fa45c697f2c69fd9d281e150dee8e5ff2c6.zip
Add atheme xmlrpc tool
-rw-r--r--atheme/.gitignore1
-rw-r--r--atheme/main.go95
2 files changed, 96 insertions, 0 deletions
diff --git a/atheme/.gitignore b/atheme/.gitignore
new file mode 100644
index 0000000..72dd7a3
--- /dev/null
+++ b/atheme/.gitignore
@@ -0,0 +1 @@
+atheme
diff --git a/atheme/main.go b/atheme/main.go
new file mode 100644
index 0000000..b291158
--- /dev/null
+++ b/atheme/main.go
@@ -0,0 +1,95 @@
+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)
+ }
+}