From 38b57c6d98c0b6d2ee7b5d2984c2cc8473f657c9 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 27 Nov 2023 01:08:40 -0500 Subject: [PATCH] refactor: Change to using rand.Read instead of whatever the hell else was before --- main.go | 2 +- server/channelserver/handlers_cast_binary.go | 15 +++++---------- server/channelserver/handlers_discord.go | 3 ++- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index 7a21a4b7b..35ca98043 100644 --- a/main.go +++ b/main.go @@ -114,7 +114,7 @@ func main() { }, }, { - Name: "passwordreset", + Name: "password", Description: "Reset your account password on Erupe", Options: []*discordgo.ApplicationCommandOption{ { diff --git a/server/channelserver/handlers_cast_binary.go b/server/channelserver/handlers_cast_binary.go index ea3b291d2..89e978ffd 100644 --- a/server/channelserver/handlers_cast_binary.go +++ b/server/channelserver/handlers_cast_binary.go @@ -1,8 +1,7 @@ package channelserver import ( - "crypto" - "encoding/binary" + "crypto/rand" "encoding/hex" "erupe-ce/common/byteframe" "erupe-ce/common/mhfcourse" @@ -322,14 +321,10 @@ func parseChatCommand(s *Session, command string) { } case commands["Discord"].Prefix: if commands["Discord"].Enabled { - tokenHash := crypto.MD5.New() - tokenSalt := fmt.Sprint(s.charID) + fmt.Sprint(s.server.ID) - tokenData := make([]byte, 4) - binary.LittleEndian.PutUint32(tokenData, uint32(time.Now().Second())) - tokenHash.Write([]byte(fmt.Sprintf("%s%s", tokenSalt, tokenData))) - discordToken := fmt.Sprint(tokenHash)[4:12] - s.logger.Info(discordToken) - _, err := s.server.db.Exec("UPDATE users u SET discord_token = $1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", discordToken, s.charID) + discordToken := make([]byte, 8) + _, err := rand.Read(discordToken) + s.logger.Info(fmt.Sprint(discordToken)) + _, err = s.server.db.Exec("UPDATE users u SET discord_token = $1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", fmt.Sprint(discordToken), s.charID) if err != nil { sendServerChatMessage(s, fmt.Sprint("An error occurred while processing this command")) s.logger.Error(fmt.Sprint(err)) diff --git a/server/channelserver/handlers_discord.go b/server/channelserver/handlers_discord.go index 7482332e0..9a7dec2a0 100644 --- a/server/channelserver/handlers_discord.go +++ b/server/channelserver/handlers_discord.go @@ -86,10 +86,11 @@ func (s *Server) onInteraction(ds *discordgo.Session, i *discordgo.InteractionCr return } break - case "passwordreset": + case "password": password, _ := bcrypt.GenerateFromPassword([]byte(i.ApplicationCommandData().Options[0].StringValue()), 10) _, err := s.db.Exec("UPDATE users SET password = $1 WHERE discord_id = $2", password, i.Member.User.ID) if err != nil { + s.logger.Error(fmt.Sprint(err)) return } err = ds.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{