forked from lug/matterbridge
		
	Compare commits
	
		
			11 Commits
		
	
	
		
	
	| 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.handleRunCommands()
 | 
			
		||||
	// 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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -186,6 +186,12 @@ func (b *Bmattermost) skipMessage(message *matterclient.Message) bool {
 | 
			
		||||
		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
 | 
			
		||||
	if message.Post.Props != nil {
 | 
			
		||||
		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)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 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
 | 
			
		||||
	if msg.Extra != nil {
 | 
			
		||||
		for _, rmsg := range helper.HandleExtra(&msg, b.General) {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,20 +22,20 @@ func (b *Bslack) handleSlack() {
 | 
			
		||||
	time.Sleep(time.Second)
 | 
			
		||||
	b.Log.Debug("Start listening for Slack 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)
 | 
			
		||||
			// 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.Remote <- *message
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -87,6 +87,11 @@ func (b *users) populateUser(userID string) {
 | 
			
		||||
			// in case the previous query failed for some reason.
 | 
			
		||||
		} else {
 | 
			
		||||
			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
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -106,10 +111,6 @@ func (b *users) populateUser(userID string) {
 | 
			
		||||
 | 
			
		||||
	// Register user information.
 | 
			
		||||
	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) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
 | 
			
		||||
## Bugfix
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	version = "1.14.2"
 | 
			
		||||
	version = "1.14.4"
 | 
			
		||||
	githash string
 | 
			
		||||
 | 
			
		||||
	flagConfig  = flag.String("conf", "matterbridge.toml", "config file")
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ UseTLS=false
 | 
			
		||||
#OPTIONAL (default 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
 | 
			
		||||
#OPTIONAL (default false)
 | 
			
		||||
SkipTLSVerify=true
 | 
			
		||||
 
 | 
			
		||||
@@ -132,14 +132,25 @@ func (m *MMClient) initUser() error {
 | 
			
		||||
		return resp.Error
 | 
			
		||||
	}
 | 
			
		||||
	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 {
 | 
			
		||||
			return errors.New(resp.Error.DetailedError)
 | 
			
		||||
		}
 | 
			
		||||
		usermap := make(map[string]*model.User)
 | 
			
		||||
		for _, user := range mmusers {
 | 
			
		||||
			usermap[user.Id] = user
 | 
			
		||||
		for len(mmusers) > 0 {
 | 
			
		||||
			for _, user := range mmusers {
 | 
			
		||||
				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}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
	post := &model.Post{Message: text}
 | 
			
		||||
	post := &model.Post{Message: text, Id: postId}
 | 
			
		||||
	res, resp := m.Client.UpdatePost(postId, post)
 | 
			
		||||
	if resp.Error != nil {
 | 
			
		||||
		return "", resp.Error
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package matterclient
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/mattermost/mattermost-server/model"
 | 
			
		||||
)
 | 
			
		||||
@@ -99,15 +100,25 @@ func (m *MMClient) GetUsers() map[string]*model.User {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 {
 | 
			
		||||
		return errors.New(resp.Error.DetailedError)
 | 
			
		||||
	}
 | 
			
		||||
	m.Lock()
 | 
			
		||||
	for _, user := range mmusers {
 | 
			
		||||
		m.Users[user.Id] = user
 | 
			
		||||
	for len(mmusers) > 0 {
 | 
			
		||||
		m.Lock()
 | 
			
		||||
		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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user