diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2021-08-30 22:06:38 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2021-08-30 22:06:38 +0200 |
commit | 63b65d20c69544b47b0ff8a88b294aa877611e26 (patch) | |
tree | fedab160408749c16f7d5a4e294aa7a8440e842f /server_conn.go | |
parent | 92e6f930ab354085d91f76a4b878d2e22b3bcee9 (diff) |
ShowFormspec + FormspecPrepend forwarding
Diffstat (limited to 'server_conn.go')
-rw-r--r-- | server_conn.go | 43 |
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) } } } |