admin: make baseurl optional
This commit is contained in:
parent
410ab529ae
commit
ce46313dd1
@ -5,9 +5,11 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
|
||||||
"srs.epita.fr/fic-server/admin/api"
|
"srs.epita.fr/fic-server/admin/api"
|
||||||
@ -17,6 +19,24 @@ import (
|
|||||||
var PKIDir string
|
var PKIDir string
|
||||||
var StaticDir 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() {
|
func main() {
|
||||||
var bind = flag.String("bind", "127.0.0.1:8081", "Bind port/socket")
|
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")
|
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.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 {
|
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)
|
log.Println("Unable to open index.html: ", err)
|
||||||
} else if indexTmpl, err := template.New("index").Parse(indextpl); err != nil {
|
} 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))
|
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)
|
log.Fatal("Unable to listen and serve: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user