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:
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