From 04570ce22aa2777be76b2be1c485b6886f0e1d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Sun, 30 Oct 2022 22:05:13 +0100 Subject: [PATCH 1/9] fix session migration and assign message history to correct sessions --- app/store/db.go | 7 +- app/store/message.go | 9 +-- app/store/migrations.go | 138 ++++++++++++++++++++++++++++++++++++++++ app/store/sessionV2.go | 4 +- go.mod | 2 + go.sum | 4 ++ 6 files changed, 156 insertions(+), 8 deletions(-) diff --git a/app/store/db.go b/app/store/db.go index 0b98c1342..17fcc1baf 100644 --- a/app/store/db.go +++ b/app/store/db.go @@ -39,7 +39,7 @@ var ( sessionsSelect = "SELECT * FROM sessions ORDER BY timestamp DESC" - messagesSchema = "CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, sid integer, source text, srcUUID string NOT NULL DEFAULT 0, message text, outgoing boolean, sentat integer, receivedat integer, ctype integer, attachment string, issent boolean, isread boolean, flags integer default 0, sendingError boolean, expireTimer integer default 0, receipt boolean default 0, statusMessage boolean default 0, quoteId integer NOT NULL default -1)" + messagesSchema = "CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, sv2id integer, source text, srcUUID string NOT NULL DEFAULT 0, message text, outgoing boolean, sentat integer, receivedat integer, ctype integer, attachment string, issent boolean, isread boolean, flags integer default 0, sendingError boolean, expireTimer integer default 0, receipt boolean default 0, statusMessage boolean default 0, quoteId integer NOT NULL default -1)" messagesInsert = "INSERT INTO messages (sid, source, srcUUID, message, outgoing, sentat, receivedat, ctype, attachment, issent, isread, flags, sendingError, expireTimer, statusMessage, quoteID) VALUES (:sid, :source, :srcUUID, :message, :outgoing, :sentat, :receivedat, :ctype, :attachment, :issent, :isread, :flags, :sendingError, :expireTimer, :statusMessage, :quoteId)" messagesSelectWhereMore = "SELECT * FROM messages WHERE sid = ? AND sentat < ? ORDER BY sentat DESC LIMIT 20" @@ -306,5 +306,10 @@ func Migrate() error { log.Errorln("[axolotl] setupDb: Couldn't migrate db: " + err.Error()) return err } + err = update_v_1_6_1() + if err != nil { + log.Errorln("[axolotl] Couldn't migrate sessions: " + err.Error()) + return err + } return nil } diff --git a/app/store/message.go b/app/store/message.go index 0fe6d34af..79ca66f42 100644 --- a/app/store/message.go +++ b/app/store/message.go @@ -11,11 +11,12 @@ import ( log "github.com/sirupsen/logrus" ) -const getLastMessagesQuery = "SELECT *, max(sentat) FROM messages GROUP BY sid ORDER BY sentat DESC" +const getLastMessagesQuery = "SELECT *, max(sentat) FROM messages GROUP BY sv2id ORDER BY sentat DESC" type Message struct { - ID int64 `db:"id"` - SID int64 + ID int64 `db:"id"` + SID int64 `db:"sv2id"` + SV1ID *int64 `db:"sid"` ChatID string Source string `db:"source"` SourceUUID string `db:"srcUUID"` @@ -181,7 +182,7 @@ func GetLastMessagesForAllSessions() ([]Message, error) { func getMessagesForSession(id int64, limit, offset int) ([]*Message, error) { var messages = []*Message{} - err := DS.Dbx.Select(&messages, "SELECT * FROM messages WHERE sid = ? ORDER BY sentat DESC LIMIT ? OFFSET ?", id, limit, offset) + err := DS.Dbx.Select(&messages, "SELECT * FROM messages WHERE sv2id = ? ORDER BY sentat DESC LIMIT ? OFFSET ?", id, limit, offset) if err != nil { return nil, err } diff --git a/app/store/migrations.go b/app/store/migrations.go index cfe264dc2..d5ccc1c29 100644 --- a/app/store/migrations.go +++ b/app/store/migrations.go @@ -243,3 +243,141 @@ func update_v_1_6_0() error { } return nil } + +// update_v_1_6_1 fixes the message histroy by introducing the new column sv2id in messages +func update_v_1_6_1() error { + err := sessionsV1toSessionsV2() + if err != nil { + return err + } + return migrateMessageIds() +} + +func migrateMessageIds() error { + // check if new column exists and only migrate if it does not + _, err := DS.Dbx.Prepare("SELECT sv2id FROM messages limit 1") + if err == nil { + return nil + } + log.Infoln("[axolotl][update v_1_6_1] add column sv2id") + _, err = DS.Dbx.Exec("ALTER TABLE messages ADD sv2id integer;") + if err != nil { + return err + } + + log.Infoln("[axolotl][update v_1_6_1] set sv2id for group messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sV2id = (SELECT v2.ID from sessions v1 JOIN sessionsv2 v2 ON v1.uuid = v2.groupV2Id where v1.ID = messages.sid) WHERE sv2id IS null;") + if err != nil { + return err + } + log.Infoln("[axolotl][update v_1_6_1] set sv2id for direct messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sv2id = (SELECT ID from sessionsv2 WHERE directMessageRecipientId = (SELECT r.id from recipients r JOIN sessions v1 ON r.uuid = v1.uuid WHERE v1.id = messages.sid)) WHERE sv2id IS null;") + if err != nil { + return err + } + log.Infoln("[axolotl][update v_1_6_1] set sv2id for messages of newly created sessions") + _, err = DS.Dbx.Exec("UPDATE messages SET sV2id = sid WHERE sv2id IS null;") + return err +} + +func sessionV1ToGroupV2(session *Session) error { + group, err := GroupV2sModel.GetGroupById(session.UUID) + if group != nil && err == nil { + //allready migrated + return nil + } + log.Infoln("[axolotl][update v_1_6_1] migrate groupv2 session") + + group, err = GroupV2sModel.Create(&GroupV2{ + Id: session.UUID, + Name: session.Name, + JoinStatus: session.GroupJoinStatus, + }) + if err != nil { + return fmt.Errorf("error creating group v2: %s", err) + } + _, err = SessionsV2Model.SaveSession(&SessionV2{ + ID: session.ID, + DirectMessageRecipientID: int64(GroupRecipientsID), + GroupV2ID: session.UUID, + }) + if err != nil { + return fmt.Errorf("error creating session groupv2: %s", err) + } + log.Infoln("[axolotl][update v_1_6_1] migrate groupv2 session: members") + groupMembers, err := textsecure.GetGroupV2MembersForGroup(session.UUID) + if err != nil { + return fmt.Errorf("[axolotl][update v_1_6_1] error getting group members: %s", err) + } + err = group.AddGroupMembers(groupMembers) + if err != nil { + return fmt.Errorf("[axolotl][update v_1_6_1] error adding group members: %s", err) + } + return nil +} + +func sessionV1ToSessionV2(session *Session) error { + if session.IsGroup && session.Type == SessionTypeGroupV2 { + err := sessionV1ToGroupV2(session) + if err != nil { + return err + } + } else if session.IsGroup && session.Type == SessionTypeGroupV1 { + sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) + if sessionV2 != nil && err == nil { + //allready migrated + return nil + } + log.Infoln("[axolotl][update v_1_6_1] migrate groupv1 session") + _, err = SessionsV2Model.SaveSession(&SessionV2{ + ID: session.ID, + GroupV1ID: session.UUID, + DirectMessageRecipientID: int64(GroupRecipientsID), + }) + if err != nil { + return err + } + } else if session.Type == SessionTypePrivateChat { + sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) + if sessionV2 != nil && err == nil { + //allready migrated + return nil + } + recipient := RecipientsModel.GetRecipientByUUID(session.UUID) + log.Infoln("[axolotl][update v_1_6_1] migrate private chat session") + if recipient == nil { + recipient, err = RecipientsModel.CreateRecipientWithoutProfileUpdate(&Recipient{ + UUID: session.UUID, + ProfileGivenName: session.Name, + E164: session.Tel, + }) + if err != nil { + return err + } + } + _, err = SessionsV2Model.SaveSession(&SessionV2{ + ID: session.ID, + DirectMessageRecipientID: recipient.Id, + }) + if err != nil { + return err + } + } + return nil +} + +func sessionsV1toSessionsV2() error { + var sessions []*Session + err := DS.Dbx.Select(&sessions, sessionsSelect) + if err != nil { + return fmt.Errorf("error loading sessions: %s", err) + } + log.Infoln("[axolotl][update v_1_6_1] migrate sessionsv1 to sessionsv2") + for _, session := range sessions { + err = sessionV1ToSessionV2(session) + if err != nil { + log.Errorf("failed to migrate session %s. Error: %s", session.UUID, err) + } + } + return nil +} diff --git a/app/store/sessionV2.go b/app/store/sessionV2.go index 015663add..87ad5ce05 100644 --- a/app/store/sessionV2.go +++ b/app/store/sessionV2.go @@ -324,10 +324,8 @@ func (s *SessionV2) NotificationsToggle() error { func (s *SessionV2) GetName() (string, error) { if s.IsGroup() { return s.getGroupName() - } else { - return s.getDirectChatName() } - return "", fmt.Errorf("GetSessionNames failed") + return s.getDirectChatName() } func (s *SessionV2) getDirectChatName() (string, error) { diff --git a/go.mod b/go.mod index 8f95e88f5..e8b0730d8 100644 --- a/go.mod +++ b/go.mod @@ -31,3 +31,5 @@ require ( gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect launchpad.net/gocheck v0.0.0-20140225173054-000000000087 // indirect ) + +replace github.com/signal-golang/textsecure v1.18.0 => github.com/Blackoverflow/textsecure v1.4.3-0.20221029211627-ba3c0a915b70 diff --git a/go.sum b/go.sum index 9c4d6d8f2..ffa2a44f3 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,10 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/Blackoverflow/gcmsiv v0.0.0-20201031155123-20af2af977ff h1:l3WopnX/gWnDItXZdr2Ygq0+4ZwXCSyozyPNR8jdb8I= github.com/Blackoverflow/gcmsiv v0.0.0-20201031155123-20af2af977ff/go.mod h1:t1lmwOv+IYxaUkr2qIKXEfn90t4GgocS0qy8jkDonbg= +github.com/Blackoverflow/textsecure v1.4.3-0.20221028183342-5dd575a18460 h1:ZPUbXWULhddzbWI9AnpKdbKGY317FatHsAyTQzJg3Xs= +github.com/Blackoverflow/textsecure v1.4.3-0.20221028183342-5dd575a18460/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= +github.com/Blackoverflow/textsecure v1.4.3-0.20221029211627-ba3c0a915b70 h1:uAVKek9XGhmBDU9FHs41IlY3GfJRtBaEuFcspouhLts= +github.com/Blackoverflow/textsecure v1.4.3-0.20221029211627-ba3c0a915b70/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/akavel/rsrc v0.8.0 h1:zjWn7ukO9Kc5Q62DOJCcxGpXC18RawVtYAGdz2aLlfw= From 3b018775714272ebdd7e807b82a4b0f078f0b195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Sun, 30 Oct 2022 22:50:07 +0100 Subject: [PATCH 2/9] change message history migration to rename column to sv1id --- app/store/db.go | 2 +- app/store/message.go | 12 ++++++------ app/store/migrations.go | 25 +++++++++++++++---------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/store/db.go b/app/store/db.go index 17fcc1baf..7db3a0130 100644 --- a/app/store/db.go +++ b/app/store/db.go @@ -39,7 +39,7 @@ var ( sessionsSelect = "SELECT * FROM sessions ORDER BY timestamp DESC" - messagesSchema = "CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, sv2id integer, source text, srcUUID string NOT NULL DEFAULT 0, message text, outgoing boolean, sentat integer, receivedat integer, ctype integer, attachment string, issent boolean, isread boolean, flags integer default 0, sendingError boolean, expireTimer integer default 0, receipt boolean default 0, statusMessage boolean default 0, quoteId integer NOT NULL default -1)" + messagesSchema = "CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, sid integer, source text, srcUUID string NOT NULL DEFAULT 0, message text, outgoing boolean, sentat integer, receivedat integer, ctype integer, attachment string, issent boolean, isread boolean, flags integer default 0, sendingError boolean, expireTimer integer default 0, receipt boolean default 0, statusMessage boolean default 0, quoteId integer NOT NULL default -1)" messagesInsert = "INSERT INTO messages (sid, source, srcUUID, message, outgoing, sentat, receivedat, ctype, attachment, issent, isread, flags, sendingError, expireTimer, statusMessage, quoteID) VALUES (:sid, :source, :srcUUID, :message, :outgoing, :sentat, :receivedat, :ctype, :attachment, :issent, :isread, :flags, :sendingError, :expireTimer, :statusMessage, :quoteId)" messagesSelectWhereMore = "SELECT * FROM messages WHERE sid = ? AND sentat < ? ORDER BY sentat DESC LIMIT 20" diff --git a/app/store/message.go b/app/store/message.go index 79ca66f42..f70937061 100644 --- a/app/store/message.go +++ b/app/store/message.go @@ -11,12 +11,12 @@ import ( log "github.com/sirupsen/logrus" ) -const getLastMessagesQuery = "SELECT *, max(sentat) FROM messages GROUP BY sv2id ORDER BY sentat DESC" +const getLastMessagesQuery = "SELECT *, max(sentat) FROM messages GROUP BY sid ORDER BY sentat DESC" type Message struct { - ID int64 `db:"id"` - SID int64 `db:"sv2id"` - SV1ID *int64 `db:"sid"` + ID int64 `db:"id"` + SID int64 + SV1ID *int64 ChatID string Source string `db:"source"` SourceUUID string `db:"srcUUID"` @@ -163,7 +163,7 @@ func FindOutgoingMessage(timestamp uint64) (*Message, error) { // GetUnreadMessageCounterForSession returns an int for the unread messages for a session func GetUnreadMessageCounterForSession(id int64) (int64, error) { var message = []Message{} - err := DS.Dbx.Select(&message, "SELECT id FROM messages WHERE isread = 0 AND sessionid = ?", id) + err := DS.Dbx.Select(&message, "SELECT id FROM messages WHERE isread = 0 AND sid = ?", id) if err != nil { return 0, err } @@ -182,7 +182,7 @@ func GetLastMessagesForAllSessions() ([]Message, error) { func getMessagesForSession(id int64, limit, offset int) ([]*Message, error) { var messages = []*Message{} - err := DS.Dbx.Select(&messages, "SELECT * FROM messages WHERE sv2id = ? ORDER BY sentat DESC LIMIT ? OFFSET ?", id, limit, offset) + err := DS.Dbx.Select(&messages, "SELECT * FROM messages WHERE sid = ? ORDER BY sentat DESC LIMIT ? OFFSET ?", id, limit, offset) if err != nil { return nil, err } diff --git a/app/store/migrations.go b/app/store/migrations.go index d5ccc1c29..3a17fc2f4 100644 --- a/app/store/migrations.go +++ b/app/store/migrations.go @@ -244,7 +244,7 @@ func update_v_1_6_0() error { return nil } -// update_v_1_6_1 fixes the message histroy by introducing the new column sv2id in messages +// update_v_1_6_1 fixes the message histroy by introducing the renaming column sid to sv1id an reintrodrucing column sid in messages func update_v_1_6_1() error { err := sessionsV1toSessionsV2() if err != nil { @@ -255,28 +255,33 @@ func update_v_1_6_1() error { func migrateMessageIds() error { // check if new column exists and only migrate if it does not - _, err := DS.Dbx.Prepare("SELECT sv2id FROM messages limit 1") + _, err := DS.Dbx.Prepare("SELECT sv1id FROM messages limit 1") if err == nil { return nil } - log.Infoln("[axolotl][update v_1_6_1] add column sv2id") - _, err = DS.Dbx.Exec("ALTER TABLE messages ADD sv2id integer;") + log.Infoln("[axolotl][update v_1_6_1] rename column sid to sv1id") + _, err = DS.Dbx.Exec("ALTER TABLE messages RENAME COLUMN sid TO sv1id;") + if err != nil { + return err + } + log.Infoln("[axolotl][update v_1_6_1] add column sid again") + _, err = DS.Dbx.Exec("ALTER TABLE messages ADD sid integer;") if err != nil { return err } - log.Infoln("[axolotl][update v_1_6_1] set sv2id for group messages") - _, err = DS.Dbx.Exec("UPDATE messages SET sV2id = (SELECT v2.ID from sessions v1 JOIN sessionsv2 v2 ON v1.uuid = v2.groupV2Id where v1.ID = messages.sid) WHERE sv2id IS null;") + log.Infoln("[axolotl][update v_1_6_1] set sid for group messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT v2.ID from sessions v1 JOIN sessionsv2 v2 ON v1.uuid = v2.groupV2Id where v1.ID = messages.sv1id) WHERE sid IS null;") if err != nil { return err } - log.Infoln("[axolotl][update v_1_6_1] set sv2id for direct messages") - _, err = DS.Dbx.Exec("UPDATE messages SET sv2id = (SELECT ID from sessionsv2 WHERE directMessageRecipientId = (SELECT r.id from recipients r JOIN sessions v1 ON r.uuid = v1.uuid WHERE v1.id = messages.sid)) WHERE sv2id IS null;") + log.Infoln("[axolotl][update v_1_6_1] set sid for direct messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT ID from sessionsv2 WHERE directMessageRecipientId = (SELECT r.id from recipients r JOIN sessions v1 ON r.uuid = v1.uuid WHERE v1.id = messages.sv1id)) WHERE sid IS null;") if err != nil { return err } - log.Infoln("[axolotl][update v_1_6_1] set sv2id for messages of newly created sessions") - _, err = DS.Dbx.Exec("UPDATE messages SET sV2id = sid WHERE sv2id IS null;") + log.Infoln("[axolotl][update v_1_6_1] set sid for messages of new sessions") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = sv1id WHERE sid IS null;") return err } From 219be43b66122875eb212153a49e238017a0356a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Mon, 31 Oct 2022 22:43:20 +0100 Subject: [PATCH 3/9] sqlite rename column does not work. Use Workaround --- app/store/migrations.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/store/migrations.go b/app/store/migrations.go index 3a17fc2f4..a3e65d494 100644 --- a/app/store/migrations.go +++ b/app/store/migrations.go @@ -259,17 +259,21 @@ func migrateMessageIds() error { if err == nil { return nil } - log.Infoln("[axolotl][update v_1_6_1] rename column sid to sv1id") - _, err = DS.Dbx.Exec("ALTER TABLE messages RENAME COLUMN sid TO sv1id;") + log.Infoln("[axolotl][update v_1_6_1] add column sv1id") + _, err = DS.Dbx.Exec("ALTER TABLE messages ADD sv1id integer;") if err != nil { return err } - log.Infoln("[axolotl][update v_1_6_1] add column sid again") - _, err = DS.Dbx.Exec("ALTER TABLE messages ADD sid integer;") + log.Infoln("[axolotl][update v_1_6_1] copy sid into sv1id") + _, err = DS.Dbx.Exec("UPDATE messages SET sv1id = sid;") + if err != nil { + return err + } + log.Infoln("[axolotl][update v_1_6_1] delete sid of all messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = null;") if err != nil { return err } - log.Infoln("[axolotl][update v_1_6_1] set sid for group messages") _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT v2.ID from sessions v1 JOIN sessionsv2 v2 ON v1.uuid = v2.groupV2Id where v1.ID = messages.sv1id) WHERE sid IS null;") if err != nil { From 5dcf4290344ce3daf5a43f3a3d72938a5313a8ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Tue, 1 Nov 2022 19:47:00 +0100 Subject: [PATCH 4/9] use head of signal-golang/textsecure as dependency --- go.mod | 4 +--- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index e8b0730d8..e1aa64abb 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/satori/go.uuid v1.2.0 github.com/signal-golang/go-vcard v0.1.2 github.com/signal-golang/libphonenumber v1.2.2-0.20220127214340-b765372d3707 - github.com/signal-golang/textsecure v1.18.0 + github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405 github.com/sirupsen/logrus v1.9.0 github.com/ttacon/builder v0.0.0-20170518171403-c099f663e1c2 // indirect github.com/vincent-petithory/dataurl v1.0.0 @@ -31,5 +31,3 @@ require ( gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect launchpad.net/gocheck v0.0.0-20140225173054-000000000087 // indirect ) - -replace github.com/signal-golang/textsecure v1.18.0 => github.com/Blackoverflow/textsecure v1.4.3-0.20221029211627-ba3c0a915b70 diff --git a/go.sum b/go.sum index ffa2a44f3..8b302af9c 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/Blackoverflow/gcmsiv v0.0.0-20201031155123-20af2af977ff h1:l3WopnX/gWnDItXZdr2Ygq0+4ZwXCSyozyPNR8jdb8I= github.com/Blackoverflow/gcmsiv v0.0.0-20201031155123-20af2af977ff/go.mod h1:t1lmwOv+IYxaUkr2qIKXEfn90t4GgocS0qy8jkDonbg= -github.com/Blackoverflow/textsecure v1.4.3-0.20221028183342-5dd575a18460 h1:ZPUbXWULhddzbWI9AnpKdbKGY317FatHsAyTQzJg3Xs= -github.com/Blackoverflow/textsecure v1.4.3-0.20221028183342-5dd575a18460/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= -github.com/Blackoverflow/textsecure v1.4.3-0.20221029211627-ba3c0a915b70 h1:uAVKek9XGhmBDU9FHs41IlY3GfJRtBaEuFcspouhLts= -github.com/Blackoverflow/textsecure v1.4.3-0.20221029211627-ba3c0a915b70/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/akavel/rsrc v0.8.0 h1:zjWn7ukO9Kc5Q62DOJCcxGpXC18RawVtYAGdz2aLlfw= @@ -118,6 +114,8 @@ github.com/signal-golang/mimemagic v0.0.0-20200821045537-3f613cf2cd3f h1:S17lCk5 github.com/signal-golang/mimemagic v0.0.0-20200821045537-3f613cf2cd3f/go.mod h1:tU6SWwv50oGkZNPlvTFvmqZvEBp0vWWCC+LCEVlTE5A= github.com/signal-golang/textsecure v1.18.0 h1:3aEH+l09RkTO/nWzHaYdEoKkB1MXJIYis/65yFzal1c= github.com/signal-golang/textsecure v1.18.0/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= +github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405 h1:Ba2icScIXjurTbQTrIkaY/NX25GDpsMOydxGnkO0yTI= +github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= From b4465be7d1b20a3003f4c237a2c0c75bc99d3bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Tue, 1 Nov 2022 21:11:45 +0100 Subject: [PATCH 5/9] cleanup code --- app/store/migrations.go | 188 +++++++++++++++++++++------------------- 1 file changed, 99 insertions(+), 89 deletions(-) diff --git a/app/store/migrations.go b/app/store/migrations.go index a3e65d494..0a2969c49 100644 --- a/app/store/migrations.go +++ b/app/store/migrations.go @@ -244,52 +244,97 @@ func update_v_1_6_0() error { return nil } -// update_v_1_6_1 fixes the message histroy by introducing the renaming column sid to sv1id an reintrodrucing column sid in messages +// update_v_1_6_1 fixes the message histroy and migrates missing chats func update_v_1_6_1() error { - err := sessionsV1toSessionsV2() - if err != nil { - return err - } - return migrateMessageIds() -} - -func migrateMessageIds() error { // check if new column exists and only migrate if it does not _, err := DS.Dbx.Prepare("SELECT sv1id FROM messages limit 1") if err == nil { return nil } - log.Infoln("[axolotl][update v_1_6_1] add column sv1id") - _, err = DS.Dbx.Exec("ALTER TABLE messages ADD sv1id integer;") + err = migrateMissingSessions() if err != nil { return err } - log.Infoln("[axolotl][update v_1_6_1] copy sid into sv1id") - _, err = DS.Dbx.Exec("UPDATE messages SET sv1id = sid;") + return migrateMessageIds() +} + +func migrateMissingSessions() error { + var sessions []*Session + err := DS.Dbx.Select(&sessions, sessionsSelect) if err != nil { - return err + return fmt.Errorf("error loading sessions: %s", err) } - log.Infoln("[axolotl][update v_1_6_1] delete sid of all messages") - _, err = DS.Dbx.Exec("UPDATE messages SET sid = null;") - if err != nil { - return err + log.Infoln("[axolotl][update v_1_6_1] migrate missing sessions") + for _, session := range sessions { + err = migrateSession(session) + if err != nil { + log.Errorf("failed to migrate session %s. Error: %s", session.UUID, err) + } } - log.Infoln("[axolotl][update v_1_6_1] set sid for group messages") - _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT v2.ID from sessions v1 JOIN sessionsv2 v2 ON v1.uuid = v2.groupV2Id where v1.ID = messages.sv1id) WHERE sid IS null;") - if err != nil { - return err + return nil +} + +func migrateSession(session *Session) error { + if session.IsGroup && session.Type == SessionTypeGroupV2 { + err := migrateGroupV2Session(session) + if err != nil { + return err + } + } else if session.IsGroup && session.Type == SessionTypeGroupV1 { + err := migrateGroupV1Session(session) + if err != nil { + return err + } + } else if session.Type == SessionTypePrivateChat { + err := migrateDirectChatSession(session) + if err != nil { + return err + } } - log.Infoln("[axolotl][update v_1_6_1] set sid for direct messages") - _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT ID from sessionsv2 WHERE directMessageRecipientId = (SELECT r.id from recipients r JOIN sessions v1 ON r.uuid = v1.uuid WHERE v1.id = messages.sv1id)) WHERE sid IS null;") - if err != nil { - return err + return nil +} + +func migrateDirectChatSession(session *Session) error { + sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) + if sessionV2 != nil && err == nil { + //allready migrated + return nil } - log.Infoln("[axolotl][update v_1_6_1] set sid for messages of new sessions") - _, err = DS.Dbx.Exec("UPDATE messages SET sid = sv1id WHERE sid IS null;") + recipient := RecipientsModel.GetRecipientByUUID(session.UUID) + log.Infoln("[axolotl][update v_1_6_1] migrate direct chat session") + if recipient == nil { + recipient, err = RecipientsModel.CreateRecipientWithoutProfileUpdate(&Recipient{ + UUID: session.UUID, + ProfileGivenName: session.Name, + E164: session.Tel, + }) + if err != nil { + return err + } + } + _, err = SessionsV2Model.SaveSession(&SessionV2{ + ID: session.ID, + DirectMessageRecipientID: recipient.Id, + }) return err } -func sessionV1ToGroupV2(session *Session) error { +func migrateGroupV1Session(session *Session) error { + sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) + if sessionV2 != nil && err == nil { + //allready migrated + return nil + } + log.Infoln("[axolotl][update v_1_6_1] migrate groupv1 session") + _, err = SessionsV2Model.SaveSession(&SessionV2{ + ID: session.ID, + GroupV1ID: session.UUID, + DirectMessageRecipientID: int64(GroupRecipientsID), + }) + return err +} + +func migrateGroupV2Session(session *Session) error { group, err := GroupV2sModel.GetGroupById(session.UUID) if group != nil && err == nil { //allready migrated @@ -325,68 +370,33 @@ func sessionV1ToGroupV2(session *Session) error { return nil } -func sessionV1ToSessionV2(session *Session) error { - if session.IsGroup && session.Type == SessionTypeGroupV2 { - err := sessionV1ToGroupV2(session) - if err != nil { - return err - } - } else if session.IsGroup && session.Type == SessionTypeGroupV1 { - sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) - if sessionV2 != nil && err == nil { - //allready migrated - return nil - } - log.Infoln("[axolotl][update v_1_6_1] migrate groupv1 session") - _, err = SessionsV2Model.SaveSession(&SessionV2{ - ID: session.ID, - GroupV1ID: session.UUID, - DirectMessageRecipientID: int64(GroupRecipientsID), - }) - if err != nil { - return err - } - } else if session.Type == SessionTypePrivateChat { - sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) - if sessionV2 != nil && err == nil { - //allready migrated - return nil - } - recipient := RecipientsModel.GetRecipientByUUID(session.UUID) - log.Infoln("[axolotl][update v_1_6_1] migrate private chat session") - if recipient == nil { - recipient, err = RecipientsModel.CreateRecipientWithoutProfileUpdate(&Recipient{ - UUID: session.UUID, - ProfileGivenName: session.Name, - E164: session.Tel, - }) - if err != nil { - return err - } - } - _, err = SessionsV2Model.SaveSession(&SessionV2{ - ID: session.ID, - DirectMessageRecipientID: recipient.Id, - }) - if err != nil { - return err - } +func migrateMessageIds() error { + log.Infoln("[axolotl][update v_1_6_1] add column sv1id") + _, err := DS.Dbx.Exec("ALTER TABLE messages ADD sv1id integer;") + if err != nil { + return err } - return nil -} - -func sessionsV1toSessionsV2() error { - var sessions []*Session - err := DS.Dbx.Select(&sessions, sessionsSelect) + log.Infoln("[axolotl][update v_1_6_1] copy sid into sv1id") + _, err = DS.Dbx.Exec("UPDATE messages SET sv1id = sid;") if err != nil { - return fmt.Errorf("error loading sessions: %s", err) + return err } - log.Infoln("[axolotl][update v_1_6_1] migrate sessionsv1 to sessionsv2") - for _, session := range sessions { - err = sessionV1ToSessionV2(session) - if err != nil { - log.Errorf("failed to migrate session %s. Error: %s", session.UUID, err) - } + log.Infoln("[axolotl][update v_1_6_1] delete sid of all messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = null;") + if err != nil { + return err } - return nil + log.Infoln("[axolotl][update v_1_6_1] set sid for group messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT v2.ID from sessions v1 JOIN sessionsv2 v2 ON v1.uuid = v2.groupV2Id where v1.ID = messages.sv1id) WHERE sid IS null;") + if err != nil { + return err + } + log.Infoln("[axolotl][update v_1_6_1] set sid for direct messages") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = (SELECT ID from sessionsv2 WHERE directMessageRecipientId = (SELECT r.id from recipients r JOIN sessions v1 ON r.uuid = v1.uuid WHERE v1.id = messages.sv1id)) WHERE sid IS null;") + if err != nil { + return err + } + log.Infoln("[axolotl][update v_1_6_1] set sid for messages of new sessions") + _, err = DS.Dbx.Exec("UPDATE messages SET sid = sv1id WHERE sid IS null;") + return err } From 9a462b36abb55c25ecc29cf81ef10092a72cdb3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Tue, 1 Nov 2022 22:28:22 +0100 Subject: [PATCH 6/9] correctly check if session for direct chat allready exists --- app/store/migrations.go | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/app/store/migrations.go b/app/store/migrations.go index 0a2969c49..d01f39e63 100644 --- a/app/store/migrations.go +++ b/app/store/migrations.go @@ -268,7 +268,7 @@ func migrateMissingSessions() error { for _, session := range sessions { err = migrateSession(session) if err != nil { - log.Errorf("failed to migrate session %s. Error: %s", session.UUID, err) + log.Errorf("[axolotl][update v_1_6_1] failed to migrate session %s. Error: %s", session.UUID, err) } } return nil @@ -276,31 +276,28 @@ func migrateMissingSessions() error { func migrateSession(session *Session) error { if session.IsGroup && session.Type == SessionTypeGroupV2 { - err := migrateGroupV2Session(session) - if err != nil { - return err - } + return migrateGroupV2Session(session) } else if session.IsGroup && session.Type == SessionTypeGroupV1 { - err := migrateGroupV1Session(session) - if err != nil { - return err - } + return migrateGroupV1Session(session) } else if session.Type == SessionTypePrivateChat { - err := migrateDirectChatSession(session) - if err != nil { - return err - } + return migrateDirectChatSession(session) } - return nil + return fmt.Errorf("session type unknown: isGroup:%t, type:%d", session.IsGroup, session.Type) } func migrateDirectChatSession(session *Session) error { - sessionV2, err := SessionsV2Model.GetSessionByID(session.ID) - if sessionV2 != nil && err == nil { - //allready migrated - return nil - } + var err error recipient := RecipientsModel.GetRecipientByUUID(session.UUID) + if recipient != nil { + sessionV2, err := SessionsV2Model.GetSessionByDirectMessageRecipientID(recipient.Id) + if err != nil { + return err + } + if sessionV2 != nil { + //allready migrated + return nil + } + } log.Infoln("[axolotl][update v_1_6_1] migrate direct chat session") if recipient == nil { recipient, err = RecipientsModel.CreateRecipientWithoutProfileUpdate(&Recipient{ From 61f0f40da9b92c2c835bb4384d46a8dfd6a6b147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Wed, 2 Nov 2022 20:10:18 +0100 Subject: [PATCH 7/9] cleanup error messages --- app/store/migrations.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/store/migrations.go b/app/store/migrations.go index d01f39e63..ca2ea487e 100644 --- a/app/store/migrations.go +++ b/app/store/migrations.go @@ -268,7 +268,7 @@ func migrateMissingSessions() error { for _, session := range sessions { err = migrateSession(session) if err != nil { - log.Errorf("[axolotl][update v_1_6_1] failed to migrate session %s. Error: %s", session.UUID, err) + log.Errorf("[axolotl][update v_1_6_1] failed to migrate session. Error: %s", err) } } return nil @@ -358,11 +358,11 @@ func migrateGroupV2Session(session *Session) error { log.Infoln("[axolotl][update v_1_6_1] migrate groupv2 session: members") groupMembers, err := textsecure.GetGroupV2MembersForGroup(session.UUID) if err != nil { - return fmt.Errorf("[axolotl][update v_1_6_1] error getting group members: %s", err) + return fmt.Errorf("error getting group members: %s", err) } err = group.AddGroupMembers(groupMembers) if err != nil { - return fmt.Errorf("[axolotl][update v_1_6_1] error adding group members: %s", err) + return fmt.Errorf("error adding group members: %s", err) } return nil } From d677282a082e6a6c77fab31c5e98615cb76b566e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorsten=20Plo=C3=9F?= Date: Sat, 5 Nov 2022 18:22:01 +0100 Subject: [PATCH 8/9] update signal-golang/textsecure to version 1.19.0 --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index e1aa64abb..be9a70aec 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/satori/go.uuid v1.2.0 github.com/signal-golang/go-vcard v0.1.2 github.com/signal-golang/libphonenumber v1.2.2-0.20220127214340-b765372d3707 - github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405 + github.com/signal-golang/textsecure v1.19.0 github.com/sirupsen/logrus v1.9.0 github.com/ttacon/builder v0.0.0-20170518171403-c099f663e1c2 // indirect github.com/vincent-petithory/dataurl v1.0.0 diff --git a/go.sum b/go.sum index 8b302af9c..b9bdd9ae1 100644 --- a/go.sum +++ b/go.sum @@ -116,6 +116,8 @@ github.com/signal-golang/textsecure v1.18.0 h1:3aEH+l09RkTO/nWzHaYdEoKkB1MXJIYis github.com/signal-golang/textsecure v1.18.0/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405 h1:Ba2icScIXjurTbQTrIkaY/NX25GDpsMOydxGnkO0yTI= github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= +github.com/signal-golang/textsecure v1.19.0 h1:bc6o6Uq8yRmCE8iwodwbjA2l6mdfkbuUsCvYOtOSDCc= +github.com/signal-golang/textsecure v1.19.0/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= From 607e86c81ca389b4d18b7b05706cda8bd8cb0bf3 Mon Sep 17 00:00:00 2001 From: "aaron@nanu-c.org" Date: Mon, 7 Nov 2022 22:15:42 +0100 Subject: [PATCH 9/9] fix registration --- app/worker/textsecureapi.go | 2 +- axolotl-web/src/components/ErrorModal.vue | 4 ++-- axolotl-web/src/store/store.js | 2 -- go.mod | 2 +- go.sum | 8 ++------ main.go | 10 ++++++++++ 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/worker/textsecureapi.go b/app/worker/textsecureapi.go index 110a6ebf1..70549156a 100644 --- a/app/worker/textsecureapi.go +++ b/app/worker/textsecureapi.go @@ -115,7 +115,7 @@ func RunBackend(errorChannel chan error) error { }, GetVerificationCode: func() string { if !settings.SettingsModel.Registered { - log.Debugf("settings.SettingsModel.Registered = false") + log.Debugf("[axolotl] settings.SettingsModel.Registered = false") verificationCode := ui.GetVerificationCode() settings.SettingsModel.Registered = true return verificationCode diff --git a/axolotl-web/src/components/ErrorModal.vue b/axolotl-web/src/components/ErrorModal.vue index ef9fdcb3b..fcda8246e 100644 --- a/axolotl-web/src/components/ErrorModal.vue +++ b/axolotl-web/src/components/ErrorModal.vue @@ -6,7 +6,7 @@ - @@ -22,7 +22,7 @@

If you think that something is wrong on your side, you can - unregister and register again. + unregister and register again. Be careful, your encryption key will change and you will lose all your messages diff --git a/axolotl-web/src/store/store.js b/axolotl-web/src/store/store.js index 1df51d464..d0516c019 100644 --- a/axolotl-web/src/store/store.js +++ b/axolotl-web/src/store/store.js @@ -725,8 +725,6 @@ export default createStore({ } socketSend(message); } - this.commit("SET_REGISTRATION_STATUS", ""); - router.push("/") }, sendPin(state, pin) { if (this.state.socket.isConnected) { diff --git a/go.mod b/go.mod index be9a70aec..fb10e6c48 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/satori/go.uuid v1.2.0 github.com/signal-golang/go-vcard v0.1.2 github.com/signal-golang/libphonenumber v1.2.2-0.20220127214340-b765372d3707 - github.com/signal-golang/textsecure v1.19.0 + github.com/signal-golang/textsecure v1.20.0 github.com/sirupsen/logrus v1.9.0 github.com/ttacon/builder v0.0.0-20170518171403-c099f663e1c2 // indirect github.com/vincent-petithory/dataurl v1.0.0 diff --git a/go.sum b/go.sum index b9bdd9ae1..9da4db633 100644 --- a/go.sum +++ b/go.sum @@ -112,12 +112,8 @@ github.com/signal-golang/libphonenumber v1.2.2-0.20220127214340-b765372d3707 h1: github.com/signal-golang/libphonenumber v1.2.2-0.20220127214340-b765372d3707/go.mod h1:oW+JXk+4C0R5h8BQzfRA4k/vXuBfBcNSqKWjn7Dgncs= github.com/signal-golang/mimemagic v0.0.0-20200821045537-3f613cf2cd3f h1:S17lCk5rcobvgcaLf7XSAoLuNkRPgFyhvgRA9JwDzHc= github.com/signal-golang/mimemagic v0.0.0-20200821045537-3f613cf2cd3f/go.mod h1:tU6SWwv50oGkZNPlvTFvmqZvEBp0vWWCC+LCEVlTE5A= -github.com/signal-golang/textsecure v1.18.0 h1:3aEH+l09RkTO/nWzHaYdEoKkB1MXJIYis/65yFzal1c= -github.com/signal-golang/textsecure v1.18.0/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= -github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405 h1:Ba2icScIXjurTbQTrIkaY/NX25GDpsMOydxGnkO0yTI= -github.com/signal-golang/textsecure v1.18.1-0.20221030222303-1f5acd1b2405/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= -github.com/signal-golang/textsecure v1.19.0 h1:bc6o6Uq8yRmCE8iwodwbjA2l6mdfkbuUsCvYOtOSDCc= -github.com/signal-golang/textsecure v1.19.0/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= +github.com/signal-golang/textsecure v1.20.0 h1:qwCAeLCRcMxNBHSkehAQyx5V1f4Xa2GWzYjTpe2Q1SI= +github.com/signal-golang/textsecure v1.20.0/go.mod h1:sna5yQxNwY/F54q/K4xxP90VgWMSBgm3L8zbWOkF2mk= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= diff --git a/main.go b/main.go index d994421a7..7c2a4f8c4 100644 --- a/main.go +++ b/main.go @@ -30,9 +30,19 @@ func init() { flag.StringVar(&config.ServerHost, "host", "127.0.0.1", "Host to serve UI from.") flag.StringVar(&config.ServerPort, "port", "9080", "Port to serve UI from.") flag.StringVar(&config.ElectronFlag, "electron-flag", "", "Specify electron flag. Use no-ozone to disable Ozone/Wayland platform") + flag.StringVar(&config.LogLevel, "d", "", "Specify debug level. Use either debug, info, warn, error or fatal") } func setup() { config.SetupConfig() + if config.LogLevel != "" { + level, err := log.ParseLevel(config.LogLevel) + if err != nil { + log.Fatal(err) + } + log.SetLevel(level) + } else { + log.SetLevel(log.InfoLevel) + } log.Infoln("[axolotl] Starting axolotl version", config.AppVersion) } func runBackend() {