server: set SERVER header on all requests (even SIO ones), display version on startup
This commit is contained in:
parent
5da61d5922
commit
6999069fd7
31
main.go
31
main.go
@ -12,6 +12,10 @@ import (
|
||||
"github.com/googollee/go-socket.io"
|
||||
)
|
||||
|
||||
const (
|
||||
VERSION = `nmdc-webfrontend/1.1.2`
|
||||
)
|
||||
|
||||
type App struct {
|
||||
cfg *Config
|
||||
}
|
||||
@ -224,6 +228,9 @@ func (this *App) StaticRequestHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
func (this *App) RunServer() {
|
||||
|
||||
// Inner mux {{
|
||||
innerMux := http.NewServeMux()
|
||||
|
||||
// Socket.io handler
|
||||
server, err := socketio.NewServer(nil)
|
||||
if err != nil {
|
||||
@ -233,27 +240,39 @@ func (this *App) RunServer() {
|
||||
server.On("error", func(so socketio.Socket, err error) {
|
||||
log.Println("error:", err)
|
||||
})
|
||||
http.Handle("/socket.io/", server)
|
||||
innerMux.Handle("/socket.io/", server)
|
||||
|
||||
// Custom favicon handler
|
||||
if this.cfg.Web.CustomFavicon {
|
||||
http.HandleFunc("/favicon.ico", this.customFaviconHandler)
|
||||
innerMux.HandleFunc("/favicon.ico", this.customFaviconHandler)
|
||||
}
|
||||
|
||||
// Other files: asset handler
|
||||
// Asset handler
|
||||
if this.cfg.Web.ExternalWebroot {
|
||||
http.Handle("/", http.FileServer(http.Dir("client")))
|
||||
innerMux.Handle("/", http.FileServer(http.Dir("client")))
|
||||
} else {
|
||||
http.HandleFunc("/", this.StaticRequestHandler)
|
||||
innerMux.HandleFunc("/", this.StaticRequestHandler)
|
||||
}
|
||||
// }}
|
||||
|
||||
// Wrapper mux {{
|
||||
outerMux := http.NewServeMux()
|
||||
outerMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Server", VERSION)
|
||||
innerMux.ServeHTTP(w, r)
|
||||
})
|
||||
// }}
|
||||
|
||||
// Listen and serve
|
||||
bindAddr := fmt.Sprintf("%s:%d", this.cfg.Web.BindTo, this.cfg.Web.Port)
|
||||
log.Printf("Serving at %s...", bindAddr)
|
||||
log.Fatal(http.ListenAndServe(bindAddr, nil))
|
||||
log.Fatal(http.ListenAndServe(bindAddr, outerMux))
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
log.Println(VERSION)
|
||||
|
||||
a, err := NewApp("nmdc-webfrontend.conf")
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
|
Loading…
Reference in New Issue
Block a user