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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 main() {
  11. conf := flag.String("conf", "ergonomadic.conf", "ergonomadic config file")
  12. initdb := flag.Bool("initdb", false, "initialize database")
  13. upgradedb := flag.Bool("upgradedb", false, "update database")
  14. passwd := flag.String("genpasswd", "", "bcrypt a password")
  15. flag.Parse()
  16. if *passwd != "" {
  17. encoded, err := irc.GenerateEncodedPassword(*passwd)
  18. if err != nil {
  19. log.Fatal("encoding error: ", err)
  20. }
  21. fmt.Println(encoded)
  22. return
  23. }
  24. config, err := irc.LoadConfig(*conf)
  25. if err != nil {
  26. log.Fatal("error loading config: ", err)
  27. }
  28. err = os.Chdir(filepath.Dir(*conf))
  29. if err != nil {
  30. log.Fatal("chdir error: ", err)
  31. }
  32. if *initdb {
  33. irc.InitDB(config.Server.Database)
  34. log.Println("database initialized: ", config.Server.Database)
  35. return
  36. }
  37. if *upgradedb {
  38. irc.UpgradeDB(config.Server.Database)
  39. log.Println("database upgraded: ", config.Server.Database)
  40. return
  41. }
  42. irc.Log.SetLevel(config.Server.Log)
  43. server := irc.NewServer(config)
  44. log.Println(irc.SEM_VER, "running")
  45. defer log.Println(irc.SEM_VER, "exiting")
  46. server.Run()
  47. }