Browse Source

web: NotFound route to root + support own http.FileSystem

main
genofire 8 months ago
parent
commit
2937b93dff
  1. 4
      web/main.go
  2. 14
      web/module.go

4
web/main.go

@ -10,6 +10,8 @@ maintains a list of modules. When it runs, it executes all of its modules.
package web
import (
"net/http"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
@ -27,7 +29,9 @@ type Service struct {
// config
Listen string `toml:"listen"`
AccessLog bool `toml:"access_log"`
WebrootIndexDisable bool `toml:"webroot_index_disable"`
Webroot string `toml:"webroot"`
WebrootFS http.FileSystem `toml:"-"`
ACME struct {
Enable bool `toml:"enable"`
Domains []string `toml:"domains"`

14
web/module.go

@ -21,5 +21,17 @@ func (ws *Service) Bind(r *gin.Engine) {
}
ws.log.Info("bind modules", zap.Int("count", len(ws.modules)))
r.Use(static.Serve("/", static.LocalFile(ws.Webroot, false)))
if ws.Webroot != "" {
ws.WebrootFS = static.LocalFile(ws.Webroot, false)
}
r.Use(func(c *gin.Context) {
if !ws.WebrootIndexDisable {
_, err := ws.WebrootFS.Open(c.Request.URL.Path)
if err != nil {
c.FileFromFS("/", ws.WebrootFS)
return
}
}
c.FileFromFS(c.Request.URL.Path, ws.WebrootFS)
})
}

Loading…
Cancel
Save