1
0
Fork 0
forked from External/grumble

Extract more generic versions of setting and checking configuration passwords

This commit is contained in:
Ola Bini 2020-03-26 15:00:08 +00:00
parent a6dc45193a
commit dd9b5531a3
No known key found for this signature in database
GPG key ID: 6786A150F6A2B28F

View file

@ -175,8 +175,7 @@ func (server *Server) RootChannel() *Channel {
return root return root
} }
// Set password as the new SuperUser password func (server *Server) setConfigPassword(key, password string) {
func (server *Server) SetSuperUserPassword(password string) {
saltBytes := make([]byte, 24) saltBytes := make([]byte, 24)
_, err := rand.Read(saltBytes) _, err := rand.Read(saltBytes)
if err != nil { if err != nil {
@ -190,7 +189,6 @@ func (server *Server) SetSuperUserPassword(password string) {
digest := hex.EncodeToString(hasher.Sum(nil)) digest := hex.EncodeToString(hasher.Sum(nil))
// Could be racy, but shouldn't really matter... // Could be racy, but shouldn't really matter...
key := "SuperUserPassword"
val := "sha1$" + salt + "$" + digest val := "sha1$" + salt + "$" + digest
server.cfg.Set(key, val) server.cfg.Set(key, val)
@ -199,9 +197,13 @@ func (server *Server) SetSuperUserPassword(password string) {
} }
} }
// CheckSuperUserPassword checks whether password matches the set SuperUser password. // Set password as the new SuperUser password
func (server *Server) CheckSuperUserPassword(password string) bool { func (server *Server) SetSuperUserPassword(password string) {
parts := strings.Split(server.cfg.StringValue("SuperUserPassword"), "$") server.setConfigPassword("SuperUserPassword", password)
}
func (server *Server) checkConfigPassword(key, password string) bool {
parts := strings.Split(server.cfg.StringValue(key), "$")
if len(parts) != 3 { if len(parts) != 3 {
return false return false
} }
@ -239,6 +241,11 @@ func (server *Server) CheckSuperUserPassword(password string) bool {
return false return false
} }
// CheckSuperUserPassword checks whether password matches the set SuperUser password.
func (server *Server) CheckSuperUserPassword(password string) bool {
return server.checkConfigPassword("SuperUserPassword", password)
}
// Called by the server to initiate a new client connection. // Called by the server to initiate a new client connection.
func (server *Server) handleIncomingClient(conn net.Conn) (err error) { func (server *Server) handleIncomingClient(conn net.Conn) (err error) {
client := new(Client) client := new(Client)