mirror of
https://github.com/42wim/matterbridge.git
synced 2024-11-29 06:02:01 -08:00
Format
This commit is contained in:
parent
729460b1ea
commit
723a426203
@ -84,4 +84,4 @@ func (b *Bsoulseek) handleDM(msg privateMessageReceive) {
|
|||||||
b.doDisconnect()
|
b.doDisconnect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,9 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
type soulseekMessage interface {}
|
type soulseekMessage interface{}
|
||||||
type soulseekMessageResponse interface {}
|
|
||||||
|
type soulseekMessageResponse interface{}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
loginMessageCode uint32 = 1
|
loginMessageCode uint32 = 1
|
||||||
@ -21,31 +22,30 @@ const (
|
|||||||
userLeftRoomMessageCode uint32 = 17
|
userLeftRoomMessageCode uint32 = 17
|
||||||
privateMessageCode uint32 = 22
|
privateMessageCode uint32 = 22
|
||||||
kickedMessageCode uint32 = 41
|
kickedMessageCode uint32 = 41
|
||||||
changePasswordMessageCode uint32 = 142
|
changePasswordMessageCode uint32 = 142
|
||||||
)
|
)
|
||||||
|
|
||||||
var ignoreMessageCodes = map[uint32]bool {
|
var ignoreMessageCodes = map[uint32]bool{
|
||||||
7: true,
|
7: true,
|
||||||
64: true,
|
64: true,
|
||||||
69: true,
|
69: true,
|
||||||
83: true,
|
83: true,
|
||||||
84: true,
|
84: true,
|
||||||
104: true,
|
104: true,
|
||||||
113: true,
|
113: true,
|
||||||
114: true,
|
114: true,
|
||||||
115: true,
|
115: true,
|
||||||
130: true,
|
130: true,
|
||||||
133: true,
|
133: true,
|
||||||
139: true,
|
139: true,
|
||||||
140: true,
|
140: true,
|
||||||
145: true,
|
145: true,
|
||||||
146: true,
|
146: true,
|
||||||
148: true,
|
148: true,
|
||||||
160: true,
|
160: true,
|
||||||
1003: true,
|
1003: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 1: Login
|
// 1: Login
|
||||||
type loginMessage struct {
|
type loginMessage struct {
|
||||||
Code uint32
|
Code uint32
|
||||||
@ -67,21 +67,19 @@ type loginMessageResponseFailure struct {
|
|||||||
Reason string
|
Reason string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 13: Say in chatroom
|
// 13: Say in chatroom
|
||||||
type sayChatroomMessage struct {
|
type sayChatroomMessage struct {
|
||||||
Code uint32
|
Code uint32
|
||||||
Room string
|
Room string
|
||||||
Message string
|
Message string
|
||||||
}
|
}
|
||||||
|
|
||||||
type sayChatroomMessageReceive struct {
|
type sayChatroomMessageReceive struct {
|
||||||
Room string
|
Room string
|
||||||
Username string
|
Username string
|
||||||
Message string
|
Message string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 14: Join room
|
// 14: Join room
|
||||||
type joinRoomMessage struct {
|
type joinRoomMessage struct {
|
||||||
Code uint32
|
Code uint32
|
||||||
@ -107,45 +105,40 @@ type joinRoomMessageResponse struct {
|
|||||||
Operators []string
|
Operators []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 16: User joined room
|
// 16: User joined room
|
||||||
type userJoinedRoomMessage struct {
|
type userJoinedRoomMessage struct {
|
||||||
Room string
|
Room string
|
||||||
Username string
|
Username string
|
||||||
Status uint32
|
Status uint32
|
||||||
AvgSpeed uint32
|
AvgSpeed uint32
|
||||||
UploadNum uint64
|
UploadNum uint64
|
||||||
Files uint32
|
Files uint32
|
||||||
Dirs uint32
|
Dirs uint32
|
||||||
SlotsFree uint32
|
SlotsFree uint32
|
||||||
CountryCode string
|
CountryCode string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 16: User left room
|
// 16: User left room
|
||||||
type userLeftRoomMessage struct {
|
type userLeftRoomMessage struct {
|
||||||
Room string
|
Room string
|
||||||
Username string
|
Username string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 22: Private message (sometimes used by server to tell us errors)
|
// 22: Private message (sometimes used by server to tell us errors)
|
||||||
type privateMessageReceive struct {
|
type privateMessageReceive struct {
|
||||||
ID uint32
|
ID uint32
|
||||||
Timestamp uint32
|
Timestamp uint32
|
||||||
Username string
|
Username string
|
||||||
Message string
|
Message string
|
||||||
NewMessage bool
|
NewMessage bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 41: Kicked from server (relogged)
|
// 41: Kicked from server (relogged)
|
||||||
type kickedMessageResponse struct {}
|
type kickedMessageResponse struct{}
|
||||||
|
|
||||||
|
|
||||||
// 142: Change password
|
// 142: Change password
|
||||||
type changePasswordMessage struct {
|
type changePasswordMessage struct {
|
||||||
Code uint32
|
Code uint32
|
||||||
Password string
|
Password string
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +146,6 @@ type changePasswordMessageResponse struct {
|
|||||||
Password string
|
Password string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func packMessage(message soulseekMessage) ([]byte, error) {
|
func packMessage(message soulseekMessage) ([]byte, error) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
var length uint32 = 0
|
var length uint32 = 0
|
||||||
@ -363,4 +355,4 @@ func makeSayChatroomMessage(room string, text string) sayChatroomMessage {
|
|||||||
room,
|
room,
|
||||||
text,
|
text,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,14 +10,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Bsoulseek struct {
|
type Bsoulseek struct {
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
messagesToSend chan soulseekMessage
|
messagesToSend chan soulseekMessage
|
||||||
local chan config.Message
|
local chan config.Message
|
||||||
loginResponse chan soulseekMessageResponse
|
loginResponse chan soulseekMessageResponse
|
||||||
joinRoomResponse chan joinRoomMessageResponse
|
joinRoomResponse chan joinRoomMessageResponse
|
||||||
fatalErrors chan error
|
fatalErrors chan error
|
||||||
disconnect chan bool
|
disconnect chan bool
|
||||||
firstConnectResponse chan error
|
firstConnectResponse chan error
|
||||||
|
|
||||||
*bridge.Config
|
*bridge.Config
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@ func sliceEqual(s []string) bool {
|
|||||||
if len(s) <= 1 {
|
if len(s) <= 1 {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
for _, x := range(s) {
|
for _, x := range s {
|
||||||
if x != s[0] {
|
if x != s[0] {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -60,7 +60,7 @@ func sliceEqual(s []string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bsoulseek) sendMessages() {
|
func (b *Bsoulseek) sendMessages() {
|
||||||
lastFourChatMessages := []string {"1", "2", "3", ""}
|
lastFourChatMessages := []string{"1", "2", "3", ""}
|
||||||
for {
|
for {
|
||||||
message, more := <-b.messagesToSend
|
message, more := <-b.messagesToSend
|
||||||
if !more {
|
if !more {
|
||||||
@ -69,7 +69,7 @@ func (b *Bsoulseek) sendMessages() {
|
|||||||
msg, is_say := message.(sayChatroomMessage)
|
msg, is_say := message.(sayChatroomMessage)
|
||||||
if is_say {
|
if is_say {
|
||||||
// can't send 5 of the same message in a row or we get banned
|
// can't send 5 of the same message in a row or we get banned
|
||||||
if (sliceEqual(append(lastFourChatMessages, msg.Message))) {
|
if sliceEqual(append(lastFourChatMessages, msg.Message)) {
|
||||||
b.Log.Warnf("Dropping message: %s", msg.Message)
|
b.Log.Warnf("Dropping message: %s", msg.Message)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -174,11 +174,11 @@ func (b *Bsoulseek) loginLoop() {
|
|||||||
|
|
||||||
// Now we are connected
|
// Now we are connected
|
||||||
select {
|
select {
|
||||||
case err = <- b.fatalErrors:
|
case err = <-b.fatalErrors:
|
||||||
b.Log.Errorf("%s", err)
|
b.Log.Errorf("%s", err)
|
||||||
// Retry connect
|
// Retry connect
|
||||||
continue
|
continue
|
||||||
case <- b.disconnect:
|
case <-b.disconnect:
|
||||||
// We are done
|
// We are done
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -191,7 +191,6 @@ func (b *Bsoulseek) Connect() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (b *Bsoulseek) JoinChannel(channel config.ChannelInfo) error {
|
func (b *Bsoulseek) JoinChannel(channel config.ChannelInfo) error {
|
||||||
b.messagesToSend <- makeJoinRoomMessage(channel.Name)
|
b.messagesToSend <- makeJoinRoomMessage(channel.Name)
|
||||||
select {
|
select {
|
||||||
@ -203,18 +202,16 @@ func (b *Bsoulseek) JoinChannel(channel config.ChannelInfo) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (b *Bsoulseek) Send(msg config.Message) (string, error) {
|
func (b *Bsoulseek) Send(msg config.Message) (string, error) {
|
||||||
// Only process text messages
|
// Only process text messages
|
||||||
b.Log.Debugf("=> Received local message %v", msg)
|
b.Log.Debugf("=> Received local message %v", msg)
|
||||||
if msg.Event != "" && msg.Event != config.EventUserAction && msg.Event != config.EventJoinLeave {
|
if msg.Event != "" && msg.Event != config.EventUserAction && msg.Event != config.EventJoinLeave {
|
||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
b.messagesToSend <- makeSayChatroomMessage(msg.Channel, msg.Username + msg.Text)
|
b.messagesToSend <- makeSayChatroomMessage(msg.Channel, msg.Username+msg.Text)
|
||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (b *Bsoulseek) doDisconnect() error {
|
func (b *Bsoulseek) doDisconnect() error {
|
||||||
b.disconnect <- true
|
b.disconnect <- true
|
||||||
close(b.messagesToSend)
|
close(b.messagesToSend)
|
||||||
@ -224,8 +221,7 @@ func (b *Bsoulseek) doDisconnect() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (b *Bsoulseek) Disconnect() error {
|
func (b *Bsoulseek) Disconnect() error {
|
||||||
b.doDisconnect()
|
b.doDisconnect()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user