require.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package require
  2. import (
  3. "fmt"
  4. "github.com/crowdsecurity/crowdsec/pkg/csconfig"
  5. )
  6. func LAPI(c *csconfig.Config) error {
  7. if err := c.LoadAPIServer(); err != nil {
  8. return fmt.Errorf("failed to load Local API: %w", err)
  9. }
  10. if c.DisableAPI {
  11. return fmt.Errorf("local API is disabled -- this command must be run on the local API machine")
  12. }
  13. return nil
  14. }
  15. func CAPI(c *csconfig.Config) error {
  16. if c.API.Server.OnlineClient == nil {
  17. return fmt.Errorf("no configuration for Central API (CAPI) in '%s'", *c.FilePath)
  18. }
  19. return nil
  20. }
  21. func PAPI(c *csconfig.Config) error {
  22. if err := LAPI(c); err != nil {
  23. return err
  24. }
  25. if err := CAPI(c); err != nil {
  26. return err
  27. }
  28. if c.API.Server.OnlineClient.Credentials.PapiURL == "" {
  29. return fmt.Errorf("no PAPI URL in configuration")
  30. }
  31. return nil
  32. }
  33. func Enrolled(c *csconfig.Config) error {
  34. if err := CAPI(c); err != nil {
  35. return err
  36. }
  37. if c.API.Server.OnlineClient.Credentials == nil {
  38. return fmt.Errorf("the Central API (CAPI) must be configured with 'cscli capi register'")
  39. }
  40. return nil
  41. }
  42. func DB(c *csconfig.Config) error {
  43. if err := c.LoadDBConfig(); err != nil {
  44. return fmt.Errorf("this command requires direct database access (must be run on the local API machine): %w", err)
  45. }
  46. return nil
  47. }
  48. func Profiles(c *csconfig.Config) error {
  49. if err := LAPI(c); err != nil {
  50. return err
  51. }
  52. if err := c.API.Server.LoadProfiles(); err != nil {
  53. return fmt.Errorf("while loading profiles: %w", err)
  54. }
  55. return nil
  56. }
  57. func Notifications(c *csconfig.Config) error {
  58. if err := LAPI(c); err != nil {
  59. return err
  60. }
  61. if c.ConfigPaths.NotificationDir == "" {
  62. return fmt.Errorf("config_paths.notification_dir is not set in crowdsec config")
  63. }
  64. return nil
  65. }