mirror of
https://github.com/crowdsecurity/crowdsec.git
synced 2025-05-11 20:36:12 +02:00
163 lines
5.5 KiB
Bash
Executable file
163 lines
5.5 KiB
Bash
Executable file
#! /usr/bin/env bash
|
|
# -*- coding: utf-8 -*-
|
|
|
|
source tests_base.sh
|
|
|
|
echo $PATH
|
|
|
|
sudo cp /etc/crowdsec/config.yaml ./config.yaml.backup
|
|
|
|
##########################
|
|
## TEST AGENT/LAPI/CAPI ##
|
|
echo "CROWDSEC (AGENT+LAPI+CAPI)"
|
|
|
|
## status / start / stop
|
|
# service should be up
|
|
pidof crowdsec || fail "crowdsec process should be running"
|
|
${SYSTEMCTL} status crowdsec || fail "systemctl status crowdsec failed"
|
|
|
|
#shut it down
|
|
${SYSTEMCTL} stop crowdsec || fail "failed to stop service"
|
|
${SYSTEMCTL} status crowdsec && fail "crowdsec should be down"
|
|
pidof crowdsec && fail "crowdsec process shouldn't be running"
|
|
|
|
#start it again
|
|
${SYSTEMCTL} start crowdsec || fail "failed to stop service"
|
|
${SYSTEMCTL} status crowdsec || fail "crowdsec should be up"
|
|
sleep 5s
|
|
pidof crowdsec || fail "crowdsec process should be running"
|
|
|
|
#restart it
|
|
${SYSTEMCTL} restart crowdsec || fail "failed to stop service"
|
|
${SYSTEMCTL} status crowdsec || fail "crowdsec should be up"
|
|
sleep 5s
|
|
pidof crowdsec || fail "crowdsec process should be running"
|
|
|
|
## version
|
|
${CSCLI} version || fail "cannot run cscli version"
|
|
|
|
## alerts
|
|
# alerts list at startup should just return one entry : community pull
|
|
sleep 5
|
|
${CSCLI} alerts list -ojson | ${JQ} '. | length >= 1' || fail "expected at least one entry from cscli alerts list"
|
|
## capi
|
|
${CSCLI} capi status || fail "capi status should be ok"
|
|
## config
|
|
${CSCLI} config show || fail "failed to show config"
|
|
${CSCLI} config backup ./test || fail "failed to backup config"
|
|
sudo rm -rf ./test
|
|
## lapi
|
|
${CSCLI} lapi status || fail "lapi status failed"
|
|
## metrics
|
|
${CSCLI} metrics || fail "failed to get metrics"
|
|
|
|
${SYSTEMCTL} stop crowdsec || fail "crowdsec should be down"
|
|
|
|
#######################
|
|
## TEST WITHOUT LAPI ##
|
|
|
|
echo "CROWDSEC (AGENT)"
|
|
|
|
# test with -no-api flag
|
|
cp ${SYSTEMD_SERVICE_FILE} /tmp/crowdsec.service-orig
|
|
sed '/^ExecStart/ s/$/ -no-api/' ${SYSTEMD_SERVICE_FILE} > /tmp/crowdsec.service
|
|
sudo mv /tmp/crowdsec.service /etc/systemd/system/crowdsec.service
|
|
|
|
${SYSTEMCTL} daemon-reload
|
|
${SYSTEMCTL} start crowdsec
|
|
sleep 1
|
|
pidof crowdsec && fail "crowdsec shouldn't run without LAPI (in flag)"
|
|
${SYSTEMCTL} stop crowdsec
|
|
|
|
sudo cp /tmp/crowdsec.service-orig /etc/systemd/system/crowdsec.service
|
|
|
|
${SYSTEMCTL} daemon-reload
|
|
|
|
# test with no api server in configuration file
|
|
sudo cp ./config/config_no_lapi.yaml /etc/crowdsec/config.yaml
|
|
${SYSTEMCTL} start crowdsec
|
|
sleep 1
|
|
pidof crowdsec && fail "crowdsec agent should not run without lapi (in configuration file)"
|
|
|
|
##### cscli test ####
|
|
## capi
|
|
${CSCLI} -c ./config/config_no_lapi.yaml capi status && fail "capi status shouldn't be ok"
|
|
## config
|
|
${CSCLI_BIN} -c ./config/config_no_lapi.yaml config show || fail "failed to show config"
|
|
${CSCLI} -c ./config/config_no_lapi.yaml config backup ./test || fail "failed to backup config"
|
|
sudo rm -rf ./test
|
|
## lapi
|
|
${CSCLI} -c ./config/config_no_lapi.yaml lapi status && fail "lapi status should not be ok" ## if lapi status success, it means that the test fail
|
|
## metrics
|
|
${CSCLI_BIN} -c ./config/config_no_lapi.yaml metrics
|
|
|
|
${SYSTEMCTL} stop crowdsec
|
|
sudo cp ./config/config.yaml /etc/crowdsec/config.yaml
|
|
|
|
########################
|
|
## TEST WITHOUT AGENT ##
|
|
|
|
echo "CROWDSEC (LAPI+CAPI)"
|
|
|
|
# test with -no-cs flag
|
|
sed '/^ExecStart/ s/$/ -no-cs/' /etc/systemd/system/crowdsec.service > /tmp/crowdsec.service
|
|
sudo mv /tmp/crowdsec.service /etc/systemd/system/crowdsec.service
|
|
|
|
|
|
${SYSTEMCTL} daemon-reload
|
|
${SYSTEMCTL} start crowdsec
|
|
pidof crowdsec || fail "crowdsec LAPI should run without agent (in flag)"
|
|
${SYSTEMCTL} stop crowdsec
|
|
|
|
sed '/^ExecStart/s/-no-cs//g' ${SYSTEMD_SERVICE_FILE} > /tmp/crowdsec.service
|
|
sudo mv /tmp/crowdsec.service /etc/systemd/system/crowdsec.service
|
|
|
|
${SYSTEMCTL} daemon-reload
|
|
|
|
# test with no crowdsec agent in configuration file
|
|
sudo cp ./config/config_no_agent.yaml /etc/crowdsec/config.yaml
|
|
${SYSTEMCTL} start crowdsec
|
|
pidof crowdsec || fail "crowdsec LAPI should run without agent (in configuration file)"
|
|
|
|
|
|
## capi
|
|
${CSCLI} -c ./config/config_no_agent.yaml capi status || fail "capi status should be ok"
|
|
## config
|
|
${CSCLI_BIN} -c ./config/config_no_agent.yaml config show || fail "failed to show config"
|
|
${CSCLI} -c ./config/config_no_agent.yaml config backup ./test || fail "failed to backup config"
|
|
sudo rm -rf ./test
|
|
## lapi
|
|
${CSCLI} -c ./config/config_no_agent.yaml lapi status || fail "lapi status failed"
|
|
## metrics
|
|
${CSCLI_BIN} -c ./config/config_no_agent.yaml metrics || fail "failed to get metrics"
|
|
|
|
${SYSTEMCTL} stop crowdsec
|
|
sudo cp ./config/config.yaml /etc/crowdsec/config.yaml
|
|
|
|
|
|
#######################
|
|
## TEST WITHOUT CAPI ##
|
|
echo "CROWDSEC (AGENT+LAPI)"
|
|
|
|
# test with no online client in configuration file
|
|
sudo cp ./config/config_no_capi.yaml /etc/crowdsec/config.yaml
|
|
${SYSTEMCTL} start crowdsec
|
|
pidof crowdsec || fail "crowdsec LAPI should run without CAPI (in configuration file)"
|
|
|
|
## capi
|
|
${CSCLI} -c ./config/config_no_capi.yaml capi status && fail "capi status should not be ok" ## if capi status success, it means that the test fail
|
|
## config
|
|
${CSCLI_BIN} -c ./config/config_no_capi.yaml config show || fail "failed to show config"
|
|
${CSCLI} -c ./config/config_no_capi.yaml config backup ./test || fail "failed to backup config"
|
|
sudo rm -rf ./test
|
|
## lapi
|
|
${CSCLI} -c ./config/config_no_capi.yaml lapi status || fail "lapi status failed"
|
|
## metrics
|
|
${CSCLI_BIN} -c ./config/config_no_capi.yaml metrics || fail "failed to get metrics"
|
|
|
|
sudo mv /tmp/crowdsec.service-orig /etc/systemd/system/crowdsec.service
|
|
|
|
sudo cp ./config.yaml.backup /etc/crowdsec/config.yaml
|
|
|
|
${SYSTEMCTL} daemon-reload
|
|
${SYSTEMCTL} restart crowdsec
|