crowdsec-client
Version:
A Crowdsec client that allow you to easily create bouncer or watcher
153 lines (119 loc) • 8.81 kB
Markdown
# crowdsec-client
[](https://www.npmjs.com/package/crowdsec-client)
[](https://github.com/thib3113/node-crowdsec/actions/workflows/CI.yml)
[](https://sonarcloud.io/summary/new_code?id=thib3113_node-crowdsec)
[](https://www.npmjs.com/package/crowdsec-client)
[](https://github.com/thib3113/node-crowdsec/blob/main/LICENSE)
[](https://snyk.io/test/github/thib3113/node-crowdsec)
[](https://snyk.io/advisor/npm-package/crowdsec-client)
[](https://paypal.me/thib3113)
[](https://github.com/thib3113/node-crowdsec/stargazers/)
[](https://packagequality.com/#?package=crowdsec-client)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)
[](https://sonarcloud.io/dashboard?id=thib3113_node-crowdsec)

[](https://nodei.co/npm/crowdsec-client/)
This library is a Node.js client to talk with crowdsec rest API .
## Start
install it
```
npm i crowdsec-client
```
and then read the documentation in the [wiki](https://github.com/thib3113/node-crowdsec/wiki)
## Usage
### as a Bouncer
First, create a client, pointing to your crowdsec instance . With a bouncer api key ([doc](https://doc.crowdsec.net/docs/user_guides/bouncers_configuration/))
````typescript
const client = new BouncerClient({
url: process.env.CROWDSEC_URL,
auth: {
apiKey: process.env.CROWDSEC_API_KEY || ''
},
//use this option if you use a self signed ssl certificate
strictSSL: false
});
await client.login();
````
Second, ask for a decision
````typescript
const stream = client.Decisions.getStream({
//the stream will poll the API at the interval . in ms
interval: 10000
});
//or with filters
const filteredStream = client.Decisions.getStream({
//the stream will poll the API at the interval . in ms
interval: 10000,
scopes: ['ip', 'range'],
origins: ['capi'] ,
scenarios_containing: ['bruteforce'],
scenarios_not_containing: ['slow'],
});
````
now, use this stream
````typescript
import * as stream from "stream";
stream.on('added', (decision) => {
//will be emited when a new decision is added
});
stream.on('deleted', (decision) => {
//will be emitted when a decision is deleted
});
//you can control the stream
//start the stream
stream.resume();
//pause the stream
stream.pause()
//check if the stream is paused
if(stream.paused) {
}
````
### as a Watcher
First, create a client, pointing to your crowdsec instance . With a machine login/password ([doc](https://doc.crowdsec.net/docs/user_guides/machines_mgmt))
````typescript
const client = new WatcherClient({
url: process.env.CROWDSEC_URL,
auth: {
machineID: 'nameOfTheMachine',
password: 'password',
//the crowdsec token is valid for only 1h ... did you want to autorenew it ?
autoRenew: true,
},
//use this option if you use a self signed ssl certificate
strictSSL: false
});
await client.login();
````
Search for Alert
```typescript
//get alerts with an active decision
const alerts = await client.Alerts.search({
has_active_decision: true
});
//select one alert
const alert = alerts[0]
if(!alert.id) {
//do something if no id
}
//delete it ?
await client.Alerts.deleteById(alert.id);
//or delete all the alerts about an ip
await client.Alerts.delete({
ip: '127.0.0.1'
});
```
More authentications options (like TLS) are documented in the [wiki](https://github.com/thib3113/node-crowdsec/wiki)
## Debug
this library include [debug](https://www.npmjs.com/package/debug), to debug, you can set the env variable :
````dotenv
DEBUG=crowdsec-client:*
````