Make it possible to customize the super user name

This commit is contained in:
Ola Bini 2020-07-11 15:52:35 +00:00
parent dd4cf8748f
commit c876ee6273
No known key found for this signature in database
GPG key ID: 6786A150F6A2B28F
3 changed files with 24 additions and 12 deletions

View file

@ -127,12 +127,13 @@ type Server struct {
type clientLogForwarder struct {
client *Client
server *Server
logger *log.Logger
}
func (lf clientLogForwarder) Write(incoming []byte) (int, error) {
buf := new(bytes.Buffer)
buf.WriteString(fmt.Sprintf("<%v:%v(%v)> ", lf.client.Session(), lf.client.ShownName(), lf.client.UserId()))
buf.WriteString(fmt.Sprintf("<%v:%v(%v)> ", lf.client.Session(), lf.client.ShownName(lf.server.GetSuperUserName()), lf.client.UserId()))
buf.Write(incoming)
lf.logger.Output(3, buf.String())
return len(incoming), nil
@ -162,6 +163,17 @@ func NewServer(id int64) (s *Server, err error) {
return
}
func (server *Server) GetSuperUserName() string {
return server.Users[0].Name
}
func (server *Server) SetSuperUserName(n string) {
oldName := server.Users[0].Name
server.Users[0].Name = n
delete(server.UserNameMap, oldName)
server.UserNameMap[n] = server.Users[0]
}
// Debugf implements debug-level printing for Servers.
func (server *Server) Debugf(format string, v ...interface{}) {
server.Printf(format, v...)
@ -260,7 +272,7 @@ func (server *Server) handleIncomingClient(conn net.Conn) (err error) {
return
}
client.lf = &clientLogForwarder{client, server.Logger}
client.lf = &clientLogForwarder{client, server, server.Logger}
client.Logger = log.New(client.lf, "", 0)
client.session = server.pool.Get()
@ -508,7 +520,7 @@ func (server *Server) handleAuthenticate(client *Client, msg *Message) {
client.Username = *auth.Username
if client.Username == "SuperUser" {
if client.Username == server.GetSuperUserName() {
if auth.Password == nil {
client.RejectAuth(mumbleproto.Reject_WrongUserPW, "")
return
@ -652,7 +664,7 @@ func (server *Server) finishAuthenticate(client *Client) {
userstate := &mumbleproto.UserState{
Session: proto.Uint32(client.Session()),
Name: proto.String(client.ShownName()),
Name: proto.String(client.ShownName(server.GetSuperUserName())),
ChannelId: proto.Uint32(uint32(channel.Id)),
}
@ -836,7 +848,7 @@ func (server *Server) sendUserList(client *Client) {
userstate := &mumbleproto.UserState{
Session: proto.Uint32(connectedClient.Session()),
Name: proto.String(connectedClient.ShownName()),
Name: proto.String(connectedClient.ShownName(server.GetSuperUserName())),
ChannelId: proto.Uint32(uint32(connectedClient.Channel.Id)),
}