mirror of
https://github.com/cwinfo/matterbridge.git
synced 2025-06-27 11:09:24 +00:00
Compare commits
11 Commits
dependabot
...
v1.14.4
Author | SHA1 | Date | |
---|---|---|---|
6d8cccccf1 | |||
dd63438e7b | |||
5f5d6c6e8a | |||
aefa8a9341 | |||
1c3e764d57 | |||
0b03076a9d | |||
1e6a2bc8f7 | |||
82fe80e52f | |||
db012bd9b7 | |||
dd2374158b | |||
6693157258 |
@ -156,7 +156,10 @@ func (b *Birc) handleOtherAuth(client *girc.Client, event girc.Event) {
|
|||||||
b.handleNickServ()
|
b.handleNickServ()
|
||||||
b.handleRunCommands()
|
b.handleRunCommands()
|
||||||
// we are now fully connected
|
// we are now fully connected
|
||||||
b.connected <- nil
|
// only send on first connection
|
||||||
|
if b.FirstConnection {
|
||||||
|
b.connected <- nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Birc) handlePrivMsg(client *girc.Client, event girc.Event) {
|
func (b *Birc) handlePrivMsg(client *girc.Client, event girc.Event) {
|
||||||
|
@ -186,6 +186,12 @@ func (b *Bmattermost) skipMessage(message *matterclient.Message) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ignore non-post messages
|
||||||
|
if message.Post == nil {
|
||||||
|
b.Log.Debugf("ignoring nil message.Post: %#v", message)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// Ignore messages sent from matterbridge
|
// Ignore messages sent from matterbridge
|
||||||
if message.Post.Props != nil {
|
if message.Post.Props != nil {
|
||||||
if _, ok := message.Post.Props["matterbridge_"+b.uuid].(bool); ok {
|
if _, ok := message.Post.Props["matterbridge_"+b.uuid].(bool); ok {
|
||||||
|
@ -121,6 +121,12 @@ func (b *Bmattermost) Send(msg config.Message) (string, error) {
|
|||||||
return msg.ID, b.mc.DeleteMessage(msg.ID)
|
return msg.ID, b.mc.DeleteMessage(msg.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle prefix hint for unthreaded messages.
|
||||||
|
if msg.ParentID == "msg-parent-not-found" {
|
||||||
|
msg.ParentID = ""
|
||||||
|
msg.Text = fmt.Sprintf("[thread]: %s", msg.Text)
|
||||||
|
}
|
||||||
|
|
||||||
// Upload a file if it exists
|
// Upload a file if it exists
|
||||||
if msg.Extra != nil {
|
if msg.Extra != nil {
|
||||||
for _, rmsg := range helper.HandleExtra(&msg, b.General) {
|
for _, rmsg := range helper.HandleExtra(&msg, b.General) {
|
||||||
|
@ -22,20 +22,20 @@ func (b *Bslack) handleSlack() {
|
|||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
b.Log.Debug("Start listening for Slack messages")
|
b.Log.Debug("Start listening for Slack messages")
|
||||||
for message := range messages {
|
for message := range messages {
|
||||||
if message.Event != config.EventUserTyping {
|
// don't do any action on deleted/typing messages
|
||||||
|
if message.Event != config.EventUserTyping && message.Event != config.EventMsgDelete {
|
||||||
b.Log.Debugf("<= Sending message from %s on %s to gateway", message.Username, b.Account)
|
b.Log.Debugf("<= Sending message from %s on %s to gateway", message.Username, b.Account)
|
||||||
|
// cleanup the message
|
||||||
|
message.Text = b.replaceMention(message.Text)
|
||||||
|
message.Text = b.replaceVariable(message.Text)
|
||||||
|
message.Text = b.replaceChannel(message.Text)
|
||||||
|
message.Text = b.replaceURL(message.Text)
|
||||||
|
message.Text = html.UnescapeString(message.Text)
|
||||||
|
|
||||||
|
// Add the avatar
|
||||||
|
message.Avatar = b.users.getAvatar(message.UserID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// cleanup the message
|
|
||||||
message.Text = b.replaceMention(message.Text)
|
|
||||||
message.Text = b.replaceVariable(message.Text)
|
|
||||||
message.Text = b.replaceChannel(message.Text)
|
|
||||||
message.Text = b.replaceURL(message.Text)
|
|
||||||
message.Text = html.UnescapeString(message.Text)
|
|
||||||
|
|
||||||
// Add the avatar
|
|
||||||
message.Avatar = b.users.getAvatar(message.UserID)
|
|
||||||
|
|
||||||
b.Log.Debugf("<= Message is %#v", message)
|
b.Log.Debugf("<= Message is %#v", message)
|
||||||
b.Remote <- *message
|
b.Remote <- *message
|
||||||
}
|
}
|
||||||
|
@ -87,6 +87,11 @@ func (b *users) populateUser(userID string) {
|
|||||||
// in case the previous query failed for some reason.
|
// in case the previous query failed for some reason.
|
||||||
} else {
|
} else {
|
||||||
b.usersSyncPoints[userID] = make(chan struct{})
|
b.usersSyncPoints[userID] = make(chan struct{})
|
||||||
|
defer func() {
|
||||||
|
// Wake up any waiting goroutines and remove the synchronization point.
|
||||||
|
close(b.usersSyncPoints[userID])
|
||||||
|
delete(b.usersSyncPoints, userID)
|
||||||
|
}()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,10 +111,6 @@ func (b *users) populateUser(userID string) {
|
|||||||
|
|
||||||
// Register user information.
|
// Register user information.
|
||||||
b.users[userID] = user
|
b.users[userID] = user
|
||||||
|
|
||||||
// Wake up any waiting goroutines and remove the synchronization point.
|
|
||||||
close(b.usersSyncPoints[userID])
|
|
||||||
delete(b.usersSyncPoints, userID)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *users) populateUsers(wait bool) {
|
func (b *users) populateUsers(wait bool) {
|
||||||
|
15
changelog.md
15
changelog.md
@ -1,3 +1,18 @@
|
|||||||
|
# v1.14.4
|
||||||
|
|
||||||
|
## Bugfix
|
||||||
|
* mattermost: Add Id to EditMessage (mattermost). Fixes #802
|
||||||
|
* mattermost: Fix panic on nil message.Post (mattermost). Fixes #804
|
||||||
|
* mattermost: Handle unthreaded messages (mattermost). Fixes #803
|
||||||
|
* mattermost: Use paging in initUser and UpdateUsers (mattermost)
|
||||||
|
* slack: Add lacking clean-up in Slack synchronisation (#811)
|
||||||
|
* slack: Disable user lookups on delete messages (slack) (#812)
|
||||||
|
|
||||||
|
# v1.14.3
|
||||||
|
|
||||||
|
## Bugfix
|
||||||
|
* irc: Fix deadlock on reconnect (irc). Closes #757
|
||||||
|
|
||||||
# v1.14.2
|
# v1.14.2
|
||||||
|
|
||||||
## Bugfix
|
## Bugfix
|
||||||
|
@ -15,7 +15,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
version = "1.14.2"
|
version = "1.14.4"
|
||||||
githash string
|
githash string
|
||||||
|
|
||||||
flagConfig = flag.String("conf", "matterbridge.toml", "config file")
|
flagConfig = flag.String("conf", "matterbridge.toml", "config file")
|
||||||
|
@ -27,7 +27,7 @@ UseTLS=false
|
|||||||
#OPTIONAL (default false)
|
#OPTIONAL (default false)
|
||||||
UseSASL=false
|
UseSASL=false
|
||||||
|
|
||||||
#Enable to not verify the certificate on your irc server. i
|
#Enable to not verify the certificate on your irc server.
|
||||||
#e.g. when using selfsigned certificates
|
#e.g. when using selfsigned certificates
|
||||||
#OPTIONAL (default false)
|
#OPTIONAL (default false)
|
||||||
SkipTLSVerify=true
|
SkipTLSVerify=true
|
||||||
|
@ -132,14 +132,25 @@ func (m *MMClient) initUser() error {
|
|||||||
return resp.Error
|
return resp.Error
|
||||||
}
|
}
|
||||||
for _, team := range teams {
|
for _, team := range teams {
|
||||||
mmusers, resp := m.Client.GetUsersInTeam(team.Id, 0, 50000, "")
|
idx := 0
|
||||||
|
max := 200
|
||||||
|
usermap := make(map[string]*model.User)
|
||||||
|
mmusers, resp := m.Client.GetUsersInTeam(team.Id, idx, max, "")
|
||||||
if resp.Error != nil {
|
if resp.Error != nil {
|
||||||
return errors.New(resp.Error.DetailedError)
|
return errors.New(resp.Error.DetailedError)
|
||||||
}
|
}
|
||||||
usermap := make(map[string]*model.User)
|
for len(mmusers) > 0 {
|
||||||
for _, user := range mmusers {
|
for _, user := range mmusers {
|
||||||
usermap[user.Id] = user
|
usermap[user.Id] = user
|
||||||
|
}
|
||||||
|
mmusers, resp = m.Client.GetUsersInTeam(team.Id, idx, max, "")
|
||||||
|
if resp.Error != nil {
|
||||||
|
return errors.New(resp.Error.DetailedError)
|
||||||
|
}
|
||||||
|
idx++
|
||||||
|
time.Sleep(time.Millisecond * 200)
|
||||||
}
|
}
|
||||||
|
m.logger.Infof("found %d users in team %s", len(usermap), team.Name)
|
||||||
|
|
||||||
t := &Team{Team: team, Users: usermap, Id: team.Id}
|
t := &Team{Team: team, Users: usermap, Id: team.Id}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ func (m *MMClient) DeleteMessage(postId string) error { //nolint:golint
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MMClient) EditMessage(postId string, text string) (string, error) { //nolint:golint
|
func (m *MMClient) EditMessage(postId string, text string) (string, error) { //nolint:golint
|
||||||
post := &model.Post{Message: text}
|
post := &model.Post{Message: text, Id: postId}
|
||||||
res, resp := m.Client.UpdatePost(postId, post)
|
res, resp := m.Client.UpdatePost(postId, post)
|
||||||
if resp.Error != nil {
|
if resp.Error != nil {
|
||||||
return "", resp.Error
|
return "", resp.Error
|
||||||
|
@ -2,6 +2,7 @@ package matterclient
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/model"
|
"github.com/mattermost/mattermost-server/model"
|
||||||
)
|
)
|
||||||
@ -99,15 +100,25 @@ func (m *MMClient) GetUsers() map[string]*model.User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *MMClient) UpdateUsers() error {
|
func (m *MMClient) UpdateUsers() error {
|
||||||
mmusers, resp := m.Client.GetUsers(0, 50000, "")
|
idx := 0
|
||||||
|
max := 200
|
||||||
|
mmusers, resp := m.Client.GetUsers(idx, max, "")
|
||||||
if resp.Error != nil {
|
if resp.Error != nil {
|
||||||
return errors.New(resp.Error.DetailedError)
|
return errors.New(resp.Error.DetailedError)
|
||||||
}
|
}
|
||||||
m.Lock()
|
for len(mmusers) > 0 {
|
||||||
for _, user := range mmusers {
|
m.Lock()
|
||||||
m.Users[user.Id] = user
|
for _, user := range mmusers {
|
||||||
|
m.Users[user.Id] = user
|
||||||
|
}
|
||||||
|
m.Unlock()
|
||||||
|
mmusers, resp = m.Client.GetUsers(idx, max, "")
|
||||||
|
time.Sleep(time.Millisecond * 300)
|
||||||
|
if resp.Error != nil {
|
||||||
|
return errors.New(resp.Error.DetailedError)
|
||||||
|
}
|
||||||
|
idx++
|
||||||
}
|
}
|
||||||
m.Unlock()
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user