etcd/web/web.go
Brandon Philips 0e5ee2742d fix(web): don't share the DefaultMux
All of the web handlers were sharing one mux. Separate them out into
individual muxes.
2013-08-10 10:54:59 -07:00

50 lines
854 B
Go

package web
import (
"code.google.com/p/go.net/websocket"
"fmt"
"github.com/coreos/go-raft"
"html/template"
"net/http"
"net/url"
)
var s *raft.Server
var mainTempl *template.Template
type MainPage struct {
Leader string
Address string
}
func mainHandler(c http.ResponseWriter, req *http.Request) {
p := &MainPage{Leader: s.Leader(),
Address: s.Name()}
mainTempl.Execute(c, p)
}
func Start(raftServer *raft.Server, webURL string) {
u, _ := url.Parse(webURL)
webMux := http.NewServeMux()
server := &http.Server{
Handler: webMux,
Addr: u.Host,
}
s = raftServer
mainTempl = template.Must(template.New("index.html").Parse(index_html))
go h.run()
webMux.HandleFunc("/", mainHandler)
webMux.Handle("/ws", websocket.Handler(wsHandler))
fmt.Printf("etcd web server listening on %s\n", u)
server.ListenAndServe()
}