mirror of
https://github.com/filebrowser/filebrowser.git
synced 2024-06-07 23:00:43 +00:00
Changeable admin URL. Close #69.
This commit is contained in:
parent
4b58519ac0
commit
5953045264
@ -15,6 +15,7 @@ type Config struct {
|
||||
Styles string // Admin styles path
|
||||
Args []string // Hugo arguments
|
||||
Hugo string // Hugo executable path
|
||||
Admin string // Hugo admin URL
|
||||
Git bool // Is this site a git repository
|
||||
}
|
||||
|
||||
@ -22,6 +23,7 @@ type Config struct {
|
||||
func ParseHugo(c *setup.Controller) (*Config, error) {
|
||||
conf := &Config{
|
||||
Public: strings.Replace(c.Root, "./", "", -1),
|
||||
Admin: "/admin",
|
||||
Path: "./",
|
||||
Git: false,
|
||||
}
|
||||
@ -49,6 +51,13 @@ func ParseHugo(c *setup.Controller) (*Config, error) {
|
||||
conf.Styles = strings.TrimPrefix(conf.Styles, "/")
|
||||
// Add a beginning slash to make a
|
||||
conf.Styles = "/" + conf.Styles
|
||||
case "admin":
|
||||
if !c.NextArg() {
|
||||
return nil, c.ArgErr()
|
||||
}
|
||||
conf.Admin = c.Val()
|
||||
conf.Admin = strings.TrimPrefix(conf.Admin, "/")
|
||||
conf.Admin = "/" + conf.Admin
|
||||
default:
|
||||
key := "--" + c.Val()
|
||||
value := "true"
|
||||
|
26
hugo.go
26
hugo.go
@ -73,8 +73,8 @@ type CaddyHugo struct {
|
||||
// ServeHTTP is the main function of the whole plugin that routes every single
|
||||
// request to its function.
|
||||
func (h CaddyHugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||
// Only handle /admin path
|
||||
if middleware.Path(r.URL.Path).Matches("/admin") {
|
||||
// Only handle /{admin} path
|
||||
if middleware.Path(r.URL.Path).Matches(h.Config.Admin) {
|
||||
var err error
|
||||
var page string
|
||||
code := 404
|
||||
@ -96,16 +96,16 @@ func (h CaddyHugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error
|
||||
}
|
||||
}
|
||||
|
||||
// If the current page is only "/admin/", redirect to "/admin/browse/content/"
|
||||
if r.URL.Path == "/admin/" {
|
||||
http.Redirect(w, r, "/admin/browse/content/", http.StatusTemporaryRedirect)
|
||||
// If the current page is only "/{admin}/", redirect to "/{admin}/browse/content/"
|
||||
if r.URL.Path == h.Config.Admin+"/" {
|
||||
http.Redirect(w, r, h.Config.Admin+"/browse/content/", http.StatusTemporaryRedirect)
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
// If the url matches exactly with /admin/settings/ serve that page
|
||||
// If the url matches exactly with /{admin}/settings/ serve that page
|
||||
// page variable isn't used here to avoid people using URLs like
|
||||
// "/admin/settings/something".
|
||||
if r.URL.Path == "/admin/settings/" {
|
||||
// "/{admin}/settings/something".
|
||||
if r.URL.Path == h.Config.Admin+"/settings/" {
|
||||
var frontmatter string
|
||||
|
||||
if _, err := os.Stat(h.Config.Path + "config.yaml"); err == nil {
|
||||
@ -120,13 +120,13 @@ func (h CaddyHugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error
|
||||
frontmatter = "toml"
|
||||
}
|
||||
|
||||
http.Redirect(w, r, "/admin/edit/config."+frontmatter, http.StatusTemporaryRedirect)
|
||||
http.Redirect(w, r, h.Config.Admin+"/edit/config."+frontmatter, http.StatusTemporaryRedirect)
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
// Serve the static assets
|
||||
if page == "assets" {
|
||||
code, err = serveAssets(w, r)
|
||||
code, err = serveAssets(w, r, h.Config)
|
||||
}
|
||||
|
||||
// Browse page
|
||||
@ -154,9 +154,9 @@ func (h CaddyHugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error
|
||||
return h.Next.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
// serveAssets handles the /admin/assets requests
|
||||
func serveAssets(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||
filename := strings.Replace(r.URL.Path, "/admin/assets", "public", 1)
|
||||
// serveAssets handles the /{admin}/assets requests
|
||||
func serveAssets(w http.ResponseWriter, r *http.Request, c *config.Config) (int, error) {
|
||||
filename := strings.Replace(r.URL.Path, c.Admin+"/assets", "public", 1)
|
||||
file, err := assets.Asset(filename)
|
||||
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user