aboutsummaryrefslogtreecommitdiff
path: root/server_conn.go
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-08-30 22:06:38 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-08-30 22:06:38 +0200
commit63b65d20c69544b47b0ff8a88b294aa877611e26 (patch)
treefedab160408749c16f7d5a4e294aa7a8440e842f /server_conn.go
parent92e6f930ab354085d91f76a4b878d2e22b3bcee9 (diff)
ShowFormspec + FormspecPrepend forwarding
Diffstat (limited to 'server_conn.go')
-rw-r--r--server_conn.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/server_conn.go b/server_conn.go
index fc353cc..5ad47b7 100644
--- a/server_conn.go
+++ b/server_conn.go
@@ -5,6 +5,7 @@ import (
"fmt"
"log"
"net"
+ "regexp"
"strings"
"time"
@@ -409,6 +410,48 @@ func handleSrv(sc *serverConn) {
case *mt.ToCltRmHUD:
delete(sc.huds, cmd.ID)
sc.client().SendCmd(cmd)
+ case *mt.ToCltShowFormspec:
+ reg := regexp.MustCompile("[^a-zA-Z0-9-_.:]")
+ reg2 := regexp.MustCompile("[a-zA-Z0-9-_.]*\\.[a-zA-Z0-9-_.]+")
+ subs := reg.Split(cmd.Formspec, -1)
+ seps := reg.FindAllString(cmd.Formspec, -1)
+
+ for i, sub := range subs {
+ if reg2.MatchString(sub) && !strings.Contains(sub, " ") {
+ prepend(sc.name, &subs[i])
+ }
+ }
+
+ cmd.Formspec = ""
+ for i, sub := range subs {
+ cmd.Formspec += sub
+ if i < len(seps) {
+ cmd.Formspec += seps[i]
+ }
+ }
+
+ sc.client().SendCmd(cmd)
+ case *mt.ToCltFormspecPrepend:
+ reg := regexp.MustCompile("[^a-zA-Z0-9-_.:]")
+ reg2 := regexp.MustCompile("[a-zA-Z0-9-_.]*\\.[a-zA-Z0-9-_.]+")
+ subs := reg.Split(cmd.Prepend, -1)
+ seps := reg.FindAllString(cmd.Prepend, -1)
+
+ for i, sub := range subs {
+ if reg2.MatchString(sub) && !strings.Contains(sub, " ") {
+ prepend(sc.name, &subs[i])
+ }
+ }
+
+ cmd.Prepend = ""
+ for i, sub := range subs {
+ cmd.Prepend += sub
+ if i < len(seps) {
+ cmd.Prepend += seps[i]
+ }
+ }
+
+ sc.client().SendCmd(cmd)
}
}
}