main.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2018-present the CoreDHCP Authors. All rights reserved
  2. // This source code is licensed under the MIT license found in the
  3. // LICENSE file in the root directory of this source tree.
  4. package main
  5. import (
  6. "flag"
  7. "time"
  8. "github.com/coredhcp/coredhcp"
  9. "github.com/coredhcp/coredhcp/config"
  10. "github.com/coredhcp/coredhcp/logger"
  11. _ "github.com/coredhcp/coredhcp/plugins/dns"
  12. _ "github.com/coredhcp/coredhcp/plugins/file"
  13. _ "github.com/coredhcp/coredhcp/plugins/lease_time"
  14. _ "github.com/coredhcp/coredhcp/plugins/netmask"
  15. _ "github.com/coredhcp/coredhcp/plugins/range"
  16. _ "github.com/coredhcp/coredhcp/plugins/router"
  17. _ "github.com/coredhcp/coredhcp/plugins/server_id"
  18. "github.com/sirupsen/logrus"
  19. )
  20. var (
  21. flagLogFile = flag.String("logfile", "", "Name of the log file to append to. Default: stdout/stderr only")
  22. flagLogNoStdout = flag.Bool("nostdout", false, "Disable logging to stdout/stderr")
  23. flagDebug = flag.Bool("debug", false, "Enable debug output")
  24. )
  25. func main() {
  26. flag.Parse()
  27. log := logger.GetLogger("main")
  28. if *flagDebug {
  29. log.Logger.SetLevel(logrus.DebugLevel)
  30. log.Infof("Enabled debug logging")
  31. }
  32. if *flagLogFile != "" {
  33. log.Infof("Logging to file %s", *flagLogFile)
  34. logger.WithFile(log, *flagLogFile)
  35. }
  36. if *flagLogNoStdout {
  37. log.Infof("Disabling logging to stdout/stderr")
  38. logger.WithNoStdOutErr(log)
  39. }
  40. config, err := config.Load()
  41. if err != nil {
  42. log.Fatal(err)
  43. }
  44. server := coredhcp.NewServer(config)
  45. if err := server.Start(); err != nil {
  46. log.Fatal(err)
  47. }
  48. if err := server.Wait(); err != nil {
  49. log.Error(err)
  50. }
  51. time.Sleep(time.Second)
  52. }