Browse Source

add ergo checkpasswd to check user passwords

devel+pwcheck
Shivaram Lingamneni 2 years ago
parent
commit
ccb0206dcc
1 changed files with 22 additions and 0 deletions
  1. 22
    0
      ergo.go

+ 22
- 0
ergo.go View File

@@ -7,6 +7,7 @@ package main
7 7
 
8 8
 import (
9 9
 	"bufio"
10
+	"encoding/json"
10 11
 	"fmt"
11 12
 	"log"
12 13
 	"os"
@@ -20,6 +21,7 @@ import (
20 21
 	"github.com/ergochat/ergo/irc"
21 22
 	"github.com/ergochat/ergo/irc/logger"
22 23
 	"github.com/ergochat/ergo/irc/mkcerts"
24
+	"github.com/ergochat/ergo/irc/passwd"
23 25
 )
24 26
 
25 27
 // set via linker flags, either by make or by goreleaser:
@@ -91,6 +93,23 @@ func doMkcerts(configFile string, quiet bool) {
91 93
 	}
92 94
 }
93 95
 
96
+func doCheckPasswd() (returnCode int) {
97
+	reader := bufio.NewReader(os.Stdin)
98
+	text, err := reader.ReadBytes('\n')
99
+	if err != nil {
100
+		log.Fatal(err)
101
+	}
102
+	var hashAndPassword [2]string
103
+	err = json.Unmarshal(text, &hashAndPassword)
104
+	if err != nil {
105
+		log.Fatal(err)
106
+	}
107
+	if passwd.CompareHashAndPassword([]byte(hashAndPassword[0]), []byte(hashAndPassword[1])) != nil {
108
+		return 1
109
+	}
110
+	return 0
111
+}
112
+
94 113
 func main() {
95 114
 	irc.SetVersionString(version, commit)
96 115
 	usage := `ergo.
@@ -100,6 +119,7 @@ Usage:
100 119
 	ergo importdb <database.json> [--conf <filename>] [--quiet]
101 120
 	ergo genpasswd [--conf <filename>] [--quiet]
102 121
 	ergo mkcerts [--conf <filename>] [--quiet]
122
+	ergo checkpasswd
103 123
 	ergo run [--conf <filename>] [--quiet] [--smoke]
104 124
 	ergo -h | --help
105 125
 	ergo --version
@@ -144,6 +164,8 @@ Options:
144 164
 	} else if arguments["mkcerts"].(bool) {
145 165
 		doMkcerts(arguments["--conf"].(string), arguments["--quiet"].(bool))
146 166
 		return
167
+	} else if arguments["checkpasswd"].(bool) {
168
+		os.Exit(doCheckPasswd())
147 169
 	}
148 170
 
149 171
 	configfile := arguments["--conf"].(string)

Loading…
Cancel
Save