Ai
2 Star 5 Fork 0

SillyMan/Ping多个主机的Web版本

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
echo.go 2.15 KB
一键复制 编辑 原始数据 按行查看 历史
package main
import (
"embed"
"html/template"
"io"
"io/fs"
"net/http"
"os"
"time"
"gitee.com/sillyman/mixlog"
"github.com/go-playground/validator/v10"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/labstack/gommon/log"
)
//go:embed views
var embededViewFiles embed.FS
// 自定义表单验证器
type customValidator struct{ validator *validator.Validate }
func (cv *customValidator) Validate(i interface{}) error { return cv.validator.Struct(i) }
// 自定义的模版引擎struct
type customTemplate struct {
templates *template.Template
}
func (t *customTemplate) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
return t.templates.ExecuteTemplate(w, name, data)
}
// mustSetEcho 初始化 echo 引擎
func mustSetEcho(e *echo.Echo, debug bool) {
mixlog.Debug("已加载资源文件")
e.Use(middleware.Logger())
if l, ok := e.Logger.(*log.Logger); ok {
if debug {
l.SetLevel(log.INFO)
} else {
l.SetLevel(log.WARN)
}
l.SetHeader("${time_rfc3339} ${level} ${short_file}($line)")
l.SetOutput(os.Stdout)
}
// 绑定自定义表单验证器
e.Validator = &customValidator{validator: validator.New()}
// 静态文件目录
// e.Static("/assets", "./views/assets")
fsys, err := fs.Sub(embededViewFiles, "views")
if err != nil {
mixlog.Fatalf("打开嵌入的静态文件失败: %s", err)
}
e.GET("/assets/*", echo.WrapHandler(http.FileServer(http.FS(fsys))))
mixlog.Debug("已设置HTTP静态文件服务")
// 注册 HTML 模板文件
// e.Renderer = &customTemplate{templates: template.Must(
// template.ParseFiles(
// "./views/index.html",
// ),
// )}
indexBytes, err := embededViewFiles.ReadFile("views/index.html")
if err != nil {
mixlog.Fatalf("打开views/index.html失败: %s", err)
}
e.Renderer = &customTemplate{templates: template.Must(
template.New("index.html").Parse(string(indexBytes)),
)}
mixlog.Debug("已加载HTML模板文件")
// 其它设置
e.Debug = debug
if !e.Debug {
e.Use(middleware.Recover())
}
e.HideBanner = true
e.DisableHTTP2 = true
e.Server.ReadTimeout = 15 * time.Second
e.Server.WriteTimeout = 15 * time.Second
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/sillyman/PingHostsWebView.git
git@gitee.com:sillyman/PingHostsWebView.git
sillyman
PingHostsWebView
Ping多个主机的Web版本
11e63cd92578

搜索帮助