From cecfff984cad4eb94815cc8416f4d86aa9b6840f Mon Sep 17 00:00:00 2001 From: Daniel Aberger Date: Sun, 8 Jan 2017 20:27:51 +0100 Subject: [PATCH] Added redirectURL argument for oauth2 callback --- main.go | 21 +++++++++++---------- webserver.go | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index 721767e..433f778 100644 --- a/main.go +++ b/main.go @@ -726,21 +726,22 @@ func deleteCommandMessage(s *discordgo.Session, channelID string, messageID stri func main() { var ( - Token = flag.String("t", "", "Discord Authentication Token") - Shard = flag.String("s", "", "Shard ID") - ShardCount = flag.String("c", "", "Number of shards") - Owner = flag.String("o", "", "Owner ID") - Port = flag.Int("p", 0, "Web server port") - Ci = flag.Int("ci", 0, "ClientID") - Cs = flag.String("cs", "", "ClientSecret") - err error + Token = flag.String("t", "", "Discord Authentication Token") + Shard = flag.String("s", "", "Shard ID") + ShardCount = flag.String("c", "", "Number of shards") + Owner = flag.String("o", "", "Owner ID") + Port = flag.Int("p", 0, "Web server port") + RedirectURL = flag.String("r", "", "Address where the web server will be available without slash at the end. For example: \"http://bot.example.org:12345\"") + Ci = flag.Int("ci", 0, "ClientID") + Cs = flag.String("cs", "", "ClientSecret") + err error ) flag.Parse() // Start Webserver if a valid port is provided and if ClientID and ClientSecret are set - if *Port != 0 && *Port >= 1 && *Ci != 0 && *Cs != "" { + if *Port != 0 && *Port >= 1 && *Ci != 0 && *Cs != "" && *RedirectURL != "" { log.Infoln("Starting web server on port " + strconv.Itoa(*Port)) - go startWebServer(strconv.Itoa(*Port), strconv.Itoa(*Ci), *Cs) + go startWebServer(strconv.Itoa(*Port), strconv.Itoa(*Ci), *Cs, *RedirectURL) } else { log.Infoln("Required web server arguments missing or invalid. Skipping web server start.") } diff --git a/webserver.go b/webserver.go index 224dc42..6265db1 100644 --- a/webserver.go +++ b/webserver.go @@ -33,9 +33,10 @@ var ( ) // startWebServer with the port provided -func startWebServer(port string, ci string, cs string) { +func startWebServer(port string, ci string, cs string, redirectURL string) { discordOauthConfig.ClientID = ci discordOauthConfig.ClientSecret = cs + discordOauthConfig.RedirectURL = redirectURL + "/discordCallback" http.HandleFunc("/", handleMain) http.HandleFunc("/discordLogin", handlediscordLogin) http.HandleFunc("/discordCallback", handlediscordCallback) @@ -43,7 +44,6 @@ func startWebServer(port string, ci string, cs string) { } func handleMain(w http.ResponseWriter, r *http.Request) { - discordOauthConfig.RedirectURL = "http://" + r.Host + "/discordCallback" fmt.Fprintf(w, htmlIndex) }