Spaces:
Running
Running
package web | |
import ( | |
"adams549659584/go-proxy-bingai/common" | |
"embed" | |
"io/fs" | |
"net/http" | |
"net/http/httputil" | |
"path/filepath" | |
) | |
//go:embed * | |
var webFS embed.FS | |
var WEB_PATH_MAP = make(map[string]bool) | |
func init() { | |
var err error | |
if common.IS_DEBUG_MODE { | |
err = initWebPathMapByDir() | |
} else { | |
err = initWebPathMapByFS() | |
} | |
if err != nil { | |
panic(err) | |
} | |
} | |
func initWebPathMapByDir() error { | |
err := filepath.WalkDir("web", func(path string, d fs.DirEntry, err error) error { | |
if err != nil { | |
return err | |
} | |
if !d.IsDir() { | |
WEB_PATH_MAP["/"+path] = true | |
} | |
return nil | |
}) | |
return err | |
} | |
func initWebPathMapByFS() error { | |
err := fs.WalkDir(webFS, ".", func(path string, d fs.DirEntry, err error) error { | |
if err != nil { | |
return err | |
} | |
if !d.IsDir() { | |
WEB_PATH_MAP["/web/"+path] = true | |
} | |
return nil | |
}) | |
return err | |
} | |
func GetWebFS() http.FileSystem { | |
return http.FS(webFS) | |
} | |
func DebugWebHandler(w http.ResponseWriter, r *http.Request) { | |
reverseProxy := &httputil.ReverseProxy{ | |
Director: func(req *http.Request) { | |
req.URL.Scheme = common.DEBUG_PROXY_WEB.Scheme | |
req.URL.Host = common.DEBUG_PROXY_WEB.Host | |
req.Host = common.DEBUG_PROXY_WEB.Host | |
req.Header.Set("Origin", common.DEBUG_PROXY_WEB.String()) | |
}, | |
} | |
reverseProxy.ServeHTTP(w, r) | |
} | |