| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /**
- * @Author: zou.yingbin
- * @Create : 2021/10/15 16:28
- * @Modify : 2021/10/15 16:28
- */
- package other
- import (
- "fmt"
- "html/template"
- "io"
- "io/ioutil"
- "mtp2_if/config"
- "net/http"
- "regexp"
- "sort"
- "strings"
- "github.com/gin-gonic/gin"
- )
- var (
- VERSION string
- GITHASH string
- )
- // LogList 列出日志文件
- func LogList(c *gin.Context) {
- host := c.Request.Host
- if !strings.Contains(host, "http://") {
- host = "http://" + host
- }
- const templateText = `
- <!DOCTYPE html>
- <head>
- <meta charset="UTF-8">
- </head>
- <body>
- <h1>go查询服务信息</h1>
- <a href="{{.host}}/debug/update" title="点击后从自动构建服务拉取版本升级并重启GO服务, 请谨慎点击" target="_blank">点击升级到最新版本</a>
- <br><br>
- <a href="{{.host}}/swagger/index.html" target="_blank">点击打开swagger</a>
- <br>
- <a href="{{.host}}/debug/token" title="仅当调试模式内网段才能成功设置" target="_blank">点击设置token(用于swagger查询)</a>
- <p>=========配置信息============</p>
- version : {{.version}}<br>
- git hash: {{.githash}}<br>
- oracle : {{.db}} <br>
- mysql : {{.mysql}} <br>
- redis : {{.redis}} <br>
- <h3>版本列表(最近20次构建)</h3>
- <font color="#DC143C">*** 点击版本,将升级到对应版本 ***</font>
- <br>
- {{.verlist}}
- <h2>日志文件列表</h2>
- <p>------------------------</p>
- {{.data}}
- <p>------------------------</p>
- </body>
- `
- sFile := make([]string, 0)
- path := config.SerCfg.LogCfg.LogPath
- db := fmt.Sprintf("%s/***@%s:%s/%s",
- config.SerCfg.DbCfg.DbUser,
- config.SerCfg.DbCfg.DbAddress,
- config.SerCfg.DbCfg.DbPort,
- config.SerCfg.DbCfg.DbName)
- mysql := fmt.Sprintf("%s/***@%s:%v/%s",
- config.SerCfg.MySQLCfg.Username,
- config.SerCfg.MySQLCfg.Host,
- config.SerCfg.MySQLCfg.Port,
- config.SerCfg.MySQLCfg.DBName)
- redis := fmt.Sprintf("%s:%v", config.SerCfg.RedisCfg.Address, config.SerCfg.RedisCfg.Port)
- if d, err := ioutil.ReadDir(path); err == nil {
- for _, v := range d {
- if !v.IsDir() {
- lk := fmt.Sprintf(`<a href="%v/debug/download?filename=%v" target="_blank">%v</a> size:%.2f k`,
- host, v.Name(), v.Name(), float64(v.Size())/1024.0)
- lk2 := fmt.Sprintf(`<a href="%v/debug/log/view?filename=%v" target="_blank">查看</a>`, host, v.Name())
- lk = lk + " " + lk2
- sFile = append(sFile, lk)
- }
- }
- str := strings.Join(sFile, "\n<br>")
- if tmpl, err := template.New("index").Parse(templateText); err == nil {
- _ = tmpl.Execute(c.Writer, gin.H{"data": template.HTML(str), "db": template.HTML(db),
- "mysql": template.HTML(mysql), "redis": template.HTML(redis),
- "version": template.HTML(VERSION), "githash": template.HTML(GITHASH), "verlist": template.HTML(GetVerlist(host))})
- } else {
- c.String(400, "index err.")
- }
- } else {
- c.JSON(http.StatusBadRequest, gin.H{"message": "can't list the file"})
- }
- }
- // GetVerlist 获取版本列表(含html标记)
- func GetVerlist(host string) string {
- var strVerList string
- url := `http://192.168.30.153/share/build/mtp2.0_release/`
- if rsp, err := http.Get(url); err == nil {
- if body, err2 := io.ReadAll(rsp.Body); err2 == nil {
- strContext := string(body)
- rx := regexp.MustCompile(`mtp2_queryservice_r[\d_]*\.zip`)
- names := rx.FindAllStringSubmatch(strContext, -1)
- mapName := make(map[string]string, 0)
- for _, v := range names {
- for _, d := range v {
- mapName[d] = url + d
- }
- }
- sName := make([]string, 0)
- for k, _ := range mapName {
- sName = append(sName, k)
- }
- // 按日期排序
- sort.Slice(sName, func(i, j int) bool {
- return sName[i] > sName[j]
- })
- for i := range sName {
- strVerList += fmt.Sprintf(`<a href="%v/debug/update?filename=%v" target="_blank">%v</a>`, host, sName[i], sName[i]) + "<br>"
- // 取最近n条
- if i >= 19 {
- break
- }
- }
- } else {
- fmt.Println("can't read body")
- }
- rsp.Body.Close()
- } else {
- fmt.Println("can't get url.")
- }
- return strVerList
- }
|