mirror of https://github.com/Xhofe/alist
feat: support using external dist files (close #5531)
parent
f904596cbc
commit
6fc6751463
|
@ -49,6 +49,7 @@ type Config struct {
|
||||||
Scheme Scheme `json:"scheme"`
|
Scheme Scheme `json:"scheme"`
|
||||||
TempDir string `json:"temp_dir" env:"TEMP_DIR"`
|
TempDir string `json:"temp_dir" env:"TEMP_DIR"`
|
||||||
BleveDir string `json:"bleve_dir" env:"BLEVE_DIR"`
|
BleveDir string `json:"bleve_dir" env:"BLEVE_DIR"`
|
||||||
|
DistDir string `json:"dist_dir"`
|
||||||
Log LogConfig `json:"log"`
|
Log LogConfig `json:"log"`
|
||||||
DelayedStart int `json:"delayed_start" env:"DELAYED_START"`
|
DelayedStart int `json:"delayed_start" env:"DELAYED_START"`
|
||||||
MaxConnections int `json:"max_connections" env:"MAX_CONNECTIONS"`
|
MaxConnections int `json:"max_connections" env:"MAX_CONNECTIONS"`
|
||||||
|
|
|
@ -3,25 +3,48 @@ package static
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/alist-org/alist/v3/public"
|
||||||
|
"io"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/alist-org/alist/v3/internal/conf"
|
"github.com/alist-org/alist/v3/internal/conf"
|
||||||
"github.com/alist-org/alist/v3/internal/setting"
|
"github.com/alist-org/alist/v3/internal/setting"
|
||||||
"github.com/alist-org/alist/v3/pkg/utils"
|
"github.com/alist-org/alist/v3/pkg/utils"
|
||||||
"github.com/alist-org/alist/v3/public"
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
func InitIndex() {
|
var static fs.FS = public.Public
|
||||||
index, err := public.Public.ReadFile("dist/index.html")
|
|
||||||
|
func initStatic() {
|
||||||
|
if conf.Conf.DistDir == "" {
|
||||||
|
dist, err := fs.Sub(static, "dist")
|
||||||
|
if err != nil {
|
||||||
|
utils.Log.Fatalf("failed to read dist dir")
|
||||||
|
}
|
||||||
|
static = dist
|
||||||
|
return
|
||||||
|
}
|
||||||
|
static = os.DirFS(conf.Conf.DistDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
func initIndex() {
|
||||||
|
indexFile, err := static.Open("index.html")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, fs.ErrNotExist) {
|
if errors.Is(err, fs.ErrNotExist) {
|
||||||
utils.Log.Fatalf("index.html not exist, you may forget to put dist of frontend to public/dist")
|
utils.Log.Fatalf("index.html not exist, you may forget to put dist of frontend to public/dist")
|
||||||
}
|
}
|
||||||
utils.Log.Fatalf("failed to read index.html: %v", err)
|
utils.Log.Fatalf("failed to read index.html: %v", err)
|
||||||
}
|
}
|
||||||
|
defer func() {
|
||||||
|
_ = indexFile.Close()
|
||||||
|
}()
|
||||||
|
index, err := io.ReadAll(indexFile)
|
||||||
|
if err != nil {
|
||||||
|
utils.Log.Fatalf("failed to read dist/index.html")
|
||||||
|
}
|
||||||
conf.RawIndexHtml = string(index)
|
conf.RawIndexHtml = string(index)
|
||||||
siteConfig := getSiteConfig()
|
siteConfig := getSiteConfig()
|
||||||
replaceMap := map[string]string{
|
replaceMap := map[string]string{
|
||||||
|
@ -60,7 +83,8 @@ func UpdateIndex() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Static(r *gin.RouterGroup, noRoute func(handlers ...gin.HandlerFunc)) {
|
func Static(r *gin.RouterGroup, noRoute func(handlers ...gin.HandlerFunc)) {
|
||||||
InitIndex()
|
initStatic()
|
||||||
|
initIndex()
|
||||||
folders := []string{"assets", "images", "streamer", "static"}
|
folders := []string{"assets", "images", "streamer", "static"}
|
||||||
r.Use(func(c *gin.Context) {
|
r.Use(func(c *gin.Context) {
|
||||||
for i := range folders {
|
for i := range folders {
|
||||||
|
@ -70,8 +94,7 @@ func Static(r *gin.RouterGroup, noRoute func(handlers ...gin.HandlerFunc)) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
for i, folder := range folders {
|
for i, folder := range folders {
|
||||||
folder = "dist/" + folder
|
sub, err := fs.Sub(static, folder)
|
||||||
sub, err := fs.Sub(public.Public, folder)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Log.Fatalf("can't find folder: %s", folder)
|
utils.Log.Fatalf("can't find folder: %s", folder)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue