mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-06 08:22:24 +01:00
chore (legacy): remove legacy stuff
This commit is contained in:
parent
232800c8ab
commit
9f275e967b
2 changed files with 8 additions and 123 deletions
|
|
@ -2,9 +2,8 @@ package ctrl
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
_ "embed"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
|
|
@ -24,9 +23,6 @@ import (
|
|||
var (
|
||||
WWWDir fs.FS
|
||||
|
||||
//go:embed static/www
|
||||
WWWEmbed embed.FS
|
||||
|
||||
//go:embed static/404.html
|
||||
HtmlPage404 []byte
|
||||
|
||||
|
|
@ -38,103 +34,6 @@ func init() {
|
|||
WWWDir = os.DirFS(GetAbsolutePath("../"))
|
||||
}
|
||||
|
||||
func LegacyStaticHandler(_path string) func(*App, http.ResponseWriter, *http.Request) { // TODO: migrate away
|
||||
return func(ctx *App, res http.ResponseWriter, req *http.Request) {
|
||||
var chroot string = GetAbsolutePath(_path)
|
||||
if srcPath := JoinPath(chroot, req.URL.Path); strings.HasPrefix(srcPath, chroot) == false {
|
||||
http.NotFound(res, req)
|
||||
return
|
||||
}
|
||||
legacyServeFile(res, req, JoinPath(_path, TrimBase(req.URL.Path)))
|
||||
}
|
||||
}
|
||||
|
||||
func LegacyIndexHandler(ctx *App, res http.ResponseWriter, req *http.Request) { // TODO: migrate away
|
||||
url := TrimBase(req.URL.Path)
|
||||
if url != URL_SETUP && Config.Get("auth.admin").String() == "" {
|
||||
http.Redirect(res, req, URL_SETUP, http.StatusTemporaryRedirect)
|
||||
return
|
||||
} else if url != "/" && strings.HasPrefix(url, "/s/") == false &&
|
||||
strings.HasPrefix(url, "/view/") == false && strings.HasPrefix(url, "/files/") == false &&
|
||||
url != "/login" && url != "/logout" && strings.HasPrefix(url, "/admin") == false && strings.HasPrefix(url, "/tags") == false {
|
||||
NotFoundHandler(ctx, res, req)
|
||||
return
|
||||
}
|
||||
ua := req.Header.Get("User-Agent")
|
||||
if strings.Contains(ua, "MSIE ") || strings.Contains(ua, "Trident/") || strings.Contains(ua, "Edge/") {
|
||||
// Microsoft is behaving on many occasion differently than Firefox / Chrome.
|
||||
// I have neither the time / motivation for it to work properly
|
||||
res.WriteHeader(http.StatusBadRequest)
|
||||
res.Write([]byte(Page(`
|
||||
<h1>Internet explorer is not supported</h1>
|
||||
<p>
|
||||
We don't support IE / Edge at this time
|
||||
<br>
|
||||
Please use either Chromium, Firefox or Chrome
|
||||
</p>
|
||||
`)))
|
||||
return
|
||||
}
|
||||
legacyServeFile(res, req, "/index.html")
|
||||
}
|
||||
|
||||
func legacyServeFile(res http.ResponseWriter, req *http.Request, filePath string) { // TODO: migrate away
|
||||
staticConfig := []struct {
|
||||
ContentType string
|
||||
FileExt string
|
||||
}{
|
||||
{"br", ".br"},
|
||||
{"gzip", ".gz"},
|
||||
{"", ""},
|
||||
}
|
||||
|
||||
statusCode := 200
|
||||
if req.URL.Path == "/" {
|
||||
if errName := req.URL.Query().Get("error"); errName != "" {
|
||||
statusCode = HTTPError(errors.New(errName)).Status()
|
||||
}
|
||||
}
|
||||
|
||||
head := res.Header()
|
||||
acceptEncoding := req.Header.Get("Accept-Encoding")
|
||||
for _, cfg := range staticConfig {
|
||||
if strings.Contains(acceptEncoding, cfg.ContentType) == false {
|
||||
continue
|
||||
}
|
||||
curPath := filePath + cfg.FileExt
|
||||
var (
|
||||
file fs.File
|
||||
err error
|
||||
)
|
||||
if env := os.Getenv("DEBUG"); env == "true" {
|
||||
file, err = WWWDir.Open("server/ctrl/static/www" + curPath)
|
||||
} else {
|
||||
file, err = WWWEmbed.Open("static/www" + curPath)
|
||||
}
|
||||
if err != nil {
|
||||
continue
|
||||
} else if stat, err := file.Stat(); err == nil {
|
||||
etag := QuickHash(fmt.Sprintf(
|
||||
"%s %d %d %s",
|
||||
curPath, stat.Size(), stat.Mode(), stat.ModTime()), 10,
|
||||
)
|
||||
if etag == req.Header.Get("If-None-Match") {
|
||||
res.WriteHeader(http.StatusNotModified)
|
||||
return
|
||||
}
|
||||
head.Set("Etag", etag)
|
||||
}
|
||||
if cfg.ContentType != "" {
|
||||
head.Set("Content-Encoding", cfg.ContentType)
|
||||
}
|
||||
res.WriteHeader(statusCode)
|
||||
io.Copy(res, file)
|
||||
file.Close()
|
||||
return
|
||||
}
|
||||
http.NotFound(res, req)
|
||||
}
|
||||
|
||||
func ServeBackofficeHandler(ctx *App, res http.ResponseWriter, req *http.Request) {
|
||||
url := req.URL.Path
|
||||
if filepath.Ext(filepath.Base(url)) != "" {
|
||||
|
|
|
|||
|
|
@ -75,11 +75,7 @@ func Build(r *mux.Router, a App) {
|
|||
|
||||
// Webdav server / Shared Link
|
||||
middlewares = []Middleware{IndexHeaders, SecureHeaders, PluginInjector}
|
||||
if os.Getenv("LEGACY") == "true" { // TODO: remove once migration is done
|
||||
r.HandleFunc(WithBase("/s/{share}"), NewMiddlewareChain(LegacyIndexHandler, middlewares, a)).Methods("GET")
|
||||
} else {
|
||||
r.HandleFunc(WithBase("/s/{share}"), NewMiddlewareChain(ServeFrontofficeHandler, middlewares, a)).Methods("GET")
|
||||
}
|
||||
r.HandleFunc(WithBase("/s/{share}"), NewMiddlewareChain(ServeFrontofficeHandler, middlewares, a)).Methods("GET")
|
||||
middlewares = []Middleware{WebdavBlacklist, SessionStart, PluginInjector}
|
||||
r.PathPrefix(WithBase("/s/{share}")).Handler(NewMiddlewareChain(WebdavHandler, middlewares, a))
|
||||
middlewares = []Middleware{ApiHeaders, SecureHeaders, RedirectSharedLoginIfNeeded, SessionStart, LoggedInOnly, PluginInjector}
|
||||
|
|
@ -91,17 +87,11 @@ func Build(r *mux.Router, a App) {
|
|||
r.HandleFunc(WithBase("/api/plugin"), NewMiddlewareChain(PluginExportHandler, append(middlewares, PublicCORS), a)).Methods("GET", "OPTIONS")
|
||||
r.HandleFunc(WithBase("/api/config"), NewMiddlewareChain(PublicConfigHandler, append(middlewares, PublicCORS), a)).Methods("GET", "OPTIONS")
|
||||
middlewares = []Middleware{StaticHeaders, SecureHeaders, PublicCORS, PluginInjector}
|
||||
if os.Getenv("LEGACY") == "true" { // TODO: remove after migration is done
|
||||
r.PathPrefix(WithBase("/assets")).Handler(http.HandlerFunc(NewMiddlewareChain(LegacyStaticHandler("/"), middlewares, a))).Methods("GET", "OPTIONS")
|
||||
r.HandleFunc(WithBase("/favicon.ico"), NewMiddlewareChain(LegacyStaticHandler("/assets/logo/"), middlewares, a)).Methods("GET")
|
||||
r.HandleFunc(WithBase("/sw_cache.js"), NewMiddlewareChain(LegacyStaticHandler("/assets/worker/"), middlewares, a)).Methods("GET")
|
||||
} else { // TODO: remove this after migration is done
|
||||
r.PathPrefix(WithBase("/assets")).Handler(http.HandlerFunc(NewMiddlewareChain(ServeFile("/"), middlewares, a))).Methods("GET", "OPTIONS")
|
||||
r.HandleFunc(WithBase("/sw.js"), http.HandlerFunc(NewMiddlewareChain(ServeFile("/assets/"), middlewares, a))).Methods("GET")
|
||||
r.HandleFunc(WithBase("/favicon.ico"), NewMiddlewareChain(ServeFavicon, middlewares, a)).Methods("GET")
|
||||
r.HandleFunc(WithBase("/plugin/{name}/{path:.+}"), NewMiddlewareChain(PluginStaticHandler, middlewares, a)).Methods("GET")
|
||||
r.HandleFunc(WithBase("/plugin/{name}.zip"), NewMiddlewareChain(PluginDownloadHandler, middlewares, a)).Methods("GET")
|
||||
}
|
||||
r.PathPrefix(WithBase("/assets")).Handler(http.HandlerFunc(NewMiddlewareChain(ServeFile("/"), middlewares, a))).Methods("GET", "OPTIONS")
|
||||
r.HandleFunc(WithBase("/sw.js"), http.HandlerFunc(NewMiddlewareChain(ServeFile("/assets/"), middlewares, a))).Methods("GET")
|
||||
r.HandleFunc(WithBase("/favicon.ico"), NewMiddlewareChain(ServeFavicon, middlewares, a)).Methods("GET")
|
||||
r.HandleFunc(WithBase("/plugin/{name}/{path:.+}"), NewMiddlewareChain(PluginStaticHandler, middlewares, a)).Methods("GET")
|
||||
r.HandleFunc(WithBase("/plugin/{name}.zip"), NewMiddlewareChain(PluginDownloadHandler, middlewares, a)).Methods("GET")
|
||||
|
||||
// Other endpoints
|
||||
middlewares = []Middleware{ApiHeaders, PluginInjector, PublicCORS}
|
||||
|
|
@ -125,11 +115,7 @@ func CatchAll(r *mux.Router, a App) {
|
|||
middlewares := []Middleware{SecureHeaders, PluginInjector}
|
||||
r.PathPrefix(WithBase("/admin")).Handler(http.HandlerFunc(NewMiddlewareChain(ServeBackofficeHandler, middlewares, a))).Methods("GET")
|
||||
middlewares = []Middleware{IndexHeaders, SecureHeaders, PluginInjector}
|
||||
if os.Getenv("LEGACY") == "true" { // TODO: remove once migration is done
|
||||
r.PathPrefix("/").Handler(http.HandlerFunc(NewMiddlewareChain(LegacyIndexHandler, middlewares, a))).Methods("GET", "POST")
|
||||
} else {
|
||||
r.PathPrefix("/").Handler(http.HandlerFunc(NewMiddlewareChain(ServeFrontofficeHandler, middlewares, a))).Methods("GET", "POST")
|
||||
}
|
||||
r.PathPrefix("/").Handler(http.HandlerFunc(NewMiddlewareChain(ServeFrontofficeHandler, middlewares, a))).Methods("GET", "POST")
|
||||
}
|
||||
|
||||
func initDebugRoutes(r *mux.Router) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue