You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ergonomadic.go 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "github.com/jlatt/ergonomadic/irc"
  6. "log"
  7. "os"
  8. "path/filepath"
  9. )
  10. func usage() {
  11. fmt.Fprintln(os.Stderr, "ergonomadic <run|genpasswd|initdb|upgradedb> [options]")
  12. fmt.Fprintln(os.Stderr, " run -conf <config> -- run server")
  13. fmt.Fprintln(os.Stderr, " initdb -conf <config> -- initialize database")
  14. fmt.Fprintln(os.Stderr, " upgrade -conf <config> -- upgrade database")
  15. fmt.Fprintln(os.Stderr, " genpasswd <password> -- bcrypt a password")
  16. fmt.Fprintln(os.Stderr)
  17. fmt.Fprintln(os.Stderr, "software version:", irc.SEM_VER)
  18. flag.PrintDefaults()
  19. }
  20. func loadConfig(conf string) *irc.Config {
  21. config, err := irc.LoadConfig(conf)
  22. if err != nil {
  23. log.Fatalln("error loading config:", err)
  24. }
  25. err = os.Chdir(filepath.Dir(conf))
  26. if err != nil {
  27. log.Fatalln("chdir error:", err)
  28. }
  29. return config
  30. }
  31. func genPasswd() {
  32. }
  33. func main() {
  34. var conf string
  35. flag.Usage = usage
  36. runFlags := flag.NewFlagSet("run", flag.ExitOnError)
  37. runFlags.Usage = usage
  38. runFlags.StringVar(&conf, "conf", "ergonomadic.conf", "ergonomadic config file")
  39. flag.Parse()
  40. switch flag.Arg(0) {
  41. case "genpasswd":
  42. encoded, err := irc.GenerateEncodedPassword(flag.Arg(1))
  43. if err != nil {
  44. log.Fatalln("encoding error:", err)
  45. }
  46. fmt.Println(encoded)
  47. case "initdb":
  48. runFlags.Parse(flag.Args()[1:])
  49. config := loadConfig(conf)
  50. irc.InitDB(config.Server.Database)
  51. log.Println("database initialized: ", config.Server.Database)
  52. case "upgradedb":
  53. runFlags.Parse(flag.Args()[1:])
  54. config := loadConfig(conf)
  55. irc.UpgradeDB(config.Server.Database)
  56. log.Println("database upgraded: ", config.Server.Database)
  57. case "run":
  58. runFlags.Parse(flag.Args()[1:])
  59. config := loadConfig(conf)
  60. irc.Log.SetLevel(config.Server.Log)
  61. server := irc.NewServer(config)
  62. log.Println(irc.SEM_VER, "running")
  63. defer log.Println(irc.SEM_VER, "exiting")
  64. server.Run()
  65. default:
  66. usage()
  67. }
  68. }