package main import ( "encoding/base32" "flag" "fmt" "os" "github.com/skip2/go-qrcode" "roseh.moe/pkg/ccl" "roseh.moe/pkg/roseh.moe/internal/config" ) func run() error { args := flag.Args() if len(args) != 1 { return fmt.Errorf("usage: auth ") } fileBytes, err := os.ReadFile(args[0]) if err != nil { return err } var config config.SecretsConfig if err := ccl.Unmarshal(fileBytes, &config); err != nil { return err } if len(config.AuthKey) == 0 { return fmt.Errorf("%s: missing AuthKey", args[0]) } qrCode, err := qrcode.New(fmt.Sprintf("otpauth://totp/roseh.moe:rose?secret=%s&issuer=roseh.moe", base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(config.AuthKey)), qrcode.Medium) if err != nil { return err } fmt.Print(qrCode.ToSmallString(false)) return nil } func main() { flag.Parse() if err := run(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } }