diff --git a/commands.go b/commands.go index 0feed01..61c83fb 100644 --- a/commands.go +++ b/commands.go @@ -85,7 +85,7 @@ func parseCommand(user *gumble.User, username, command string) { // Web command case dj.conf.Aliases.WebAlias: if dj.HasPermission(username, dj.conf.Permissions.AdminWeb) { - web(user) + GetWebAddress(user) } else { dj.SendPrivateMessage(user, NO_PERMISSION_MSG) } @@ -298,12 +298,6 @@ func volume(user *gumble.User, username, value string) { } } -// web performs !web functionality. Gives user URL to web interface -func web(user *gumble.User) { - Verbose("Sending user web address") - dj.SendPrivateMessage(user, "http://178.62.73.59:9563/"+user.Name) -} - // move performs !move functionality. Determines if the supplied channel is valid and moves the bot // to the channel if it is. func move(user *gumble.User, channel string) { diff --git a/strings.go b/strings.go index d48e7a7..92f577b 100644 --- a/strings.go +++ b/strings.go @@ -170,3 +170,8 @@ const CURRENT_SONG_HTML = ` const CURRENT_SONG_PLAYLIST_HTML = ` The song currently playing is "%s", added %s from the playlist "%s". ` + +// URL of the server for connecting via a web address +const WEB_ADDRESS = ` + Control mumbledj from a web browser: http://%s/%s. +` \ No newline at end of file diff --git a/web.go b/web.go index 9a61cf5..0986856 100644 --- a/web.go +++ b/web.go @@ -6,6 +6,9 @@ import ( "net/http" ) +var client_token = new(map[string]string) +var external_ip = "" + type Page struct { Title string Body []byte @@ -26,10 +29,31 @@ func loadPage(title string) (*Page, error) { } func handler(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) + fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) } -func Webserver(){ +func Webserver() { http.HandleFunc("/", handler) http.ListenAndServe(":9563", nil) } + +func GetWebAddress(user *gumble.User) { + dj.SendPrivateMessage(user, fmt.Sprintf(WEB_ADDRESS, getIP(), user.Name, getIP(), user.Name)) +} + +func getIP() string { + if external_ip != "" { + return external_ip + } else { + if response, err := http.Get("http://myexternalip.com/raw"); err == nil { + defer response.Body.Close() + if response.StatusCode == 200 { + if body, err := ioutil.ReadAll(response.Body); err == nil { + external_ip = string(body) + } + } + } + + return external_ip + } +}