docker_start.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/bin/sh
  2. # Set the crowdsec config file
  3. CS_CONFIG_FILE="/etc/crowdsec/config.yaml"
  4. if [ "$CONFIG_FILE" != "" ]; then
  5. CS_CONFIG_FILE="$CONFIG_FILE"
  6. fi
  7. #Check & prestage databases
  8. if [ ! -e "/var/lib/data/GeoLite2-ASN.mmdb" ] && [ ! -e "/var/lib/data/GeoLite2-City.mmdb" ]; then
  9. mkdir -p /var/lib/crowdsec/data
  10. cp /staging/var/lib/crowdsec/data/*.mmdb /var/lib/crowdsec/data/
  11. fi
  12. #Check & prestage /etc/crowdsec
  13. if [ ! -e "/etc/crowdsec/local_api_credentials.yaml" ] && [ ! -e "/etc/crowdsec/config.yaml" ]; then
  14. mkdir -p /etc/crowdsec
  15. cp -r /staging/etc/* /etc/
  16. fi
  17. # regenerate local agent credentials (ignore if agent is disabled)
  18. if [ "$DISABLE_AGENT" == "" ] ; then
  19. echo "Regenerate local agent credentials"
  20. cscli -c "$CS_CONFIG_FILE" machines delete localhost
  21. if [ "$LOCAL_API_URL" != "" ] ; then
  22. cscli -c "$CS_CONFIG_FILE" machines add localhost --auto --url $LOCAL_API_URL
  23. else
  24. cscli -c "$CS_CONFIG_FILE" machines add localhost --auto
  25. fi
  26. if [ "$AGENT_USERNAME" != "" ] && [ "$AGENT_PASSWORD" != "" ] && [ "$LOCAL_API_URL" != "" ] ; then
  27. echo "set up lapi credentials for agent"
  28. CONFIG_PATH=$(yq eval '.api.client.credentials_path' "$CS_CONFIG_FILE" )
  29. echo "url: $LOCAL_API_URL" > $CONFIG_PATH
  30. echo "login: $AGENT_USERNAME" >> $CONFIG_PATH
  31. echo "password: $AGENT_PASSWORD" >> $CONFIG_PATH
  32. fi
  33. fi
  34. # Check if lapi needs to automatically register an agent
  35. echo Check if lapi need to register automatically an agent
  36. if [ "$DISABLE_LOCAL_API" == "" ] && [ "$AGENT_USERNAME" != "" ] && [ "$AGENT_PASSWORD" != "" ] ; then
  37. cscli -c "$CS_CONFIG_FILE" machines add $AGENT_USERNAME --password $AGENT_PASSWORD
  38. echo "Agent registered to lapi"
  39. fi
  40. # registration to online API for signal push
  41. if [ "$DISABLE_ONLINE_API" == "" ] && [ "$CONFIG_FILE" == "" ] ; then
  42. CONFIG_EXIST=$(yq eval '.api.server.online_client | has("credentials_path")' "$CS_CONFIG_FILE")
  43. if [ "$CONFIG_EXIST" != "true" ]; then
  44. yq eval '.api.server.online_client = {"credentials_path": "/etc/crowdsec/online_api_credentials.yaml"}' "$CS_CONFIG_FILE" > /etc/crowdsec/config2.yaml
  45. mv /etc/crowdsec/config2.yaml "$CS_CONFIG_FILE"
  46. cscli -c "$CS_CONFIG_FILE" capi register > /etc/crowdsec/online_api_credentials.yaml
  47. echo "registration to online API done"
  48. fi
  49. fi
  50. # crowdsec sqlite database permissions
  51. if [ "$GID" != "" ]; then
  52. IS_SQLITE=$(yq eval '.db_config.type == "sqlite"' "$CS_CONFIG_FILE")
  53. DB_PATH=$(yq eval '.db_config.db_path' "$CS_CONFIG_FILE")
  54. if [ "$IS_SQLITE" == "true" ]; then
  55. chown :$GID $DB_PATH
  56. echo "sqlite database permissions updated"
  57. fi
  58. fi
  59. ## Install collections, parsers & scenarios
  60. cscli -c "$CS_CONFIG_FILE" hub update
  61. cscli -c "$CS_CONFIG_FILE" collections upgrade crowdsecurity/linux || true
  62. cscli -c "$CS_CONFIG_FILE" parsers upgrade crowdsecurity/whitelists || true
  63. cscli -c "$CS_CONFIG_FILE" parsers install crowdsecurity/docker-logs || true
  64. if [ "$COLLECTIONS" != "" ]; then
  65. cscli -c "$CS_CONFIG_FILE" collections install $COLLECTIONS
  66. fi
  67. if [ "$PARSERS" != "" ]; then
  68. cscli -c "$CS_CONFIG_FILE" parsers install $PARSERS
  69. fi
  70. if [ "$SCENARIOS" != "" ]; then
  71. cscli -c "$CS_CONFIG_FILE" scenarios install $SCENARIOS
  72. fi
  73. if [ "$POSTOVERFLOWS" != "" ]; then
  74. cscli -c "$CS_CONFIG_FILE" postoverflows install $POSTOVERFLOWS
  75. fi
  76. ARGS=""
  77. if [ "$CONFIG_FILE" != "" ]; then
  78. ARGS="-c $CONFIG_FILE"
  79. fi
  80. if [ "$DSN" != "" ]; then
  81. ARGS="$ARGS -dsn ${DSN}"
  82. fi
  83. if [ "$TYPE" != "" ]; then
  84. ARGS="$ARGS -type $TYPE"
  85. fi
  86. if [ "$TEST_MODE" == "true" ] || [ "$TEST_MODE" == "TRUE" ]; then
  87. ARGS="$ARGS -t"
  88. fi
  89. if [ "$DISABLE_AGENT" == "true" ] || [ "$DISABLE_AGENT" == "TRUE" ]; then
  90. ARGS="$ARGS -no-cs"
  91. fi
  92. if [ "$DISABLE_LOCAL_API" == "true" ] || [ "$DISABLE_LOCAL_API" == "TRUE" ]; then
  93. ARGS="$ARGS -no-api"
  94. fi
  95. if [ "$LEVEL_TRACE" == "true" ] || [ "$LEVEL_TRACE" == "TRUE" ]; then
  96. ARGS="$ARGS -trace"
  97. fi
  98. if [ "$LEVEL_DEBUG" == "true" ] || [ "$LEVEL_DEBUG" == "TRUE" ]; then
  99. ARGS="$ARGS -debug"
  100. fi
  101. if [ "$LEVEL_INFO" == "true" ] || [ "$LEVEL_INFO" == "TRUE" ]; then
  102. ARGS="$ARGS -info"
  103. fi
  104. exec crowdsec $ARGS