Add a bunch of new logging
This commit is contained in:
parent
79bd35964f
commit
9e170f3d04
@ -129,10 +129,9 @@ func (msg *Message) encodeBinaryContent() []byte {
|
|||||||
return buf.Bytes()
|
return buf.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (msg *Message) Insert() error {
|
func (msg *Message) Insert() {
|
||||||
_, err := msg.db.Exec("INSERT INTO message VALUES (?, ?, ?, ?, ?, ?)", msg.Chat.JID, msg.Chat.Receiver, msg.JID, msg.MXID, msg.Sender, msg.encodeBinaryContent())
|
_, err := msg.db.Exec("INSERT INTO message VALUES (?, ?, ?, ?, ?, ?)", msg.Chat.JID, msg.Chat.Receiver, msg.JID, msg.MXID, msg.Sender, msg.encodeBinaryContent())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msg.log.Warnfln("Failed to insert %s@%s: %v", msg.Chat, msg.JID, err)
|
msg.log.Warnfln("Failed to insert %s@%s: %v", msg.Chat, msg.JID, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
@ -142,16 +142,15 @@ func (portal *Portal) mxidPtr() *string {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (portal *Portal) Insert() error {
|
func (portal *Portal) Insert() {
|
||||||
_, err := portal.db.Exec("INSERT INTO portal VALUES (?, ?, ?, ?, ?, ?)",
|
_, err := portal.db.Exec("INSERT INTO portal VALUES (?, ?, ?, ?, ?, ?)",
|
||||||
portal.Key.JID, portal.Key.Receiver, portal.mxidPtr(), portal.Name, portal.Topic, portal.Avatar)
|
portal.Key.JID, portal.Key.Receiver, portal.mxidPtr(), portal.Name, portal.Topic, portal.Avatar)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Warnfln("Failed to insert %s: %v", portal.Key, err)
|
portal.log.Warnfln("Failed to insert %s: %v", portal.Key, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (portal *Portal) Update() error {
|
func (portal *Portal) Update() {
|
||||||
var mxid *string
|
var mxid *string
|
||||||
if len(portal.MXID) > 0 {
|
if len(portal.MXID) > 0 {
|
||||||
mxid = &portal.MXID
|
mxid = &portal.MXID
|
||||||
@ -161,5 +160,4 @@ func (portal *Portal) Update() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Warnfln("Failed to update %s: %v", portal.Key, err)
|
portal.log.Warnfln("Failed to update %s: %v", portal.Key, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
@ -92,20 +92,18 @@ func (puppet *Puppet) Scan(row Scannable) *Puppet {
|
|||||||
return puppet
|
return puppet
|
||||||
}
|
}
|
||||||
|
|
||||||
func (puppet *Puppet) Insert() error {
|
func (puppet *Puppet) Insert() {
|
||||||
_, err := puppet.db.Exec("INSERT INTO puppet VALUES (?, ?, ?, ?)",
|
_, err := puppet.db.Exec("INSERT INTO puppet VALUES (?, ?, ?, ?)",
|
||||||
puppet.JID, puppet.Avatar, puppet.Displayname, puppet.NameQuality)
|
puppet.JID, puppet.Avatar, puppet.Displayname, puppet.NameQuality)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
puppet.log.Warnfln("Failed to insert %s: %v", puppet.JID, err)
|
puppet.log.Warnfln("Failed to insert %s: %v", puppet.JID, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (puppet *Puppet) Update() error {
|
func (puppet *Puppet) Update() {
|
||||||
_, err := puppet.db.Exec("UPDATE puppet SET displayname=?, name_quality=?, avatar=? WHERE jid=?",
|
_, err := puppet.db.Exec("UPDATE puppet SET displayname=?, name_quality=?, avatar=? WHERE jid=?",
|
||||||
puppet.Displayname, puppet.NameQuality, puppet.Avatar, puppet.JID)
|
puppet.Displayname, puppet.NameQuality, puppet.Avatar, puppet.JID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
puppet.log.Warnfln("Failed to update %s->%s: %v", puppet.JID, err)
|
puppet.log.Warnfln("Failed to update %s->%s: %v", puppet.JID, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ func (user *User) sessionUnptr() (sess whatsapp.Session) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) Insert() error {
|
func (user *User) Insert() {
|
||||||
sess := user.sessionUnptr()
|
sess := user.sessionUnptr()
|
||||||
_, err := user.db.Exec("INSERT INTO user VALUES (?, ?, ?, ?, ?, ?, ?, ?)", user.MXID, user.jidPtr(),
|
_, err := user.db.Exec("INSERT INTO user VALUES (?, ?, ?, ?, ?, ?, ?, ?)", user.MXID, user.jidPtr(),
|
||||||
user.ManagementRoom,
|
user.ManagementRoom,
|
||||||
@ -156,10 +156,9 @@ func (user *User) Insert() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
user.log.Warnfln("Failed to insert %s: %v", user.MXID, err)
|
user.log.Warnfln("Failed to insert %s: %v", user.MXID, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) Update() error {
|
func (user *User) Update() {
|
||||||
sess := user.sessionUnptr()
|
sess := user.sessionUnptr()
|
||||||
_, err := user.db.Exec("UPDATE user SET jid=?, management_room=?, client_id=?, client_token=?, server_token=?, enc_key=?, mac_key=? WHERE mxid=?",
|
_, err := user.db.Exec("UPDATE user SET jid=?, management_room=?, client_id=?, client_token=?, server_token=?, enc_key=?, mac_key=? WHERE mxid=?",
|
||||||
user.jidPtr(), user.ManagementRoom,
|
user.jidPtr(), user.ManagementRoom,
|
||||||
@ -168,5 +167,4 @@ func (user *User) Update() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
user.log.Warnfln("Failed to update %s: %v", user.MXID, err)
|
user.log.Warnfln("Failed to update %s: %v", user.MXID, err)
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
4
go.mod
4
go.mod
@ -14,3 +14,7 @@ require (
|
|||||||
maunium.net/go/mautrix v0.1.0-alpha.3
|
maunium.net/go/mautrix v0.1.0-alpha.3
|
||||||
maunium.net/go/mautrix-appservice v0.1.0-alpha.3
|
maunium.net/go/mautrix-appservice v0.1.0-alpha.3
|
||||||
)
|
)
|
||||||
|
|
||||||
|
replace maunium.net/go/mautrix => ../mautrix-go
|
||||||
|
|
||||||
|
replace maunium.net/go/mautrix-appservice => ../mautrix-appservice-go
|
||||||
|
2
main.go
2
main.go
@ -33,7 +33,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var configPath = flag.MakeFull("c", "config", "The path to your config file.", "config.yaml").String()
|
var configPath = flag.MakeFull("c", "config", "The path to your config file.", "config.yaml").String()
|
||||||
var baseConfigPath = flag.MakeFull("b", "base-config", "The path to the example config file.", "example-config.yaml").String()
|
//var baseConfigPath = flag.MakeFull("b", "base-config", "The path to the example config file.", "example-config.yaml").String()
|
||||||
var registrationPath = flag.MakeFull("r", "registration", "The path where to save the appservice registration.", "registration.yaml").String()
|
var registrationPath = flag.MakeFull("r", "registration", "The path where to save the appservice registration.", "registration.yaml").String()
|
||||||
var generateRegistration = flag.MakeFull("g", "generate-registration", "Generate registration and quit.", "false").Bool()
|
var generateRegistration = flag.MakeFull("g", "generate-registration", "Generate registration and quit.", "false").Bool()
|
||||||
var wantHelp, _ = flag.MakeHelpFlag()
|
var wantHelp, _ = flag.MakeHelpFlag()
|
||||||
|
25
portal.go
25
portal.go
@ -222,13 +222,19 @@ func (portal *Portal) SyncParticipants(metadata *whatsappExt.GroupInfo) {
|
|||||||
}
|
}
|
||||||
for _, participant := range metadata.Participants {
|
for _, participant := range metadata.Participants {
|
||||||
puppet := portal.bridge.GetPuppetByJID(participant.JID)
|
puppet := portal.bridge.GetPuppetByJID(participant.JID)
|
||||||
puppet.Intent().EnsureJoined(portal.MXID)
|
err := puppet.Intent().EnsureJoined(portal.MXID)
|
||||||
|
if err != nil {
|
||||||
|
portal.log.Warnfln("Failed to make puppet of %s join %s: %v", participant.JID, portal.MXID, err)
|
||||||
|
}
|
||||||
|
|
||||||
user := portal.bridge.GetUserByJID(participant.JID)
|
user := portal.bridge.GetUserByJID(participant.JID)
|
||||||
if user != nil && !portal.bridge.AS.StateStore.IsInvited(portal.MXID, user.MXID) {
|
if user != nil && !portal.bridge.AS.StateStore.IsInvited(portal.MXID, user.MXID) {
|
||||||
portal.MainIntent().InviteUser(portal.MXID, &mautrix.ReqInviteUser{
|
_, err = portal.MainIntent().InviteUser(portal.MXID, &mautrix.ReqInviteUser{
|
||||||
UserID: user.MXID,
|
UserID: user.MXID,
|
||||||
})
|
})
|
||||||
|
if err != nil {
|
||||||
|
portal.log.Warnfln("Failed to invite %s to %s: %v", user.MXID, portal.MXID, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedLevel := 0
|
expectedLevel := 0
|
||||||
@ -272,14 +278,14 @@ func (portal *Portal) UpdateAvatar(user *User, avatar *whatsappExt.ProfilePicInf
|
|||||||
|
|
||||||
data, err := avatar.DownloadBytes()
|
data, err := avatar.DownloadBytes()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Errorln("Failed to download avatar:", err)
|
portal.log.Warnln("Failed to download avatar:", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
mimeType := http.DetectContentType(data)
|
mimeType := http.DetectContentType(data)
|
||||||
resp, err := portal.MainIntent().UploadBytes(data, mimeType)
|
resp, err := portal.MainIntent().UploadBytes(data, mimeType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Errorln("Failed to upload avatar:", err)
|
portal.log.Warnln("Failed to upload avatar:", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,7 +360,10 @@ func (portal *Portal) Sync(user *User, contact whatsapp.Contact) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
portal.MainIntent().EnsureInvited(portal.MXID, user.MXID)
|
err := portal.MainIntent().EnsureInvited(portal.MXID, user.MXID)
|
||||||
|
if err != nil {
|
||||||
|
portal.log.Warnfln("Failed to ensure %s is invited to %s: %v", user.MXID, portal.MXID, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
update := false
|
update := false
|
||||||
@ -569,7 +578,7 @@ func (portal *Portal) HandleTextMessage(source *User, message whatsapp.TextMessa
|
|||||||
portal.bridge.Formatter.ParseWhatsApp(content)
|
portal.bridge.Formatter.ParseWhatsApp(content)
|
||||||
portal.SetReply(content, message.Info)
|
portal.SetReply(content, message.Info)
|
||||||
|
|
||||||
intent.UserTyping(portal.MXID, false, 0)
|
_, _ = intent.UserTyping(portal.MXID, false, 0)
|
||||||
resp, err := intent.SendMassagedMessageEvent(portal.MXID, mautrix.EventMessage, content, int64(message.Info.Timestamp*1000))
|
resp, err := intent.SendMassagedMessageEvent(portal.MXID, mautrix.EventMessage, content, int64(message.Info.Timestamp*1000))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Errorfln("Failed to handle message %s: %v", message.Info.Id, err)
|
portal.log.Errorfln("Failed to handle message %s: %v", message.Info.Id, err)
|
||||||
@ -653,7 +662,7 @@ func (portal *Portal) HandleMediaMessage(source *User, download func() ([]byte,
|
|||||||
content.MsgType = mautrix.MsgFile
|
content.MsgType = mautrix.MsgFile
|
||||||
}
|
}
|
||||||
|
|
||||||
intent.UserTyping(portal.MXID, false, 0)
|
_, _ = intent.UserTyping(portal.MXID, false, 0)
|
||||||
ts := int64(info.Timestamp * 1000)
|
ts := int64(info.Timestamp * 1000)
|
||||||
resp, err := intent.SendMassagedMessageEvent(portal.MXID, mautrix.EventMessage, content, ts)
|
resp, err := intent.SendMassagedMessageEvent(portal.MXID, mautrix.EventMessage, content, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -768,6 +777,7 @@ func (portal *Portal) HandleMatrixMessage(sender *User, evt *mautrix.Event) {
|
|||||||
if portal.IsPrivateChat() && sender.JID != portal.Key.Receiver {
|
if portal.IsPrivateChat() && sender.JID != portal.Key.Receiver {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
portal.log.Debugfln("Received event %s", evt.ID)
|
||||||
|
|
||||||
ts := uint64(evt.Timestamp / 1000)
|
ts := uint64(evt.Timestamp / 1000)
|
||||||
status := waProto.WebMessageInfo_ERROR
|
status := waProto.WebMessageInfo_ERROR
|
||||||
@ -880,6 +890,7 @@ func (portal *Portal) HandleMatrixMessage(sender *User, evt *mautrix.Event) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
portal.markHandled(sender, info, evt.ID)
|
portal.markHandled(sender, info, evt.ID)
|
||||||
|
portal.log.Debugln("Sending event", evt.ID, "to WhatsApp")
|
||||||
err = sender.Conn.Send(info)
|
err = sender.Conn.Send(info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
portal.log.Errorfln("Error handling Matrix event %s: %v", evt.ID, err)
|
portal.log.Errorfln("Error handling Matrix event %s: %v", evt.ID, err)
|
||||||
|
21
puppet.go
21
puppet.go
@ -131,7 +131,7 @@ func (puppet *Puppet) UpdateAvatar(source *User, avatar *whatsappExt.ProfilePicI
|
|||||||
var err error
|
var err error
|
||||||
avatar, err = source.Conn.GetProfilePicThumb(puppet.JID)
|
avatar, err = source.Conn.GetProfilePicThumb(puppet.JID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
puppet.log.Errorln(err)
|
puppet.log.Warnln("Failed to get avatar:", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,31 +141,40 @@ func (puppet *Puppet) UpdateAvatar(source *User, avatar *whatsappExt.ProfilePicI
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(avatar.URL) == 0 {
|
if len(avatar.URL) == 0 {
|
||||||
puppet.Intent().SetAvatarURL("")
|
err := puppet.Intent().SetAvatarURL("")
|
||||||
|
if err != nil {
|
||||||
|
puppet.log.Warnln("Failed to remove avatar:", err)
|
||||||
|
}
|
||||||
puppet.Avatar = avatar.Tag
|
puppet.Avatar = avatar.Tag
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := avatar.DownloadBytes()
|
data, err := avatar.DownloadBytes()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
puppet.log.Errorln("Failed to download avatar:", err)
|
puppet.log.Warnln("Failed to download avatar:", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
mime := http.DetectContentType(data)
|
mime := http.DetectContentType(data)
|
||||||
resp, err := puppet.Intent().UploadBytes(data, mime)
|
resp, err := puppet.Intent().UploadBytes(data, mime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
puppet.log.Errorln("Failed to upload avatar:", err)
|
puppet.log.Warnln("Failed to upload avatar:", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
puppet.Intent().SetAvatarURL(resp.ContentURI)
|
err = puppet.Intent().SetAvatarURL(resp.ContentURI)
|
||||||
|
if err != nil {
|
||||||
|
puppet.log.Warnln("Failed to set avatar:", err)
|
||||||
|
}
|
||||||
puppet.Avatar = avatar.Tag
|
puppet.Avatar = avatar.Tag
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (puppet *Puppet) Sync(source *User, contact whatsapp.Contact) {
|
func (puppet *Puppet) Sync(source *User, contact whatsapp.Contact) {
|
||||||
puppet.Intent().EnsureRegistered()
|
err := puppet.Intent().EnsureRegistered()
|
||||||
|
if err != nil {
|
||||||
|
puppet.log.Errorln("Failed to ensure registered:", err)
|
||||||
|
}
|
||||||
|
|
||||||
if contact.Jid == source.JID {
|
if contact.Jid == source.JID {
|
||||||
contact.Notify = source.Conn.Info.Pushname
|
contact.Notify = source.Conn.Info.Pushname
|
||||||
|
10
user.go
10
user.go
@ -192,7 +192,10 @@ func (user *User) Login(roomID types.MatrixRoomID) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
bot.SendImage(roomID, string(code), resp.ContentURI)
|
_, err = bot.SendImage(roomID, string(code), resp.ContentURI)
|
||||||
|
if err != nil {
|
||||||
|
user.log.Errorln("Failed to send QR code to user:", err)
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
session, err := user.Conn.Login(qrChan)
|
session, err := user.Conn.Login(qrChan)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -204,7 +207,10 @@ func (user *User) Login(roomID types.MatrixRoomID) {
|
|||||||
user.JID = strings.Replace(user.Conn.Info.Wid, whatsappExt.OldUserSuffix, whatsappExt.NewUserSuffix, 1)
|
user.JID = strings.Replace(user.Conn.Info.Wid, whatsappExt.OldUserSuffix, whatsappExt.NewUserSuffix, 1)
|
||||||
user.Session = &session
|
user.Session = &session
|
||||||
user.Update()
|
user.Update()
|
||||||
bot.SendNotice(roomID, "Successfully logged in. Now, you may ask for `import contacts`.")
|
_, err = bot.SendNotice(roomID, "Successfully logged in. Now, you may ask for `import contacts`.")
|
||||||
|
if err != nil {
|
||||||
|
user.log.Warnln("Failed to send login confirmation to user:", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) HandleError(err error) {
|
func (user *User) HandleError(err error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user