handler.go 963 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package nginx_service
  2. import (
  3. "errors"
  4. "github.com/astaxie/beego/orm"
  5. "log"
  6. "nginx-ui/server/models"
  7. "nginx-ui/server/modules/agent_server"
  8. "nginx-ui/server/modules/auth_token"
  9. )
  10. func AgentRegister(c *agent_server.WsClient, message *models.AgentData) (interface{}, error) {
  11. log.Printf("register agent: %s,%v\n", c.Token, message)
  12. token, err := auth_token.GetByToken(c.Token)
  13. if err != nil {
  14. return nil, err
  15. }
  16. err = token.CheckValid()
  17. if err != nil {
  18. return nil, err
  19. }
  20. nginx := &models.Nginx{}
  21. err = message.ReadData(nginx)
  22. if err != nil {
  23. return nil, err
  24. }
  25. o := orm.NewOrm()
  26. exist := &models.Nginx{
  27. Token: c.Token,
  28. }
  29. err = o.Read(exist, "Token")
  30. if err == nil {
  31. return exist, nil
  32. }
  33. if !errors.Is(err, orm.ErrNoRows) {
  34. return nil, err
  35. }
  36. nginx.Proxy = true
  37. nginx.Token = c.Token
  38. nginx.Uid = string(rune(token.Uid))
  39. id, err := o.Insert(nginx)
  40. if err != nil {
  41. return nil, err
  42. }
  43. nginx.Id = int(id)
  44. return nginx, nil
  45. }