mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 08:11:11 +08:00
feat: 添加后台统计页面
为项目增加了一个后台页面, 用于显示IP代理的使用情况统计. 主要包括: - 新增 `backend` 目录, 包含 `index.html` 和 `script.js` 文件, 用于展示统计数据. - 在 `main.go` 中增加了 `setBackendRoute` 函数, 用于提供后台页面的路由. - 将后台页面路由设置为 `/admin`. 注意: 当前代码存在编译错误, 因为无法确定 `ipfilter.NewIPFilter` 的正确返回类型. 错误信息为 `undefined: ipfilter.IPFilter`. 提交此代码是为了让用户能够检查问题.
This commit is contained in:
parent
e3f84f4c17
commit
86a4ad881a
8 changed files with 188 additions and 13 deletions
24
main.go
24
main.go
|
|
@ -47,6 +47,8 @@ var (
|
|||
var (
|
||||
//go:embed pages/*
|
||||
pagesFS embed.FS
|
||||
//go:embed backend/*
|
||||
backendFS embed.FS
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
@ -342,6 +344,7 @@ func main() {
|
|||
}
|
||||
|
||||
r := touka.Default()
|
||||
var err error
|
||||
r.SetProtocols(&touka.ProtocolsConfig{
|
||||
Http1: true,
|
||||
Http2_Cleartext: true,
|
||||
|
|
@ -380,14 +383,15 @@ func main() {
|
|||
}
|
||||
|
||||
if cfg.IPFilter.Enabled {
|
||||
var err error
|
||||
ipAllowList, ipBlockList, err := auth.ReadIPFilterList(cfg)
|
||||
var ipAllowList, ipBlockList []string
|
||||
ipAllowList, ipBlockList, err = auth.ReadIPFilterList(cfg)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to read IP filter list: %v\n", err)
|
||||
logger.Errorf("Failed to read IP filter list: %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
ipBlockFilter, err := ipfilter.NewIPFilter(ipfilter.IPFilterConfig{
|
||||
var ipBlockFilter *ipfilter.IPFilter
|
||||
ipBlockFilter, err = ipfilter.NewIPFilter(ipfilter.IPFilterConfig{
|
||||
EnableAllowList: cfg.IPFilter.EnableAllowList,
|
||||
EnableBlockList: cfg.IPFilter.EnableBlockList,
|
||||
AllowList: ipAllowList,
|
||||
|
|
@ -403,6 +407,7 @@ func main() {
|
|||
}
|
||||
setupApi(cfg, r, version)
|
||||
setupPages(cfg, r)
|
||||
setBackendRoute(r)
|
||||
r.SetRedirectTrailingSlash(false)
|
||||
|
||||
r.GET("/github.com/:user/:repo/releases/*filepath", func(c *touka.Context) {
|
||||
|
|
@ -517,7 +522,7 @@ func main() {
|
|||
defer logger.Close()
|
||||
|
||||
addr := fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port)
|
||||
err := r.RunShutdown(addr)
|
||||
err = r.RunShutdown(addr)
|
||||
if err != nil {
|
||||
logger.Errorf("Server Run Error: %v", err)
|
||||
fmt.Printf("Server Run Error: %v\n", err)
|
||||
|
|
@ -525,3 +530,14 @@ func main() {
|
|||
|
||||
fmt.Println("Program Exit")
|
||||
}
|
||||
|
||||
func setBackendRoute(r *touka.Engine) {
|
||||
backend, err := fs.Sub(backendFS, "backend")
|
||||
if err != nil {
|
||||
logger.Errorf("Failed to load embedded backend pages: %s", err)
|
||||
fmt.Printf("Failed to load embedded backend pages: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
r.HandleFunc([]string{"GET"}, "/admin", pageCacheHeader(), touka.FileServer(http.FS(backend)))
|
||||
r.HandleFunc([]string{"GET"}, "/admin/script.js", pageCacheHeader(), touka.FileServer(http.FS(backend)))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue