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.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