Add message numbers to mumbleproto package.

This commit is contained in:
Mikkel Krautz 2011-09-07 16:12:07 +02:00
parent 4d5b897d66
commit 7482d5cb19
6 changed files with 112 additions and 108 deletions

View file

@ -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
}