diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2021-09-12 13:38:40 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2021-09-12 13:38:40 +0200 |
commit | 499524d9bc1b02beb2766e094821e4a4b8f63ed1 (patch) | |
tree | 7ae2f71935ee78b82e69981ae8e846d1b2facc16 /chat.go | |
parent | 852faf64ff688696a7332f83406ca449a58b5411 (diff) |
CLI support (#59)
Diffstat (limited to 'chat.go')
-rw-r--r-- | chat.go | 36 |
1 files changed, 35 insertions, 1 deletions
@@ -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" +} |