/** * @Author: zou.yingbin * @Create : 2021/10/15 16:28 * @Modify : 2021/10/15 16:28 */ package other import ( "fmt" "github.com/gin-gonic/gin" "html/template" "io" "io/ioutil" "mtp2_if/config" "net/http" "regexp" "sort" "strings" ) 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 = `

go查询服务信息

点击升级到最新版本

点击打开swagger
点击设置token(用于swagger查询)

=========配置信息============

version : {{.version}}
git hash: {{.githash}}
oracle : {{.db}}
mysql : {{.mysql}}
redis : {{.redis}}

版本列表(最近5次构建)

*** 点击版本,将升级到对应版本 ***
{{.verlist}}

日志文件列表

------------------------

{{.data}}

------------------------

` 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(`%v size:%.2f k`, host, v.Name(), v.Name(), float64(v.Size())/1024.0) lk2 := fmt.Sprintf(`查看`, host, v.Name()) lk = lk + " " + lk2 sFile = append(sFile, lk) } } str := strings.Join(sFile, "\n
") 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(`%v`, host, sName[i], sName[i]) + "
" // 取最近n条 if i >= 4 { break } } } else { fmt.Println("can't read body") } rsp.Body.Close() } else { fmt.Println("can't get url.") } return strVerList }