manager.go 884 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package nginx
  2. import (
  3. "nginx-ui/server/models"
  4. )
  5. var INSTANCES = map[int]*Instance{}
  6. func GetInstance(nginx *models.Nginx) *Instance {
  7. var instance = INSTANCES[nginx.Id]
  8. if instance != nil {
  9. old := instance.nginx
  10. if old.IpAddr != nginx.IpAddr || old.Port != nginx.Port || old.User != nginx.User || old.Password != nginx.Password {
  11. instance.Close(false)
  12. instance = nil
  13. INSTANCES[nginx.Id] = nil
  14. } else {
  15. instance.nginx = nginx
  16. instance.SetNginx(nginx)
  17. return instance
  18. }
  19. }
  20. if nginx.Proxy {
  21. instance = &Instance{
  22. &AgentInstance{
  23. nginx: nginx,
  24. },
  25. nginx,
  26. }
  27. } else if nginx.IsLocal {
  28. instance = &Instance{
  29. &LocalInstance{
  30. nginx: nginx,
  31. },
  32. nginx,
  33. }
  34. } else {
  35. instance = &Instance{
  36. &RemoteInstance{
  37. nginx: nginx,
  38. },
  39. nginx,
  40. }
  41. }
  42. instance.SetNginx(nginx)
  43. INSTANCES[nginx.Id] = instance
  44. return instance
  45. }