|
|
|
@ -9,6 +9,7 @@ import (
|
|
|
|
|
"errors"
|
|
|
|
|
"log"
|
|
|
|
|
"os"
|
|
|
|
|
"regexp"
|
|
|
|
|
"runtime"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
@ -46,8 +47,12 @@ func oxDecrypt(m xmpp.Chat, client *xmpp.Client, user string,
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "error", time.Now(), err
|
|
|
|
|
}
|
|
|
|
|
// Remove invalid code points.
|
|
|
|
|
message := strings.ToValidUTF8(string(decryptMsg.Data), "")
|
|
|
|
|
reg := regexp.MustCompile(`[\x{0000}-\x{0008}\x{000B}\x{000C}\x{000E}-\x{001F}]`)
|
|
|
|
|
message = reg.ReplaceAllString(message, "")
|
|
|
|
|
doc := etree.NewDocument()
|
|
|
|
|
err = doc.ReadFromBytes(decryptMsg.Data)
|
|
|
|
|
err = doc.ReadFromString(message)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "error", time.Now(), err
|
|
|
|
|
}
|
|
|
|
@ -76,7 +81,10 @@ func oxDecrypt(m xmpp.Chat, client *xmpp.Client, user string,
|
|
|
|
|
}
|
|
|
|
|
msgStamp, err := time.Parse("2006-01-02T15:04:05Z", stamp.Value)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "error", time.Now(), err
|
|
|
|
|
msgStamp, err = time.Parse("2006-01-02T15:04:05Z0700", stamp.Value)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "error", time.Now(), err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
payload := signcrypt.SelectElement("payload")
|
|
|
|
|
if payload == nil {
|
|
|
|
|