Go-based FM stereo transmitter with RDS, Windows-first and cross-platform
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

42 líneas
1.0KB

  1. // cmd/keygen — fm-rds-tx license key generator.
  2. // KEEP PRIVATE: this tool contains the HMAC secret. Never distribute.
  3. //
  4. // Usage:
  5. // go run ./cmd/keygen free → gratis key (no personal data)
  6. // go run ./cmd/keygen studio@wxy.fm → commercial key for that station
  7. package main
  8. import (
  9. "fmt"
  10. "os"
  11. "strings"
  12. "github.com/jan/fm-rds-tx/internal/license"
  13. )
  14. func main() {
  15. if len(os.Args) < 2 {
  16. fmt.Fprintf(os.Stderr, "usage: keygen <payload>\n")
  17. fmt.Fprintf(os.Stderr, " payload: 'free' for gratis key, email for commercial\n")
  18. fmt.Fprintf(os.Stderr, "examples:\n")
  19. fmt.Fprintf(os.Stderr, " keygen free\n")
  20. fmt.Fprintf(os.Stderr, " keygen studio@example.fm\n")
  21. os.Exit(1)
  22. }
  23. payload := strings.TrimSpace(strings.Join(os.Args[1:], " "))
  24. if payload == "" {
  25. fmt.Fprintln(os.Stderr, "payload must not be empty")
  26. os.Exit(1)
  27. }
  28. key := license.GenerateKey(payload)
  29. fmt.Println(key)
  30. // Self-validate
  31. if !license.ValidateKey(key) {
  32. fmt.Fprintln(os.Stderr, "ERROR: generated key failed self-validation!")
  33. os.Exit(1)
  34. }
  35. }