From 233898fd13627ad5985c4cfa9efaa163e8ee1468 Mon Sep 17 00:00:00 2001 From: nato Date: Sun, 5 Feb 2023 15:12:04 -0800 Subject: [PATCH] Host.go: add nick registration check to /rename command. --- host.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/host.go b/host.go index 17b32df..dcdc950 100644 --- a/host.go +++ b/host.go @@ -723,6 +723,30 @@ func (h *Host) InitCommands(c *chat.Commands) { return errors.New("user not found") } + oldID := member.ID() + newID := sanitize.Name(args[1]) + + // check nick registration + if h.auth.keynamesMode { + identity, identified := member.Identifier.(*Identity) + if identified { + identity.SetSymbol(strings.Replace(identity.symbol, "✓", "", -1 )) + } + registeredFingerprint := h.auth.KeynameFingerprint(newID) + if registeredFingerprint != "" { + if ! identified { + errors.New("this nick is registered to different key") + } + fingerprint := sshd.Fingerprint(identity.PublicKey()) + if registeredFingerprint != fingerprint { + return errors.New("this nick is registered to different key") + } + if identified { + identity.SetSymbol("✓"+ identity.symbol) + } + } + } + symbolSet := false if len(args) == 3 { s := args[2] @@ -737,8 +761,7 @@ func (h *Host) InitCommands(c *chat.Commands) { symbolSet = true } - oldID := member.ID() - newID := sanitize.Name(args[1]) + if newID == oldID && !symbolSet { return errors.New("new name is the same as the original") } else if (newID == "" || newID == oldID) && symbolSet {