crowdsec-client
This library is a Node.js client to talk with crowdsec rest API .
Start
install it
npm i crowdsec-client
Usage
as a Bouncer
First, create a client, pointing to your crowdsec instance . With a bouncer api key (doc)
const client = new BouncerClient({
url: process.env.CROWDSEC_URL,
auth: {
apiKey: process.env.CROWDSEC_API_KEY || ''
},
strictSSL: false
});
await client.login();
Second, ask for a decision
const stream = client.Decisions.getStream({
interval: 10000
});
const filteredStream = client.Decisions.getStream({
interval: 10000,
scopes: ['ip', 'range'],
origins: ['capi'] ,
scenarios_containing: ['bruteforce'],
scenarios_not_containing: ['slow'],
});
now, use this stream
import * as stream from "stream";
stream.on('added', (decision) => {
});
stream.on('deleted', (decision) => {
});
stream.resume();
stream.pause()
if(stream.paused) {
}
it's also possible to use a callback, but you can't control the stream (I recommend using the stream)
const stream = client.Decisions.getStream(
{
interval: 10000
},
(err, {decision, type}) => {
if(err) {
console.error(err);
return;
}
if(type === 'added') {
}
if(type === 'deleted') {
}
});
as a Watcher
First, create a client, pointing to your crowdsec instance . With a machine login/password (doc)
const client = new WatcherClient({
url: process.env.CROWDSEC_URL,
auth: {
machineID: 'nameOfTheMachine',
password: 'password',
autoRenew: true,
},
strictSSL: false
});
await client.login();
Search for Alert
const alerts = await client.Alerts.search({
has_active_decision: true
});
const alert = alerts[0]
if(!alert.id) {
}
await client.Alerts.deleteById(alert.id);
await client.Alerts.delete({
ip: '127.0.0.1'
});
Debug
this library include debug, to debug, you can set the env variable :
DEBUG=crowdsec-client:*