require.go 1.9 KB

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