bouncers.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package database
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/crowdsecurity/crowdsec/pkg/database/ent"
  6. "github.com/crowdsecurity/crowdsec/pkg/database/ent/bouncer"
  7. "github.com/pkg/errors"
  8. )
  9. func (c *Client) SelectBouncer(apiKeyHash string) (*ent.Bouncer, error) {
  10. result, err := c.Ent.Bouncer.Query().Where(bouncer.APIKeyEQ(apiKeyHash)).First(c.CTX)
  11. if err != nil {
  12. return &ent.Bouncer{}, errors.Wrapf(QueryFail, "select bouncer: %s", err)
  13. }
  14. return result, nil
  15. }
  16. func (c *Client) ListBouncers() ([]*ent.Bouncer, error) {
  17. result, err := c.Ent.Bouncer.Query().All(c.CTX)
  18. if err != nil {
  19. return []*ent.Bouncer{}, errors.Wrapf(QueryFail, "listing bouncer: %s", err)
  20. }
  21. return result, nil
  22. }
  23. func (c *Client) CreateBouncer(name string, ipAddr string, apiKey string) error {
  24. _, err := c.Ent.Bouncer.
  25. Create().
  26. SetName(name).
  27. SetAPIKey(apiKey).
  28. SetRevoked(false).
  29. Save(c.CTX)
  30. if err != nil {
  31. if ent.IsConstraintError(err) {
  32. return fmt.Errorf("bouncer %s already exists", name)
  33. }
  34. return fmt.Errorf("unable to save api key in database: %s", err)
  35. }
  36. return nil
  37. }
  38. func (c *Client) DeleteBouncer(name string) error {
  39. _, err := c.Ent.Bouncer.
  40. Delete().
  41. Where(bouncer.NameEQ(name)).
  42. Exec(c.CTX)
  43. if err != nil {
  44. return fmt.Errorf("unable to save api key in database: %s", err)
  45. }
  46. return nil
  47. }
  48. func (c *Client) UpdateBouncerLastPull(lastPull time.Time, ID int) error {
  49. _, err := c.Ent.Bouncer.UpdateOneID(ID).
  50. SetLastPull(lastPull).
  51. Save(c.CTX)
  52. if err != nil {
  53. return fmt.Errorf("unable to update machine in database: %s", err)
  54. }
  55. return nil
  56. }
  57. func (c *Client) UpdateBouncerIP(ipAddr string, ID int) error {
  58. _, err := c.Ent.Bouncer.UpdateOneID(ID).SetIPAddress(ipAddr).Save(c.CTX)
  59. if err != nil {
  60. return fmt.Errorf("unable to update bouncer ip address in database: %s", err)
  61. }
  62. return nil
  63. }
  64. func (c *Client) UpdateBouncerTypeAndVersion(bType string, version string, ID int) error {
  65. _, err := c.Ent.Bouncer.UpdateOneID(ID).SetVersion(version).SetType(bType).Save(c.CTX)
  66. if err != nil {
  67. return fmt.Errorf("unable to update bouncer type and version in database: %s", err)
  68. }
  69. return nil
  70. }