Merge branch 'develop'
This commit is contained in:
commit
edb0eb1d08
|
@ -29,6 +29,7 @@ type Config struct {
|
|||
Homeserver struct {
|
||||
Address string `yaml:"address"`
|
||||
Domain string `yaml:"domain"`
|
||||
ServerName string `yaml:"server_name"`
|
||||
} `yaml:"homeserver"`
|
||||
|
||||
AppService struct {
|
||||
|
|
|
@ -4,6 +4,8 @@ homeserver:
|
|||
address: https://example.com
|
||||
# The domain of the homeserver (for MXIDs, etc).
|
||||
domain: example.com
|
||||
# If you don’t know what this is, no need to modify(for parse "mention user/reply message, etc")
|
||||
server_name: matrix.to
|
||||
|
||||
# Application service host/registration related details.
|
||||
# Changing these values requires regeneration of the registration.
|
||||
|
|
|
@ -138,8 +138,8 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
|
|||
msgMXID = string(msg.MXID)
|
||||
}
|
||||
mxid, _ = formatter.getMatrixInfoByJID("8:" + match[1] + skypeExt.NewUserSuffix)
|
||||
href1 := fmt.Sprintf(`https://%s/#/room/%s/%s?via=%s`, formatter.bridge.Config.Homeserver.Domain, RoomMXID, msgMXID, formatter.bridge.Config.Homeserver.Domain)
|
||||
href2 := fmt.Sprintf(`https://%s/#/user/%s`, formatter.bridge.Config.Homeserver.Domain, mxid)
|
||||
href1 := fmt.Sprintf(`https://%s/#/room/%s/%s?via=%s`, formatter.bridge.Config.Homeserver.ServerName, RoomMXID, msgMXID, formatter.bridge.Config.Homeserver.Domain)
|
||||
href2 := fmt.Sprintf(`https://%s/#/user/%s`, formatter.bridge.Config.Homeserver.ServerName, mxid)
|
||||
newContent := fmt.Sprintf(`<mx-reply><blockquote><a href="%s">In reply to</a> <a href="%s">%s</a><br>%s</blockquote></mx-reply>`,
|
||||
href1,
|
||||
href2,
|
||||
|
@ -170,9 +170,10 @@ func (formatter *Formatter) ParseSkype(content *event.MessageEventContent, RoomM
|
|||
if len(matches) > 0 {
|
||||
for _, match := range matches {
|
||||
mxid, displayname := formatter.getMatrixInfoByJID(match[1] + skypeExt.NewUserSuffix)
|
||||
number := "@" + strings.Replace(match[1], skypeExt.NewUserSuffix, "", 1)
|
||||
originStr = strings.ReplaceAll(originStr, match[0], fmt.Sprintf(`<a href="https://%s/#/%s">%s</a>:`, formatter.bridge.Config.Homeserver.Domain, mxid, displayname))
|
||||
originBodyStr = strings.Replace(originStr, number, displayname, -1)
|
||||
// number := "@" + strings.Replace(match[1], skypeExt.NewUserSuffix, "", 1)
|
||||
replaceStr := fmt.Sprintf(`<a href="https://%s/#/%s">%s</a>:`, formatter.bridge.Config.Homeserver.ServerName, mxid, displayname)
|
||||
originStr = strings.ReplaceAll(originStr, match[0], replaceStr)
|
||||
originBodyStr = strings.ReplaceAll(originStr, replaceStr, displayname + ":")
|
||||
}
|
||||
if len(backStr) == 0 {
|
||||
content.Format = event.FormatHTML
|
||||
|
|
2
go.mod
2
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.20210120095455-33c3f50415c4
|
||||
github.com/kelaresg/go-skypeapi v0.1.2-0.20210128115834-086b2e03dd09
|
||||
github.com/lib/pq v1.7.0
|
||||
github.com/mattn/go-sqlite3 v2.0.3+incompatible
|
||||
github.com/pkg/errors v0.9.1
|
||||
|
|
2
go.sum
2
go.sum
|
@ -160,6 +160,8 @@ github.com/kelaresg/go-skypeapi v0.1.2-0.20201211120317-8651f9f08575 h1:4M0mtPS+
|
|||
github.com/kelaresg/go-skypeapi v0.1.2-0.20201211120317-8651f9f08575/go.mod h1:2Mxwa2Flo+PKlVYEM4QBNgs408C/mUSBXRzAb6+B+Zg=
|
||||
github.com/kelaresg/go-skypeapi v0.1.2-0.20210120095455-33c3f50415c4 h1:8tif5ndoTRHAOj4j2Ump9uyDaKoQ/W17dJ2K36G418U=
|
||||
github.com/kelaresg/go-skypeapi v0.1.2-0.20210120095455-33c3f50415c4/go.mod h1:2Mxwa2Flo+PKlVYEM4QBNgs408C/mUSBXRzAb6+B+Zg=
|
||||
github.com/kelaresg/go-skypeapi v0.1.2-0.20210128115834-086b2e03dd09 h1:Hy1sgotN3qqglcmoT4G295UiX7Ucdyn/mGq/GlwDNgc=
|
||||
github.com/kelaresg/go-skypeapi v0.1.2-0.20210128115834-086b2e03dd09/go.mod h1:2Mxwa2Flo+PKlVYEM4QBNgs408C/mUSBXRzAb6+B+Zg=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
|
|
|
@ -257,7 +257,7 @@ func (mx *MatrixHandler) HandleMembership(evt *event.Event) {
|
|||
}
|
||||
|
||||
user := mx.bridge.GetUserByMXID(evt.Sender)
|
||||
if user == nil || user.Conn == nil || !user.Whitelisted || !user.IsConnected() {
|
||||
if user == nil || user.Conn == nil || user.Conn.LoginInfo == nil || !user.Whitelisted || !user.IsConnected() {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -307,7 +307,7 @@ func (mx *MatrixHandler) HandleRoomMetadata(evt *event.Event) {
|
|||
}
|
||||
|
||||
portal := mx.bridge.GetPortalByMXID(evt.RoomID)
|
||||
if user.Conn == nil || portal == nil || portal.IsPrivateChat() {
|
||||
if user.Conn == nil || user.Conn.LoginInfo == nil || portal == nil || portal.IsPrivateChat() {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -449,7 +449,7 @@ func (mx *MatrixHandler) HandleRedaction(evt *event.Event) {
|
|||
}
|
||||
|
||||
portal := mx.bridge.GetPortalByMXID(evt.RoomID)
|
||||
if user.Conn != nil && portal != nil {
|
||||
if user.Conn != nil && user.Conn.LoginInfo != nil && portal != nil {
|
||||
portal.HandleMatrixRedaction(user, evt)
|
||||
}
|
||||
}
|
||||
|
|
16
portal.go
16
portal.go
|
@ -1420,8 +1420,8 @@ func (portal *Portal) sendMessage(intent *appservice.IntentAPI, eventType event.
|
|||
"net.maunium.whatsapp.puppet": intent.IsCustomPuppet,
|
||||
}
|
||||
}
|
||||
fmt.Println()
|
||||
fmt.Printf("portal sendMessage0: %+v", content)
|
||||
fmt.Println("portal sendMessage timestamp:", timestamp)
|
||||
fmt.Printf("portal sendMessage: %+v", content)
|
||||
if portal.Encrypted && portal.bridge.Crypto != nil {
|
||||
encrypted, err := portal.bridge.Crypto.Encrypt(portal.MXID, eventType, wrappedContent)
|
||||
if err != nil {
|
||||
|
@ -1431,12 +1431,8 @@ func (portal *Portal) sendMessage(intent *appservice.IntentAPI, eventType event.
|
|||
wrappedContent.Parsed = encrypted
|
||||
}
|
||||
if timestamp == 0 {
|
||||
fmt.Println()
|
||||
fmt.Printf("portal sendMessage1: %+v", content)
|
||||
return intent.SendMessageEvent(portal.MXID, eventType, &wrappedContent)
|
||||
} else {
|
||||
fmt.Println()
|
||||
fmt.Printf("portal sendMessage2: %+v", content)
|
||||
return intent.SendMassagedMessageEvent(portal.MXID, eventType, &wrappedContent, timestamp)
|
||||
}
|
||||
}
|
||||
|
@ -2042,7 +2038,7 @@ func (portal *Portal) convertMatrixMessageSkype(sender *User, evt *event.Event)
|
|||
}
|
||||
|
||||
// mention user message
|
||||
r := regexp.MustCompile(`(?m)<a[^>]+\bhref="(.*?)://` + portal.bridge.Config.Homeserver.Domain + `/#/@([^"]+):(.*?)">(.*?)</a>`)
|
||||
r := regexp.MustCompile(`(?m)<a[^>]+\bhref="(.*?)://` + portal.bridge.Config.Homeserver.ServerName + `/#/@([^"]+):(.*?)">(.*?)</a>`)
|
||||
matches := r.FindAllStringSubmatch(matchStr, -1)
|
||||
fmt.Println("matches: ", matches)
|
||||
if len(matches) > 0 {
|
||||
|
@ -2226,6 +2222,7 @@ func (portal *Portal) HandleMatrixMessage(sender *User, evt *event.Event) {
|
|||
|
||||
func SendMsg(sender *User, chatThreadId string, content *skype.SendMessage, output chan<- error) (err error) {
|
||||
fmt.Println("message SendMsg type: ", content.Type)
|
||||
if sender.Conn.LoginInfo != nil {
|
||||
switch event.MessageType(content.Type) {
|
||||
case event.MsgText, event.MsgEmote, event.MsgNotice:
|
||||
err = sender.Conn.SendText(chatThreadId, content)
|
||||
|
@ -2247,9 +2244,12 @@ func SendMsg(sender *User, chatThreadId string, content *skype.SendMessage, outp
|
|||
default:
|
||||
err = errors.New("send to skype(unknown message type)")
|
||||
}
|
||||
} else {
|
||||
err = errors.New("Not logged into Skype or Skype session has expired")
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
output <- fmt.Errorf("message sending responded with %d", err)
|
||||
output <- err
|
||||
} else {
|
||||
output <- nil
|
||||
}
|
||||
|
|
54
user.go
54
user.go
|
@ -12,8 +12,6 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
//"github.com/pkg/errors"
|
||||
"github.com/skip2/go-qrcode"
|
||||
log "maunium.net/go/maulogger/v2"
|
||||
"maunium.net/go/mautrix"
|
||||
|
||||
|
@ -328,58 +326,6 @@ func (user *User) IsLoginInProgress() bool {
|
|||
return user.Conn != nil && user.Conn.IsLoginInProgress()
|
||||
}
|
||||
|
||||
func (user *User) loginQrChannel(ce *CommandEvent, qrChan <-chan string, eventIDChan chan<- id.EventID) {
|
||||
var qrEventID id.EventID
|
||||
for code := range qrChan {
|
||||
if code == "stop" {
|
||||
return
|
||||
}
|
||||
qrCode, err := qrcode.Encode(code, qrcode.Low, 256)
|
||||
if err != nil {
|
||||
user.log.Errorln("Failed to encode QR code:", err)
|
||||
ce.Reply("Failed to encode QR code: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
bot := user.bridge.AS.BotClient()
|
||||
|
||||
resp, err := bot.UploadBytes(qrCode, "image/png")
|
||||
if err != nil {
|
||||
user.log.Errorln("Failed to upload QR code:", err)
|
||||
ce.Reply("Failed to upload QR code: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if qrEventID == "" {
|
||||
sendResp, err := bot.SendImage(ce.RoomID, code, resp.ContentURI)
|
||||
if err != nil {
|
||||
user.log.Errorln("Failed to send QR code to user:", err)
|
||||
return
|
||||
}
|
||||
qrEventID = sendResp.EventID
|
||||
eventIDChan <- qrEventID
|
||||
} else {
|
||||
_, err = bot.SendMessageEvent(ce.RoomID, event.EventMessage, &event.MessageEventContent{
|
||||
MsgType: event.MsgImage,
|
||||
Body: code,
|
||||
URL: resp.ContentURI.CUString(),
|
||||
NewContent: &event.MessageEventContent{
|
||||
MsgType: event.MsgImage,
|
||||
Body: code,
|
||||
URL: resp.ContentURI.CUString(),
|
||||
},
|
||||
RelatesTo: &event.RelatesTo{
|
||||
Type: event.RelReplace,
|
||||
EventID: qrEventID,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
user.log.Errorln("Failed to send edited QR code to user:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (user *User) Login(ce *CommandEvent, name string, password string) (err error) {
|
||||
if user.contactsPresence == nil {
|
||||
user.contactsPresence = make(map[string]*skypeExt.Presence)
|
||||
|
|
Loading…
Reference in New Issue