config.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package config
  2. import (
  3. "flag"
  4. "fmt"
  5. "net"
  6. )
  7. type Config struct {
  8. HTTPHost string
  9. HTTPPort int
  10. UDPHost string
  11. UDPPort int
  12. MaintenanceIP string
  13. MaintenanceCIDR string
  14. AdminPassword string
  15. AgentVersion string
  16. DeviceIDFallback string
  17. }
  18. func Load(args []string) Config {
  19. cfg := Config{
  20. HTTPHost: "0.0.0.0",
  21. HTTPPort: 48888,
  22. UDPHost: "0.0.0.0",
  23. UDPPort: 50000,
  24. MaintenanceIP: "169.254.100.2",
  25. MaintenanceCIDR: "169.254.100.2/16",
  26. AdminPassword: "Dt123$",
  27. AgentVersion: "0.1.0",
  28. DeviceIDFallback: "quickip-device",
  29. }
  30. fs := flag.NewFlagSet("quickip-agent", flag.ContinueOnError)
  31. fs.StringVar(&cfg.MaintenanceIP, "ip", cfg.MaintenanceIP, "maintenance IPv4 address")
  32. fs.IntVar(&cfg.HTTPPort, "port", cfg.HTTPPort, "HTTP listen port")
  33. fs.StringVar(&cfg.AdminPassword, "password", cfg.AdminPassword, "admin password")
  34. _ = fs.Parse(args)
  35. if parsed := net.ParseIP(cfg.MaintenanceIP); parsed == nil || parsed.To4() == nil {
  36. panic(fmt.Sprintf("invalid maintenance ip: %s", cfg.MaintenanceIP))
  37. }
  38. cfg.MaintenanceCIDR = fmt.Sprintf("%s/16", cfg.MaintenanceIP)
  39. return cfg
  40. }