From ccb0206dccdff8959b034e6bb9af36252804afc1 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Sat, 19 Feb 2022 22:03:30 -0500 Subject: [PATCH] add ergo checkpasswd to check user passwords --- ergo.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ergo.go b/ergo.go index c3d91e29..55e5b289 100644 --- a/ergo.go +++ b/ergo.go @@ -7,6 +7,7 @@ package main import ( "bufio" + "encoding/json" "fmt" "log" "os" @@ -20,6 +21,7 @@ import ( "github.com/ergochat/ergo/irc" "github.com/ergochat/ergo/irc/logger" "github.com/ergochat/ergo/irc/mkcerts" + "github.com/ergochat/ergo/irc/passwd" ) // set via linker flags, either by make or by goreleaser: @@ -91,6 +93,23 @@ func doMkcerts(configFile string, quiet bool) { } } +func doCheckPasswd() (returnCode int) { + reader := bufio.NewReader(os.Stdin) + text, err := reader.ReadBytes('\n') + if err != nil { + log.Fatal(err) + } + var hashAndPassword [2]string + err = json.Unmarshal(text, &hashAndPassword) + if err != nil { + log.Fatal(err) + } + if passwd.CompareHashAndPassword([]byte(hashAndPassword[0]), []byte(hashAndPassword[1])) != nil { + return 1 + } + return 0 +} + func main() { irc.SetVersionString(version, commit) usage := `ergo. @@ -100,6 +119,7 @@ Usage: ergo importdb [--conf ] [--quiet] ergo genpasswd [--conf ] [--quiet] ergo mkcerts [--conf ] [--quiet] + ergo checkpasswd ergo run [--conf ] [--quiet] [--smoke] ergo -h | --help ergo --version @@ -144,6 +164,8 @@ Options: } else if arguments["mkcerts"].(bool) { doMkcerts(arguments["--conf"].(string), arguments["--quiet"].(bool)) return + } else if arguments["checkpasswd"].(bool) { + os.Exit(doCheckPasswd()) } configfile := arguments["--conf"].(string)