boxdd: Add insecure mode

This commit is contained in:
世界
2026-07-15 19:31:11 +08:00
parent 52f372c536
commit e34b57c3b0
61 changed files with 1058 additions and 288 deletions
+4
View File
@@ -140,6 +140,10 @@ func NewServer(ctx context.Context, logFactory log.ObservableFactory, options op
})
if options.ExternalUI != "" {
s.externalUI = filemanager.BasePath(ctx, os.ExpandEnv(options.ExternalUI))
_, err := filemanager.ReadDir(ctx, s.externalUI)
if err != nil && !os.IsNotExist(err) {
return nil, E.Cause(err, "read external UI directory")
}
chiRouter.Group(func(r chi.Router) {
r.Get("/ui", http.RedirectHandler("/ui/", http.StatusMovedPermanently).ServeHTTP)
r.Handle("/ui/*", http.StripPrefix("/ui/", http.FileServer(Dir(s.externalUI))))
+8 -9
View File
@@ -7,7 +7,6 @@ import (
"io"
"net"
"net/http"
"os"
"path/filepath"
"strings"
@@ -24,9 +23,9 @@ func (s *Server) checkAndDownloadExternalUI() {
if s.externalUI == "" {
return
}
entries, err := os.ReadDir(s.externalUI)
entries, err := filemanager.ReadDir(s.ctx, s.externalUI)
if err != nil {
os.MkdirAll(s.externalUI, 0o755)
filemanager.MkdirAll(s.ctx, s.externalUI, 0o755)
}
if len(entries) == 0 {
err = s.downloadExternalUI()
@@ -79,7 +78,7 @@ func (s *Server) downloadExternalUI() error {
}
err = s.downloadZIP(response.Body, s.externalUI)
if err != nil {
removeAllInDirectory(s.externalUI)
removeAllInDirectory(s.ctx, s.externalUI)
}
return err
}
@@ -89,7 +88,7 @@ func (s *Server) downloadZIP(body io.Reader, output string) error {
if err != nil {
return err
}
defer os.Remove(tempFile.Name())
defer filemanager.Remove(s.ctx, tempFile.Name())
_, err = io.Copy(tempFile, body)
tempFile.Close()
if err != nil {
@@ -113,7 +112,7 @@ func (s *Server) downloadZIP(body io.Reader, output string) error {
if len(pathElements) > 1 {
saveDirectory = filepath.Join(saveDirectory, filepath.Join(pathElements[:len(pathElements)-1]...))
}
err = os.MkdirAll(saveDirectory, 0o755)
err = filemanager.MkdirAll(s.ctx, saveDirectory, 0o755)
if err != nil {
return err
}
@@ -140,13 +139,13 @@ func downloadZIPEntry(ctx context.Context, zipFile *zip.File, savePath string) e
return common.Error(io.Copy(saveFile, reader))
}
func removeAllInDirectory(directory string) {
dirEntries, err := os.ReadDir(directory)
func removeAllInDirectory(ctx context.Context, directory string) {
dirEntries, err := filemanager.ReadDir(ctx, directory)
if err != nil {
return
}
for _, dirEntry := range dirEntries {
os.RemoveAll(filepath.Join(directory, dirEntry.Name()))
filemanager.RemoveAll(ctx, filepath.Join(directory, dirEntry.Name()))
}
}