golang 循环读取目录php文件得到bug

3 篇文章 0 订阅
package main

import (
   "bufio"
   "encoding/json"
   "fmt"
   "io"
   "io/ioutil"
   "net/http"
   "os"
   "strings"
   "time"
)

type M struct {
   Code int `json:"code"`
}
type R struct {
   Url string `json:"url"`
   Msg string `json:"msg"`
   Id  int    `json:"id"`
}

func main() {
   dir, _ := os.Stat("./application")
   fmt.Println("开始查找bug")
   var w []R
   if dir.IsDir() == true {
      r, _ := ioutil.ReadDir("./application")
      for _, k := range r {
         if k.IsDir() == true {
            q, err := ioutil.ReadDir("./application/" + k.Name())
            if err != nil {
               panic(err)
            }
            for _, b := range q {
               if b.IsDir() == true && b.Name() == "controller" {
                  g, _ := ioutil.ReadDir("./application/" + k.Name() + "/" + b.Name())
                  for _, m := range g {

                     file, err := os.Open("./application/" + k.Name() + "/" + b.Name() + "/" + m.Name())
                     if err != nil {
                        panic(err)
                     }
                     rd := bufio.NewReader(file)
                     i := 1
                     for {
                        line, err := rd.ReadString('\n') //以'\n'为结束符读入一行
                        if strings.Contains(line, "@debug") == true {
                           str := strings.Split(line, "-")

                           if str != nil {
                              str := strings.Replace(str[1], "\n", "", 1)
                              str="https://bq.t.3pr.com.cn/"+k.Name()+"/"+strings.Replace(m.Name(), ".php", "", 1)+"/"+str
                              str = strings.Replace(str, " ", "", 1)
                              str = strings.TrimSpace(str)
                              result, msg := Get(str)
                              fmt.Println(result)
                              fmt.Println(msg)
                              if result.Code != 0 {
                                 //判断文件是否存在
                                 var r R
                                 r.Msg = msg
                                 r.Url = str
                                 r.Id = i
                                 i++
                                 //fmt.Println(r)
                                 //fmt.Println(result)
                                 w = append(w, r)
                              }
                           }
                        }
                        if err != nil || io.EOF == err {
                           break
                        }
                     }

                  }
               }
            }
         }
      }
   }
   os.Mkdir("bug", os.ModePerm)
   json, _ := json.MarshalIndent(w,"","")
   t := time.Now()
   f, err := os.Create("./bug/" + t.Format("20060102150405") + ".json")
   if err != nil {
      panic(err)
   }
   _, err = f.Write(json)
   if err != nil {
      panic(err)
   }
   if w!=nil{
      fmt.Println("确认过眼神,有bug")
   }
}
func Get(str string) (M, string) {
   resp, err := http.Get(str)
   if err != nil {
      panic(err)
   }
   defer resp.Body.Close()
   s, err := ioutil.ReadAll(resp.Body)
   var a M
   json.Unmarshal(s, &a)
   return a, string(s)
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值