server.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/astaxie/beego/orm"
  5. "server/models"
  6. nginx2 "server/nginx"
  7. )
  8. type ServerController struct {
  9. BaseController
  10. }
  11. // Get getAllServers
  12. func (c *ServerController) Get() {
  13. id, err := c.GetInt("id", 0)
  14. if err != nil {
  15. c.ErrorJson(err)
  16. return
  17. }
  18. o := orm.NewOrm()
  19. server := models.ServerHost{Id: id}
  20. err = o.Read(&server)
  21. if err != nil {
  22. c.ErrorJson(err)
  23. return
  24. }
  25. c.setData(server).json()
  26. }
  27. // Post add or update nginx instance
  28. func (c *ServerController) Post() {
  29. var server models.ServerHost
  30. err := json.Unmarshal(c.Ctx.Input.RequestBody, &server)
  31. if err != nil {
  32. c.ErrorJson(err)
  33. return
  34. }
  35. o := orm.NewOrm()
  36. var saveErr error
  37. if server.Id > 0 {
  38. tmp := models.ServerHost{Id: server.Id}
  39. err := o.Read(&tmp, "last_name")
  40. if err == nil {
  41. server.LastName = tmp.LastName
  42. server.ServerConf = tmp.ServerConf
  43. }
  44. _, saveErr = o.Update(&server)
  45. } else {
  46. _, saveErr = o.Insert(&server)
  47. }
  48. if saveErr != nil {
  49. c.ErrorJson(saveErr)
  50. } else {
  51. c.setData(server).json()
  52. }
  53. }
  54. // Delete add or update nginx instance
  55. func (c *ServerController) Delete() {
  56. var server models.ServerHost
  57. err := json.Unmarshal(c.Ctx.Input.RequestBody, &server)
  58. if err != nil {
  59. c.ErrorJson(err)
  60. return
  61. }
  62. o := orm.NewOrm()
  63. err = o.Read(&server)
  64. if err != nil {
  65. c.ErrorJson(err)
  66. return
  67. }
  68. nginx := models.Nginx{Id: server.NginxId}
  69. err = o.Read(&nginx)
  70. if err != nil {
  71. c.ErrorJson(err)
  72. return
  73. }
  74. ins := nginx2.GetInstance(&nginx)
  75. server.Enable = false
  76. err = ins.RefreshServer(server)
  77. if err != nil {
  78. c.ErrorJson(err)
  79. return
  80. }
  81. delServer := models.ServerHost{Id: server.Id}
  82. _, err = o.Delete(&delServer)
  83. if err != nil {
  84. c.ErrorJson(err)
  85. return
  86. }
  87. c.setData("success").json()
  88. }
  89. // Refresh check and refresh to disk
  90. func (c *ServerController) Refresh() {
  91. var postData models.ServerHost
  92. err := json.Unmarshal(c.Ctx.Input.RequestBody, &postData)
  93. if err != nil {
  94. c.ErrorJson(err)
  95. return
  96. }
  97. o := orm.NewOrm()
  98. _, err = o.Update(&postData)
  99. if err != nil {
  100. c.ErrorJson(err)
  101. return
  102. }
  103. var nginx = models.Nginx{Id: postData.NginxId}
  104. err = o.Read(&nginx)
  105. if err != nil {
  106. c.ErrorJson(err)
  107. return
  108. }
  109. ins := nginx2.GetInstance(&nginx)
  110. err = ins.RefreshServer(postData)
  111. if err != nil {
  112. c.ErrorJson(err)
  113. return
  114. }
  115. postData.LastName = postData.Name
  116. _, _ = o.Update(&postData)
  117. c.setData(true).json()
  118. }