forked from ProjectWIND/ProjectWIND
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package core
|
|
|
|
import (
|
|
"ProjectWIND/LOG"
|
|
"context"
|
|
"github.com/cloudwego/hertz/pkg/app"
|
|
"github.com/cloudwego/hertz/pkg/app/server"
|
|
"github.com/cloudwego/hertz/pkg/common/hlog"
|
|
"github.com/cloudwego/hertz/pkg/protocol/consts"
|
|
)
|
|
|
|
func WebServer(port string) *server.Hertz {
|
|
// 创建自定义日志记录器实例
|
|
customLogger := &LOG.CustomLogger{}
|
|
// 设置自定义日志记录器
|
|
hlog.SetLogger(customLogger)
|
|
h := server.Default(server.WithHostPorts("0.0.0.0:" + port))
|
|
h.Use(LoggingMiddleware())
|
|
h.GET("/index", func(ctx context.Context, c *app.RequestContext) {
|
|
//返回webui/index.html
|
|
c.File("./webui/index.html")
|
|
})
|
|
h.GET("/app/api/:appName/*action", func(ctx context.Context, c *app.RequestContext) {
|
|
appName := c.Param("appName")
|
|
action := c.Param("action")
|
|
message := appName + "-" + action + "\n"
|
|
c.String(consts.StatusOK, message)
|
|
})
|
|
return h
|
|
}
|
|
|
|
// LoggingMiddleware 是一个中间件函数,用于记录请求信息
|
|
func LoggingMiddleware() app.HandlerFunc {
|
|
return func(c context.Context, ctx *app.RequestContext) {
|
|
// 获取客户端 IP
|
|
clientIP := ctx.ClientIP()
|
|
// 获取请求完整路径
|
|
fullPath := ctx.Request.URI().PathOriginal()
|
|
// 继续处理请求
|
|
ctx.Next(c)
|
|
// 获取请求处理状态码
|
|
statusCode := ctx.Response.StatusCode()
|
|
// 在请求处理后记录结束信息
|
|
hlog.Debugf("收到网络请求 | IP: %s | Path: %s | Status: %d ", clientIP, fullPath, statusCode)
|
|
}
|
|
}
|