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.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. flag.PrintDefaults()
  17. }
  18. func loadConfig(conf string) *irc.Config {
  19. config, err := irc.LoadConfig(conf)
  20. if err != nil {
  21. log.Fatalln("error loading config:", err)
  22. }
  23. err = os.Chdir(filepath.Dir(conf))
  24. if err != nil {
  25. log.Fatalln("chdir error:", err)
  26. }
  27. return config
  28. }
  29. func genPasswd() {
  30. }
  31. func main() {
  32. var conf string
  33. flag.Usage = usage
  34. runFlags := flag.NewFlagSet("run", flag.ExitOnError)
  35. runFlags.Usage = usage
  36. runFlags.StringVar(&conf, "conf", "ergonomadic.conf", "ergonomadic config file")
  37. flag.Parse()
  38. switch flag.Arg(0) {
  39. case "genpasswd":
  40. encoded, err := irc.GenerateEncodedPassword(flag.Arg(1))
  41. if err != nil {
  42. log.Fatalln("encoding error:", err)
  43. }
  44. fmt.Println(encoded)
  45. case "initdb":
  46. runFlags.Parse(flag.Args()[1:])
  47. config := loadConfig(conf)
  48. irc.InitDB(config.Server.Database)
  49. log.Println("database initialized: ", config.Server.Database)
  50. case "upgradedb":
  51. runFlags.Parse(flag.Args()[1:])
  52. config := loadConfig(conf)
  53. irc.UpgradeDB(config.Server.Database)
  54. log.Println("database upgraded: ", config.Server.Database)
  55. case "run":
  56. runFlags.Parse(flag.Args()[1:])
  57. config := loadConfig(conf)
  58. irc.Log.SetLevel(config.Server.Log)
  59. server := irc.NewServer(config)
  60. log.Println(irc.SEM_VER, "running")
  61. defer log.Println(irc.SEM_VER, "exiting")
  62. server.Run()
  63. default:
  64. usage()
  65. }
  66. }