diff --git a/wrp.go b/wrp.go
index abdb76c..5c97cba 100644
--- a/wrp.go
+++ b/wrp.go
@@ -46,6 +46,8 @@ type wrpReq struct {
C int64 // #colors
X int64 // mouseX
Y int64 // mouseY
+ K string // keys to send
+ B bool // history back
}
func (w *wrpReq) parseForm(req *http.Request) {
@@ -70,6 +72,15 @@ func (w *wrpReq) parseForm(req *http.Request) {
if w.C < 2 || w.C > 256 {
w.C = 256
}
+ w.K = req.FormValue("k")
+ if w.K == "\\b" {
+ w.K = "\b"
+ } else if w.K == "\\r" {
+ w.K = "\r"
+ }
+ if req.FormValue("hist") == "Back" {
+ w.B = true
+ }
log.Printf("WrpReq from Form: %+v\n", w)
}
@@ -77,12 +88,14 @@ func (w wrpReq) printPage(out http.ResponseWriter) {
out.Header().Set("Content-Type", "text/html")
fmt.Fprintf(out, "\n", version)
fmt.Fprintf(out, "\n
WRP %s\n\n", w.U)
- fmt.Fprintf(out, "
\n")
}
@@ -146,23 +159,29 @@ func imgServer(out http.ResponseWriter, req *http.Request) {
func (w wrpReq) capture(c string, out http.ResponseWriter) {
var pngbuf []byte
var gifbuf bytes.Buffer
- var loc string
var err error
- // Navigate to page or process click request
if w.X > 0 && w.Y > 0 {
log.Printf("%s Mouse Click %d,%d\n", c, w.X, w.Y)
chromedp.Run(ctx,
chromedp.MouseClickXY(int64(float64(w.X)/w.S), int64(float64(w.Y)/w.S)),
- chromedp.Sleep(time.Second*3),
- chromedp.Location(&loc))
+ )
+ } else if w.B {
+ log.Printf("%s History Back\n", c)
+ chromedp.Run(ctx,
+ chromedp.NavigateBack(),
+ )
+ } else if len(w.K) > 0 {
+ log.Printf("%s Sending Keys: %#v\n", c, w.K)
+ err = chromedp.Run(ctx,
+ chromedp.KeyEvent(w.K),
+ )
} else {
log.Printf("%s Processing Capture Request for %s\n", c, w.U)
err = chromedp.Run(ctx,
emulation.SetDeviceMetricsOverride(int64(float64(w.W)/w.S), int64(float64(w.H)/w.S), w.S, false),
chromedp.Navigate(w.U),
- chromedp.Sleep(time.Second*3),
- chromedp.Location(&loc))
+ )
}
if err != nil {
@@ -177,8 +196,11 @@ func (w wrpReq) capture(c string, out http.ResponseWriter) {
return
}
- log.Printf("%s Landed on: %s\n", c, loc)
- w.U = loc
+ chromedp.Run(
+ ctx, chromedp.Sleep(time.Second*3),
+ chromedp.Location(&w.U),
+ )
+ log.Printf("%s Landed on: %s\n", c, w.U)
w.printPage(out)
// Process Screenshot Image