mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 00:01:10 +08:00
25w15a
This commit is contained in:
parent
9af5010b79
commit
ad9cffe9e2
9 changed files with 182 additions and 28 deletions
155
main.go
155
main.go
|
|
@ -106,6 +106,78 @@ func InitReq(cfg *config.Config) {
|
|||
proxy.InitReq(cfg)
|
||||
}
|
||||
|
||||
// loadEmbeddedPages 加载嵌入式页面资源
|
||||
func loadEmbeddedPages(cfg *config.Config) (fs.FS, error) {
|
||||
var pages fs.FS
|
||||
var err error
|
||||
|
||||
switch cfg.Pages.Theme {
|
||||
case "bootstrap":
|
||||
pages, err = fs.Sub(pagesFS, "pages/bootstrap")
|
||||
case "nebula":
|
||||
pages, err = fs.Sub(NebulaPagesFS, "pages/nebula")
|
||||
default:
|
||||
pages, err = fs.Sub(pagesFS, "pages/bootstrap") // 默认主题
|
||||
logWarning("Invalid Pages Theme: %s, using default theme 'bootstrap'", cfg.Pages.Theme)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to load embedded pages: %w", err)
|
||||
}
|
||||
return pages, nil
|
||||
}
|
||||
|
||||
// setupPages 设置页面路由
|
||||
func setupPages(cfg *config.Config, router *gin.Engine) {
|
||||
switch cfg.Pages.Mode {
|
||||
case "internal":
|
||||
// 加载嵌入式资源
|
||||
pages, err := loadEmbeddedPages(cfg)
|
||||
if err != nil {
|
||||
logError("Failed when processing internal pages: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 设置嵌入式资源路由
|
||||
router.GET("/", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/favicon.ico", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/script.js", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/style.css", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
|
||||
case "external":
|
||||
// 设置外部资源路径
|
||||
indexPagePath := fmt.Sprintf("%s/index.html", cfg.Pages.StaticDir)
|
||||
faviconPath := fmt.Sprintf("%s/favicon.ico", cfg.Pages.StaticDir)
|
||||
javascriptsPath := fmt.Sprintf("%s/script.js", cfg.Pages.StaticDir)
|
||||
stylesheetsPath := fmt.Sprintf("%s/style.css", cfg.Pages.StaticDir)
|
||||
|
||||
// 设置外部资源路由
|
||||
router.GET("/", func(c *gin.Context) {
|
||||
c.File(indexPagePath)
|
||||
logInfo("IP:%s UA:%s METHOD:%s HTTPv:%s", c.ClientIP(), c.Request.UserAgent(), c.Request.Method, c.Request.Proto)
|
||||
})
|
||||
router.StaticFile("/favicon.ico", faviconPath)
|
||||
router.StaticFile("/script.js", javascriptsPath)
|
||||
router.StaticFile("/style.css", stylesheetsPath)
|
||||
|
||||
default:
|
||||
// 处理无效的Pages Mode
|
||||
logWarning("Invalid Pages Mode: %s, using default embedded theme", cfg.Pages.Mode)
|
||||
|
||||
// 加载嵌入式资源
|
||||
pages, err := loadEmbeddedPages(cfg)
|
||||
if err != nil {
|
||||
logError("Failed when processing pages: %s", err)
|
||||
return
|
||||
}
|
||||
// 设置嵌入式资源路由
|
||||
router.GET("/", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/favicon.ico", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/script.js", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/style.css", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
readFlag()
|
||||
flag.Parse()
|
||||
|
|
@ -142,25 +214,32 @@ func init() {
|
|||
router.Use(timing.Middleware())
|
||||
|
||||
//H2C默认值为true,而后遵循cfg.Server.EnableH2C的设置
|
||||
if cfg.Server.EnableH2C == "on" {
|
||||
router.UseH2C = true
|
||||
} else if cfg.Server.EnableH2C == "" {
|
||||
if cfg.Server.H2C {
|
||||
router.UseH2C = true
|
||||
} else {
|
||||
router.UseH2C = false
|
||||
logWarning("cfg.Server.EnableH2C 将于2.4.0弃用,请使用cfg.Server.H2C")
|
||||
if cfg.Server.EnableH2C == "on" {
|
||||
router.UseH2C = true
|
||||
} else if cfg.Server.EnableH2C == "" {
|
||||
router.UseH2C = true
|
||||
} else {
|
||||
router.UseH2C = false
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// (2.4.0启用)
|
||||
if cfg.Server.H2C {
|
||||
router.UseH2C = true
|
||||
}
|
||||
*/
|
||||
|
||||
setupApi(cfg, router, version)
|
||||
|
||||
if cfg.Pages.Enabled {
|
||||
indexPagePath := fmt.Sprintf("%s/index.html", cfg.Pages.StaticDir)
|
||||
faviconPath := fmt.Sprintf("%s/favicon.ico", cfg.Pages.StaticDir)
|
||||
router.GET("/", func(c *gin.Context) {
|
||||
c.File(indexPagePath)
|
||||
logInfo("IP:%s UA:%s METHOD:%s HTTPv:%s", c.ClientIP(), c.Request.UserAgent(), c.Request.Method, c.Request.Proto)
|
||||
})
|
||||
router.StaticFile("/favicon.ico", faviconPath)
|
||||
} else if !cfg.Pages.Enabled {
|
||||
// setupPages(cfg, router) // 2.4.0启用
|
||||
|
||||
logInfo("Pages Mode: %s", cfg.Pages.Mode)
|
||||
if cfg.Pages.Mode == "internal" {
|
||||
var pages fs.FS
|
||||
var err error
|
||||
if cfg.Pages.Theme == "bootstrap" {
|
||||
|
|
@ -183,6 +262,56 @@ func init() {
|
|||
router.GET("/favicon.ico", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/script.js", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/style.css", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
} else if cfg.Pages.Mode == "external" {
|
||||
indexPagePath := fmt.Sprintf("%s/index.html", cfg.Pages.StaticDir)
|
||||
faviconPath := fmt.Sprintf("%s/favicon.ico", cfg.Pages.StaticDir)
|
||||
javascriptsPath := fmt.Sprintf("%s/script.js", cfg.Pages.StaticDir)
|
||||
stylesheetsPath := fmt.Sprintf("%s/style.css", cfg.Pages.StaticDir)
|
||||
router.GET("/", func(c *gin.Context) {
|
||||
c.File(indexPagePath)
|
||||
logInfo("IP:%s UA:%s METHOD:%s HTTPv:%s", c.ClientIP(), c.Request.UserAgent(), c.Request.Method, c.Request.Proto)
|
||||
})
|
||||
router.StaticFile("/favicon.ico", faviconPath)
|
||||
router.StaticFile("/script.js", javascriptsPath)
|
||||
router.StaticFile("/style.css", stylesheetsPath)
|
||||
} else {
|
||||
logWarning("缺少 cfg.Pages.Mode 配置, cfg.Pages.Enable 将于2.4.0弃用,请使用cfg.Pages.Mode")
|
||||
if cfg.Pages.Enabled {
|
||||
indexPagePath := fmt.Sprintf("%s/index.html", cfg.Pages.StaticDir)
|
||||
faviconPath := fmt.Sprintf("%s/favicon.ico", cfg.Pages.StaticDir)
|
||||
javascriptsPath := fmt.Sprintf("%s/script.js", cfg.Pages.StaticDir)
|
||||
stylesheetsPath := fmt.Sprintf("%s/style.css", cfg.Pages.StaticDir)
|
||||
router.GET("/", func(c *gin.Context) {
|
||||
c.File(indexPagePath)
|
||||
logInfo("IP:%s UA:%s METHOD:%s HTTPv:%s", c.ClientIP(), c.Request.UserAgent(), c.Request.Method, c.Request.Proto)
|
||||
})
|
||||
router.StaticFile("/favicon.ico", faviconPath)
|
||||
router.StaticFile("/script.js", javascriptsPath)
|
||||
router.StaticFile("/style.css", stylesheetsPath)
|
||||
} else if !cfg.Pages.Enabled {
|
||||
var pages fs.FS
|
||||
var err error
|
||||
if cfg.Pages.Theme == "bootstrap" {
|
||||
pages, err = fs.Sub(pagesFS, "pages/bootstrap")
|
||||
if err != nil {
|
||||
logError("Failed when processing pages: %s", err)
|
||||
}
|
||||
} else if cfg.Pages.Theme == "nebula" {
|
||||
pages, err = fs.Sub(NebulaPagesFS, "pages/nebula")
|
||||
if err != nil {
|
||||
logError("Failed when processing pages: %s", err)
|
||||
}
|
||||
} else {
|
||||
pages, err = fs.Sub(pagesFS, "pages/bootstrap")
|
||||
if err != nil {
|
||||
logError("Failed when processing pages: %s", err)
|
||||
}
|
||||
}
|
||||
router.GET("/", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/favicon.ico", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/script.js", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
router.GET("/style.css", gin.WrapH(http.FileServer(http.FS(pages))))
|
||||
}
|
||||
}
|
||||
|
||||
router.NoRoute(func(c *gin.Context) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue