mirror of
https://github.com/mumble-voip/grumble.git
synced 2026-01-09 11:31:59 -08:00
Add message numbers to mumbleproto package.
This commit is contained in:
parent
4d5b897d66
commit
7482d5cb19
6 changed files with 112 additions and 108 deletions
83
message.go
83
message.go
|
|
@ -12,48 +12,11 @@ import (
|
|||
"grumble/ban"
|
||||
"grumble/blobstore"
|
||||
"grumble/freezer"
|
||||
"mumbleproto"
|
||||
"grumble/mumbleproto"
|
||||
"net"
|
||||
"time"
|
||||
)
|
||||
|
||||
// These are the different kinds of messages
|
||||
// that are defined for the Mumble protocol
|
||||
const (
|
||||
MessageVersion = iota
|
||||
MessageUDPTunnel
|
||||
MessageAuthenticate
|
||||
MessagePing
|
||||
MessageReject
|
||||
MessageServerSync
|
||||
MessageChannelRemove
|
||||
MessageChannelState
|
||||
MessageUserRemove
|
||||
MessageUserState
|
||||
MessageBanList
|
||||
MessageTextMessage
|
||||
MessagePermissionDenied
|
||||
MessageACL
|
||||
MessageQueryUsers
|
||||
MessageCryptSetup
|
||||
MessageContextActionAdd
|
||||
MessageContextAction
|
||||
MessageUserList
|
||||
MessageVoiceTarget
|
||||
MessagePermissionQuery
|
||||
MessageCodecVersion
|
||||
MessageUserStats
|
||||
MessageRequestBlob
|
||||
MessageServerConfig
|
||||
)
|
||||
|
||||
const (
|
||||
UDPMessageVoiceCELTAlpha = iota
|
||||
UDPMessagePing
|
||||
UDPMessageVoiceSpeex
|
||||
UDPMessageVoiceCELTBeta
|
||||
)
|
||||
|
||||
type Message struct {
|
||||
buf []byte
|
||||
|
||||
|
|
@ -94,7 +57,7 @@ func (server *Server) handleCryptSetup(client *Client, msg *Message) {
|
|||
if copy(cs.ClientNonce, client.crypt.EncryptIV[0:]) != aes.BlockSize {
|
||||
return
|
||||
}
|
||||
client.sendProtoMessage(MessageCryptSetup, cs)
|
||||
client.sendProtoMessage(mumbleproto.MessageCryptSetup, cs)
|
||||
} else {
|
||||
client.Printf("Received client nonce")
|
||||
if len(cs.ClientNonce) != aes.BlockSize {
|
||||
|
|
@ -150,7 +113,7 @@ func (server *Server) handlePingMessage(client *Client, msg *Message) {
|
|||
client.TcpPackets = *ping.TcpPackets
|
||||
}
|
||||
|
||||
client.sendProtoMessage(MessagePing, &mumbleproto.Ping{
|
||||
client.sendProtoMessage(mumbleproto.MessagePing, &mumbleproto.Ping{
|
||||
Timestamp: ping.Timestamp,
|
||||
Good: proto.Uint32(uint32(client.crypt.Good)),
|
||||
Late: proto.Uint32(uint32(client.crypt.Late)),
|
||||
|
|
@ -339,7 +302,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) {
|
|||
chanstate.ChannelId = proto.Uint32(uint32(channel.Id))
|
||||
|
||||
// Broadcast channel add
|
||||
server.broadcastProtoMessageWithPredicate(MessageChannelState, chanstate, func(client *Client) bool {
|
||||
server.broadcastProtoMessageWithPredicate(mumbleproto.MessageChannelState, chanstate, func(client *Client) bool {
|
||||
return client.Version < 0x10202
|
||||
})
|
||||
|
||||
|
|
@ -348,7 +311,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) {
|
|||
chanstate.Description = nil
|
||||
chanstate.DescriptionHash = channel.DescriptionBlobHashBytes()
|
||||
}
|
||||
server.broadcastProtoMessageWithPredicate(MessageChannelState, chanstate, func(client *Client) bool {
|
||||
server.broadcastProtoMessageWithPredicate(mumbleproto.MessageChannelState, chanstate, func(client *Client) bool {
|
||||
return client.Version >= 0x10202
|
||||
})
|
||||
|
||||
|
|
@ -358,7 +321,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) {
|
|||
userstate.Session = proto.Uint32(client.Session)
|
||||
userstate.ChannelId = proto.Uint32(uint32(channel.Id))
|
||||
server.userEnterChannel(client, channel, userstate)
|
||||
server.broadcastProtoMessage(MessageUserState, userstate)
|
||||
server.broadcastProtoMessage(mumbleproto.MessageUserState, userstate)
|
||||
}
|
||||
} else {
|
||||
// Edit existing channel.
|
||||
|
|
@ -503,7 +466,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) {
|
|||
}
|
||||
|
||||
// Broadcast the update
|
||||
server.broadcastProtoMessageWithPredicate(MessageChannelState, chanstate, func(client *Client) bool {
|
||||
server.broadcastProtoMessageWithPredicate(mumbleproto.MessageChannelState, chanstate, func(client *Client) bool {
|
||||
return client.Version < 0x10202
|
||||
})
|
||||
|
||||
|
|
@ -513,7 +476,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) {
|
|||
chanstate.DescriptionHash = channel.DescriptionBlobHashBytes()
|
||||
}
|
||||
chanstate.DescriptionHash = channel.DescriptionBlobHashBytes()
|
||||
server.broadcastProtoMessageWithPredicate(MessageChannelState, chanstate, func(client *Client) bool {
|
||||
server.broadcastProtoMessageWithPredicate(mumbleproto.MessageChannelState, chanstate, func(client *Client) bool {
|
||||
return client.Version >= 0x10202
|
||||
})
|
||||
}
|
||||
|
|
@ -574,7 +537,7 @@ func (server *Server) handleUserRemoveMessage(client *Client, msg *Message) {
|
|||
}
|
||||
|
||||
userremove.Actor = proto.Uint32(uint32(client.Session))
|
||||
if err = server.broadcastProtoMessage(MessageUserRemove, userremove); err != nil {
|
||||
if err = server.broadcastProtoMessage(mumbleproto.MessageUserRemove, userremove); err != nil {
|
||||
server.Panicf("Unable to broadcast UserRemove message")
|
||||
return
|
||||
}
|
||||
|
|
@ -823,7 +786,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
|||
txtmsg.Message = proto.String(fmt.Sprintf("User '%s' stopped recording", target.ShownName()))
|
||||
}
|
||||
|
||||
server.broadcastProtoMessageWithPredicate(MessageTextMessage, txtmsg, func(client *Client) bool {
|
||||
server.broadcastProtoMessageWithPredicate(mumbleproto.MessageTextMessage, txtmsg, func(client *Client) bool {
|
||||
return client.Version < 0x10203
|
||||
})
|
||||
|
||||
|
|
@ -866,7 +829,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
|||
// The sent texture is a new-style texture. Strip it from the message
|
||||
// we send to pre-1.2.2 clients.
|
||||
userstate.Texture = nil
|
||||
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
|
||||
err := server.broadcastProtoMessageWithPredicate(mumbleproto.MessageUserState, userstate, func(client *Client) bool {
|
||||
return client.Version < 0x10202
|
||||
})
|
||||
if err != nil {
|
||||
|
|
@ -876,7 +839,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
|||
userstate.Texture = texture
|
||||
} else {
|
||||
// Old style texture. We can send the message as-is.
|
||||
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
|
||||
err := server.broadcastProtoMessageWithPredicate(mumbleproto.MessageUserState, userstate, func(client *Client) bool {
|
||||
return client.Version < 0x10202
|
||||
})
|
||||
if err != nil {
|
||||
|
|
@ -908,7 +871,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) {
|
|||
server.ClearACLCache()
|
||||
}
|
||||
|
||||
err := server.broadcastProtoMessageWithPredicate(MessageUserState, userstate, func(client *Client) bool {
|
||||
err := server.broadcastProtoMessageWithPredicate(mumbleproto.MessageUserState, userstate, func(client *Client) bool {
|
||||
return client.Version >= 0x10203
|
||||
})
|
||||
if err != nil {
|
||||
|
|
@ -951,7 +914,7 @@ func (server *Server) handleBanListMessage(client *Client, msg *Message) {
|
|||
entry.Duration = proto.Uint32(ban.Duration)
|
||||
banlist.Bans = append(banlist.Bans, entry)
|
||||
}
|
||||
if err := client.sendProtoMessage(MessageBanList, banlist); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageBanList, banlist); err != nil {
|
||||
client.Panic("Unable to send BanList")
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1051,7 +1014,7 @@ func (server *Server) handleTextMessage(client *Client, msg *Message) {
|
|||
clients[client.Session] = nil, false
|
||||
|
||||
for _, target := range clients {
|
||||
target.sendProtoMessage(MessageTextMessage, &mumbleproto.TextMessage{
|
||||
target.sendProtoMessage(mumbleproto.MessageTextMessage, &mumbleproto.TextMessage{
|
||||
Actor: proto.Uint32(client.Session),
|
||||
Message: txtmsg.Message,
|
||||
})
|
||||
|
|
@ -1180,7 +1143,7 @@ func (server *Server) handleAclMessage(client *Client, msg *Message) {
|
|||
reply.Groups = append(reply.Groups, mpgroup)
|
||||
}
|
||||
|
||||
if err := client.sendProtoMessage(MessageACL, reply); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageACL, reply); err != nil {
|
||||
client.Panic(err.String())
|
||||
}
|
||||
|
||||
|
|
@ -1196,7 +1159,7 @@ func (server *Server) handleAclMessage(client *Client, msg *Message) {
|
|||
queryusers.Names = append(queryusers.Names, user.Name)
|
||||
}
|
||||
if len(queryusers.Ids) > 0 {
|
||||
client.sendProtoMessage(MessageQueryUsers, queryusers)
|
||||
client.sendProtoMessage(mumbleproto.MessageQueryUsers, queryusers)
|
||||
}
|
||||
|
||||
// Set new groups and ACLs
|
||||
|
|
@ -1303,7 +1266,7 @@ func (server *Server) handleQueryUsers(client *Client, msg *Message) {
|
|||
}
|
||||
}
|
||||
|
||||
if err := client.sendProtoMessage(MessageQueryUsers, reply); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageQueryUsers, reply); err != nil {
|
||||
client.Panic(err.String())
|
||||
return
|
||||
}
|
||||
|
|
@ -1407,7 +1370,7 @@ func (server *Server) handleUserStatsMessage(client *Client, msg *Message) {
|
|||
|
||||
// fixme(mkrautz): we don't do bandwidth tracking yet
|
||||
|
||||
if err := client.sendProtoMessage(MessageUserStats, stats); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageUserStats, stats); err != nil {
|
||||
client.Panic(err.String())
|
||||
return
|
||||
}
|
||||
|
|
@ -1455,7 +1418,7 @@ func (server *Server) handleRequestBlob(client *Client, msg *Message) {
|
|||
userstate.Reset()
|
||||
userstate.Session = proto.Uint32(uint32(target.Session))
|
||||
userstate.Texture = buf
|
||||
if err := client.sendProtoMessage(MessageUserState, userstate); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageUserState, userstate); err != nil {
|
||||
client.Panic(err.String())
|
||||
return
|
||||
}
|
||||
|
|
@ -1479,7 +1442,7 @@ func (server *Server) handleRequestBlob(client *Client, msg *Message) {
|
|||
userstate.Reset()
|
||||
userstate.Session = proto.Uint32(uint32(target.Session))
|
||||
userstate.Comment = proto.String(string(buf))
|
||||
if err := client.sendProtoMessage(MessageUserState, userstate); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageUserState, userstate); err != nil {
|
||||
client.Panic(err.String())
|
||||
return
|
||||
}
|
||||
|
|
@ -1502,7 +1465,7 @@ func (server *Server) handleRequestBlob(client *Client, msg *Message) {
|
|||
}
|
||||
chanstate.ChannelId = proto.Uint32(uint32(channel.Id))
|
||||
chanstate.Description = proto.String(string(buf))
|
||||
if err := client.sendProtoMessage(MessageChannelState, chanstate); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageChannelState, chanstate); err != nil {
|
||||
client.Panic(err.String())
|
||||
return
|
||||
}
|
||||
|
|
@ -1538,7 +1501,7 @@ func (server *Server) handleUserList(client *Client, msg *Message) {
|
|||
Name: proto.String(user.Name),
|
||||
})
|
||||
}
|
||||
if err := client.sendProtoMessage(MessageUserList, userlist); err != nil {
|
||||
if err := client.sendProtoMessage(mumbleproto.MessageUserList, userlist); err != nil {
|
||||
client.Panic(err.String())
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue