main.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // capgen is an utility to test captcha generation.
  2. package main
  3. import (
  4. "flag"
  5. "fmt"
  6. "github.com/dchest/captcha"
  7. "io"
  8. "log"
  9. "os"
  10. )
  11. var (
  12. flagImage = flag.Bool("i", true, "output image captcha")
  13. flagAudio = flag.Bool("a", false, "output audio captcha")
  14. flagLen = flag.Int("len", captcha.StdLength, "length of captcha")
  15. flagImgW = flag.Int("width", captcha.StdWidth, "image captcha width")
  16. flagImgH = flag.Int("height", captcha.StdHeight, "image captcha height")
  17. )
  18. func usage() {
  19. fmt.Fprintf(os.Stderr, "usage: captcha [flags] filename\n")
  20. flag.PrintDefaults()
  21. }
  22. func main() {
  23. flag.Parse()
  24. fname := flag.Arg(0)
  25. if fname == "" {
  26. usage()
  27. os.Exit(1)
  28. }
  29. f, err := os.Create(fname)
  30. if err != nil {
  31. log.Fatalf("%s", err)
  32. }
  33. defer f.Close()
  34. var w io.WriterTo
  35. d := captcha.RandomDigits(*flagLen)
  36. switch {
  37. case *flagAudio:
  38. w = captcha.NewAudio(d)
  39. case *flagImage:
  40. w = captcha.NewImage(d, *flagImgW, *flagImgH)
  41. }
  42. _, err = w.WriteTo(f)
  43. if err != nil {
  44. log.Fatalf("%s", err)
  45. }
  46. fmt.Println(d)
  47. }