mirror of
https://github.com/tenox7/wrp.git
synced 2024-11-28 19:49:19 +00:00
adaptive background color
This commit is contained in:
parent
f0ba852785
commit
4cd55b31b0
25
wrp.go
25
wrp.go
@ -25,6 +25,7 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/chromedp/cdproto/css"
|
||||||
"github.com/chromedp/cdproto/emulation"
|
"github.com/chromedp/cdproto/emulation"
|
||||||
"github.com/chromedp/chromedp"
|
"github.com/chromedp/chromedp"
|
||||||
"github.com/ericpauley/go-quantize/quantize"
|
"github.com/ericpauley/go-quantize/quantize"
|
||||||
@ -79,13 +80,13 @@ func (w *wrpReq) parseForm(req *http.Request) {
|
|||||||
log.Printf("%s WrpReq from Form: %+v\n", req.RemoteAddr, w)
|
log.Printf("%s WrpReq from Form: %+v\n", req.RemoteAddr, w)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w wrpReq) printPage(out http.ResponseWriter) {
|
func (w wrpReq) printPage(out http.ResponseWriter, bgcolor string) {
|
||||||
out.Header().Set("Cache-Control", "max-age=0")
|
out.Header().Set("Cache-Control", "max-age=0")
|
||||||
out.Header().Set("Expires", "-1")
|
out.Header().Set("Expires", "-1")
|
||||||
out.Header().Set("Pragma", "no-cache")
|
out.Header().Set("Pragma", "no-cache")
|
||||||
out.Header().Set("Content-Type", "text/html")
|
out.Header().Set("Content-Type", "text/html")
|
||||||
fmt.Fprintf(out, "<!-- Web Rendering Proxy Version %s -->\n", version)
|
fmt.Fprintf(out, "<!-- Web Rendering Proxy Version %s -->\n", version)
|
||||||
fmt.Fprintf(out, "<HTML>\n<HEAD><TITLE>WRP %s</TITLE></HEAD>\n<BODY BGCOLOR=\"#F0F0F0\">\n", w.U)
|
fmt.Fprintf(out, "<HTML>\n<HEAD><TITLE>WRP %s</TITLE></HEAD>\n<BODY BGCOLOR=\"%s\">\n", w.U, bgcolor)
|
||||||
fmt.Fprintf(out, "<FORM ACTION=\"/\" METHOD=\"POST\">\n")
|
fmt.Fprintf(out, "<FORM ACTION=\"/\" METHOD=\"POST\">\n")
|
||||||
fmt.Fprintf(out, "<INPUT TYPE=\"TEXT\" NAME=\"url\" VALUE=\"%s\" SIZE=\"10\">", w.U)
|
fmt.Fprintf(out, "<INPUT TYPE=\"TEXT\" NAME=\"url\" VALUE=\"%s\" SIZE=\"10\">", w.U)
|
||||||
fmt.Fprintf(out, "<INPUT TYPE=\"SUBMIT\" VALUE=\"Go\">\n")
|
fmt.Fprintf(out, "<INPUT TYPE=\"SUBMIT\" VALUE=\"Go\">\n")
|
||||||
@ -117,7 +118,7 @@ func pageServer(out http.ResponseWriter, req *http.Request) {
|
|||||||
if len(w.U) > 4 {
|
if len(w.U) > 4 {
|
||||||
w.capture(req.RemoteAddr, out)
|
w.capture(req.RemoteAddr, out)
|
||||||
} else {
|
} else {
|
||||||
w.printPage(out)
|
w.printPage(out, "#FFFFFF")
|
||||||
w.printFooter(out)
|
w.printFooter(out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,7 +144,7 @@ func mapServer(out http.ResponseWriter, req *http.Request) {
|
|||||||
if len(w.U) > 4 {
|
if len(w.U) > 4 {
|
||||||
w.capture(req.RemoteAddr, out)
|
w.capture(req.RemoteAddr, out)
|
||||||
} else {
|
} else {
|
||||||
w.printPage(out)
|
w.printPage(out, "#FFFFFF")
|
||||||
w.printFooter(out)
|
w.printFooter(out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,6 +173,8 @@ func (w wrpReq) capture(c string, out http.ResponseWriter) {
|
|||||||
var pngbuf []byte
|
var pngbuf []byte
|
||||||
var gifbuf bytes.Buffer
|
var gifbuf bytes.Buffer
|
||||||
var err error
|
var err error
|
||||||
|
var styles []*css.ComputedProperty
|
||||||
|
var r, g, b int
|
||||||
|
|
||||||
if w.X > 0 && w.Y > 0 {
|
if w.X > 0 && w.Y > 0 {
|
||||||
log.Printf("%s Mouse Click %d,%d\n", c, w.X, w.Y)
|
log.Printf("%s Mouse Click %d,%d\n", c, w.X, w.Y)
|
||||||
@ -204,7 +207,6 @@ func (w wrpReq) capture(c string, out http.ResponseWriter) {
|
|||||||
chromedp.Navigate(w.U),
|
chromedp.Navigate(w.U),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err.Error() == "context canceled" {
|
if err.Error() == "context canceled" {
|
||||||
log.Printf("%s Contex cancelled, try again", c)
|
log.Printf("%s Contex cancelled, try again", c)
|
||||||
@ -216,13 +218,18 @@ func (w wrpReq) capture(c string, out http.ResponseWriter) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
chromedp.Run(ctx,
|
||||||
chromedp.Run(
|
chromedp.Sleep(time.Second*2),
|
||||||
ctx, chromedp.Sleep(time.Second*2),
|
chromedp.ComputedStyle("body", &styles, chromedp.ByQuery),
|
||||||
chromedp.Location(&w.U),
|
chromedp.Location(&w.U),
|
||||||
)
|
)
|
||||||
log.Printf("%s Landed on: %s\n", c, w.U)
|
log.Printf("%s Landed on: %s\n", c, w.U)
|
||||||
w.printPage(out)
|
for _, style := range styles {
|
||||||
|
if style.Name == "background-color" {
|
||||||
|
fmt.Sscanf(style.Value, "rgb(%d,%d,%d)", &r, &g, &b)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
w.printPage(out, fmt.Sprintf("#%02X%02X%02X", r, g, b))
|
||||||
|
|
||||||
// Process Screenshot Image
|
// Process Screenshot Image
|
||||||
err = chromedp.Run(ctx, chromedp.CaptureScreenshot(&pngbuf))
|
err = chromedp.Run(ctx, chromedp.CaptureScreenshot(&pngbuf))
|
||||||
|
Loading…
Reference in New Issue
Block a user