diff --git a/main.go b/main.go
index 18b73ff0fd202e715f3f6721bdc26d36fcebee0a..b891c8820f0c8bfd61b4d58dbaa6460d2531796e 100644
--- a/main.go
+++ b/main.go
@@ -3,10 +3,13 @@
import (
"context"
"flag"
+ "fmt"
"log/slog"
"os"
"os/signal"
"time"
+
+ "golang.org/x/crypto/bcrypt"
"git.gabrielgio.me/cerrado/pkg/config"
"git.gabrielgio.me/cerrado/pkg/handler"
@@ -17,10 +20,30 @@
func main() {
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill)
defer stop()
+
+ if len(os.Args) == 4 && os.Args[1] == "hash" {
+ err := hash(os.Args[2], os.Args[3])
+ if err != nil {
+ slog.Error("Error", "error", err)
+ os.Exit(1)
+ }
+ return
+ }
+
if err := run(ctx); err != nil {
slog.Error("Error", "error", err)
os.Exit(1)
}
+}
+
+func hash(username string, password string) error {
+ passphrase := fmt.Sprintf("%s:%s", username, password)
+ bytes, err := bcrypt.GenerateFromPassword([]byte(passphrase), 14)
+ if err != nil {
+ return err
+ }
+ fmt.Println(string(bytes))
+ return nil
}
func run(ctx context.Context) error {