Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

crowdsec-client

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

crowdsec-client

A Crowdsec client that allow you to easily create bouncer or watcher

  • 0.0.13
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
14
decreased by-6.67%
Maintainers
1
Weekly downloads
 
Created
Source

crowdsec-client

NPM version CI codecov Downloads License Known Vulnerabilities crowdsec-client-snyk Donate GitHub stars Package Quality

Bugs Code Smells Duplicated Lines (%) Lines of Code Maintainability Rating Quality Gate Status Reliability Rating Security Rating Technical Debt Vulnerabilities

Dependencies update - renovate

NPM

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 || ''
    },
    //use this option if you use a self signed ssl certificate
    strictSSL: false
});
await client.login();

Second, ask for a decision

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

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) {

}

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(
    {
        //the stream will poll the API at the interval . in ms
        interval: 10000
    },
    (err, {decision, type}) => {
        if(err) {
            console.error(err);
            return;
        }

        if(type === 'added') {
            //when a new decision is added
        }

        if(type === 'deleted') {
            //when a new decision is added
        }
    });

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',
        //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

//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'
});

Debug

this library include debug, to debug, you can set the env variable :

DEBUG=crowdsec-client:*

Keywords

FAQs

Package last updated on 08 Jun 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc