natsim

NATS ↔ Instant Messaging Bridge
git clone https://git.instinctive.eu/natsim.git
Log | Files | Refs | README | LICENSE

commit 7aff348b395c4cf9b04665c74c449c68b9e6da74
parent 2829fbc9bd8218966e6b1318bbf49ccc18645195
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date:   Sun, 27 Jul 2025 18:38:37 +0000

Encoded data in direct send
Diffstat:
Mmain.go | 17++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/main.go b/main.go @@ -676,9 +676,20 @@ func (natsim *NatsIM) ircReceive(e *irc.Event) { } } else if subject, data, found := unpackMark(natsim.Irc.Send, msg, false); found { if nickAllowed(e.Nick, natsim.Irc.AllowCmd, natsim.Irc.BlockCmd) { - if len(data) >= 2 && data[0] == data[len(data)-1] && (data[0] == '"' || data[0] == '`') { - if unquoted, err := strconv.Unquote(data); err == nil { - data = unquoted + if len(data) >= 2 && data[0] == data[len(data)-1] && (data[0] == '"' || data[0] == '`' || data[0] == '#' || data[0] == '|') { + switch data[0] { + case '#': + if decoded, err := hex.DecodeString(data[1:len(data)-1]); err == nil { + data = string(decoded) + } + case '|': + if decoded, err := base64.StdEncoding.DecodeString(data[1:len(data)-1]); err == nil { + data = string(decoded) + } + default: + if unquoted, err := strconv.Unquote(data); err == nil { + data = unquoted + } } } else if unquoted, err := strconv.Unquote("\"" + data + "\""); err == nil { data = unquoted