toys/gettoken.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
package main import ( "flag" "fmt" "io/ioutil" "log" "net/http" "net/url" "os" "strings" ) var debugMode = false func main() { server := "" username := "" password := "" flag.StringVar(&server, "server", server, "server to connnect") flag.StringVar(&username, "username", username, "username to use") flag.StringVar(&password, "password", password, "password to use") flag.BoolVar(&debugMode, "debug", debugMode, "debug mode") flag.Parse() if server == "" || username == "" || password == "" { flag.Usage() os.Exit(1) } form := make(url.Values) form.Add("username", username) form.Add("password", password) form.Add("gettoken", "1") loginurl := fmt.Sprintf("https://%s/dologin", server) req, err := http.NewRequest("POST", loginurl, strings.NewReader(form.Encode())) if err != nil { log.Fatal(err) } req.Header.Add("Content-Type", "application/x-www-form-urlencoded") client := http.DefaultClient if debugMode { client = debugClient } resp, err := client.Do(req) if err != nil { log.Fatal(err) } defer resp.Body.Close() answer, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } if resp.StatusCode != 200 { log.Fatalf("status: %d: %s", resp.StatusCode, answer) } fmt.Println(string(answer)) } |