test_env.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #!/bin/bash
  2. BASE="./tests"
  3. while [[ $# -gt 0 ]]
  4. do
  5. key="${1}"
  6. case ${key} in
  7. -d|--directory)
  8. BASE=${2}
  9. shift #past argument
  10. shift
  11. ;;
  12. -h|--help)
  13. usage
  14. exit 0
  15. ;;
  16. *) # unknown option
  17. log_err "Unknown argument ${key}."
  18. usage
  19. exit 1
  20. ;;
  21. esac
  22. done
  23. BASE=$(realpath $BASE)
  24. DATA_DIR="$BASE/data"
  25. LOG_DIR="$BASE/logs/"
  26. CONFIG_DIR="$BASE/config"
  27. CONFIG_FILE="$BASE/dev.yaml"
  28. CSCLI_DIR="$CONFIG_DIR/crowdsec-cli"
  29. PARSER_DIR="$CONFIG_DIR/parsers"
  30. PARSER_S00="$PARSER_DIR/s00-raw"
  31. PARSER_S01="$PARSER_DIR/s01-parse"
  32. PARSER_S02="$PARSER_DIR/s02-enrich"
  33. SCENARIOS_DIR="$CONFIG_DIR/scenarios"
  34. POSTOVERFLOWS_DIR="$CONFIG_DIR/postoverflows"
  35. PLUGIN_BACKEND_DIR="$CONFIG_DIR/plugins/backend/"
  36. DB_PLUGIN_FILE="$PLUGIN_BACKEND_DIR/database.yaml"
  37. gen_sqlite_config() {
  38. echo "name: database" >> "$DB_PLUGIN_FILE"
  39. echo "path: ./plugins/backend/database.so" >> "$DB_PLUGIN_FILE"
  40. echo "config:" >> "$DB_PLUGIN_FILE"
  41. echo " type: sqlite" >> "$DB_PLUGIN_FILE"
  42. echo " db_path: ./test.db" >> "$DB_PLUGIN_FILE"
  43. echo " flush: true" >> "$DB_PLUGIN_FILE"
  44. }
  45. log_info() {
  46. msg=$1
  47. date=$(date +%x:%X)
  48. echo -e "[$date][INFO] $msg"
  49. }
  50. create_arbo() {
  51. mkdir -p "$BASE"
  52. mkdir -p "$DATA_DIR"
  53. mkdir -p "$LOG_DIR"
  54. mkdir -p "$CONFIG_DIR"
  55. mkdir -p "$PARSER_DIR"
  56. mkdir -p "$PARSER_S00"
  57. mkdir -p "$PARSER_S01"
  58. mkdir -p "$PARSER_S02"
  59. mkdir -p "$SCENARIOS_DIR"
  60. mkdir -p "$POSTOVERFLOWS_DIR"
  61. mkdir -p "$CSCLI_DIR"
  62. mkdir -p "$PLUGIN_BACKEND_DIR"
  63. }
  64. copy_files() {
  65. cp "./config/profiles.yaml" "$CONFIG_DIR"
  66. cp "./config/dev.yaml" "$BASE"
  67. cp "./cmd/crowdsec/crowdsec" "$BASE"
  68. cp "./cmd/crowdsec-cli/cscli" "$BASE"
  69. cp -r "./config/patterns" "$CONFIG_DIR"
  70. cp -r "./data/" "$BASE"
  71. cp -r "./plugins/" "$BASE"
  72. }
  73. setup() {
  74. $BASE/cscli -c "$CONFIG_FILE" update
  75. $BASE/cscli -c "$CONFIG_FILE" install collection crowdsecurity/linux
  76. }
  77. main() {
  78. log_info "Creating test arboresence in $BASE"
  79. create_arbo
  80. log_info "Arboresence created"
  81. log_info "Copying needed files for tests environment"
  82. copy_files
  83. log_info "Files copied"
  84. log_info "Setting up configurations"
  85. CURRENT_PWD=$(pwd)
  86. cd $BASE
  87. setup
  88. cd $CURRENT_PWD
  89. gen_sqlite_config
  90. log_info "Environment is ready in $BASE"
  91. }
  92. usage() {
  93. echo "Usage:"
  94. echo " ./wizard.sh -h Display this help message."
  95. echo " ./env_test.sh -d ./tests Create test environment in './tests' folder"
  96. exit 0
  97. }
  98. main