From 92e6ac5276a67b20bc62048a50deb663eb125955 Mon Sep 17 00:00:00 2001 From: Mikkel Krautz Date: Thu, 8 Sep 2011 13:40:05 +0200 Subject: [PATCH] Fix protobuf enum types. --- client.go | 46 +++++++++++++++++++++------------------------- message.go | 24 ++++++++++++------------ server.go | 12 ++++++------ 3 files changed, 39 insertions(+), 43 deletions(-) diff --git a/client.go b/client.go index 1e25255..8b3f23a 100644 --- a/client.go +++ b/client.go @@ -181,14 +181,14 @@ func (client *Client) ForceDisconnect() { } // Reject an authentication attempt -func (client *Client) RejectAuth(kind, reason string) { +func (client *Client) RejectAuth(rejectType mumbleproto.Reject_RejectType, reason string) { var reasonString *string = nil if len(reason) > 0 { reasonString = proto.String(reason) } client.sendProtoMessage(&mumbleproto.Reject{ - Type: mumbleproto.NewReject_RejectType(mumbleproto.Reject_RejectType_value[kind]), + Type: mumbleproto.NewReject_RejectType(rejectType), Reason: reasonString, }) @@ -245,30 +245,26 @@ func (c *Client) sendProtoMessage(msg interface{}) (err os.Error) { } // Send permission denied by type -func (c *Client) sendPermissionDeniedType(kind string) { - c.sendPermissionDeniedTypeUser(kind, nil) +func (c *Client) sendPermissionDeniedType(denyType mumbleproto.PermissionDenied_DenyType) { + c.sendPermissionDeniedTypeUser(denyType, nil) } // Send permission denied by type (and user) -func (c *Client) sendPermissionDeniedTypeUser(kind string, user *Client) { - val, ok := mumbleproto.PermissionDenied_DenyType_value[kind] - if ok { - pd := &mumbleproto.PermissionDenied{} - pd.Type = mumbleproto.NewPermissionDenied_DenyType(val) - if user != nil { - pd.Session = proto.Uint32(uint32(user.Session)) - } - d, err := proto.Marshal(pd) - if err != nil { - c.Panicf("%v", err) - return - } - c.msgchan <- &Message{ - buf: d, - kind: mumbleproto.MessagePermissionDenied, - } - } else { - c.Panicf("Unknown permission denied type.") +func (c *Client) sendPermissionDeniedTypeUser(denyType mumbleproto.PermissionDenied_DenyType, user *Client) { + pd := &mumbleproto.PermissionDenied{ + Type: mumbleproto.NewPermissionDenied_DenyType(denyType), + } + if user != nil { + pd.Session = proto.Uint32(uint32(user.Session)) + } + d, err := proto.Marshal(pd) + if err != nil { + c.Panicf("%v", err) + return + } + c.msgchan <- &Message{ + buf: d, + kind: mumbleproto.MessagePermissionDenied, } } @@ -290,9 +286,9 @@ func (c *Client) sendPermissionDenied(who *Client, where *Channel, what Permissi } // Send permission denied fallback -func (c *Client) sendPermissionDeniedFallback(kind string, version uint32, text string) { +func (c *Client) sendPermissionDeniedFallback(denyType mumbleproto.PermissionDenied_DenyType, version uint32, text string) { // fixme(mkrautz): Do fallback kind of stuff... - c.sendPermissionDeniedType(kind) + c.sendPermissionDeniedType(denyType) } // UDP receiver. diff --git a/message.go b/message.go index a8536ca..66855ae 100644 --- a/message.go +++ b/message.go @@ -196,7 +196,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) { if chanstate.Description != nil { description, err = server.FilterText(*chanstate.Description) if err != nil { - client.sendPermissionDeniedType("TextTooLong") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TextTooLong) return } } @@ -221,7 +221,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) { } for _, iter := range evalp.children { if iter.Name == name { - client.sendPermissionDeniedType("ChannelName") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_ChannelName) return } } @@ -248,13 +248,13 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) { // Only registered users can create channels. if !client.IsRegistered() && !client.HasCertificate() { - client.sendPermissionDeniedTypeUser("MissingCertificate", client) + client.sendPermissionDeniedTypeUser(mumbleproto.PermissionDenied_MissingCertificate, client) return } // We can't add channels to a temporary channel if parent.Temporary { - client.sendPermissionDeniedType("TemporaryChannel") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TemporaryChannel) return } @@ -372,7 +372,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) { // A temporary channel must not have any subchannels, so deny it. if parent.Temporary { - client.sendPermissionDeniedType("TemporaryChannel") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TemporaryChannel) return } @@ -391,7 +391,7 @@ func (server *Server) handleChannelStateMessage(client *Client, msg *Message) { // If a sibling of parent already has this name, don't allow it. for _, iter := range parent.children { if iter.Name == channel.Name { - client.sendPermissionDeniedType("ChannelName") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_ChannelName) return } } @@ -604,7 +604,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) { if userstate.Mute != nil || userstate.Deaf != nil || userstate.Suppress != nil || userstate.PrioritySpeaker != nil { // Disallow for SuperUser if target.IsSuperUser() { - client.sendPermissionDeniedType("SuperUser") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_SuperUser) return } @@ -636,14 +636,14 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) { // Only allow empty text. if len(comment) > 0 { - client.sendPermissionDeniedType("TextTooLong") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TextTooLong) return } } filtered, err := server.FilterText(comment) if err != nil { - client.sendPermissionDeniedType("TextTooLong") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TextTooLong) return } @@ -654,7 +654,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) { if userstate.Texture != nil { maximg := server.cfg.IntValue("MaxImageMessageLength") if maximg > 0 && len(userstate.Texture) > maximg { - client.sendPermissionDeniedType("TextTooLong") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TextTooLong) return } } @@ -674,7 +674,7 @@ func (server *Server) handleUserStateMessage(client *Client, msg *Message) { } if len(target.CertHash) == 0 { - client.sendPermissionDeniedTypeUser("MissingCertificate", target) + client.sendPermissionDeniedTypeUser(mumbleproto.PermissionDenied_MissingCertificate, target) return } } @@ -961,7 +961,7 @@ func (server *Server) handleTextMessage(client *Client, msg *Message) { filtered, err := server.FilterText(*txtmsg.Message) if err != nil { - client.sendPermissionDeniedType("TextTooLong") + client.sendPermissionDeniedType(mumbleproto.PermissionDenied_TextTooLong) return } diff --git a/server.go b/server.go index 64de31a..43f806f 100644 --- a/server.go +++ b/server.go @@ -427,7 +427,7 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) { // Did we get a username? if auth.Username == nil || len(*auth.Username) == 0 { - client.RejectAuth("InvalidUsername", "Please specify a username to log in") + client.RejectAuth(mumbleproto.Reject_InvalidUsername, "Please specify a username to log in") return } @@ -449,17 +449,17 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) { if client.Username == "SuperUser" { if auth.Password == nil { - client.RejectAuth("WrongUserPW", "") + client.RejectAuth(mumbleproto.Reject_WrongUserPW, "") return } else { if server.CheckSuperUserPassword(*auth.Password) { client.user, ok = server.UserNameMap[client.Username] if !ok { - client.RejectAuth("InvalidUsername", "") + client.RejectAuth(mumbleproto.Reject_InvalidUsername, "") return } } else { - client.RejectAuth("WrongUserPW", "") + client.RejectAuth(mumbleproto.Reject_WrongUserPW, "") return } } @@ -470,7 +470,7 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) { if len(client.CertHash) > 0 && user.CertHash == client.CertHash { client.user = user } else { - client.RejectAuth("WrongUserPW", "Wrong certificate hash") + client.RejectAuth(mumbleproto.Reject_WrongUserPW, "Wrong certificate hash") return } } @@ -538,7 +538,7 @@ func (server *Server) finishAuthenticate(client *Client) { // The user is already present on the server. if found { // todo(mkrautz): Do the address checking. - client.RejectAuth("UsernameInUse", "A client is already connected using those credentials.") + client.RejectAuth(mumbleproto.Reject_UsernameInUse, "A client is already connected using those credentials.") return }