admin: make baseurl optional

This commit is contained in:
nemunaire 2017-10-26 14:14:18 +02:00 committed by Pierre-Olivier Mercier
parent 410ab529ae
commit ce46313dd1

View File

@ -5,9 +5,11 @@ import (
"fmt"
"log"
"net/http"
"net/url"
"os"
"path"
"path/filepath"
"strings"
"text/template"
"srs.epita.fr/fic-server/admin/api"
@ -17,6 +19,24 @@ import (
var PKIDir string
var StaticDir string
func StripPrefix(prefix string, h http.Handler) http.Handler {
if prefix == "" {
return h
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if p := strings.TrimPrefix(r.URL.Path, prefix); len(p) < len(r.URL.Path) {
r2 := new(http.Request)
*r2 = *r
r2.URL = new(url.URL)
*r2.URL = *r.URL
r2.URL.Path = p
h.ServeHTTP(w, r2)
} else {
h.ServeHTTP(w, r)
}
})
}
func main() {
var bind = flag.String("bind", "127.0.0.1:8081", "Bind port/socket")
var dsn = flag.String("dsn", fic.DSNGenerator(), "DSN to connect to the MySQL server")
@ -75,7 +95,7 @@ func main() {
log.Fatal("Cannot create database: ", err)
}
log.Println("Changing base URL to", *baseURL,"...")
log.Println("Changing base URL to", *baseURL + "/", "...")
if file, err := os.OpenFile(path.Join(StaticDir, "index.html"), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, os.FileMode(0644)); err != nil {
log.Println("Unable to open index.html: ", err)
} else if indexTmpl, err := template.New("index").Parse(indextpl); err != nil {
@ -86,7 +106,7 @@ func main() {
log.Println(fmt.Sprintf("Ready, listening on %s", *bind))
if err := http.ListenAndServe(*bind, http.StripPrefix(*baseURL, api.Router())); err != nil {
if err := http.ListenAndServe(*bind, StripPrefix(*baseURL, api.Router())); err != nil {
log.Fatal("Unable to listen and serve: ", err)
}
}