123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- package controllers
- import (
- "encoding/json"
- "github.com/astaxie/beego/logs"
- "github.com/astaxie/beego/orm"
- "server/models"
- ngx "server/nginx"
- "strconv"
- )
- type NginxController struct {
- BaseController
- }
- const ReplacePassword = "******"
- // Get getAll
- func (c *NginxController) Get() {
- o := orm.NewOrm()
- qs := o.QueryTable("nginx")
- var list []*models.Nginx
- _, err := qs.All(&list)
- for i := range list {
- item := list[i]
- if item.Password != "" {
- item.Password = ReplacePassword
- }
- }
- if err != nil {
- c.ErrorJson(err)
- return
- } else {
- c.setData(list).json()
- }
- }
- // Post add nginx instance
- func (c *NginxController) Post() {
- var nginx models.Nginx
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &nginx)
- if err != nil {
- logs.Error(err, string(c.Ctx.Input.RequestBody))
- c.ErrorJson(err)
- return
- }
- nginx.Check()
- o := orm.NewOrm()
- var saveErr error
- if nginx.Id == 0 {
- _, err = o.Insert(&nginx)
- saveErr = err
- } else {
- tmp := models.Nginx{
- Id: nginx.Id,
- }
- err = o.Read(&tmp)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- if nginx.Password == ReplacePassword {
- nginx.Password = tmp.Password
- }
- nginx.HttpConf = tmp.HttpConf
- _, err = o.Update(&nginx)
- saveErr = err
- }
- if saveErr != nil {
- c.ErrorJson(saveErr)
- return
- }
- logs.Info("post", nginx)
- instance := ngx.GetInstance(&nginx)
- err = instance.Connect()
- if err != nil {
- c.setCode(1).setMsg(err.Error()).setData(nginx)
- c.json()
- return
- }
- out, err := instance.GetVersion()
- if err != nil {
- c.setCode(1).setMsg(err.Error()).setData(nginx)
- c.json()
- return
- }
- nginx.VersionInfo = out
- _, _ = o.Update(&nginx, "VersionInfo")
- c.setData(nginx).json()
- }
- // StartNginx startNginx
- func (c *NginxController) StartNginx() {
- idStr := c.getParam(":id")
- id, err := strconv.Atoi(idStr)
- logs.Info("id", id)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- var nginx = models.Nginx{
- Id: id,
- }
- o := orm.NewOrm()
- err = o.Read(&nginx)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- instance := ngx.GetInstance(&nginx)
- err = instance.Start()
- isRun, msg := instance.Status()
- c.setData(isRun).setMsg(msg).json()
- }
- // StopNginx add nginx instance
- func (c *NginxController) StopNginx() {
- idStr := c.getParam(":id")
- id, err := strconv.Atoi(idStr)
- logs.Info("id", id)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- var nginx = models.Nginx{
- Id: id,
- }
- o := orm.NewOrm()
- err = o.Read(&nginx)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- instance := ngx.GetInstance(&nginx)
- err = instance.Stop()
- isRun, msg := instance.Status()
- c.setData(isRun).setMsg(msg).json()
- }
- // RefreshHttp nginx detail data
- func (c *NginxController) RefreshHttp() {
- var nginx models.Nginx
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &nginx)
- if err != nil {
- logs.Error(err, string(c.Ctx.Input.RequestBody))
- c.ErrorJson(err)
- return
- }
- logs.Info("id", nginx)
- o := orm.NewOrm()
- if nginx.HttpConf != "" {
- _, err = o.Update(&nginx, "HttpConf","HttpData")
- if err != nil {
- c.ErrorJson(err)
- return
- }
- }
- err = o.Read(&nginx)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- ins := ngx.GetInstance(&nginx)
- err = ins.RefreshHttp(nginx)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- c.setData(nginx)
- c.json()
- }
- // GetNginx nginx detail data
- func (c *NginxController) GetNginx() {
- idStr := c.getParam(":id")
- id, err := strconv.Atoi(idStr)
- logs.Info("id", id)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- o := orm.NewOrm()
- var nginx = models.Nginx{Id: id}
- err = o.Read(&nginx)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- if nginx.Password != "" {
- nginx.Password = ReplacePassword
- }
- c.addRespData("nginx", nginx)
- var servers []models.ServerHost
- _, err = o.QueryTable((*models.ServerHost)(nil)).Filter("NginxId", id).All(&servers)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- c.addRespData("servers", servers)
- c.json()
- }
- // DelNginx delete a instance
- func (c *NginxController) DelNginx() {
- id, err := c.getIntParam(":id")
- if err != nil {
- c.ErrorJson(err)
- return
- }
- o := orm.NewOrm()
- nginx := models.Nginx{Id: id}
- count, err := o.Delete(&nginx)
- if err != nil {
- c.ErrorJson(err)
- } else {
- c.setData(count).json()
- }
- }
- // StopNginx add nginx instance
- func (c *NginxController) StatusNginx() {
- idStr := c.getParam(":id")
- id, err := strconv.Atoi(idStr)
- logs.Info("id", id)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- var nginx = models.Nginx{
- Id: id,
- }
- o := orm.NewOrm()
- err = o.Read(&nginx)
- if err != nil {
- c.ErrorJson(err)
- return
- }
- instance := ngx.GetInstance(&nginx)
- isRun, msg := instance.Status()
- c.setData(isRun).setMsg(msg).json()
- }
|