|
@@ -3,7 +3,7 @@ package tool_controller
|
|
|
import (
|
|
import (
|
|
|
"context"
|
|
"context"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
- "log"
|
|
|
|
|
|
|
+ "strings"
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/chromedp/chromedp"
|
|
"github.com/chromedp/chromedp"
|
|
@@ -14,6 +14,7 @@ import (
|
|
|
|
|
|
|
|
"github.com/astaxie/beego"
|
|
"github.com/astaxie/beego"
|
|
|
// "github.com/astaxie/beego/context"
|
|
// "github.com/astaxie/beego/context"
|
|
|
|
|
+ "fohow.com/apps"
|
|
|
"github.com/go-wkhtmltoimage"
|
|
"github.com/go-wkhtmltoimage"
|
|
|
"github.com/skip2/go-qrcode"
|
|
"github.com/skip2/go-qrcode"
|
|
|
// "fohow.com/apps"
|
|
// "fohow.com/apps"
|
|
@@ -56,19 +57,19 @@ func (self *ToolController) GetHaibao() {
|
|
|
|
|
|
|
|
func (self *ToolController) GetHaibaoWithGoogle() {
|
|
func (self *ToolController) GetHaibaoWithGoogle() {
|
|
|
uri := self.GetString("url")
|
|
uri := self.GetString("url")
|
|
|
- fmt.Println("url:", uri)
|
|
|
|
|
|
|
|
|
|
// URL 解码
|
|
// URL 解码
|
|
|
decodedUri, err := url.QueryUnescape(uri)
|
|
decodedUri, err := url.QueryUnescape(uri)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("Error in decoding:", err)
|
|
|
|
|
- log.Fatal(err)
|
|
|
|
|
|
|
+ beego.BeeLogger.Warning("GetHaibaoWithGoogle decode url failed: err=[%s] raw_url=[%s]", err, maskURLForLog(uri))
|
|
|
|
|
+ self.ReturnError(400, apps.ParamsError, "", nil)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- fmt.Println("Decoded URI:", decodedUri)
|
|
|
|
|
|
|
+ beego.BeeLogger.Info("GetHaibaoWithGoogle start url=[%s]", maskURLForLog(decodedUri))
|
|
|
//title := self.GetString("title")
|
|
//title := self.GetString("title")
|
|
|
// 创建上下文
|
|
// 创建上下文
|
|
|
- ctx, cancel := chromedp.NewContext(context.Background())
|
|
|
|
|
|
|
+ ctx, cancel := chromedp.NewContext(context.Background(), chromedp.WithErrorf(chromedpErrorLogf))
|
|
|
defer cancel()
|
|
defer cancel()
|
|
|
|
|
|
|
|
// 设置超时时间
|
|
// 设置超时时间
|
|
@@ -87,18 +88,12 @@ func (self *ToolController) GetHaibaoWithGoogle() {
|
|
|
chromedp.FullScreenshot(&buf, 60), // 调整质量参数
|
|
chromedp.FullScreenshot(&buf, 60), // 调整质量参数
|
|
|
)
|
|
)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("error occured!")
|
|
|
|
|
- log.Fatal(err)
|
|
|
|
|
|
|
+ beego.BeeLogger.Error("GetHaibaoWithGoogle screenshot failed: err=[%s] url=[%s]", err, maskURLForLog(decodedUri))
|
|
|
|
|
+ self.ReturnError(504, apps.NetworkBusy, "", nil)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //fileName := fmt.Sprintf("%s.png", "shot_screen")
|
|
|
|
|
- //// 将截图保存到文件
|
|
|
|
|
- //err = ioutil.WriteFile(fileName, buf, 0644)
|
|
|
|
|
- //if err != nil {
|
|
|
|
|
- // log.Fatal(err)
|
|
|
|
|
- //}
|
|
|
|
|
-
|
|
|
|
|
- //fmt.Println("image buf:", buf)
|
|
|
|
|
|
|
+ beego.BeeLogger.Info("GetHaibaoWithGoogle success url=[%s] bytes=[%d]", maskURLForLog(decodedUri), len(buf))
|
|
|
self.Ctx.Output.Header("Content-Type", "image/png")
|
|
self.Ctx.Output.Header("Content-Type", "image/png")
|
|
|
self.Ctx.Output.Body(buf)
|
|
self.Ctx.Output.Body(buf)
|
|
|
|
|
|
|
@@ -107,19 +102,19 @@ func (self *ToolController) GetHaibaoWithGoogle() {
|
|
|
|
|
|
|
|
func (self *ToolController) GetOtherHaibaoWithGoogle() {
|
|
func (self *ToolController) GetOtherHaibaoWithGoogle() {
|
|
|
uri := self.GetString("url")
|
|
uri := self.GetString("url")
|
|
|
- fmt.Println("url:", uri)
|
|
|
|
|
|
|
|
|
|
// URL 解码
|
|
// URL 解码
|
|
|
decodedUri, err := url.QueryUnescape(uri)
|
|
decodedUri, err := url.QueryUnescape(uri)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("Error in decoding:", err)
|
|
|
|
|
- log.Fatal(err)
|
|
|
|
|
|
|
+ beego.BeeLogger.Warning("GetOtherHaibaoWithGoogle decode url failed: err=[%s] raw_url=[%s]", err, maskURLForLog(uri))
|
|
|
|
|
+ self.ReturnError(400, apps.ParamsError, "", nil)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- fmt.Println("Decoded URI:", decodedUri)
|
|
|
|
|
|
|
+ beego.BeeLogger.Info("GetOtherHaibaoWithGoogle start url=[%s]", maskURLForLog(decodedUri))
|
|
|
//title := self.GetString("title")
|
|
//title := self.GetString("title")
|
|
|
// 创建上下文
|
|
// 创建上下文
|
|
|
- ctx, cancel := chromedp.NewContext(context.Background())
|
|
|
|
|
|
|
+ ctx, cancel := chromedp.NewContext(context.Background(), chromedp.WithErrorf(chromedpErrorLogf))
|
|
|
defer cancel()
|
|
defer cancel()
|
|
|
|
|
|
|
|
// 设置超时时间
|
|
// 设置超时时间
|
|
@@ -137,18 +132,12 @@ func (self *ToolController) GetOtherHaibaoWithGoogle() {
|
|
|
chromedp.FullScreenshot(&buf, 90), // 调整质量参数
|
|
chromedp.FullScreenshot(&buf, 90), // 调整质量参数
|
|
|
)
|
|
)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("error occured!")
|
|
|
|
|
- log.Fatal(err)
|
|
|
|
|
|
|
+ beego.BeeLogger.Error("GetOtherHaibaoWithGoogle screenshot failed: err=[%s] url=[%s]", err, maskURLForLog(decodedUri))
|
|
|
|
|
+ self.ReturnError(504, apps.NetworkBusy, "", nil)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //fileName := fmt.Sprintf("%s.png", "shot_screen")
|
|
|
|
|
- //// 将截图保存到文件
|
|
|
|
|
- //err = ioutil.WriteFile(fileName, buf, 0644)
|
|
|
|
|
- //if err != nil {
|
|
|
|
|
- // log.Fatal(err)
|
|
|
|
|
- //}
|
|
|
|
|
-
|
|
|
|
|
- //fmt.Println("image buf:", buf)
|
|
|
|
|
|
|
+ beego.BeeLogger.Info("GetOtherHaibaoWithGoogle success url=[%s] bytes=[%d]", maskURLForLog(decodedUri), len(buf))
|
|
|
self.Ctx.Output.Header("Content-Type", "image/png")
|
|
self.Ctx.Output.Header("Content-Type", "image/png")
|
|
|
self.Ctx.Output.Body(buf)
|
|
self.Ctx.Output.Body(buf)
|
|
|
|
|
|
|
@@ -197,3 +186,28 @@ func isWhiteUrl(uri string) bool {
|
|
|
}
|
|
}
|
|
|
return false
|
|
return false
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+func maskURLForLog(rawURL string) string {
|
|
|
|
|
+ if rawURL == "" {
|
|
|
|
|
+ return ""
|
|
|
|
|
+ }
|
|
|
|
|
+ u, err := url.Parse(rawURL)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return rawURL
|
|
|
|
|
+ }
|
|
|
|
|
+ q := u.Query()
|
|
|
|
|
+ if q.Get("token") != "" {
|
|
|
|
|
+ q.Set("token", "***")
|
|
|
|
|
+ }
|
|
|
|
|
+ u.RawQuery = q.Encode()
|
|
|
|
|
+ return u.String()
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func chromedpErrorLogf(format string, args ...interface{}) {
|
|
|
|
|
+ msg := fmt.Sprintf(format, args...)
|
|
|
|
|
+ if strings.Contains(msg, "could not unmarshal event") {
|
|
|
|
|
+ beego.BeeLogger.Warning("chromedp ignored protocol event: %s", msg)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ beego.BeeLogger.Error("chromedp error: %s", msg)
|
|
|
|
|
+}
|