From 403e28baa1051516a62329d9a5bd382288f6b933 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Thu, 18 Feb 2021 17:55:15 +0800
Subject: [PATCH 01/18] better
---
commands.go | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/commands.go b/commands.go
index f3ff562..ad980dc 100644
--- a/commands.go
+++ b/commands.go
@@ -297,6 +297,10 @@ func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
for _, portal := range allPortals {
leave(portal)
}
+ ce.User.Conn.Store = &skype.Store{
+ Contacts: make(map[string]skype.Contact),
+ Chats: make(map[string]skype.Conversation),
+ }
ce.Reply("Logged out successfully.")
}
From c2a347096b4b9c2ce100dfffe652886ca4a4e5d7 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Sat, 20 Feb 2021 14:54:00 +0800
Subject: [PATCH 02/18] better for leave room with command 'logout'
---
commands.go | 30 +++++++++++++++---------------
database/user.go | 11 +++++++++++
portal.go | 3 ++-
user.go | 17 -----------------
4 files changed, 28 insertions(+), 33 deletions(-)
diff --git a/commands.go b/commands.go
index ad980dc..d4ad9c0 100644
--- a/commands.go
+++ b/commands.go
@@ -251,7 +251,7 @@ func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
if ce.User.Conn == nil {
return
}
- _ = ce.User.Conn.GetConversations("", ce.User.bridge.Config.Bridge.InitialChatSync)
+ //_ = ce.User.Conn.GetConversations("", ce.User.bridge.Config.Bridge.InitialChatSync)
ce.User.Conn.LoggedIn = false
username := ""
password := ""
@@ -272,19 +272,19 @@ func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
}
portals := ce.User.GetPortals()
- newPortals := ce.User.GetPortalsNew()
- allPortals := newPortals[0:]
- for _, portal := range portals {
- var newPortalsHas bool
- for _, newPortal := range newPortals {
- if portal.Key == newPortal.Key {
- newPortalsHas = true
- }
- }
- if !newPortalsHas {
- allPortals = append(allPortals, portal)
- }
- }
+ //newPortals := ce.User.GetPortalsNew()
+ //allPortals := newPortals[0:]
+ //for _, portal := range portals {
+ // var newPortalsHas bool
+ // for _, newPortal := range newPortals {
+ // if portal.Key == newPortal.Key {
+ // newPortalsHas = true
+ // }
+ // }
+ // if !newPortalsHas {
+ // allPortals = append(allPortals, portal)
+ // }
+ //}
leave := func(portal *Portal) {
if len(portal.MXID) > 0 {
@@ -294,7 +294,7 @@ func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
})
}
}
- for _, portal := range allPortals {
+ for _, portal := range portals {
leave(portal)
}
ce.User.Conn.Store = &skype.Store{
diff --git a/database/user.go b/database/user.go
index 14ed243..45ac771 100644
--- a/database/user.go
+++ b/database/user.go
@@ -183,6 +183,17 @@ func (user *User) SetPortalKeys(newKeys []PortalKeyWithMeta) error {
return tx.Commit()
}
+func (user *User) CreateUserPortal(newKey PortalKeyWithMeta) {
+ user.log.Debugfln("Creating new portal %s for %s", newKey.PortalKey.JID, newKey.PortalKey.Receiver)
+ _, err := user.db.Exec(`INSERT INTO user_portal (user_jid, portal_jid, portal_receiver, in_community) VALUES ($1, $2, $3, $4)`,
+ user.jidPtr(),
+ newKey.PortalKey.JID, newKey.PortalKey.Receiver,
+ newKey.InCommunity)
+ if err != nil {
+ user.log.Warnfln("Failed to insert %s: %v", user.MXID, err)
+ }
+}
+
func (user *User) IsInPortal(key PortalKey) bool {
row := user.db.QueryRow(`SELECT EXISTS(SELECT 1 FROM user_portal WHERE user_jid=$1 AND portal_jid=$2 AND portal_receiver=$3)`, user.jidPtr(), &key.JID, &key.Receiver)
var exists bool
diff --git a/portal.go b/portal.go
index d7489e0..4c453d8 100644
--- a/portal.go
+++ b/portal.go
@@ -1237,7 +1237,7 @@ func (portal *Portal) CreateMatrixRoom(user *User) error {
_ = customPuppet.CustomIntent().EnsureJoined(portal.MXID)
}
}
- user.addPortalToCommunity(portal)
+ inCommunity := user.addPortalToCommunity(portal)
if portal.IsPrivateChat() {
puppet := user.bridge.GetPuppetByJID(portal.Key.JID)
user.addPuppetToCommunity(puppet)
@@ -1249,6 +1249,7 @@ func (portal *Portal) CreateMatrixRoom(user *User) error {
}
}
}
+ user.CreateUserPortal(database.PortalKeyWithMeta{PortalKey: portal.Key, InCommunity: inCommunity})
err = portal.FillInitialHistory(user)
if err != nil {
portal.log.Errorln("Failed to fill history:", err)
diff --git a/user.go b/user.go
index 018679c..f3ca29e 100644
--- a/user.go
+++ b/user.go
@@ -463,23 +463,6 @@ func (user *User) intPostLogin() {
}
}
-func (user *User) HandleChatList(chats []skype.Conversation) {
- user.log.Infoln("Chat list received")
- chatMap := make(map[string]skype.Conversation)
- //for _, chat := range user.Conn.Store.Chats {
- // chatMap[chat.Jid] = chat
- //}
- for _, chat := range chats {
- cid, _ := chat.Id.(string)
- chatMap[cid] = chat
- }
- select {
- case user.chatListReceived <- struct{}{}:
- default:
- }
- go user.syncPortals(chatMap, false)
-}
-
func (user *User) syncPortals(chatMap map[string]skype.Conversation, createAll bool) {
if chatMap == nil {
chatMap = user.Conn.Store.Chats
From 067228b70074750b986c9be622e5fdaae449c74e Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Sat, 20 Feb 2021 22:39:29 +0800
Subject: [PATCH 03/18] update go-skypeapi
---
go.mod | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/go.mod b/go.mod
index 24cf9b1..178fc70 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.14
require (
github.com/chai2010/webp v1.1.0
github.com/gorilla/websocket v1.4.2
- github.com/kelaresg/go-skypeapi v0.1.2-0.20210128115834-086b2e03dd09
+ github.com/kelaresg/go-skypeapi v0.1.2-0.20210220112556-a87881796d7b
github.com/lib/pq v1.7.0
github.com/mattn/go-sqlite3 v2.0.3+incompatible
github.com/pkg/errors v0.9.1
From 9bb85282de2b170775c115e5a92099b270dbbb29 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Mon, 22 Feb 2021 17:49:22 +0800
Subject: [PATCH 04/18] fix the username response(old skype account)
---
commands.go | 3 +++
1 file changed, 3 insertions(+)
diff --git a/commands.go b/commands.go
index d4ad9c0..9d35cde 100644
--- a/commands.go
+++ b/commands.go
@@ -479,6 +479,9 @@ func (handler *CommandHandler) CommandPing(ce *CommandEvent) {
if len(ce.User.Conn.UserProfile.LastName) > 0 {
username = username + ce.User.Conn.UserProfile.LastName
}
+ if username == "" {
+ username = ce.User.Conn.UserProfile.Username
+ }
ce.Reply("You're logged in as @" + username)
}
}
From e91fa5506c415086f08dddf4015b6fd38ab3e392 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Mon, 22 Feb 2021 18:59:11 +0800
Subject: [PATCH 05/18] fix detect the type of media message
---
go.mod | 1 +
go.sum | 2 ++
portal.go | 4 ++--
3 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/go.mod b/go.mod
index 178fc70..73626dd 100644
--- a/go.mod
+++ b/go.mod
@@ -4,6 +4,7 @@ go 1.14
require (
github.com/chai2010/webp v1.1.0
+ github.com/gabriel-vasile/mimetype v1.1.2
github.com/gorilla/websocket v1.4.2
github.com/kelaresg/go-skypeapi v0.1.2-0.20210220112556-a87881796d7b
github.com/lib/pq v1.7.0
diff --git a/go.sum b/go.sum
index 4c5ae4b..a5b19c2 100644
--- a/go.sum
+++ b/go.sum
@@ -64,6 +64,8 @@ github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/gabriel-vasile/mimetype v1.1.2 h1:gaPnPcNor5aZSVCJVSGipcpbgMWiAAj9z182ocSGbHU=
+github.com/gabriel-vasile/mimetype v1.1.2/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
diff --git a/portal.go b/portal.go
index 4c453d8..192e404 100644
--- a/portal.go
+++ b/portal.go
@@ -2,6 +2,7 @@ package main
import (
"bytes"
+ "github.com/gabriel-vasile/mimetype"
"maunium.net/go/mautrix/patch"
"encoding/hex"
@@ -1622,8 +1623,7 @@ func (portal *Portal) HandleMediaMessageSkype(source *User, download func(conn *
}
// synapse doesn't handle webp well, so we convert it. This can be dropped once https://github.com/matrix-org/synapse/issues/4382 is fixed
- mimeType := http.DetectContentType(data)
- //length := len(data)
+ mimeType := mimetype.Detect(data).String()
if mimeType == "image/webp" {
img, err := decodeWebp(bytes.NewReader(data))
if err != nil {
From 6d18d6bb328e9fad2d6abda28cb2c5561f51cb79 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Wed, 24 Feb 2021 15:44:20 +0800
Subject: [PATCH 06/18] forward message(still need to optimize if have a good
idea)
---
formatting.go | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/formatting.go b/formatting.go
index 8940f3e..54bad50 100644
--- a/formatting.go
+++ b/formatting.go
@@ -122,7 +122,7 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
// parse quote message(set reply)
content.Body = strings.ReplaceAll(content.Body, "\n", "")
- quoteReg := regexp.MustCompile(`]+\bauthor="([^"]+)" authorname="([^"]+)" timestamp="([^"]+)" conversation.* messageid="([^"]+)".*>.*?(.*?).*?
(.*)`)
+ quoteReg := regexp.MustCompile(`]+\bauthor="([^"]+)" authorname="([^"]+)" timestamp="([^"]+)" conversation="([^"]+)" messageid="([^"]+)".*>.*?(.*?).*?
(.*)`)
quoteMatches := quoteReg.FindAllStringSubmatch(content.Body, -1)
if len(quoteMatches) > 0 {
@@ -132,8 +132,14 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
fmt.Println("ParseSkype quoteMatches a:", a)
fmt.Println()
}
+ portal := formatter.bridge.GetPortalByMXID(RoomMXID)
+ if portal.Key.JID != match[4] {
+ content.FormattedBody = match[6]
+ content.Body = fmt.Sprintf("%s\n\n", match[6])
+ continue
+ }
msgMXID := ""
- msg := formatter.bridge.DB.Message.GetByID(match[4])
+ msg := formatter.bridge.DB.Message.GetByID(match[5])
if msg != nil {
msgMXID = string(msg.MXID)
}
@@ -144,21 +150,21 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
href1,
href2,
mxid,
- match[5])
+ match[6])
content.FormattedBody = newContent
- content.Body = fmt.Sprintf("> <%s> %s\n\n", mxid, match[5])
+ content.Body = fmt.Sprintf("> <%s> %s\n\n", mxid, match[6])
inRelateTo := &event.RelatesTo{
Type: event.RelReply,
EventID: id.EventID(msgMXID),
}
content.SetRelatesTo(inRelateTo)
- backStr = match[6]
+ backStr = match[7]
}
}
}
// parse mention user message
- r := regexp.MustCompile(`(?m)]+\bid="([^"]+)"(.*?)`)
+ r := regexp.MustCompile(`(?m)]+\bid="([^"]+)">(.*?)`)
var originStr string
var originBodyStr string
if len(backStr) == 0 {
@@ -170,8 +176,14 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
if len(matches) > 0 {
for _, match := range matches {
mxid, displayname := formatter.getMatrixInfoByJID(match[1] + skypeExt.NewUserSuffix)
+ replaceStr := ""
+ if len(displayname) < 1 {
+ // TODO need to optimize
+ replaceStr = match[2] + ":"
+ } else {
+ replaceStr = fmt.Sprintf(`%s:`, formatter.bridge.Config.Homeserver.ServerName, mxid, displayname)
+ }
// number := "@" + strings.Replace(match[1], skypeExt.NewUserSuffix, "", 1)
- replaceStr := fmt.Sprintf(`%s:`, formatter.bridge.Config.Homeserver.ServerName, mxid, displayname)
originStr = strings.ReplaceAll(originStr, match[0], replaceStr)
originBodyStr = strings.ReplaceAll(originStr, replaceStr, displayname + ":")
}
From eb8e1cb66030eb3107fc9c5725a07b6dc5fa5e97 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Sat, 8 May 2021 16:41:12 +0800
Subject: [PATCH 07/18] update lib mautrix-go
---
crypto.go | 10 +++++-----
go.mod | 7 +++----
go.sum | 28 ++++++++++++++++++++++++++++
3 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/crypto.go b/crypto.go
index f67db9a..14ecc97 100644
--- a/crypto.go
+++ b/crypto.go
@@ -122,20 +122,20 @@ func (helper *CryptoHelper) loginBot() (*mautrix.Client, error) {
return nil, fmt.Errorf("failed to initialize client: %w", err)
}
client.Logger = helper.baseLog.Sub("Bot")
+ client.Client = helper.bridge.AS.HTTPClient
+ client.DefaultHTTPRetries = helper.bridge.AS.DefaultHTTPRetries
flows, err := client.GetLoginFlows()
if err != nil {
return nil, fmt.Errorf("failed to get supported login flows: %w", err)
}
- if !flows.HasFlow(mautrix.AuthTypeAppservice) {
- // TODO after synapse 1.22, turn this into an error
- helper.log.Warnln("Encryption enabled in config, but homeserver does not advertise appservice login")
- //return nil, fmt.Errorf("homeserver does not support appservice login")
+ if !flows.HasFlow(mautrix.AuthTypeHalfyAppservice) {
+ return nil, fmt.Errorf("homeserver does not support appservice login")
}
// We set the API token to the AS token here to authenticate the appservice login
// It'll get overridden after the login
client.AccessToken = helper.bridge.AS.Registration.AppToken
resp, err := client.Login(&mautrix.ReqLogin{
- Type: mautrix.AuthTypeAppservice,
+ Type: mautrix.AuthTypeHalfyAppservice,
Identifier: mautrix.UserIdentifier{Type: mautrix.IdentifierTypeUser, User: string(helper.bridge.AS.BotMXID())},
DeviceID: deviceID,
InitialDeviceDisplayName: "Skype Bridge",
diff --git a/go.mod b/go.mod
index 73626dd..c86ef07 100644
--- a/go.mod
+++ b/go.mod
@@ -7,15 +7,14 @@ require (
github.com/gabriel-vasile/mimetype v1.1.2
github.com/gorilla/websocket v1.4.2
github.com/kelaresg/go-skypeapi v0.1.2-0.20210220112556-a87881796d7b
- github.com/lib/pq v1.7.0
+ github.com/lib/pq v1.9.0
github.com/mattn/go-sqlite3 v2.0.3+incompatible
github.com/pkg/errors v0.9.1
- github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
golang.org/x/image v0.0.0-20200618115811-c13761719519
gopkg.in/yaml.v2 v2.3.0
maunium.net/go/mauflag v1.0.0
- maunium.net/go/maulogger/v2 v2.1.1
+ maunium.net/go/maulogger/v2 v2.2.4
maunium.net/go/mautrix v0.8.0-rc.4
)
-replace maunium.net/go/mautrix => github.com/pidongqianqian/mautrix-go v0.8.0-rc.4.0.20201208081810-787323a21113
+replace maunium.net/go/mautrix => github.com/pidongqianqian/mautrix-go v0.9.11-0.20210508035357-93e21d8c2bbe
diff --git a/go.sum b/go.sum
index a5b19c2..539beb3 100644
--- a/go.sum
+++ b/go.sum
@@ -115,6 +115,8 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGa
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc=
github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@@ -178,6 +180,8 @@ github.com/lib/pq v1.5.2 h1:yTSXVswvWUOQ3k1sd7vJfDrbSl8lKuscqFJRqjC0ifw=
github.com/lib/pq v1.5.2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.7.0 h1:h93mCPfUSkaul3Ka/VG8uZdmW1uMHDGxzu0NWHuJmHY=
github.com/lib/pq v1.7.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/lib/pq v1.9.0 h1:L8nSXQQzAYByakOFMTwpjRoHsMJklur4Gi59b6VivR8=
+github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -185,6 +189,7 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
+github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -224,6 +229,8 @@ github.com/pidongqianqian/mautrix-go v0.8.0-rc.4.0.20201126070406-7b13ac473bcc h
github.com/pidongqianqian/mautrix-go v0.8.0-rc.4.0.20201126070406-7b13ac473bcc/go.mod h1:TtVePxoEaw6+RZDKVajw66Yaj1lqLjH8l4FF3krsqWY=
github.com/pidongqianqian/mautrix-go v0.8.0-rc.4.0.20201208081810-787323a21113 h1:tetxcECwIGgb7Gl4AyY/9+MXmuUfp33FweuGU/Bb7AM=
github.com/pidongqianqian/mautrix-go v0.8.0-rc.4.0.20201208081810-787323a21113/go.mod h1:TtVePxoEaw6+RZDKVajw66Yaj1lqLjH8l4FF3krsqWY=
+github.com/pidongqianqian/mautrix-go v0.9.11-0.20210508035357-93e21d8c2bbe h1:ZPK2QEV0zE5jUHl00AW0xl6kdCxtBaWxklcnMHtQGbs=
+github.com/pidongqianqian/mautrix-go v0.9.11-0.20210508035357-93e21d8c2bbe/go.mod h1:7IzKfWvpQtN+W2Lzxc0rLvIxFM3ryKX6Ys3S/ZoWbg8=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -251,6 +258,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
@@ -288,13 +297,21 @@ github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tidwall/gjson v1.6.0 h1:9VEQWz6LLMUsUl6PueE49ir4Ka6CzLymOAZDxpFsTDc=
github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls=
+github.com/tidwall/gjson v1.6.8 h1:CTmXMClGYPAmln7652e69B7OLXfTi5ABcPPwjIWUv7w=
+github.com/tidwall/gjson v1.6.8/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI=
github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc=
github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E=
+github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE=
+github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/pretty v1.0.1 h1:WE4RBSZ1x6McVVC8S/Md+Qse8YUv6HRObAx6ke00NY8=
github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU=
+github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
github.com/tidwall/sjson v1.1.1 h1:7h1vk049Jnd5EH9NyzNiEuwYW4b5qgreBbqRC19AS3U=
github.com/tidwall/sjson v1.1.1/go.mod h1:yvVuSnpEQv5cYIrO+AT6kw4QVfd5SDZoGIS7/5+fZFs=
+github.com/tidwall/sjson v1.1.5 h1:wsUceI/XDyZk3J1FUvuuYlK62zJv2HO2Pzb8A5EWdUE=
+github.com/tidwall/sjson v1.1.5/go.mod h1:VuJzsZnTowhSxWdOgsAnb886i4AjEyTkk7tNtsL7EYE=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tulir/go-whatsapp v0.2.8 h1:0dpAQ/2ONT6T2//aAl+9IeFGMRtqOZpMEqJlhX9vxos=
github.com/tulir/go-whatsapp v0.2.8/go.mod h1:gyw9zGup1/Y3ZQUueZaqz3iR/WX9a2Lth4aqEbXjkok=
@@ -317,6 +334,8 @@ golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E=
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g=
+golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -361,6 +380,8 @@ golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYc
golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs=
golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d h1:1aflnvSoWWLI2k/dMUAl5lvU1YO4Mb4hz0gh+1rjcxU=
+golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -385,6 +406,7 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9 h1:YTzHMGlqJu67/uEo1lBv0n3wBXhXNeUbB1XfN2vmTm0=
@@ -393,6 +415,10 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 h1:ogLJMz+qpzav7lGMh10LMvAkM
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuFiOQWj1Fs7T3VrH4Pjw=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
@@ -477,6 +503,8 @@ maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
maunium.net/go/maulogger/v2 v2.1.1 h1:NAZNc6XUFJzgzfewCzVoGkxNAsblLCSSEdtDuIjP0XA=
maunium.net/go/maulogger/v2 v2.1.1/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A=
+maunium.net/go/maulogger/v2 v2.2.4 h1:oV2GDeM4fx1uRysdpDC0FcrPg+thFicSd9XzPcYMbVY=
+maunium.net/go/maulogger/v2 v2.2.4/go.mod h1:TYWy7wKwz/tIXTpsx8G3mZseIRiC5DoMxSZazOHy68A=
maunium.net/go/mautrix v0.7.13 h1:qfnvLxvQafvLgHbdZF/+9qs9gyArYf8fUnzfQbjgQaU=
maunium.net/go/mautrix v0.7.13/go.mod h1:Jn0ijwXwMFvJFIN9IljirIVKpZQbZP/Dk7pdX2qDmXk=
maunium.net/go/mautrix-whatsapp v0.1.4 h1:qlkb3eXcKm1QE6AjrAl9aKxokHlwj7BNr+aUQFXFmWE=
From 7b6370532ea533eb0887d49c04a193bb3ad4a613 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Sat, 8 May 2021 16:42:07 +0800
Subject: [PATCH 08/18] optimize forward message and details
---
formatting.go | 6 +++++-
matrix.go | 2 +-
portal.go | 9 +++------
3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/formatting.go b/formatting.go
index 54bad50..9c8d881 100644
--- a/formatting.go
+++ b/formatting.go
@@ -136,7 +136,11 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
if portal.Key.JID != match[4] {
content.FormattedBody = match[6]
content.Body = fmt.Sprintf("%s\n\n", match[6])
- continue
+
+ // this means that there are forwarding messages across groups
+ if strings.HasSuffix(match[4], skypeExt.GroupSuffix) || strings.HasSuffix(portal.Key.JID, skypeExt.GroupSuffix){
+ continue
+ }
}
msgMXID := ""
msg := formatter.bridge.DB.Message.GetByID(match[5])
diff --git a/matrix.go b/matrix.go
index 69fcfde..74a5396 100644
--- a/matrix.go
+++ b/matrix.go
@@ -366,7 +366,7 @@ func (mx *MatrixHandler) shouldIgnoreEvent(evt *event.Event) bool {
fmt.Println()
return true
}
- isCustomPuppet, ok := evt.Content.Raw["net.maunium.whatsapp.puppet"].(bool)
+ isCustomPuppet, ok := evt.Content.Raw["net.maunium.skype.puppet"].(bool)
if ok && isCustomPuppet && mx.bridge.GetPuppetByCustomMXID(evt.Sender) != nil {
return true
}
diff --git a/portal.go b/portal.go
index 192e404..206a289 100644
--- a/portal.go
+++ b/portal.go
@@ -1419,7 +1419,7 @@ func (portal *Portal) sendMessage(intent *appservice.IntentAPI, eventType event.
wrappedContent := event.Content{Parsed: content}
if timestamp != 0 && intent.IsCustomPuppet {
wrappedContent.Raw = map[string]interface{}{
- "net.maunium.whatsapp.puppet": intent.IsCustomPuppet,
+ "net.maunium.skype.puppet": intent.IsCustomPuppet,
}
}
fmt.Println("portal sendMessage timestamp:", timestamp)
@@ -1477,17 +1477,14 @@ func (portal *Portal) HandleTextMessage(source *User, message skype.Resource) {
}
}
// portal.SetReplySkype(content, message)
-
- fmt.Println()
- fmt.Printf("portal HandleTextMessage2: %+v", content)
+ fmt.Printf("\nportal HandleTextMessage2: %+v", content)
_, _ = intent.UserTyping(portal.MXID, false, 0)
resp, err := portal.sendMessage(intent, event.EventMessage, content, message.Timestamp * 1000)
if err != nil {
portal.log.Errorfln("Failed to handle message %s: %v", message.Id, err)
return
}
- fmt.Println()
- fmt.Printf("portal HandleTextMessage3: %+v", content)
+ fmt.Printf("\nportal HandleTextMessage3: %+v", content)
portal.finishHandlingSkype(source, &message, resp.EventID)
}
}
From 55f909a47fce463fc8530f5fa9abcb239ea4f80b Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Wed, 12 May 2021 18:49:00 +0800
Subject: [PATCH 09/18] fix sync media message delete
---
portal.go | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/portal.go b/portal.go
index 206a289..474854d 100644
--- a/portal.go
+++ b/portal.go
@@ -1593,6 +1593,11 @@ func (portal *Portal) tryKickUser(userID id.UserID, intent *appservice.IntentAPI
}
func (portal *Portal) HandleMediaMessageSkype(source *User, download func(conn *skype.Conn, mediaType string) (data []byte, mediaMessage *skype.MediaMessageContent, err error), mediaType string, thumbnail []byte, info skype.Resource, sendAsSticker bool) {
+ if info.ClientMessageId == "" && info.Content == "" && len(info.SkypeEditedId) > 0 {
+ portal.HandleMessageRevokeSkype(source, info)
+ return
+ }
+
intent, endHandlePrivateChatFromMe := portal.startHandlingSkype(source, info)
if endHandlePrivateChatFromMe != nil {
defer endHandlePrivateChatFromMe()
From 459b54955a1996da383f6570a3129b2e698191c1 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Fri, 14 May 2021 18:34:39 +0800
Subject: [PATCH 10/18] add return orgid
---
commands.go | 10 +++++++++-
user.go | 18 ++++++++++++++++--
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/commands.go b/commands.go
index 9d35cde..a6864e4 100644
--- a/commands.go
+++ b/commands.go
@@ -7,6 +7,7 @@ import (
"github.com/kelaresg/matrix-skype/database"
skypeExt "github.com/kelaresg/matrix-skype/skype-ext"
"math"
+ "maunium.net/go/mautrix/patch"
"sort"
"strconv"
@@ -482,7 +483,14 @@ func (handler *CommandHandler) CommandPing(ce *CommandEvent) {
if username == "" {
username = ce.User.Conn.UserProfile.Username
}
- ce.Reply("You're logged in as @" + username)
+
+ orgId := ""
+ if patch.ThirdPartyIdEncrypt {
+ orgId = patch.Enc(strings.TrimSuffix(ce.User.JID, skypeExt.NewUserSuffix))
+ } else {
+ orgId = strings.TrimSuffix(ce.User.JID, skypeExt.NewUserSuffix)
+ }
+ ce.Reply("You're logged in as @" + username + ", orgid is " + orgId)
}
}
diff --git a/user.go b/user.go
index f3ca29e..891ef88 100644
--- a/user.go
+++ b/user.go
@@ -6,6 +6,7 @@ import (
"fmt"
skype "github.com/kelaresg/go-skypeapi"
skypeExt "github.com/kelaresg/matrix-skype/skype-ext"
+ "maunium.net/go/mautrix/patch"
"sort"
//"strconv"
"strings"
@@ -333,7 +334,13 @@ func (user *User) Login(ce *CommandEvent, name string, password string) (err err
err = user.Conn.Login(name, password)
if err != nil {
user.log.Errorln("Failed to login:", err)
- ce.Reply(err.Error())
+ orgId := ""
+ if patch.ThirdPartyIdEncrypt {
+ orgId = patch.Enc(strings.TrimSuffix(user.JID, skypeExt.NewUserSuffix))
+ } else {
+ orgId = strings.TrimSuffix(user.JID, skypeExt.NewUserSuffix)
+ }
+ ce.Reply(err.Error() + ", orgid is " + orgId)
return err
}
username := user.Conn.UserProfile.FirstName
@@ -343,7 +350,14 @@ func (user *User) Login(ce *CommandEvent, name string, password string) (err err
if username == "" {
username = user.Conn.UserProfile.Username
}
- ce.Reply("Successfully logged in as @" + username)
+
+ orgId := ""
+ if patch.ThirdPartyIdEncrypt {
+ orgId = patch.Enc(strings.TrimSuffix(user.JID, skypeExt.NewUserSuffix))
+ } else {
+ orgId = strings.TrimSuffix(user.JID, skypeExt.NewUserSuffix)
+ }
+ ce.Reply("Successfully logged in as @" + username + ", orgid is " + orgId)
user.Conn.Subscribes() // subscribe basic event
err = user.Conn.Conn.ContactList(user.Conn.UserProfile.Username)
From 9a39b69dce54237b186a03e02b0bfaa51ed3cff8 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Wed, 26 May 2021 20:39:02 +0800
Subject: [PATCH 11/18] in progress
---
commands.go | 10 +++++++++-
user.go | 27 ++++++++++++++++++++++-----
2 files changed, 31 insertions(+), 6 deletions(-)
diff --git a/commands.go b/commands.go
index a6864e4..4e4ae8f 100644
--- a/commands.go
+++ b/commands.go
@@ -271,7 +271,6 @@ func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
Username: username,
Password: password,
}
-
portals := ce.User.GetPortals()
//newPortals := ce.User.GetPortalsNew()
//allPortals := newPortals[0:]
@@ -303,6 +302,15 @@ func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
Chats: make(map[string]skype.Conversation),
}
ce.Reply("Logged out successfully.")
+
+ //defer func() {
+ // if r := recover(); r != nil {
+ // fmt.Printf("close ReRefresh:%s\n", r)
+ // }
+ //}()
+ if ce.User.Conn.Refresh != nil {
+ ce.User.Conn.Refresh <- -1
+ }
}
// CommandLogout handles !logout command
diff --git a/user.go b/user.go
index 891ef88..ce91661 100644
--- a/user.go
+++ b/user.go
@@ -285,6 +285,7 @@ func (user *User) Connect(evenIfNoSession bool) bool {
//_ = user.Conn.SetClientName("matrix-skype bridge", "mx-wa", SkypeVersion)
user.log.Debugln("skype connection successful")
user.Conn.AddHandler(user)
+
return user.RestoreSession()
}
@@ -371,9 +372,10 @@ func (user *User) Login(ce *CommandEvent, name string, password string) (err err
userIds = append(userIds, userId)
}
ce.User.Conn.SubscribeUsers(userIds)
- go loopPresence(ce, user)
+ go loopPresence(user)
}
go user.Conn.Poll()
+ go user.monitorSession(ce)
user.ConnectionErrors = 0
user.JID = "8:" + user.Conn.UserProfile.Username + skypeExt.NewUserSuffix
@@ -384,12 +386,27 @@ func (user *User) Login(ce *CommandEvent, name string, password string) (err err
return
}
-func loopPresence(ce *CommandEvent, user *User) {
- for {
- if user.Conn.LoggedIn == false {
+func (user *User) monitorSession(ce *CommandEvent) {
+ user.Conn.Refresh = make(chan int)
+ for x := range user.Conn.Refresh {
+ fmt.Println("monitorSession: ", x)
+ if x > 0 {
+ user.SetSession(user.Conn.LoginInfo)
+ } else {
ce.Reply("Session expired")
- break
+ close(user.Conn.Refresh)
}
+ }
+
+ item, ok := <- user.Conn.Refresh
+ if !ok {
+ user.Conn.Refresh = nil
+ }
+ fmt.Println("monitorSession1", item, ok)
+}
+
+func loopPresence(user *User) {
+ for {
for cid, contact := range user.contactsPresence {
puppet := user.bridge.GetPuppetByJID(cid)
_ = puppet.DefaultIntent().SetPresence(event.Presence(strings.ToLower(contact.Availability)))
From 9d7d8224c4b0aab7bdde6bbd1a865bac96011008 Mon Sep 17 00:00:00 2001
From: zhaoYangguang <1163765691@qq.com>
Date: Thu, 27 May 2021 18:31:20 +0800
Subject: [PATCH 12/18] automatic refresh of access token
---
main.go | 6 ++---
portal.go | 77 ++++++++++++++++++++++++++++++++++++-------------------
user.go | 14 +++++++++-
3 files changed, 66 insertions(+), 31 deletions(-)
diff --git a/main.go b/main.go
index 9bc4dda..1bb2dcb 100644
--- a/main.go
+++ b/main.go
@@ -244,8 +244,8 @@ func (bridge *Bridge) Start() {
bridge.Log.Fatalln("Failed to initialize database:", err)
os.Exit(15)
}
- bridge.Log.Debugln("Checking connection to homeserver")
- bridge.ensureConnection()
+ //bridge.Log.Debugln("Checking connection to homeserver")
+ //bridge.ensureConnection()
if bridge.Crypto != nil {
err := bridge.Crypto.Init()
if err != nil {
@@ -377,7 +377,7 @@ func (bridge *Bridge) Main() {
func main() {
flag.SetHelpTitles(
- "matrix-skype - A Matrix-WhatsApp puppeting bridge.",
+ "matrix-skype - A Matrix-Skype puppeting bridge.",
"matrix-skype [-h] [-c ] [-r ] [-g] [--migrate-db