diff --git a/Makefile b/Makefile index 8c48293..97d8a23 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: mumbledj -mumbledj: main.go commands.go parseconfig.go strings.go service.go service_youtube.go songqueue.go cache.go web.go +mumbledj: main.go commands.go parseconfig.go strings.go service.go youtube_dl.go service_youtube.go service_soundcloud.go songqueue.go cache.go if [ ! -f $(GOPATH)/bin/goop ]; then go get github.com/nitrous-io/goop; fi; rm -rf Goopfile.lock goop install @@ -12,10 +12,8 @@ clean: install: mkdir -p ~/.mumbledj/config mkdir -p ~/.mumbledj/songs - mkdir -p ~/.mumbledj/web if [ -f ~/.mumbledj/config/mumbledj.gcfg ]; then mv ~/.mumbledj/config/mumbledj.gcfg ~/.mumbledj/config/mumbledj_backup.gcfg; fi; cp -u config.gcfg ~/.mumbledj/config/mumbledj.gcfg - cp -u index.html ~/.mumbledj/web/index.html if [ -d ~/bin ]; then cp -f mumbledj* ~/bin/mumbledj; else sudo cp -f mumbledj* /usr/local/bin/mumbledj; fi; build: diff --git a/commands.go b/commands.go index e0413cc..5c52bb0 100644 --- a/commands.go +++ b/commands.go @@ -82,13 +82,6 @@ func parseCommand(user *gumble.User, username, command string) { } else { dj.SendPrivateMessage(user, NO_PERMISSION_MSG) } - // Web command - case dj.conf.Aliases.WebAlias: - if dj.HasPermission(username, dj.conf.Permissions.AdminWeb) { - web.GetWebAddress(user) - } else { - dj.SendPrivateMessage(user, NO_PERMISSION_MSG) - } // Move command case dj.conf.Aliases.MoveAlias: if dj.HasPermission(username, dj.conf.Permissions.AdminMove) { diff --git a/config.gcfg b/config.gcfg index eea2750..c55e52c 100644 --- a/config.gcfg +++ b/config.gcfg @@ -86,10 +86,6 @@ HelpAlias = "help" # DEFAULT VALUE: "volume" VolumeAlias = "volume" -# Alias used for web address command -# DEFAULT VALUE: "web" -WebAlias = "web" - # Alias used for move command # DEFAULT VALUE: "move" MoveAlias = "move" @@ -166,10 +162,6 @@ AdminHelp = false # DEFAULT VALUE: false AdminVolume = false -# Make web an admin command? -# DEFAULT VALUE: false -AdminWeb = false - # Make move an admin command? # DEFAULT VALUE: true AdminMove = true diff --git a/index.html b/index.html deleted file mode 100644 index 7bd1999..0000000 --- a/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - -{{.User}} - mumbledj - - - - -

Add Song Form

