aboutsummaryrefslogtreecommitdiff
path: root/chat.go
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-09-12 13:38:40 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-09-12 13:38:40 +0200
commit499524d9bc1b02beb2766e094821e4a4b8f63ed1 (patch)
tree7ae2f71935ee78b82e69981ae8e846d1b2facc16 /chat.go
parent852faf64ff688696a7332f83406ca449a58b5411 (diff)
CLI support (#59)
Diffstat (limited to 'chat.go')
-rw-r--r--chat.go36
1 files changed, 35 insertions, 1 deletions
diff --git a/chat.go b/chat.go
index cf75594..d641c81 100644
--- a/chat.go
+++ b/chat.go
@@ -2,6 +2,7 @@ package proxy
import (
"fmt"
+ "io"
"strings"
"time"
@@ -59,8 +60,41 @@ func onChatMsg(cc *ClientConn, cmd *mt.ToSrvChatMsg) (string, bool) {
return fmt.Sprintf("Missing permission %s.", cmd.Perm), true
}
- return cmd.Handler(cc, args...), true
+ return cmd.Handler(cc, nil, args...), true
}
return "", false
}
+
+func onTelnetMsg(tlog func(dir string, v ...interface{}), w io.Writer, msg string) string {
+ initChatCmds()
+
+ substrs := strings.Split(msg, " ")
+ cmdName := substrs[0]
+
+ var args []string
+ if len(substrs) > 1 {
+ args = substrs[1:]
+ }
+
+ v := make([]interface{}, 2+len(args))
+ v[0] = "command"
+ v[1] = cmdName
+
+ for i, arg := range args {
+ v[i+2] = arg
+ }
+
+ tlog("-->", v...)
+
+ if !ChatCmdExists(cmdName) {
+ tlog("<--", "unknown command", cmdName)
+ return "Command not found.\n"
+ }
+
+ chatCmdsMu.RLock()
+ defer chatCmdsMu.RUnlock()
+
+ cmd := chatCmds[cmdName]
+ return cmd.Handler(nil, w, args...) + "\n"
+}