- - - - - -
- - - \ No newline at end of file diff --git a/main.go b/main.go index 3a2ae5f..b918974 100644 --- a/main.go +++ b/main.go @@ -252,9 +252,6 @@ func main() { Test(password, address, port, strings.Split(accesstokens, " ")) } - web = NewWebServer(9563) - web.makeWeb() - if isNil(web) { Verbose("WEB IS NIL") } diff --git a/parseconfig.go b/parseconfig.go index 4b4a16a..9da7ec2 100644 --- a/parseconfig.go +++ b/parseconfig.go @@ -51,7 +51,6 @@ type DjConfig struct { NumCachedAlias string CacheSizeAlias string KillAlias string - WebAlias string } Permissions struct { AdminsEnabled bool @@ -71,7 +70,6 @@ type DjConfig struct { AdminNumCached bool AdminCacheSize bool AdminKill bool - AdminWeb bool } } diff --git a/web.go b/web.go deleted file mode 100644 index 84ee1d2..0000000 --- a/web.go +++ /dev/null @@ -1,197 +0,0 @@ -package main - -import ( - //"encoding/json" - "fmt" - "html" - "html/template" - "io/ioutil" - "math/rand" - "net/http" - "os" - "strconv" - "strings" - "time" - - "github.com/layeh/gumble/gumble" -) - -type WebServer struct { - port int - client_token map[*gumble.User]string - token_client map[string]*gumble.User -} - -type Page struct { - Site string - Token string - User string -} - -type Status struct { - Error bool - ErrorMsg string - Queue []SongInfo -} -type SongInfo struct { - TitleID string - PlaylistID string - Title string - Playlist string - Submitter string - Duration string - Thumbnail string -} - -var external_ip = "" - -func NewWebServer(port int) *WebServer { - rand.Seed(time.Now().UnixNano()) - return &WebServer{ - port: port, - client_token: make(map[*gumble.User]string), - token_client: make(map[string]*gumble.User), - } -} - -func (web *WebServer) makeWeb() { - http.HandleFunc("/", web.homepage) - http.HandleFunc("/api/add", web.add) - http.HandleFunc("/api/volume", web.volume) - http.HandleFunc("/api/skip", web.skip) - //http.HandleFunc("/api/status", web.status) - http.ListenAndServe(":"+strconv.Itoa(web.port), nil) -} - -func (web *WebServer) homepage(w http.ResponseWriter, r *http.Request) { - var uname = web.token_client[r.URL.Path[1:]] - if uname == nil { - fmt.Fprintf(w, "Invalid Token") - } else { - var webpage = uname.Name - - // Check to see if user has a custom webpage - if _, err := os.Stat(fmt.Sprintf("%s/.mumbledj/web/%s.html", dj.homeDir, uname.Name)); os.IsNotExist(err) { - webpage = "index" - } - - t, err := template.ParseFiles(fmt.Sprintf("%s/.mumbledj/web/%s.html", dj.homeDir, webpage)) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - err = t.Execute(w, Page{getIP() + ":" + strconv.Itoa(web.port), r.URL.Path[1:], uname.Name}) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - } - } -} - -func (web *WebServer) add(w http.ResponseWriter, r *http.Request) { - var uname = web.token_client[r.FormValue("token")] - if uname == nil { - fmt.Fprintf(w, "Invalid Token") - } else { - add(uname, html.UnescapeString(r.FormValue("value"))) - fmt.Fprintf(w, "Success") - } -} - -func (web *WebServer) volume(w http.ResponseWriter, r *http.Request) { - var uname = web.token_client[r.FormValue("token")] - if uname == nil { - fmt.Fprintf(w, "Invalid Token") - } else { - var vol = html.UnescapeString(r.FormValue("value")) - volume(uname, vol) - fmt.Fprintf(w, "Success") - } -} - -func (web *WebServer) skip(w http.ResponseWriter, r *http.Request) { - var uname = web.token_client[r.FormValue("token")] - if uname == nil { - fmt.Fprintf(w, "Invalid Token") - } else { - value := html.UnescapeString(r.FormValue("value")) - playlist, err := strconv.ParseBool(value) - if err == nil { - skip(uname, false, playlist) - fmt.Fprintf(w, "Success") - } else { - fmt.Fprintf(w, "Invalid Value") - } - } -} - -//func (web *WebServer) status(w http.ResponseWriter, r *http.Request) { -// var uname = web.token_client[r.FormValue("token")] -// if uname == nil { -// str, ok := json.Marshal(&Status{true, "Invalid Token"}).(string) -// fmt.Fprintf(w, str) -// } else { -// // Generate song queue -// queueLength := dj.queue.Len() -// var songsInQueue [queueLength]SongInfo -// for i := 0; i < dj.queue.Len(); i++ { -// songItem := dj.queue.Get(i) -// songsInQueue[i] = &SongInfo{ -// TitleID: songItem.ID(), -// Title: songItem.Title(), -// Submitter: songItem.Submitter(), -// Duration: songItem.Duration(), -// Thumbnail: songItem.Thumbnail(), -// } -// if !isNil(songItem.Playlist()) { -// songsInQueue[i].PlaylistID = songItem.Playlist().ID() -// songsInQueue[i].Playlist = songItem.Playlist().Title() -// } -// } -// -// // Output status -// fmt.Fprintf(w, string(json.MarshalIndent(&Status{false, "", songsInQueue}))) -// } -//} - -func (website *WebServer) GetWebAddress(user *gumble.User) { - Verbose("Port number: " + strconv.Itoa(web.port)) - if web.client_token[user] != "" { - web.token_client[web.client_token[user]] = nil - } - // dealing with collisions - var firstLoop = true - for firstLoop || web.token_client[web.client_token[user]] != nil || web.client_token[user] == "api" { - web.client_token[user] = randSeq(10) - firstLoop = false - } - web.token_client[web.client_token[user]] = user - dj.SendPrivateMessage(user, fmt.Sprintf(WEB_ADDRESS, getIP(), web.client_token[user], getIP(), web.client_token[user])) -} - -// Gets the external ip address for the server -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 = strings.TrimSpace(string(body)) - } - } - } - return external_ip - } -} - -// Generates a pseudorandom string of characters -func randSeq(n int) string { - var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") - b := make([]rune, n) - for i := range b { - b[i] = letters[rand.Intn(len(letters))] - } - return string(b) -}